-/* $Cambridge: exim/src/src/lookups/dbmdb.c,v 1.2 2005/01/04 10:00: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)
{
#else
{
uschar filebuffer[256];
- sprintf(CS filebuffer, "%.250s.db", filename);
+ (void)sprintf(CS filebuffer, "%.250s.db", filename);
rc = lf_check_file(-1, filebuffer, S_IFREG, modemask, owners, owngroups,
"dbm", errmsg);
if (rc < 0) /* stat() failed */
{
- sprintf(CS filebuffer, "%.250s.dir", filename);
+ (void)sprintf(CS filebuffer, "%.250s.dir", filename);
rc = lf_check_file(-1, filebuffer, S_IFREG, modemask, owners, owngroups,
"dbm", errmsg);
if (rc == 0) /* x.dir was OK */
{
- sprintf(CS filebuffer, "%.250s.pag", filename);
+ (void)sprintf(CS filebuffer, "%.250s.pag", filename);
rc = lf_check_file(-1, filebuffer, S_IFREG, modemask, owners, owngroups,
"dbm", 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);
}
+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 */
+};
+
+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 */
+};
+
+#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 */