changeset 1:41b9b6a160d1

access functions, use all 32 bits for anything to do with a mapped cdb file
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Wed, 29 Jan 2025 12:34:14 +0000
parents 2cb46628feec
children 45f98bfd1dfb
files cdb.c cdb.h
diffstat 2 files changed, 48 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/cdb.c	Wed Jan 29 10:50:34 2025 +0000
+++ b/cdb.c	Wed Jan 29 12:34:14 2025 +0000
@@ -9,7 +9,15 @@
 #include "byte.h"
 #include "cdb.h"
 
-void cdb_free(struct cdb *c)
+
+static Cdb c;
+
+Cdb* cdb_new(void)
+{
+  return &c;
+}
+
+void cdb_free(Cdb *c)
 {
   if (c->map) {
     munmap(c->map,c->size);
@@ -17,12 +25,28 @@
   }
 }
 
-void cdb_findstart(struct cdb *c)
+uint32 cdb_len() {
+  return c.dlen;
+}
+
+uint32 cdb_pos() {
+  return c.dpos;
+}
+
+char *cdb_mmap() {
+  return c.map;
+}
+
+uint32 cdb_msize() {
+  return c.size;
+}
+
+void cdb_findstart(Cdb *c)
 {
   c->loop = 0;
 }
 
-void cdb_init(struct cdb *c,int fd)
+void cdb_init(Cdb *c,int fd)
 {
   struct stat st;
   char *x;
@@ -41,7 +65,7 @@
     }
 }
 
-int cdb_read(struct cdb *c,char *buf,unsigned int len,uint32 pos)
+int cdb_read(Cdb *c,char *buf,unsigned int len,uint32 pos)
 {
   if (c->map) {
     if ((pos > c->size) || (c->size - pos < len)) goto FORMAT;
@@ -67,7 +91,7 @@
   return -1;
 }
 
-static int match(struct cdb *c,char *key,unsigned int len,uint32 pos)
+static int match(Cdb *c,char *key,unsigned int len,uint32 pos)
 {
   char buf[32];
   int n;
@@ -84,7 +108,7 @@
   return 1;
 }
 
-int cdb_findnext(struct cdb *c,char *key,unsigned int len)
+int cdb_findnext(Cdb *c,char *key,unsigned int len)
 {
   char buf[8];
   uint32 pos;
@@ -129,7 +153,7 @@
   return 0;
 }
 
-int cdb_find(struct cdb *c,char *key,unsigned int len)
+int cdb_find(Cdb *c,char *key,unsigned int len)
 {
   cdb_findstart(c);
   return cdb_findnext(c,key,len);
--- a/cdb.h	Wed Jan 29 10:50:34 2025 +0000
+++ b/cdb.h	Wed Jan 29 12:34:14 2025 +0000
@@ -22,14 +22,25 @@
   uint32 dlen; /* initialized if cdb_findnext() returns 1 */
 } ;
 
-extern void cdb_free(struct cdb *);
-extern void cdb_init(struct cdb *,int fd);
+typedef struct cdb Cdb;
+
+extern Cdb* cdb_new(void);
+
+extern void cdb_free(Cdb *);
+extern void cdb_init(Cdb *,int fd);
+
+extern int cdb_read(Cdb *,char *,unsigned int,uint32);
 
-extern int cdb_read(struct cdb *,char *,unsigned int,uint32);
+extern void cdb_findstart(Cdb *);
+extern int cdb_findnext(Cdb *,char *,unsigned int);
+extern int cdb_find(Cdb *,char *,unsigned int);
 
-extern void cdb_findstart(struct cdb *);
-extern int cdb_findnext(struct cdb *,char *,unsigned int);
-extern int cdb_find(struct cdb *,char *,unsigned int);
+extern uint32 cdb_pos();
+extern uint32 cdb_len();
+
+extern char *cdb_mmap();
+extern uint32 cdb_msize();
+
 
 #define cdb_datapos(c) ((c)->dpos)
 #define cdb_datalen(c) ((c)->dlen)