# HG changeset patch # User Henry S. Thompson # Date 1738603883 0 # Node ID 0e21568dec725e152fe250eae64a19a74af124d0 # Parent 978eaa1666090d99cc30775b56c8995e5e12f40a allocate a Cdb struct rather than using a single static one, note that cdb_free does _not_ call alloc_free, just releases the map, in fact alloc_free is not called anywhere! diff -r 978eaa166609 -r 0e21568dec72 Makefile --- a/Makefile Fri Jan 31 17:28:35 2025 +0000 +++ b/Makefile Mon Feb 03 17:31:23 2025 +0000 @@ -112,8 +112,8 @@ ./compile cdbdump.c cdbget: \ -load cdbget.o cdb.a buffer.a unix.a byte.a - ./load cdbget cdb.a buffer.a unix.a byte.a +load cdbget.o cdb.a alloc.a buffer.a unix.a byte.a + ./load cdbget cdb.a alloc.a buffer.a unix.a byte.a cdbget.o: \ compile cdbget.c exit.h scan.h str.h buffer.h strerr.h cdb.h uint32.h @@ -143,8 +143,8 @@ ./compile cdbmake.c cdbstats: \ -load cdbstats.o cdb.a buffer.a unix.a byte.a - ./load cdbstats cdb.a buffer.a unix.a byte.a +load cdbstats.o cdb.a alloc.a buffer.a unix.a byte.a + ./load cdbstats cdb.a alloc.a buffer.a unix.a byte.a cdbstats.o: \ compile cdbstats.c uint32.h fmt.h buffer.h strerr.h seek.h cdb.h \ @@ -152,8 +152,8 @@ ./compile cdbstats.c cdbtest: \ -load cdbtest.o cdb.a buffer.a unix.a byte.a - ./load cdbtest cdb.a buffer.a unix.a byte.a +load cdbtest.o cdb.a alloc.a buffer.a unix.a byte.a + ./load cdbtest cdb.a alloc.a buffer.a unix.a byte.a cdbtest.o: \ compile cdbtest.c uint32.h fmt.h buffer.h strerr.h seek.h cdb.h \ @@ -180,7 +180,7 @@ debug: sed "1s@FIXME@${HOME}@" conf-home.ac > conf-home - sed '1s/CFLAGS/-O -dgdb/' conf-cc.ac > conf-cc + sed '1s/CFLAGS/-O -ggdb/' conf-cc.ac > conf-cc sed '1s/LDFLAGS//' conf-ld.ac > conf-ld chmod +x conf-?? @@ -343,5 +343,5 @@ error_str.o seek_set.o seek_cur.o libcdb.a: \ -cdb.o error.o open_read.o seek_cur.o open_trunc.o seek_set.o byte_copy.o byte_diff.o error_str.o uint32_unpack.o cdb_hash.o - ./makelib libcdb.a cdb.o error.o open_read.o seek_cur.o open_trunc.o seek_set.o byte_copy.o byte_diff.o error_str.o uint32_unpack.o cdb_hash.o +cdb.o error.o open_read.o seek_cur.o open_trunc.o seek_set.o byte_copy.o byte_diff.o error_str.o uint32_unpack.o cdb_hash.o alloc.o + ./makelib libcdb.a alloc.o cdb.o error.o open_read.o seek_cur.o open_trunc.o seek_set.o byte_copy.o byte_diff.o error_str.o uint32_unpack.o cdb_hash.o diff -r 978eaa166609 -r 0e21568dec72 cdb.c --- a/cdb.c Fri Jan 31 17:28:35 2025 +0000 +++ b/cdb.c Mon Feb 03 17:31:23 2025 +0000 @@ -7,17 +7,18 @@ #include "error.h" #include "seek.h" #include "byte.h" +#include "alloc.h" #include "cdb.h" -static Cdb c; +/*static Cdb c;*/ Cdb* cdb_new(void) { - return &c; + return (Cdb *)(alloc(sizeof(Cdb))); } -void cdb_free(Cdb *c) +void cdb_clear(Cdb *c) { if (c->map) { munmap(c->map,c->size); @@ -25,21 +26,21 @@ } } -uint32 cdb_len() { - return c.dlen; -} +/* uint32 cdb_len() { */ +/* return c.dlen; */ +/* } */ -uint32 cdb_pos() { - return c.dpos; -} +/* uint32 cdb_pos() { */ +/* return c.dpos; */ +/* } */ -char *cdb_mmap() { - return c.map; -} +/* char *cdb_mmap() { */ +/* return c.map; */ +/* } */ -uint32 cdb_msize() { - return c.size; -} +/* uint32 cdb_msize() { */ +/* return c.size; */ +/* } */ void cdb_findstart(Cdb *c) { @@ -51,7 +52,7 @@ struct stat st; char *x; - cdb_free(c); + cdb_clear(c); cdb_findstart(c); c->fd = fd; diff -r 978eaa166609 -r 0e21568dec72 cdb.h --- a/cdb.h Fri Jan 31 17:28:35 2025 +0000 +++ b/cdb.h Mon Feb 03 17:31:23 2025 +0000 @@ -26,7 +26,7 @@ extern Cdb* cdb_new(void); -extern void cdb_free(Cdb *); +extern void cdb_clear(Cdb *); extern void cdb_init(Cdb *,int fd); extern int cdb_read(Cdb *,char *,unsigned int,uint32); @@ -35,12 +35,15 @@ extern int cdb_findnext(Cdb *,char *,unsigned int); extern int cdb_find(Cdb *,char *,unsigned int); -extern uint32 cdb_pos(); -extern uint32 cdb_len(); +/*extern uint32 cdb_pos(); +extern uint32 cdb_len();*/ +#define cdb_pos(c) ((c)->dpos) +#define cdb_len(c) ((c)->dlen) -extern char *cdb_mmap(); -extern uint32 cdb_msize(); - +/*extern char *cdb_mmap(); +extern uint32 cdb_msize();*/ +#define cdb_mmap(c) ((c)->map) +#define cdb_msize(c) ((c)->size) #define cdb_datapos(c) ((c)->dpos) #define cdb_datalen(c) ((c)->dlen)