# HG changeset patch # User Henry S. Thompson # Date 1740680789 0 # Node ID 70f4df5a72832604e54f34909f28075733f8adca # Parent 4cc3224ebf41d5ee66ddcc6d081bf8ca3c81647a add cdb_write, log basic mmap outcomes diff -r 4cc3224ebf41 -r 70f4df5a7283 Makefile --- a/Makefile Thu Feb 27 18:24:24 2025 +0000 +++ b/Makefile Thu Feb 27 18:26:29 2025 +0000 @@ -87,8 +87,8 @@ ./compile byte_diff.c cdb.a: \ -makelib cdb.o cdb_hash.o cdb_make.o - ./makelib cdb.a cdb.o cdb_hash.o cdb_make.o +makelib cdb.o cdb_hash.o cdb_make.o buffer.o buffer_1s.o buffer_put.o str_len.o strerr_sys.o strerr_die.o buffer_2.o + ./makelib cdb.a cdb.o cdb_hash.o cdb_make.o buffer.o buffer_1s.o buffer_put.o str_len.o strerr_sys.o strerr_die.o buffer_2.o cdb.o: \ compile cdb.c readwrite.h error.h seek.h byte.h cdb.h uint32.h @@ -174,7 +174,7 @@ compile: \ warn-auto.sh conf-cc ( cat warn-auto.sh; \ - echo exec "`head -1 conf-cc`" '-c $${1+"$$@"}' \ + echo exec env LC_NUMERIC=en_GB.UTF-8 "`head -1 conf-cc`" '-c $${1+"$$@"}' \ ) > compile chmod 755 compile @@ -351,5 +351,7 @@ 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 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 +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 buffer.o buffer_1s.o buffer_put.o str_len.o strerr_sys.o strerr_die.o buffer_2.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 buffer.o buffer_1s.o buffer_put.o str_len.o strerr_sys.o strerr_die.o buffer_2.o + + diff -r 4cc3224ebf41 -r 70f4df5a7283 cdb.c --- a/cdb.c Thu Feb 27 18:24:24 2025 +0000 +++ b/cdb.c Thu Feb 27 18:26:29 2025 +0000 @@ -3,16 +3,21 @@ #include #include #include +#include #include "readwrite.h" +#include "strerr.h" #include "error.h" #include "seek.h" #include "byte.h" #include "alloc.h" +#include "buffer.h" #include "cdb.h" /*static Cdb c;*/ +static char _buf[32]; + Cdb* cdb_new(void) { return (Cdb *)(alloc(sizeof(Cdb))); @@ -58,7 +63,11 @@ if (fstat(fd,&st) == 0) if (st.st_size <= 0xffffffff) { + sprintf(_buf,"%'u",st.st_size); + strerr_warn3("cdb_init ","fd size: ",_buf,0); x = mmap(0,st.st_size,PROT_READ,MAP_SHARED,fd,0); + sprintf(_buf,"%x",x); + strerr_warn3("cdb_init ","mmap addr: ",_buf,0); if (x + 1) { c->size = st.st_size; c->map = x; @@ -66,6 +75,17 @@ } } +void cdb_init_nomap(Cdb *c,int fd) +{ + struct stat st; + char *x; + + cdb_clear(c); + cdb_findstart(c); + c->fd = fd; +} + + int cdb_read(Cdb *c,char *buf,unsigned int len,uint32 pos) { if (c->map) { @@ -159,3 +179,25 @@ cdb_findstart(c); return cdb_findnext(c,key,len); } + +char wbuf[1024]; + +int cdb_write(Cdb *c,int fd) +{ + uint32 pos; + uint32 len; + int r; + + pos = cdb_datapos(c); + len = cdb_datalen(c); + + while (len > 0) { + r = sizeof wbuf; + if (r > len) r = len; + if (cdb_read(c,wbuf,r,pos) == -1) return -1; + if (buffer_put(buffer_1small,wbuf,r) == -1) return -2; + pos += r; + len -= r; + } + if (buffer_flush(buffer_1small) == -1) return -2; +} diff -r 4cc3224ebf41 -r 70f4df5a7283 cdb.h --- a/cdb.h Thu Feb 27 18:24:24 2025 +0000 +++ b/cdb.h Thu Feb 27 18:26:29 2025 +0000 @@ -28,6 +28,7 @@ extern void cdb_clear(Cdb *); extern void cdb_init(Cdb *,int fd); +extern void cdb_init_nomap(Cdb *,int fd); extern int cdb_read(Cdb *,char *,unsigned int,uint32); @@ -35,6 +36,8 @@ extern int cdb_findnext(Cdb *,char *,unsigned int); extern int cdb_find(Cdb *,char *,unsigned int); +extern int cdb_write(Cdb *c,int fd); + /*extern uint32 cdb_pos(); extern uint32 cdb_len();*/ #define cdb_pos(c) ((c)->dpos)