1m4_ignore([dnl 2#include <sys/types.h> 3#include <sys/stat.h> 4 5#include <errno.h> 6#include <pthread.h> 7#include <stdarg.h> 8#include <stdlib.h> 9#include <string.h> 10#include <unistd.h> 11 12#include <db.h> 13 14void env_open(DB_ENV **); 15 16#define ENV_DIRECTORY "/tmp" 17 18int 19main() 20{ 21 DB_ENV *dbenv; 22 env_open(&dbenv); 23 return (0); 24}]) 25m4_indent([dnl 26void 27env_open(DB_ENV **dbenvp) 28{ 29 DB_ENV *dbenv; 30 int ret; 31m4_blank 32 /* Create the environment handle. */ 33 if ((ret = db_env_create(&dbenv, 0)) != 0) { 34 fprintf(stderr, 35 "txnapp: db_env_create: %s\n", db_strerror(ret)); 36 exit (1); 37 } 38m4_blank 39 /* Set up error handling. */ 40 dbenv-__GT__set_errpfx(dbenv, "txnapp"); 41 dbenv-__GT__set_errfile(dbenv, stderr); 42m4_blank 43m4_cbold([dnl 44 /* Do deadlock detection internally. */ 45 if ((ret = dbenv-__GT__set_lk_detect(dbenv, DB_LOCK_DEFAULT)) != 0) { 46 dbenv-__GT__err(dbenv, ret, "set_lk_detect: DB_LOCK_DEFAULT"); 47 exit (1); 48 }]) 49m4_blank 50 /* 51 * Open a transactional environment: 52 * create if it doesn't exist 53 * free-threaded handle 54 * run recovery 55 * read/write owner only 56 */ 57 if ((ret = dbenv-__GT__open(dbenv, ENV_DIRECTORY, 58 DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | 59 DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD, 60 S_IRUSR | S_IWUSR)) != 0) { 61 dbenv-__GT__err(dbenv, ret, "dbenv-__GT__open: %s", ENV_DIRECTORY); 62 exit (1); 63 } 64m4_blank 65 *dbenvp = dbenv; 66}]) 67