1m4_ignore([dnl 2#include <sys/types.h> 3 4#include <stddef.h> 5#include <stdio.h> 6#include <stdlib.h> 7 8#include <db.h> 9 10DB_ENV *db_setup(char *, char *, FILE *, char *); 11 12int 13main() 14{ 15 DB_ENV *dbenv; 16 17 system("rm -rf /tmp/__dbenv__; mkdir -p /tmp/__dbenv__/test"); 18 dbenv = db_setup("/tmp/__dbenv__", "test", stderr, "test_app"); 19 system("rm -rf /tmp/__dbenv__"); 20 return (0); 21}]) 22m4_indent([dnl 23DB_ENV * 24db_setup(home, data_dir, errfp, progname) 25 char *home, *data_dir, *progname; 26 FILE *errfp; 27{ 28 DB_ENV *dbenv; 29 int ret; 30m4_blank 31 /* 32 * Create an environment and initialize it for additional error 33 * reporting. 34 */ 35 if ((ret = db_env_create(&dbenv, 0)) != 0) { 36 fprintf(errfp, "%s: %s\n", progname, db_strerror(ret)); 37 return (NULL); 38 } 39 dbenv-__GT__set_errfile(dbenv, errfp); 40 dbenv-__GT__set_errpfx(dbenv, progname); 41m4_blank 42 /* 43 * Specify the shared memory buffer pool cachesize: 5MB. 44 * Databases are in a subdirectory of the environment home. 45 */ 46 if ((ret = dbenv-__GT__set_cachesize(dbenv, 0, 5 * 1024 * 1024, 0)) != 0) { 47 dbenv-__GT__err(dbenv, ret, "set_cachesize"); 48 goto err; 49 } 50 if ((ret = dbenv-__GT__set_data_dir(dbenv, data_dir)) != 0) { 51 dbenv-__GT__err(dbenv, ret, "set_data_dir: %s", data_dir); 52 goto err; 53 } 54m4_blank 55 /* Open the environment with full transactional support. */ 56 if ((ret = dbenv-__GT__open(dbenv, home, DB_CREATE | 57 DB_INIT_LOG | DB_INIT_LOCK | DB_INIT_MPOOL | DB_INIT_TXN, 0)) != 0) { 58 dbenv-__GT__err(dbenv, ret, "environment open: %s", home); 59 goto err; 60 } 61m4_blank 62 return (dbenv); 63m4_blank 64err: (void)dbenv-__GT__close(dbenv, 0); 65 return (NULL); 66}]) 67