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 *checkpoint_thread(void *);
15
16int add_cat(DB_ENV *a, DB *b, char *c, ...) {
17	a = NULL; b = NULL; c = NULL;
18	return (0);
19}
20int add_color(DB_ENV *a, DB *b, char *c, int d) {
21	a = NULL; b = NULL; c = NULL; d = 0;
22	return (0);
23}
24int add_fruit(DB_ENV *a, DB *b, char *c, char *d) {
25	a = NULL; b = NULL; c = NULL; d = 0;
26	return (0);
27}
28void  db_open(DB_ENV *a, DB **b, char *c, int d) {
29	a = NULL; b = NULL; c = NULL; d = 0;
30}
31void usage(){}
32void env_open(DB_ENV **a) { a = NULL; }
33void env_dir_create() {}
34])
35m4_indent([dnl
36int
37main(int argc, char *argv[])
38{
39	extern int optind;
40	DB *db_cats, *db_color, *db_fruit;
41	DB_ENV *dbenv;
42	pthread_t ptid;
43	int ch;
44m4_blank
45	while ((ch = getopt(argc, argv, "")) != EOF)
46		switch (ch) {
47		case '?':
48		default:
49			usage();
50		}
51	argc -= optind;
52	argv += optind;
53m4_blank
54	env_dir_create();
55	env_open(&dbenv);
56m4_blank
57m4_cbold([dnl
58	/* Start a checkpoint thread. */
59	if ((errno = pthread_create(
60	    &ptid, NULL, checkpoint_thread, (void *)dbenv)) != 0) {
61		fprintf(stderr,
62		    "txnapp: failed spawning checkpoint thread: %s\n",
63		    strerror(errno));
64		exit (1);
65	}])
66m4_blank
67	/* Open database: Key is fruit class; Data is specific type. */
68	db_open(dbenv, &db_fruit, "fruit", 0);
69m4_blank
70	/* Open database: Key is a color; Data is an integer. */
71	db_open(dbenv, &db_color, "color", 0);
72m4_blank
73	/*
74	 * Open database:
75	 *	Key is a name; Data is: company name, cat breeds.
76	 */
77	db_open(dbenv, &db_cats, "cats", 1);
78m4_blank
79	add_fruit(dbenv, db_fruit, "apple", "yellow delicious");
80m4_blank
81	add_color(dbenv, db_color, "blue", 0);
82	add_color(dbenv, db_color, "blue", 3);
83m4_blank
84	add_cat(dbenv, db_cats,
85		"Amy Adams",
86		"Oracle",
87		"abyssinian",
88		"bengal",
89		"chartreaux",
90		NULL);
91m4_blank
92	return (0);
93}
94m4_blank
95m4_cbold([dnl
96void *
97checkpoint_thread(void *arg)
98{
99	DB_ENV *dbenv;
100	int ret;
101m4_blank
102	dbenv = arg;
103	dbenv-__GT__errx(dbenv, "Checkpoint thread: %lu", (u_long)pthread_self());
104m4_blank
105	/* Checkpoint once a minute. */
106	for (;; sleep(60))
107		if ((ret = dbenv-__GT__txn_checkpoint(dbenv, 0, 0, 0)) != 0) {
108			dbenv-__GT__err(dbenv, ret, "checkpoint thread");
109			exit (1);
110		}
111m4_blank
112	/* NOTREACHED */
113}])])
114