X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/1c15e88899094343f75aeba04122cd96a96b428e..af359dea2e5ab3e937b62107ecd6a51d78189ed7:/usr/src/include/ndbm.h diff --git a/usr/src/include/ndbm.h b/usr/src/include/ndbm.h index 5d6a842869..67f0293742 100644 --- a/usr/src/include/ndbm.h +++ b/usr/src/include/ndbm.h @@ -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 +#include -#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 { - char *dptr; - int dsize; + char *dptr; + int dsize; } 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_ */