/*
- * Sherlock Library -- Fast Database Management Routines
+ * UCW Library -- Fast Database Management Routines
*
- * (c) 1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
+ * (c) 1999--2001 Martin Mares <mj@ucw.cz>
+ *
+ * This software may be freely distributed and used according to the terms
+ * of the GNU Lesser General Public License.
*/
-#ifndef _SHERLOCK_DB_H
-#define _SHERLOCK_DB_H
+#ifndef _UCW_DB_H
+#define _UCW_DB_H
struct sdbm;
int val_size; /* Value size, -1=variable */
};
-struct sdbm_buf {
- uns size;
- byte data[0];
-};
-
struct sdbm *sdbm_open(struct sdbm_options *);
void sdbm_close(struct sdbm *);
int sdbm_store(struct sdbm *, byte *key, uns keylen, byte *val, uns vallen);
void sdbm_rewind(struct sdbm *);
int sdbm_get_next(struct sdbm *, byte *key, uns *keylen, byte *val, uns *vallen); /* val can be NULL */
void sdbm_sync(struct sdbm *);
+u32 sdbm_hash(byte *key, uns keylen);
#define SDBM_CREAT 1 /* Create the database if it doesn't exist */
#define SDBM_WRITE 2 /* Open the database in read/write mode */
#define SDBM_ERROR_BAD_VAL_SIZE -2 /* Fixed value size doesn't match */
#define SDBM_ERROR_TOO_LARGE -3 /* Key/value doesn't fit in buffer supplied */
#define SDBM_ERROR_READ_ONLY -4 /* Database has been opened read only */
+#define SDBM_ERROR_GIANT -5 /* Key/value too large to fit in a page */
#endif