My Project
Loading...
Searching...
No Matches
ndbm.h
Go to the documentation of this file.
1#ifndef NDBM_H
2#define NDBM_H
3/****************************************
4* Computer Algebra System SINGULAR *
5****************************************/
6/*
7* ABSTRACT: DBM
8*/
9
10/*
11 * Copyright (c) 1983 Regents of the University of California.
12 * All rights reserved. The Berkeley software License Agreement
13 * specifies the terms and conditions for redistribution.
14 *
15 *
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions
19 * are met:
20 * 1. Redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer.
22 * 2. Redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in the
24 * documentation and/or other materials provided with the distribution.
25 * 4. Neither the name of the University nor the names of its contributors
26 * may be used to endorse or promote products derived from this software
27 * without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39 * SUCH DAMAGE.
40 *
41 * @(#)ndbm.h 5.1 (Berkeley) 5/30/85
42 *
43 * Par. 3 removed due to a license change (1999)
44 * see ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
45 */
46
47/*
48 * Hashed key data base library.
49 */
50#define PBLKSIZ 1024
51
52#define DBLKSIZ 4096
53
54typedef struct {
55 int dbm_dirf; /* open directory file */
56 int dbm_pagf; /* open page file */
57 int dbm_flags; /* flags, see below */
58 long dbm_maxbno; /* last ``bit'' in dir file */
59 long dbm_bitno; /* current bit number */
60 long dbm_hmask; /* hash mask */
61 long dbm_blkptr; /* current block for dbm_nextkey */
62 int dbm_keyptr; /* current key for dbm_nextkey */
63 long dbm_blkno; /* current page to read/write */
64 long dbm_pagbno; /* current page in pagbuf */
65 char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */
66 long dbm_dirbno; /* current block in dirbuf */
67 char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */
68} DBM;
69
70#define _DBM_RDONLY 0x01 /* data base open read-only */
71#define _DBM_IOERR 0x02 /* data base I/O error */
72
73#define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
74
75#define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR)
76 /* use this one at your own risk! */
77#define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR)
78
79/* for flock(2) and fstat(2) */
80#define dbm_dirfno(db) ((db)->dbm_dirf)
81#define dbm_pagfno(db) ((db)->dbm_pagf)
82
83typedef struct {
84 char *dptr;
85 int dsize;
86} datum;
87
88/*
89 * flags to dbm_store()
90 */
91#define DBM_INSERT 0
92#define DBM_REPLACE 1
93
94DBM *dbm_open(char *file, int flags, int mode);
95void dbm_close(DBM *db);
96datum dbm_fetch(DBM *db, datum key);
99long dbm_forder(DBM *db, datum key);
100int dbm_delete(DBM *db, datum key);
101int dbm_store(DBM *db, datum key, datum dat, int replace);
102
103#endif /* NDBM_H */
int dbm_store(DBM *db, datum key, datum dat, int replace)
Definition: ndbm.cc:167
char * dptr
Definition: ndbm.h:84
datum dbm_fetch(DBM *db, datum key)
Definition: ndbm.cc:119
int dbm_delete(DBM *db, datum key)
Definition: ndbm.cc:139
int dbm_keyptr
Definition: ndbm.h:62
long dbm_pagbno
Definition: ndbm.h:64
long dbm_hmask
Definition: ndbm.h:60
int dbm_pagf
Definition: ndbm.h:56
datum dbm_nextkey(DBM *db)
Definition: ndbm.cc:260
int dbm_flags
Definition: ndbm.h:57
datum dbm_firstkey(DBM *db)
Definition: ndbm.cc:252
int dsize
Definition: ndbm.h:85
long dbm_maxbno
Definition: ndbm.h:58
DBM * dbm_open(char *file, int flags, int mode)
Definition: ndbm.cc:59
long dbm_dirbno
Definition: ndbm.h:66
int dbm_dirf
Definition: ndbm.h:55
long dbm_forder(DBM *db, datum key)
Definition: ndbm.cc:104
long dbm_blkno
Definition: ndbm.h:63
void dbm_close(DBM *db)
Definition: ndbm.cc:97
#define PBLKSIZ
Definition: ndbm.h:50
long dbm_bitno
Definition: ndbm.h:59
#define DBLKSIZ
Definition: ndbm.h:52
long dbm_blkptr
Definition: ndbm.h:61
Definition: ndbm.h:54
Definition: ndbm.h:83
int status int void size_t count int const void size_t count const char int flags
Definition: si_signals.h:73