aboutsummaryrefslogtreecommitdiff
path: root/src/gdbm.h.in
blob: 70de4e0f09ddaeaa59dc99cc44fc26fe1a2d905c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/* gdbm.h  -  The include file for dbm users.  -*- c -*- */

/*  This file is part of GDBM, the GNU data base manager, by Philip A. Nelson.
    Copyright (C) 1990, 1991, 1993, 2011 Free Software Foundation, Inc.

    GDBM is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2, or (at your option)
    any later version.

    GDBM is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with GDBM. If not, see <http://www.gnu.org/licenses/>.  

    You may contact the author by:
       e-mail:  phil@cs.wwu.edu
      us-mail:  Philip A. Nelson
                Computer Science Department
                Western Washington University
                Bellingham, WA 98226
       
*************************************************************************/

/* Protection for multiple includes. */
#ifndef _GDBM_H_
#define _GDBM_H_

/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who
   can create the database. */
#define GDBM_READER	0	/* A reader. */
#define GDBM_WRITER	1	/* A writer. */
#define GDBM_WRCREAT	2	/* A writer.  Create the db if needed. */
#define GDBM_NEWDB	3	/* A writer.  Always create a new db. */
#define GDBM_FAST	0x10	/* Write fast! => No fsyncs.  OBSOLETE. */
#define GDBM_SYNC	0x20	/* Sync operations to the disk. */
#define GDBM_NOLOCK	0x40	/* Don't do file locking operations. */
#define GDBM_NOMMAP	0x80	/* Don't use mmap(). */

/* Parameters to gdbm_store for simple insertion or replacement in the
   case that the key is already in the database. */
#define GDBM_INSERT	0	/* Never replace old data with new. */
#define GDBM_REPLACE	1	/* Always replace old data with new. */

/* Parameters to gdbm_setopt, specifing the type of operation to perform. */
#define GDBM_CACHESIZE	1	/* Set the cache size. */
#define GDBM_FASTMODE	2	/* Toggle fast mode.  OBSOLETE. */
#define GDBM_SYNCMODE	3	/* Turn on or off sync operations. */
#define GDBM_CENTFREE	4	/* Keep all free blocks in the header. */
#define GDBM_COALESCEBLKS 5	/* Attempt to coalesce free blocks. */

/* The data and key structure. */
typedef struct {
	char *dptr;
	int   dsize;
      } datum;


/* The file information header. This is good enough for most applications. */
typedef struct gdbm_file_info *GDBM_FILE;

/* External variable, the gdbm build release string. */
extern const char *gdbm_version;	

#define GDBM_VERSION_MAJOR @GDBM_VERSION_MAJOR@
#define GDBM_VERSION_MINOR @GDBM_VERSION_MINOR@
#define GDBM_VERSION_PATCH @GDBM_VERSION_PATCH@

extern int const gdbm_version_number[3];

/* GDBM C++ support */
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif

/* GDBM external functions. */

extern GDBM_FILE gdbm_open (const char *, int, int, int,
			    void (*)(const char *));
extern void gdbm_close (GDBM_FILE);
extern int gdbm_store (GDBM_FILE, datum, datum, int);
extern datum gdbm_fetch (GDBM_FILE, datum);
extern int gdbm_delete (GDBM_FILE, datum);
extern datum gdbm_firstkey (GDBM_FILE);
extern datum gdbm_nextkey (GDBM_FILE, datum);
extern int gdbm_reorganize (GDBM_FILE);
extern void gdbm_sync (GDBM_FILE);
extern int gdbm_exists (GDBM_FILE, datum);
extern int gdbm_setopt (GDBM_FILE, int, int *, int);
extern int gdbm_fdesc (GDBM_FILE);
extern int gdbm_export (GDBM_FILE, const char *, int, int);
extern int gdbm_import (GDBM_FILE, const char *, int);

#if defined(__cplusplus) || defined(c_plusplus)
}
#endif

#define	GDBM_NO_ERROR		0
#define	GDBM_MALLOC_ERROR	1
#define	GDBM_BLOCK_SIZE_ERROR	2
#define	GDBM_FILE_OPEN_ERROR	3
#define	GDBM_FILE_WRITE_ERROR	4
#define	GDBM_FILE_SEEK_ERROR	5
#define	GDBM_FILE_READ_ERROR	6
#define	GDBM_BAD_MAGIC_NUMBER	7
#define	GDBM_EMPTY_DATABASE	8
#define	GDBM_CANT_BE_READER	9
#define	GDBM_CANT_BE_WRITER	10
#define	GDBM_READER_CANT_DELETE	11
#define	GDBM_READER_CANT_STORE	12
#define	GDBM_READER_CANT_REORGANIZE	13
#define	GDBM_UNKNOWN_UPDATE	14
#define	GDBM_ITEM_NOT_FOUND	15
#define	GDBM_REORGANIZE_FAILED	16
#define	GDBM_CANNOT_REPLACE	17
#define	GDBM_ILLEGAL_DATA	18
#define	GDBM_OPT_ALREADY_SET	19
#define	GDBM_OPT_ILLEGAL	20
#define GDBM_BYTE_SWAPPED	21
#define GDBM_BAD_FILE_OFFSET	22
#define GDBM_BAD_OPEN_FLAGS	23
#define _GDBM_MIN_ERRNO		0
#define _GDBM_MAX_ERRNO		GDBM_BAD_OPEN_FLAGS
typedef int gdbm_error;		/* For compatibilities sake. */
extern gdbm_error gdbm_errno;
extern const char * const gdbm_errlist[];

/* extra prototypes */

/* GDBM C++ support */
#if defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif

extern const char *gdbm_strerror (gdbm_error);

#if defined(__cplusplus) || defined(c_plusplus)
}
#endif

#endif

Return to:

Send suggestions and report system problems to the System administrator.