#include #include #include #include #include int main(int argc, char *argv[]) { PROG = "cdbget"; if (argc < 2 || argc > 3) strerr_dieusage(100, "cdbget KEY [SKIP]"); char *key = argv[1]; uint32_t keylen = strlen(key); uint32_t skip = 0; if (argc == 3) { if (!uint320_scan(argv[2], &skip)) strerr_dief(111, "invalid integer \"", argv[2], "\""); } cdb c = CDB_ZERO; cdb_init_fromfd(&c, 0); cdb_find_state findstate; cdb_findstart(&findstate); cdb_data data; for (skip++; skip > 0; skip--) { if (cdb_findnext(&c, &data, key, keylen, &findstate) == 0) return 1; } if (allwrite(1, data.s, data.len) != data.len) strerr_diefusys(111, "write cdb data to stdout"); cdb_free(&c); return 0; }