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