From 54df2afaa61c6a03cbb4a33c9b90fa572b6d07b8 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Sat, 17 Dec 2016 21:28:53 -0800 Subject: Berkeley DB 4.8 with rust build script for linux. --- db-4.8.30/examples_c/ex_sequence.c | 133 +++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 db-4.8.30/examples_c/ex_sequence.c (limited to 'db-4.8.30/examples_c/ex_sequence.c') diff --git a/db-4.8.30/examples_c/ex_sequence.c b/db-4.8.30/examples_c/ex_sequence.c new file mode 100644 index 0000000..059d5a9 --- /dev/null +++ b/db-4.8.30/examples_c/ex_sequence.c @@ -0,0 +1,133 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 1997-2009 Oracle. All rights reserved. + * + * $Id$ + */ + +#include + +#include +#include +#include + +#ifdef _WIN32 +extern int getopt(int, char * const *, const char *); +#else +#include +#endif + +#include + +#define DATABASE "sequence.db" +#define SEQUENCE "my_sequence" +int main __P((int, char *[])); +int usage __P((void)); + +int +main(argc, argv) + int argc; + char *argv[]; +{ + extern int optind; + DB *dbp; + DB_SEQUENCE *seq; + DBT key; + int i, ret, rflag; + db_seq_t seqnum; + char ch; + const char *database, *progname = "ex_sequence"; + + dbp = NULL; + seq = NULL; + + rflag = 0; + while ((ch = getopt(argc, argv, "r")) != EOF) + switch (ch) { + case 'r': + rflag = 1; + break; + case '?': + default: + return (usage()); + } + argc -= optind; + argv += optind; + + /* Accept optional database name. */ + database = *argv == NULL ? DATABASE : argv[0]; + + /* Optionally discard the database. */ + if (rflag) + (void)remove(database); + + /* Create and initialize database object, open the database. */ + if ((ret = db_create(&dbp, NULL, 0)) != 0) { + fprintf(stderr, + "%s: db_create: %s\n", progname, db_strerror(ret)); + return (EXIT_FAILURE); + } + dbp->set_errfile(dbp, stderr); + dbp->set_errpfx(dbp, progname); + if ((ret = dbp->open(dbp, + NULL, database, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) { + dbp->err(dbp, ret, "%s: open", database); + goto err; + } + + if ((ret = db_sequence_create(&seq, dbp, 0)) != 0) { + dbp->err(dbp, ret, "db_sequence_create"); + goto err; + } + + memset(&key, 0, sizeof(DBT)); + key.data = SEQUENCE; + key.size = (u_int32_t)strlen(SEQUENCE); + + if ((ret = seq->open(seq, NULL, &key, DB_CREATE)) != 0) { + dbp->err(dbp, ret, "%s: DB_SEQUENCE->open", SEQUENCE); + goto err; + } + + for (i = 0; i < 10; i++) { + if ((ret = seq->get(seq, NULL, 1, &seqnum, 0)) != 0) { + dbp->err(dbp, ret, "DB_SEQUENCE->get"); + goto err; + } + + /* There's no portable way to print 64-bit numbers. */ +#ifdef _WIN32 + printf("Got sequence number %I64d\n", (int64_t)seqnum); +#else + printf( + "Got sequence number %llu\n", (unsigned long long)seqnum); +#endif + } + + /* Close everything down. */ + if ((ret = seq->close(seq, 0)) != 0) { + seq = NULL; + dbp->err(dbp, ret, "DB_SEQUENCE->close"); + goto err; + } + if ((ret = dbp->close(dbp, 0)) != 0) { + fprintf(stderr, + "%s: DB->close: %s\n", progname, db_strerror(ret)); + return (EXIT_FAILURE); + } + return (EXIT_SUCCESS); + +err: if (seq != NULL) + (void)seq->close(seq, 0); + if (dbp != NULL) + (void)dbp->close(dbp, 0); + return (EXIT_FAILURE); +} + +int +usage() +{ + (void)fprintf(stderr, "usage: ex_sequence [-r] [database]\n"); + return (EXIT_FAILURE); +} -- cgit v1.2.3