37 #if defined(LIBC_SCCS) && !defined(lint)
38 static char sccsid[] =
"@(#)ndbm.c 8.4 (Berkeley) 7/21/94";
46 #include <sys/param.h>
61 dbm_open(file, flags, mode)
67 const size_t len = strlen(file) +
sizeof (DBM_SUFFIX);
71 char *path = malloc(len);
82 snprintf(path, len,
"%s%s", file, DBM_SUFFIX);
83 db = (
DBM *)__hash_open(path, flags, mode, &info, 0);
94 (void)(db->close)(db);
109 DBT dbtkey, dbtretdata;
111 dbtkey.data = key.dptr;
112 dbtkey.size = key.dsize;
113 status = (db->get)(db, &dbtkey, &dbtretdata, 0);
115 dbtretdata.data = NULL;
118 retdata.dptr = dbtretdata.data;
119 retdata.dsize = dbtretdata.size;
134 DBT dbtretkey, dbtretdata;
136 status = (db->seq)(db, &dbtretkey, &dbtretdata, R_FIRST);
138 dbtretkey.data = NULL;
139 retkey.dptr = dbtretkey.data;
140 retkey.dsize = dbtretkey.size;
155 DBT dbtretkey, dbtretdata;
157 status = (db->seq)(db, &dbtretkey, &dbtretdata, R_NEXT);
159 dbtretkey.data = NULL;
160 retkey.dptr = dbtretkey.data;
161 retkey.dsize = dbtretkey.size;
177 dbtkey.data = key.dptr;
178 dbtkey.size = key.dsize;
179 status = (db->del)(db, &dbtkey, 0);
193 dbm_store(db, key, data, flags)
200 dbtkey.data = key.dptr;
201 dbtkey.size = key.dsize;
202 dbtdata.data = data.dptr;
203 dbtdata.size = data.dsize;
204 return ((db->put)(db, &dbtkey, &dbtdata,
205 (flags == DBM_INSERT) ? R_NOOVERWRITE : 0));
214 hp = (
HTAB *)db->internal;
224 hp = (
HTAB *)db->internal;
233 return(((
HTAB *)db->internal)->fp);