BSD 4_3_Net_2 release
[unix-history] / usr / src / include / ndbm.h
index 21b69e6..67f0293 100644 (file)
@@ -1,50 +1,76 @@
-/*      ndbm.h     4.3     84/08/28     */
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Margo Seltzer.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)ndbm.h      5.6 (Berkeley) 4/3/91
+ */
+
+#ifndef _NDBM_H_
+#define        _NDBM_H_
+
+#include <sys/cdefs.h>
+#include <db.h>
+
+/* Map dbm interface onto db(3). */
+#define DBM_RDONLY     O_RDONLY
+
+/* Flags to dbm_store(). */
+#define DBM_INSERT      0
+#define DBM_REPLACE     1
 
 /*
 
 /*
- * Hashed key data base library.
+ * The db(3) support for ndbm(3) always appends this suffix to the
+ * file name to avoid overwriting the user's original database.
  */
  */
-#define PBLKSIZ 1024
-#define DBLKSIZ 4096
+#define        DBM_SUFFIX      ".db"
 
 typedef struct {
 
 typedef struct {
-       int     dbm_dirf;                /* open directory file */
-       int     dbm_pagf;                /* open page file */
-       int     dbm_flags;              /* flags, see below */
-       long    dbm_maxbno;              /* last ``block'' in page file */
-       long    dbm_bitno;
-       long    dbm_hmask;
-       long    dbm_blkno;               /* current page to read/write */
-       long    dbm_pagbno;              /* current page in pagbuf */
-       char    dbm_pagbuf[PBLKSIZ];     /* page file block buffer */
-       long    dbm_dirbno;              /* current block in dirbuf */
-       char    dbm_dirbuf[DBLKSIZ];     /* directory file block buffer */
-} DBM;
-
-#define _DBM_RDONLY    0x1     /* data base open read-only */
-#define _DBM_IOERR     0x2     /* data base I/O error */
-
-#define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
-
-#define dbm_error(db)  ((db)->dbm_flags & _DBM_IOERR)
-       /* use this one at your own risk! */
-#define dbm_clearerr(db)       ((db)->dbm_flags &= ~_DBM_IOERR)
-
-typedef struct {
-       char    *dptr;
-       int     dsize;
+       char *dptr;
+       int dsize;
 } datum;
 
 } datum;
 
-/*
- * flags to dbm_store()
- */
-#define DBM_INSERT     0
-#define DBM_REPLACE    1
-
-DBM     *dbm_open();
-void    dbm_close();
-datum   dbm_fetch();
-datum   dbm_firstkey();
-datum   dbm_nextkey();
-long    dbm_forder();
-int     dbm_delete();
-int     dbm_store();
+typedef DB DBM;
+
+__BEGIN_DECLS
+void    dbm_close __P((DBM *));
+int     dbm_delete __P((DBM *, datum));
+datum   dbm_fetch __P((DBM *, datum));
+datum   dbm_firstkey __P((DBM *));
+long    dbm_forder __P((DBM *, datum));
+datum   dbm_nextkey __P((DBM *));
+DBM    *dbm_open __P((const char *, int, int));
+int     dbm_store __P((DBM *, datum, datum, int));
+__END_DECLS
+
+#endif /* !_NDBM_H_ */