Postfix3.3.1
mkmap.h
[詳解]
1 #ifndef _MKMAP_H_INCLUDED_
2 #define _MKMAP_H_INCLUDED_
3 
4 /*++
5 /* NAME
6 /* mkmap 3h
7 /* SUMMARY
8 /* create or rewrite Postfix database
9 /* SYNOPSIS
10 /* #include <mkmap.h>
11 /* DESCRIPTION
12 /* .nf
13 
14  /*
15  * Utility library.
16  */
17 #include <dict.h>
18 
19  /*
20  * A database handle is an opaque structure. The user is not supposed to
21  * know its implementation. We try to open and lock a file before DB/DBM
22  * initialization. However, if the file does not exist then we may have to
23  * acquire the lock after the DB/DBM initialization.
24  */
25 typedef struct MKMAP {
26  DICT_OPEN_FN open; /* dict_xx_open() */
27  struct DICT *dict; /* dict_xx_open() result */
28  void (*after_open) (struct MKMAP *); /* may be null */
29  void (*after_close) (struct MKMAP *); /* may be null */
30  int multi_writer; /* multi-writer safe */
31 } MKMAP;
32 
33 extern MKMAP *mkmap_open(const char *, const char *, int, int);
34 extern void mkmap_append(MKMAP *, const char *, const char *);
35 extern void mkmap_close(MKMAP *);
36 
37 #define mkmap_append(map, key, val) dict_put((map)->dict, (key), (val))
38 
39 extern MKMAP *mkmap_dbm_open(const char *);
40 extern MKMAP *mkmap_cdb_open(const char *);
41 extern MKMAP *mkmap_hash_open(const char *);
42 extern MKMAP *mkmap_btree_open(const char *);
43 extern MKMAP *mkmap_lmdb_open(const char *);
44 extern MKMAP *mkmap_sdbm_open(const char *);
45 extern MKMAP *mkmap_proxy_open(const char *);
46 extern MKMAP *mkmap_fail_open(const char *);
47 
48 typedef MKMAP *(*MKMAP_OPEN_FN) (const char *);
49 typedef MKMAP_OPEN_FN (*MKMAP_OPEN_EXTEND_FN) (const char *);
50 extern void mkmap_open_register(const char *, MKMAP_OPEN_FN);
52 
53 /* LICENSE
54 /* .ad
55 /* .fi
56 /* The Secure Mailer license must be distributed with this software.
57 /* AUTHOR(S)
58 /* Wietse Venema
59 /* IBM T.J. Watson Research
60 /* P.O. Box 704
61 /* Yorktown Heights, NY 10598, USA
62 /*--*/
63 
64 #endif
MKMAP * mkmap_sdbm_open(const char *)
void(* after_open)(struct MKMAP *)
Definition: mkmap.h:28
void(* after_close)(struct MKMAP *)
Definition: mkmap.h:29
MKMAP * mkmap_lmdb_open(const char *)
int multi_writer
Definition: mkmap.h:30
Definition: dict.h:78
MKMAP * mkmap_btree_open(const char *)
MKMAP * mkmap_cdb_open(const char *)
MKMAP * mkmap_dbm_open(const char *)
void mkmap_close(MKMAP *)
Definition: mkmap_open.c:205
MKMAP * mkmap_proxy_open(const char *)
Definition: mkmap_proxy.c:46
MKMAP * mkmap_open(const char *, const char *, int, int)
Definition: mkmap_open.c:237
MKMAP_OPEN_FN(* MKMAP_OPEN_EXTEND_FN)(const char *)
Definition: mkmap.h:49
Definition: mkmap.h:25
DICT *(* DICT_OPEN_FN)(const char *, int, int)
Definition: dict.h:229
#define mkmap_append(map, key, val)
Definition: mkmap.h:37
MKMAP * mkmap_fail_open(const char *)
Definition: mkmap_fail.c:45
struct MKMAP MKMAP
MKMAP *(* MKMAP_OPEN_FN)(const char *)
Definition: mkmap.h:48
void mkmap_open_register(const char *, MKMAP_OPEN_FN)
Definition: mkmap_open.c:164
MKMAP * mkmap_hash_open(const char *)
MKMAP_OPEN_EXTEND_FN mkmap_open_extend(MKMAP_OPEN_EXTEND_FN)
Definition: mkmap_open.c:182
struct DICT * dict
Definition: mkmap.h:27
DICT_OPEN_FN open
Definition: mkmap.h:26