-/* $Cambridge: exim/src/src/lookups/dbmdb.c,v 1.3 2005/06/27 14:29:44 ph10 Exp $ */
+/* $Cambridge: exim/src/src/lookups/dbmdb.c,v 1.6 2009/11/16 19:50:38 nm4 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 2005 */
+/* Copyright (c) University of Cambridge 1995 - 2009 */
/* See the file NOTICE for conditions of use and distribution. */
#include "../exim.h"
#include "lf_functions.h"
-#include "dbmdb.h"
/*************************************************
/* See local README for interface description */
-void *
+static void *
dbmdb_open(uschar *filename, uschar **errmsg)
{
EXIM_DB *yield;
the same. Otherwise, for safety, we have to check for x.db or x.dir and x.pag.
*/
-BOOL
+static BOOL
dbmdb_check(void *handle, uschar *filename, int modemask, uid_t *owners,
gid_t *owngroups, uschar **errmsg)
{
/* See local README for interface description. This function adds 1 to
the keylength in order to include the terminating zero. */
-int
+static int
dbmdb_find(void *handle, uschar *filename, uschar *keystring, int length,
uschar **result, uschar **errmsg, BOOL *do_cache)
{
/* See local README for interface description */
int
-dbmnz_find(void *handle, uschar *filename, uschar *keystring, int length,
+static dbmnz_find(void *handle, uschar *filename, uschar *keystring, int length,
uschar **result, uschar **errmsg, BOOL *do_cache)
{
return dbmdb_find(handle, filename, keystring, length-1, result, errmsg,
/* See local README for interface description */
void
-dbmdb_close(void *handle)
+static dbmdb_close(void *handle)
{
EXIM_DBCLOSE((EXIM_DB *)handle);
}
+
+
+/*************************************************
+* Version reporting entry point *
+*************************************************/
+
+/* See local README for interface description. */
+
+#include "../version.h"
+
+void
+dbm_version_report(FILE *f)
+{
+#ifdef DYNLOOKUP
+fprintf(f, "Library version: DBM: Exim version %s\n", EXIM_VERSION_STR);
+#endif
+}
+
+
+lookup_info dbm_lookup_info = {
+ US"dbm", /* lookup name */
+ lookup_absfile, /* uses absolute file name */
+ dbmdb_open, /* open function */
+ dbmdb_check, /* check function */
+ dbmdb_find, /* find function */
+ dbmdb_close, /* close function */
+ NULL, /* no tidy function */
+ NULL, /* no quoting function */
+ dbm_version_report /* version reporting */
+};
+
+lookup_info dbmz_lookup_info = {
+ US"dbmnz", /* lookup name */
+ lookup_absfile, /* uses absolute file name */
+ dbmdb_open, /* sic */ /* open function */
+ dbmdb_check, /* sic */ /* check function */
+ dbmnz_find, /* find function */
+ dbmdb_close, /* sic */ /* close function */
+ NULL, /* no tidy function */
+ NULL, /* no quoting function */
+ NULL /* no version reporting (redundant) */
+};
+
+#ifdef DYNLOOKUP
+#define dbmdb_lookup_module_info _lookup_module_info
+#endif
+
+static lookup_info *_lookup_list[] = { &dbm_lookup_info, &dbmz_lookup_info };
+lookup_module_info dbmdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 2 };
+
/* End of lookups/dbmdb.c */