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 10#define DATABASE1 "foo" 11#define DATABASE2 "bar" 12 13int db_setup(char *, char *, FILE *, char *); 14 15int 16main() 17{ 18 return (db_setup("/tmp/__dbenv__", "test", stderr, "test_app")); 19} 20int 21db_setup(home, data_dir, errfp, progname) 22 char *home, *data_dir, *progname; 23 FILE *errfp; 24{]) 25m4_indent([dnl 26 DB_ENV *dbenv; 27 DB *dbp1, *dbp2; 28 int ret; 29m4_blank 30 dbenv = NULL; 31 dbp1 = dbp2 = NULL; 32m4_blank 33 /* 34 * Create an environment and initialize it for additional error 35 * reporting. 36 */ 37 if ((ret = db_env_create(&dbenv, 0)) != 0) { 38 fprintf(errfp, "%s: %s\n", progname, db_strerror(ret)); 39 return (ret); 40 } 41m4_blank 42 dbenv-__GT__set_errfile(dbenv, errfp); 43 dbenv-__GT__set_errpfx(dbenv, progname); 44m4_blank 45 /* Open an environment with just a memory pool. */ 46 if ((ret = 47 dbenv-__GT__open(dbenv, home, DB_CREATE | DB_INIT_MPOOL, 0)) != 0) { 48 dbenv-__GT__err(dbenv, ret, "environment open: %s", home); 49 goto err; 50 } 51m4_blank 52 /* Open database #1. */ 53 if ((ret = db_create(&dbp1, dbenv, 0)) != 0) { 54 dbenv-__GT__err(dbenv, ret, "database create"); 55 goto err; 56 } 57 if ((ret = dbp1-__GT__open(dbp1, 58 NULL, DATABASE1, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) { 59 dbenv-__GT__err(dbenv, ret, "DB-__GT__open: %s", DATABASE1); 60 goto err; 61 } 62m4_blank 63 /* Open database #2. */ 64 if ((ret = db_create(&dbp2, dbenv, 0)) != 0) { 65 dbenv-__GT__err(dbenv, ret, "database create"); 66 goto err; 67 } 68 if ((ret = dbp2-__GT__open(dbp2, 69 NULL, DATABASE2, NULL, DB_HASH, DB_CREATE, 0664)) != 0) { 70 dbenv-__GT__err(dbenv, ret, "DB-__GT__open: %s", DATABASE2); 71 goto err; 72 } 73m4_blank 74 return (0); 75m4_blank 76err: if (dbp2 != NULL) 77 (void)dbp2-__GT__close(dbp2, 0); 78 if (dbp1 != NULL) 79 (void)dbp2-__GT__close(dbp1, 0); 80 (void)dbenv-__GT__close(dbenv, 0); 81 return (1); 82}]) 83