/*++ /* NAME /* mail_dict 3 /* SUMMARY /* register application-specific dictionaries /* SYNOPSIS /* #include /* /* void mail_dict_init() /* DESCRIPTION /* This module registers dictionary types that depend on higher-level /* Postfix-specific interfaces and protocols. /* /* This also initializes the support for run-time loading of /* lookup tables, if applicable. /* /* The latter requires basic parameter initialization /* by either mail_conf_read() or mail_params_init(). /* LICENSE /* .ad /* .fi /* The Secure Mailer license must be distributed with this software. /* AUTHOR(S) /* Wietse Venema /* IBM T.J. Watson Research /* P.O. Box 704 /* Yorktown Heights, NY 10598, USA /*--*/ /* System library. */ #include /* Utility library. */ #include #include #include #include #include /* Global library. */ #include #include #include #include #include #include #include #include #include typedef struct { char *type; struct DICT *(*open) (const char *, int, int); } DICT_OPEN_INFO; static const DICT_OPEN_INFO dict_open_info[] = { DICT_TYPE_PROXY, dict_proxy_open, #ifndef USE_DYNAMIC_MAPS #ifdef HAS_LDAP DICT_TYPE_LDAP, dict_ldap_open, #endif #ifdef HAS_MYSQL DICT_TYPE_MYSQL, dict_mysql_open, #endif #ifdef HAS_PGSQL DICT_TYPE_PGSQL, dict_pgsql_open, #endif #ifdef HAS_SQLITE DICT_TYPE_SQLITE, dict_sqlite_open, #endif #endif /* !USE_DYNAMIC_MAPS */ DICT_TYPE_MEMCACHE, dict_memcache_open, 0, }; /* mail_dict_init - dictionaries that depend on Postfix-specific interfaces */ void mail_dict_init(void) { const DICT_OPEN_INFO *dp; #ifdef USE_DYNAMIC_MAPS char *path; path = concatenate(var_meta_dir, "/", "dynamicmaps.cf", #ifdef SHLIB_VERSION ".", SHLIB_VERSION, #endif (char *) 0); dymap_init(path, var_shlib_dir); myfree(path); #endif for (dp = dict_open_info; dp->type; dp++) dict_open_register(dp->type, dp->open); } #ifdef TEST /* * Proof-of-concept test program. */ #include #include int main(int argc, char **argv) { var_queue_dir = DEF_QUEUE_DIR; var_proxymap_service = DEF_PROXYMAP_SERVICE; var_proxywrite_service = DEF_PROXYWRITE_SERVICE; var_ipc_timeout = 3600; mail_dict_init(); dict_test(argc, argv); return (0); } #endif