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)60059c16a8SchristosMKMAP *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