From: Rusty Russell Date: Thu, 18 Jun 2009 09:08:03 +0000 (+0930) Subject: First step to ccanizing TDB. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=2c67a284d11b5b030d8095df7ff2b31275d7d29c First step to ccanizing TDB. --- diff --git a/ccan/tdb/_info b/ccan/tdb/_info new file mode 100644 index 00000000..75f20b45 --- /dev/null +++ b/ccan/tdb/_info @@ -0,0 +1,76 @@ +#include + +/** + * tdb - The trivial (transactional) database + * + * The tdb module provides an efficient keyword data mapping (usually + * within a file). It supports transactions, so the contents of the + * database is reliable even across crashes. + * + * Example: + * #include + * #include + * #include + * #include + * + * static void usage(void) + * { + * errx(1, "Usage: %s fetch \n" + * "OR %s store "); + * } + * + * int main(int argc, char *argv[]) + * { + * struct tdb_context *tdb; + * TDB_DATA key, value; + * + * if (argc < 4) + * usage(); + * + * tdb = tdb_open(argv[2], 1024, TDB_DEFAULT, O_CREAT|O_RDWR, + * 0600); + * if (!tdb) + * err(1, "Opening %s", argv[2]); + * + * key.dptr = (void *)argv[3]; + * key.dsize = strlen(argv[3]); + * + * if (streq(argv[1], "fetch")) { + * if (argc != 4) + * usage(); + * value = tdb_fetch(tdb, key); + * if (!value.dptr) + * errx(1, "fetch %s: %s", + * argv[3], tdb_errorstr(tdb)); + * printf("%.*s\n", value.dsize, (char *)value.dptr); + * free(value.dptr); + * } else if (streq(argv[1], "store")) { + * if (argc != 5) + * usage(); + * value.dptr = (void *)argv[4]; + * value.dsize = strlen(argv[4]); + * if (tdb_store(tdb, key, value, 0) != 0) + * errx(1, "store %s: %s", + * argv[3], tdb_errorstr(tdb)); + * } else + * usage(); + * + * return 0; + * } + * + * Maintainer: Rusty Russell + * + * Author: Andrew Tridgell, Jeremy Allison, Rusty Russell + * + * Licence: LGPLv3 (or later) + */ +int main(int argc, char *argv[]) +{ + if (argc != 2) + return 1; + + if (strcmp(argv[1], "depends") == 0) + return 0; + + return 1; +} diff --git a/ccan/tdb/io.c b/ccan/tdb/io.c index 172ab69d..3bf64443 100644 --- a/ccan/tdb/io.c +++ b/ccan/tdb/io.c @@ -25,8 +25,10 @@ License along with this library; if not, see . */ - #include "tdb_private.h" +#ifndef MAX +#define MAX(a,b) ((a) > (b) ? (a) : (b)) +#endif /* check for an out of bounds access - if it is out of bounds then see if the database has been expanded by someone else and expand diff --git a/ccan/tdb/tdb.h b/ccan/tdb/tdb.h index 62811817..f1805ecd 100644 --- a/ccan/tdb/tdb.h +++ b/ccan/tdb/tdb.h @@ -30,6 +30,12 @@ extern "C" { #endif +#ifndef _SAMBA_BUILD_ +/* For mode_t */ +#include +/* For sig_atomic_t. */ +#include +#endif /* flags to tdb_store() */ #define TDB_REPLACE 1 /* Unused */ diff --git a/ccan/tdb/tdb_private.h b/ccan/tdb/tdb_private.h index ffac89ff..9942e503 100644 --- a/ccan/tdb/tdb_private.h +++ b/ccan/tdb/tdb_private.h @@ -23,12 +23,26 @@ License along with this library; if not, see . */ +#ifdef _SAMBA_BUILD_ #include "replace.h" #include "system/filesys.h" #include "system/time.h" #include "system/shmem.h" #include "system/select.h" #include "system/wait.h" +#else +#define _XOPEN_SOURCE 500 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif #include "tdb.h" #ifndef HAVE_GETPAGESIZE