1m4_ignore([dnl 2#include <sys/types.h> 3 4#include <stdio.h> 5#include <stdlib.h> 6#include <string.h> 7 8#include <db.h> 9 10#define progname "t" 11 12int display (char *); 13 14int 15main() 16{ 17 display("TESTDIR/test001.db"); 18 return (0); 19}]) 20m4_indent([dnl 21int 22display(database) 23 char *database; 24{ 25 DB *dbp; 26 DBC *dbcp; 27 DBT key, data; 28 int close_db, close_dbc, ret; 29m4_blank 30 close_db = close_dbc = 0; 31m4_blank 32 /* Open the database. */ 33 if ((ret = db_create(&dbp, NULL, 0)) != 0) { 34 fprintf(stderr, 35 "%s: db_create: %s\n", progname, db_strerror(ret)); 36 return (1); 37 } 38 close_db = 1; 39m4_blank 40 /* Turn on additional error output. */ 41 dbp-__GT__set_errfile(dbp, stderr); 42 dbp-__GT__set_errpfx(dbp, progname); 43m4_blank 44 /* Open the database. */ 45 if ((ret = 46 dbp-__GT__open(dbp, NULL, database, NULL, DB_UNKNOWN, DB_RDONLY, 0)) != 0) { 47 dbp-__GT__err(dbp, ret, "%s: DB-__GT__open", database); 48 goto err; 49 } 50m4_blank 51 /* Acquire a cursor for the database. */ 52 if ((ret = dbp-__GT__cursor(dbp, NULL, &dbcp, 0)) != 0) { 53 dbp-__GT__err(dbp, ret, "DB-__GT__cursor"); 54 goto err; 55 } 56 close_dbc = 1; 57m4_blank 58 /* Initialize the key/data return pair. */ 59 memset(&key, 0, sizeof(key)); 60 memset(&data, 0, sizeof(data)); 61m4_blank 62 /* Walk through the database and print out the key/data pairs. */ 63 while ((ret = dbcp-__GT__c_get(dbcp, &key, &data, DB_NEXT)) == 0) 64 printf("%.*s : %.*s\n", 65 (int)key.size, (char *)key.data, 66 (int)data.size, (char *)data.data); 67 if (ret != DB_NOTFOUND) { 68 dbp-__GT__err(dbp, ret, "DBcursor-__GT__get"); 69 goto err; 70 } 71m4_blank 72err: if (close_dbc && (ret = dbcp-__GT__c_close(dbcp)) != 0) 73 dbp-__GT__err(dbp, ret, "DBcursor-__GT__close"); 74 if (close_db && (ret = dbp-__GT__close(dbp, 0)) != 0) 75 fprintf(stderr, 76 "%s: DB-__GT__close: %s\n", progname, db_strerror(ret)); 77 return (0); 78}]) 79