Mercurial > hg > cdb
view cdbget.c @ 17:d9c11148df3b default tip
shh...
| author | Henry S. Thompson <ht@inf.ed.ac.uk> |
|---|---|
| date | Thu, 28 Aug 2025 11:02:58 +0100 |
| parents | 4cc3224ebf41 |
| children |
line wrap: on
line source
#include "exit.h" #include "scan.h" #include "str.h" #include "buffer.h" #include "strerr.h" #include "cdb.h" #include <stdlib.h> #define FATAL "cdbget: fatal: " void die_read(void) { strerr_die2sys(111,FATAL,"unable to read input: "); } void die_write(void) { strerr_die2sys(111,FATAL,"unable to write output: "); } void die_usage(void) { strerr_die1x(111,"cdbget: usage: cdbget key [skip]"); } static struct cdb c; char buf[1024]; int main(int argc,char **argv) { char *key; int r; uint32 pos; uint32 len; unsigned long u = 0; if (!*argv) die_usage(); if (!*++argv) die_usage(); key = *argv; if (*++argv) { scan_ulong(*argv,&u); } cdb_init(&c,0); cdb_findstart(&c); for (;;) { r = cdb_findnext(&c,key,str_len(key)); if (r == -1) die_read(); if (!r) exit(100); if (!u) break; --u; } cdb_write(&c,1); /* pos = cdb_datapos(&c); */ /* len = cdb_datalen(&c); */ /* while (len > 0) { */ /* r = sizeof buf; */ /* if (r > len) r = len; */ /* if (cdb_read(&c,buf,r,pos) == -1) die_read(); */ /* if (buffer_put(buffer_1small,buf,r) == -1) die_write(); */ /* pos += r; */ /* len -= r; */ /* } */ /* if (buffer_flush(buffer_1small) == -1) die_write(); */ exit(0); }
