xref: /netbsd-src/external/ibm-public/postfix/dist/src/util/mkmap_lmdb.c (revision c48c605c14fd8622b523d1d6a3f0c0bad133ea89)
1*c48c605cSchristos /*	$NetBSD: mkmap_lmdb.c,v 1.2 2023/12/23 20:30:46 christos Exp $	*/
2059c16a8Schristos 
3059c16a8Schristos /*++
4059c16a8Schristos /* NAME
5059c16a8Schristos /*	mkmap_lmdb 3
6059c16a8Schristos /* SUMMARY
7059c16a8Schristos /*	create or open database, LMDB style
8059c16a8Schristos /* SYNOPSIS
9059c16a8Schristos /*	#include <dict_lmdb.h>
10059c16a8Schristos /*
11059c16a8Schristos /*	MKMAP	*mkmap_lmdb_open(path)
12059c16a8Schristos /*	const char *path;
13059c16a8Schristos /*
14059c16a8Schristos /* DESCRIPTION
15059c16a8Schristos /*	This module implements support for creating LMDB databases.
16059c16a8Schristos /*
17059c16a8Schristos /*	mkmap_lmdb_open() takes a file name, appends the ".lmdb"
18059c16a8Schristos /*	suffix, and does whatever initialization is required
19059c16a8Schristos /*	before the OpenLDAP LMDB open routine is called.
20059c16a8Schristos /*
21059c16a8Schristos /*	All errors are fatal.
22059c16a8Schristos /* SEE ALSO
23059c16a8Schristos /*	dict_lmdb(3), LMDB dictionary interface.
24059c16a8Schristos /* LICENSE
25059c16a8Schristos /* .ad
26059c16a8Schristos /* .fi
27059c16a8Schristos /*	The Secure Mailer license must be distributed with this software.
28059c16a8Schristos /* AUTHOR(S)
29059c16a8Schristos /*	Howard Chu
30059c16a8Schristos /*	Symas Corporation
31059c16a8Schristos /*
32059c16a8Schristos /*	Wietse Venema
33059c16a8Schristos /*	Google, Inc.
34059c16a8Schristos /*	111 8th Avenue
35059c16a8Schristos /*	New York, NY 10011, USA
36059c16a8Schristos /*--*/
37059c16a8Schristos 
38059c16a8Schristos /* System library. */
39059c16a8Schristos 
40059c16a8Schristos #include <sys_defs.h>
41059c16a8Schristos #include <sys/stat.h>
42059c16a8Schristos #include <unistd.h>
43059c16a8Schristos #include <errno.h>
44059c16a8Schristos 
45059c16a8Schristos /* Utility library. */
46059c16a8Schristos 
47059c16a8Schristos #include <mymalloc.h>
48059c16a8Schristos #include <dict_lmdb.h>
49059c16a8Schristos #include <mkmap.h>
50059c16a8Schristos 
51059c16a8Schristos #ifdef HAS_LMDB
52059c16a8Schristos #ifdef PATH_LMDB_H
53059c16a8Schristos #include PATH_LMDB_H
54059c16a8Schristos #else
55059c16a8Schristos #include <lmdb.h>
56059c16a8Schristos #endif
57059c16a8Schristos 
58059c16a8Schristos /* mkmap_lmdb_open */
59059c16a8Schristos 
mkmap_lmdb_open(const char * path)60059c16a8Schristos MKMAP  *mkmap_lmdb_open(const char *path)
61059c16a8Schristos {
62059c16a8Schristos     MKMAP  *mkmap = (MKMAP *) mymalloc(sizeof(*mkmap));
63059c16a8Schristos 
64059c16a8Schristos     /*
65059c16a8Schristos      * Fill in the generic members.
66059c16a8Schristos      */
67059c16a8Schristos     mkmap->open = dict_lmdb_open;
68059c16a8Schristos     mkmap->after_open = 0;
69059c16a8Schristos     mkmap->after_close = 0;
70059c16a8Schristos 
71059c16a8Schristos     /*
72059c16a8Schristos      * LMDB uses MVCC so it needs no special lock management here.
73059c16a8Schristos      */
74059c16a8Schristos 
75059c16a8Schristos     return (mkmap);
76059c16a8Schristos }
77059c16a8Schristos 
78059c16a8Schristos #endif
79