libtxtdb

C library for txtdb, the text-based database

Download:
  • libtxtdb-0.1.tar.gz [BSD Licence]
  • Example:
    #include <stdio.h>
    #include <err.h>
    
    #include <txtdb.h>
    
    int
    main(int argc, char *argv[])
    {
        struct keyval kv, kv2, *kvread;
        db_t db;
        cursor_t c;
        char e[128];
        
        // open database instance in same directory
        if ((db = txtdb_dbopen(".", e, sizeof(e))) == NULL)
            errx(1, "txtdb_dbopen() failed: %s", e);
        
        // write two key-value pairs to the class "sensors/basement"
        kv2.k = "value";
        kv2.v = "23.4 degC";
        kv2.next = NULL;
        kv.k = "id";
        kv.v = "0xdeadbeef";
        kv.next = &kv2;
        if (txtdb_append(db, "sensors/basement", &kv) != 2)
            errx(1, "txtdb_append() failed: %s", txtdb_err(db, e, sizeof(e)));
        
        // open reader on "sensors/basement"
        if ((c = txtdb_readopen(db, "sensors/basement", NULL, 0)) == NULL)
            errx(1, "txtdb_readopen() failed: %s", txtdb_err(db, e,sizeof(e)));
        
        // read back each tuple
        while ((kvread = txtdb_next(c)) != NULL) {
            for (kvread=kvread; kvread != NULL; kvread = kvread->next)
                printf("key:%s value:%s ", kvread->k, kvread->v);
            printf("\n");
        }
        txtdb_readclose(c);
        
        // close up
        txtdb_dbclose(db);
        
        return 0;
    }
    
    If we run this program we see:
    key:id value:0xdeadbeef key:value value:23.4 degC 
    
    Compatibility:
    Known to compile on OSX 10.4, FreeBSD 5/6, and Linux (Fedora Core 2).
    Documentation:
  • txtdb.3 manpage - C/C++ programmer's reference