📄 env_open.cs
字号:
m4_indent([dnlm4_include(sys/types.h)m4_include(sys/stat.h)m4_blankm4_include(errno.h)m4_include(stdarg.h)m4_include(stdlib.h)m4_include(string.h)m4_include(unistd.h)m4_blankm4_include(db.h)m4_blank#define ENV_DIRECTORY "TXNAPP"m4_blankvoid env_dir_create(void);void env_open(DB_ENV **);m4_blankm4_ignore([void usage(){}])intmain(int argc, char *argv[]){ extern int optind; DB *db_cats, *db_color, *db_fruit; DB_ENV *dbenv; int ch;m4_ignore([db_fruit = NULL; db_color = NULL; db_cats = NULL;])m4_blank while ((ch = getopt(argc, argv, "")) != EOF) switch (ch) { case '?': default: usage(); } argc -= optind; argv += optind;m4_blank env_dir_create(); env_open(&dbenv);m4_blank return (0);}m4_blankvoidenv_dir_create(){ struct stat sb;m4_blank /* * If the directory exists, we're done. We do not further check * the type of the file, DB will fail appropriately if it's the * wrong type. */ if (stat(ENV_DIRECTORY, &sb) == 0) return;m4_blank /* Create the directory, read/write/access owner only. */ if (mkdir(ENV_DIRECTORY, S_IRWXU) != 0) { fprintf(stderr, "txnapp: mkdir: %s: %s\n", ENV_DIRECTORY, strerror(errno)); exit (1); }}m4_blankvoidenv_open(DB_ENV **dbenvp){ DB_ENV *dbenv; int ret;m4_blank /* Create the environment handle. */ if ((ret = db_env_create(&dbenv, 0)) != 0) { fprintf(stderr, "txnapp: db_env_create: %s\n", db_strerror(ret)); exit (1); }m4_blank /* Set up error handling. */ dbenv-__GT__set_errpfx(dbenv, "txnapp"); dbenv-__GT__set_errfile(dbenv, stderr);m4_blank /* * Open a transactional environment: * create if it doesn't exist * free-threaded handle * run recovery * read/write owner only */ if ((ret = dbenv-__GT__open(dbenv, ENV_DIRECTORY, DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD, S_IRUSR | S_IWUSR)) != 0) { (void)dbenv-__GT__close(dbenv, 0); fprintf(stderr, "dbenv-__GT__open: %s: %s\n", ENV_DIRECTORY, db_strerror(ret)); exit (1); }m4_blank *dbenvp = dbenv;}])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -