BSD 4_3_Net_2 release
[unix-history] / usr / src / include / ndbm.h
index 5d6a842..67f0293 100644 (file)
@@ -1,73 +1,76 @@
-/*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+/*-
+ * 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.3 (Berkeley) 5/29/90
+ *     @(#)ndbm.h      5.6 (Berkeley) 4/3/91
  */
 
  */
 
-/*
- * Hashed key data base library.
- */
-#define PBLKSIZ 1024
-#define DBLKSIZ 4096
+#ifndef _NDBM_H_
+#define        _NDBM_H_
 
 
-typedef struct {
-       int     dbm_dirf;               /* open directory file */
-       int     dbm_pagf;               /* open page file */
-       int     dbm_flags;              /* flags, see below */
-       long    dbm_maxbno;             /* last ``bit'' in dir file */
-       long    dbm_bitno;              /* current bit number */
-       long    dbm_hmask;              /* hash mask */
-       long    dbm_blkptr;             /* current block for dbm_nextkey */
-       int     dbm_keyptr;             /* current key for dbm_nextkey */
-       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;
+#include <sys/cdefs.h>
+#include <db.h>
 
 
-#define _DBM_RDONLY    0x1     /* data base open read-only */
-#define _DBM_IOERR     0x2     /* data base I/O error */
+/* Map dbm interface onto db(3). */
+#define DBM_RDONLY     O_RDONLY
 
 
-#define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
+/* Flags to dbm_store(). */
+#define DBM_INSERT      0
+#define DBM_REPLACE     1
 
 
-#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)
-
-/* for flock(2) and fstat(2) */
-#define dbm_dirfno(db) ((db)->dbm_dirf)
-#define dbm_pagfno(db) ((db)->dbm_pagf)
+/*
+ * The db(3) support for ndbm(3) always appends this suffix to the
+ * file name to avoid overwriting the user's original database.
+ */
+#define        DBM_SUFFIX      ".db"
 
 typedef struct {
 
 typedef struct {
-       char    *dptr;
-       int     dsize;
+       char *dptr;
+       int dsize;
 } datum;
 
 } datum;
 
-/*
- * flags to dbm_store()
- */
-#define DBM_INSERT     0
-#define DBM_REPLACE    1
+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
 
 
-#if __STDC__ || c_plusplus
-extern DBM *dbm_open(const char *, int, int);
-extern void dbm_close(DBM *);
-extern datum dbm_fetch(DBM *, datum);
-extern datum dbm_firstkey(DBM *);
-extern datum dbm_nextkey(DBM *);
-extern long dbm_forder(DBM *, datum);
-extern int dbm_delete(DBM *, datum);
-extern int dbm_store(DBM *, datum, datum, int);
-#else
-extern DBM *dbm_open();
-extern void dbm_close();
-extern datum dbm_fetch();
-extern datum dbm_firstkey();
-extern datum dbm_nextkey();
-extern long dbm_forder();
-extern int dbm_delete();
-extern int dbm_store();
-#endif
+#endif /* !_NDBM_H_ */