Mercurial > hg > cdb
comparison cdbget.c @ 13:0a35d8de4296
support profiling with gprof
| author | Henry S. Thompson <ht@inf.ed.ac.uk> |
|---|---|
| date | Fri, 07 Feb 2025 14:43:27 +0000 |
| parents | 3bfef1f22a97 |
| children | 4cc3224ebf41 |
comparison
equal
deleted
inserted
replaced
| 12:0e21568dec72 | 13:0a35d8de4296 |
|---|---|
| 2 #include "scan.h" | 2 #include "scan.h" |
| 3 #include "str.h" | 3 #include "str.h" |
| 4 #include "buffer.h" | 4 #include "buffer.h" |
| 5 #include "strerr.h" | 5 #include "strerr.h" |
| 6 #include "cdb.h" | 6 #include "cdb.h" |
| 7 #include <stdlib.h> | |
| 7 | 8 |
| 8 #define FATAL "cdbget: fatal: " | 9 #define FATAL "cdbget: fatal: " |
| 9 | 10 |
| 10 void die_read(void) | 11 void die_read(void) |
| 11 { | 12 { |
| 44 cdb_findstart(&c); | 45 cdb_findstart(&c); |
| 45 | 46 |
| 46 for (;;) { | 47 for (;;) { |
| 47 r = cdb_findnext(&c,key,str_len(key)); | 48 r = cdb_findnext(&c,key,str_len(key)); |
| 48 if (r == -1) die_read(); | 49 if (r == -1) die_read(); |
| 49 if (!r) _exit(100); | 50 if (!r) exit(100); |
| 50 if (!u) break; | 51 if (!u) break; |
| 51 --u; | 52 --u; |
| 52 } | 53 } |
| 53 | 54 |
| 54 pos = cdb_datapos(&c); | 55 pos = cdb_datapos(&c); |
| 61 if (buffer_put(buffer_1small,buf,r) == -1) die_write(); | 62 if (buffer_put(buffer_1small,buf,r) == -1) die_write(); |
| 62 pos += r; | 63 pos += r; |
| 63 len -= r; | 64 len -= r; |
| 64 } | 65 } |
| 65 if (buffer_flush(buffer_1small) == -1) die_write(); | 66 if (buffer_flush(buffer_1small) == -1) die_write(); |
| 66 _exit(0); | 67 exit(0); |
| 67 } | 68 } |
