diff options
| author | Sam Nystrom <sam@samnystrom.dev> | 2024-01-15 13:35:27 -0500 |
|---|---|---|
| committer | Sam Nystrom <sam@samnystrom.dev> | 2024-01-15 13:35:27 -0500 |
| commit | 2bdd00aa69b901e5230c9b8c24727011626ebeaa (patch) | |
| tree | 27967a3ccc64ac477cb0336f4e61282e8ab832ff /cdbdump.c | |
Diffstat (limited to 'cdbdump.c')
| -rw-r--r-- | cdbdump.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/cdbdump.c b/cdbdump.c new file mode 100644 index 0000000..7e77ef7 --- /dev/null +++ b/cdbdump.c @@ -0,0 +1,42 @@ +#include <skalibs/buffer.h> +#include <skalibs/cdb.h> +#include <skalibs/strerr.h> +#include <skalibs/uint32.h> + +int +main(int argc, char *argv[]) +{ + PROG = "cdbdump"; + if (argc != 1) + strerr_dieusage(100, "cdbdump < CDB"); + + cdb c = CDB_ZERO; + cdb_init_fromfd(&c, 0); + cdb_data key, data; + uint32_t pos = CDB_TRAVERSE_INIT(); + for (;;) { + int r = cdb_traverse_next(&c, &key, &data, &pos); + if (!r) break; + if (r < 0) + strerr_diefusys(111, "read cdb"); + + char uintbuf[sizeof("4294967295")]; + + buffer_put(buffer_1, "+", 1); + uintbuf[uint32_fmt(uintbuf, key.len)] = 0; + buffer_puts(buffer_1, uintbuf); + buffer_put(buffer_1, ",", 1); + uintbuf[uint32_fmt(uintbuf, data.len)] = 0; + buffer_puts(buffer_1, uintbuf); + buffer_put(buffer_1, ":", 1); + + buffer_put(buffer_1, key.s, key.len); + buffer_put(buffer_1, "->", 2); + buffer_put(buffer_1, data.s, data.len); + buffer_put(buffer_1, "\n", 1); + + buffer_flush(buffer_1); + } + cdb_free(&c); + return 0; +} |
