• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/ap/gpl/timemachine/db-4.7.25.NC/docs_src/ref/transapp/
1m4_indent([dnl
2m4_include(sys/types.h)
3m4_include(sys/stat.h)
4m4_blank
5m4_include(errno.h)
6m4_include(stdarg.h)
7m4_include(stdlib.h)
8m4_include(string.h)
9m4_include(unistd.h)
10m4_blank
11m4_include(db.h)
12m4_blank
13#define	ENV_DIRECTORY	"TXNAPP"
14m4_blank
15void  env_dir_create(void);
16void  env_open(DB_ENV **);
17m4_blank
18m4_ignore([void usage(){}])
19int
20main(int argc, char *argv[])
21{
22	extern int optind;
23	DB *db_cats, *db_color, *db_fruit;
24	DB_ENV *dbenv;
25	int ch;
26m4_ignore([db_fruit = NULL; db_color = NULL; db_cats = NULL;])
27m4_blank
28	while ((ch = getopt(argc, argv, "")) != EOF)
29		switch (ch) {
30		case '?':
31		default:
32			usage();
33		}
34	argc -= optind;
35	argv += optind;
36m4_blank
37	env_dir_create();
38	env_open(&dbenv);
39m4_blank
40	return (0);
41}
42m4_blank
43void
44env_dir_create()
45{
46	struct stat sb;
47m4_blank
48	/*
49	 * If the directory exists, we're done.  We do not further check
50	 * the type of the file, DB will fail appropriately if it's the
51	 * wrong type.
52	 */
53	if (stat(ENV_DIRECTORY, &sb) == 0)
54		return;
55m4_blank
56	/* Create the directory, read/write/access owner only. */
57	if (mkdir(ENV_DIRECTORY, S_IRWXU) != 0) {
58		fprintf(stderr,
59		    "txnapp: mkdir: %s: %s\n", ENV_DIRECTORY, strerror(errno));
60		exit (1);
61	}
62}
63m4_blank
64void
65env_open(DB_ENV **dbenvp)
66{
67	DB_ENV *dbenv;
68	int ret;
69m4_blank
70	/* Create the environment handle. */
71	if ((ret = db_env_create(&dbenv, 0)) != 0) {
72		fprintf(stderr,
73		    "txnapp: db_env_create: %s\n", db_strerror(ret));
74		exit (1);
75	}
76m4_blank
77	/* Set up error handling. */
78	dbenv-__GT__set_errpfx(dbenv, "txnapp");
79	dbenv-__GT__set_errfile(dbenv, stderr);
80m4_blank
81	/*
82	 * Open a transactional environment:
83	 *	create if it doesn't exist
84	 *	free-threaded handle
85	 *	run recovery
86	 *	read/write owner only
87	 */
88	if ((ret = dbenv-__GT__open(dbenv, ENV_DIRECTORY,
89	    DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
90	    DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD,
91	    S_IRUSR | S_IWUSR)) != 0) {
92		(void)dbenv-__GT__close(dbenv, 0);
93		fprintf(stderr, "dbenv-__GT__open: %s: %s\n",
94		    ENV_DIRECTORY, db_strerror(ret));
95		exit (1);
96	}
97m4_blank
98	*dbenvp = dbenv;
99}])
100