BSD 4_4 release
[unix-history] / usr / src / include / ndbm.h
index 3cd4335..a545bca 100644 (file)
@@ -1,39 +1,77 @@
-/*      ndbm.h     4.1     83/12/02     */
+/*-
+ * Copyright (c) 1990, 1993
+ *     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      8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _NDBM_H_
+#define        _NDBM_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
 
 /*
 
 /*
- * (New) Hashed key data base library (-lndbm).
+ * 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
-
-typedef struct {
-       int     db_dirf;                /* open directory file */
-       int     db_pagf;                /* open page file */
-       int     db_flags;
-#define _DB_RDONLY      0x1     /* data base open read-only */
-       long    db_maxbno;              /* last ``block'' in page file */
-       long    db_bitno;
-       long    db_hmask;
-       long    db_blkno;               /* current page to read/write */
-       long    db_pagbno;              /* current page in pagbuf */
-       char    db_pagbuf[PBLKSIZ];     /* page file block buffer */
-       long    db_dirbno;              /* current block in dirbuf */
-       char    db_dirbuf[DBLKSIZ];     /* directory file block buffer */
-} DBM;
-
-#define dbrdonly(db)    ((db)->db_flags&_DB_RDONLY) != 0
+#define        DBM_SUFFIX      ".db"
 
 typedef struct {
 
 typedef struct {
-       char    *dptr;
-       int     dsize;
+       char *dptr;
+       int dsize;
 } datum;
 
 } datum;
 
-datum   dbmfetch();
-datum   dbmfirstkey();
-datum   dbmnextkey();
-long    dbmforder();
-int     dbmdelete();
-int     dbmstore();
+typedef DB DBM;
+#define        dbm_pagfno(a)   DBM_PAGFNO_NOT_AVAILABLE
+
+__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));
+int     dbm_dirfno __P((DBM *));
+__END_DECLS
 
 
-DBM     *ndbmopen();
-void    ndbmclose();
+#endif /* !_NDBM_H_ */