X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Flookups%2Flmdb.c;h=d9cf25d548eac36f8416224731c3af47d2bbeb1b;hb=394eb1aa097bf00993b6625a5a27405dac9bf43d;hp=55f273fd9ace1064a4210b5b13b2071fb83a507c;hpb=5903c6ff59527362e869fedb565c56935ce8dd68;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/lookups/lmdb.c b/src/src/lookups/lmdb.c index 55f273fd9..d9cf25d54 100644 --- a/src/src/lookups/lmdb.c +++ b/src/src/lookups/lmdb.c @@ -2,12 +2,13 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 2016 */ +/* Copyright (c) University of Cambridge 2016 - 2018 */ +/* Copyright (c) The Exim Maintainers 2020 */ /* See the file NOTICE for conditions of use and distribution. */ #include "../exim.h" -#ifdef EXPERIMENTAL_LMDB +#ifdef LOOKUP_LMDB #include @@ -23,14 +24,14 @@ MDB_dbi db_dbi; *************************************************/ static void * -lmdb_open(uschar * filename, uschar ** errmsg) +lmdb_open(const uschar * filename, uschar ** errmsg) { MDB_env * db_env = NULL; Lmdbstrct * lmdb_p; int ret, save_errno; const uschar * errstr; -lmdb_p = store_get(sizeof(Lmdbstrct)); +lmdb_p = store_get(sizeof(Lmdbstrct), FALSE); lmdb_p->txn = NULL; if ((ret = mdb_env_create(&db_env))) @@ -74,9 +75,9 @@ bad: *************************************************/ static int -lmdb_find(void * handle, uschar * filename, +lmdb_find(void * handle, const uschar * filename, const uschar * keystring, int length, uschar ** result, uschar ** errmsg, - uint * do_cache) + uint * do_cache, const uschar * opts) { int ret; MDB_val dbkey, data; @@ -85,24 +86,24 @@ Lmdbstrct * lmdb_p = handle; dbkey.mv_data = CS keystring; dbkey.mv_size = length; -DEBUG(D_lookup) debug_printf("LMDB: lookup key: %s\n", CS keystring); +DEBUG(D_lookup) debug_printf_indent("LMDB: lookup key: %s\n", CS keystring); if ((ret = mdb_get(lmdb_p->txn, lmdb_p->db_dbi, &dbkey, &data)) == 0) { *result = string_copyn(US data.mv_data, data.mv_size); - DEBUG(D_lookup) debug_printf("LMDB: lookup result: %s\n", *result); + DEBUG(D_lookup) debug_printf_indent("LMDB: lookup result: %s\n", *result); return OK; } else if (ret == MDB_NOTFOUND) { *errmsg = US"LMDB: lookup, no data found"; - DEBUG(D_lookup) debug_printf("%s\n", *errmsg); + DEBUG(D_lookup) debug_printf_indent("%s\n", *errmsg); return FAIL; } else { *errmsg = string_sprintf("LMDB: lookup error: %s", mdb_strerror(ret)); - DEBUG(D_lookup) debug_printf("%s\n", *errmsg); + DEBUG(D_lookup) debug_printf_indent("%s\n", *errmsg); return DEFER; } } @@ -139,15 +140,15 @@ fprintf(f, " Exim version %s\n", EXIM_VERSION_STR); } static lookup_info lmdb_lookup_info = { - US"lmdb", /* lookup name */ - lookup_absfile, /* query-style lookup */ - lmdb_open, /* open function */ - NULL, /* no check function */ - lmdb_find, /* find function */ - lmdb_close, /* close function */ - NULL, /* tidy function */ - NULL, /* quoting function */ - lmdb_version_report /* version reporting */ + .name = US"lmdb", /* lookup name */ + .type = lookup_absfile, /* query-style lookup */ + .open = lmdb_open, /* open function */ + .check = NULL, /* no check function */ + .find = lmdb_find, /* find function */ + .close = lmdb_close, /* close function */ + .tidy = NULL, /* tidy function */ + .quote = NULL, /* quoting function */ + .version_report = lmdb_version_report /* version reporting */ }; #ifdef DYNLOOKUP @@ -157,4 +158,4 @@ static lookup_info lmdb_lookup_info = { static lookup_info *_lookup_list[] = { &lmdb_lookup_info }; lookup_module_info lmdb_lookup_module_info = { LOOKUP_MODULE_INFO_MAGIC, _lookup_list, 1 }; -#endif /* EXPERIMENTAL_LMDB */ +#endif /* LOOKUP_LMDB */