First step to ccanizing TDB.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 18 Jun 2009 09:08:03 +0000 (18:38 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 18 Jun 2009 09:08:03 +0000 (18:38 +0930)
ccan/tdb/_info [new file with mode: 0644]
ccan/tdb/io.c
ccan/tdb/tdb.h
ccan/tdb/tdb_private.h

diff --git a/ccan/tdb/_info b/ccan/tdb/_info
new file mode 100644 (file)
index 0000000..75f20b4
--- /dev/null
@@ -0,0 +1,76 @@
+#include <string.h>
+
+/**
+ * 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 <ccan/tdb/tdb.h>
+ *     #include <ccan/str/str.h>
+ *     #include <err.h>
+ *     #include <stdio.h>
+ *     
+ *     static void usage(void)
+ *     {
+ *             errx(1, "Usage: %s fetch <dbfile> <key>\n"
+ *                  "OR %s store <dbfile> <key> <data>");
+ *     }
+ *     
+ *     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 <rusty@rustcorp.com.au>
+ *
+ * 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;
+}
index 172ab69d8c9e69ae7f160071567c4d885ac7848c..3bf64443535d6080ed9e7f29a97849b627300ac5 100644 (file)
    License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
-
 #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
index 628118172e807ed10762f631bae0b8168fe37f38..f1805ecddbd09c4011788d15f551b8dba31ad0d8 100644 (file)
 extern "C" {
 #endif
 
+#ifndef _SAMBA_BUILD_
+/* For mode_t */
+#include <sys/types.h>
+/* For sig_atomic_t. */
+#include <signal.h>
+#endif
 
 /* flags to tdb_store() */
 #define TDB_REPLACE 1          /* Unused */
index ffac89ff0e315195b3defdebc35184ef7ab6a038..9942e503da7e4298535b3cf7f87b67d7cffaab94 100644 (file)
    License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */
 
+#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 <stdint.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+#include <stdio.h>
+#endif
 #include "tdb.h"
 
 #ifndef HAVE_GETPAGESIZE