Postfix3.3.1
mail_dict.c
[詳解]
1 /*++
2 /* NAME
3 /* mail_dict 3
4 /* SUMMARY
5 /* register application-specific dictionaries
6 /* SYNOPSIS
7 /* #include <mail_dict.h>
8 /*
9 /* void mail_dict_init()
10 /* DESCRIPTION
11 /* This module registers dictionary types that depend on higher-level
12 /* Postfix-specific interfaces and protocols.
13 /*
14 /* This also initializes the support for run-time loading of
15 /* lookup tables, if applicable.
16 /*
17 /* The latter requires basic parameter initialization
18 /* by either mail_conf_read() or mail_params_init().
19 /* LICENSE
20 /* .ad
21 /* .fi
22 /* The Secure Mailer license must be distributed with this software.
23 /* AUTHOR(S)
24 /* Wietse Venema
25 /* IBM T.J. Watson Research
26 /* P.O. Box 704
27 /* Yorktown Heights, NY 10598, USA
28 /*--*/
29 
30 /* System library. */
31 
32 #include <sys_defs.h>
33 
34 /* Utility library. */
35 
36 #include <dict.h>
37 #include <msg.h>
38 #include <mymalloc.h>
39 #include <stringops.h>
40 #include <dynamicmaps.h>
41 
42 /* Global library. */
43 
44 #include <dict_proxy.h>
45 #include <dict_ldap.h>
46 #include <dict_mysql.h>
47 #include <dict_pgsql.h>
48 #include <dict_sqlite.h>
49 #include <dict_memcache.h>
50 #include <mail_dict.h>
51 #include <mail_params.h>
52 #include <mail_dict.h>
53 
54 typedef struct {
55  char *type;
56  struct DICT *(*open) (const char *, int, int);
58 
59 static const DICT_OPEN_INFO dict_open_info[] = {
61 #ifndef USE_DYNAMIC_MAPS
62 #ifdef HAS_LDAP
64 #endif
65 #ifdef HAS_MYSQL
67 #endif
68 #ifdef HAS_PGSQL
70 #endif
71 #ifdef HAS_SQLITE
73 #endif
74 #endif /* !USE_DYNAMIC_MAPS */
76  0,
77 };
78 
79 /* mail_dict_init - dictionaries that depend on Postfix-specific interfaces */
80 
81 void mail_dict_init(void)
82 {
83  const DICT_OPEN_INFO *dp;
84 
85 #ifdef USE_DYNAMIC_MAPS
86  char *path;
87 
88  path = concatenate(var_meta_dir, "/", "dynamicmaps.cf",
89 #ifdef SHLIB_VERSION
90  ".", SHLIB_VERSION,
91 #endif
92  (char *) 0);
93  dymap_init(path, var_shlib_dir);
94  myfree(path);
95 #endif
96 
97  for (dp = dict_open_info; dp->type; dp++)
98  dict_open_register(dp->type, dp->open);
99 }
100 
101 #ifdef TEST
102 
103  /*
104  * Proof-of-concept test program.
105  */
106 
107 #include <mail_proto.h>
108 #include <mail_params.h>
109 
110 int main(int argc, char **argv)
111 {
115  var_ipc_timeout = 3600;
116  mail_dict_init();
117  dict_test(argc, argv);
118  return (0);
119 }
120 
121 #endif
int var_ipc_timeout
Definition: mail_params.c:255
void myfree(void *ptr)
Definition: mymalloc.c:207
#define DICT_TYPE_PROXY
Definition: dict_proxy.h:22
char * var_proxymap_service
Definition: mail_params.c:312
DICT * dict_ldap_open(const char *, int, int)
int main(int argc, char **argv)
Definition: anvil.c:1010
#define DICT_TYPE_LDAP
Definition: dict_ldap.h:22
char * var_proxywrite_service
Definition: mail_params.c:313
DICT * dict_memcache_open(const char *name, int open_flags, int dict_flags)
DICT * dict_proxy_open(const char *map, int open_flags, int dict_flags)
Definition: dict_proxy.c:396
Definition: dict.h:78
#define DEF_PROXYMAP_SERVICE
Definition: mail_params.h:2889
#define DICT_TYPE_PGSQL
Definition: dict_pgsql.h:22
char * var_shlib_dir
Definition: mail_params.c:247
void mail_dict_init(void)
Definition: mail_dict.c:81
void dict_open_register(const char *, DICT_OPEN_FN)
Definition: dict_open.c:491
DICT * dict_pgsql_open(const char *name, int unused_flags, int dict_flags)
struct DICT *(* open)(const char *, int, int)
Definition: mail_dict.c:56
DICT * dict_mysql_open(const char *, int, int)
#define DICT_TYPE_SQLITE
Definition: dict_sqlite.h:22
char * concatenate(const char *arg0,...)
Definition: concatenate.c:42
char * type
Definition: mail_dict.c:55
DICT * dict_sqlite_open(const char *, int, int)
void dict_test(int, char **)
Definition: dict_test.c:36
#define DEF_PROXYWRITE_SERVICE
Definition: mail_params.h:2893
int int
Definition: smtpd_proxy.h:21
#define DICT_TYPE_MEMCACHE
Definition: dict_memcache.h:22
#define DICT_TYPE_MYSQL
Definition: dict_mysql.h:22
char * var_queue_dir
Definition: mail_params.c:246
#define DEF_QUEUE_DIR
Definition: mail_params.h:279
char * var_meta_dir
Definition: mail_params.c:245