gdbm.h | gdbm.h | |||
---|---|---|---|---|
/* gdbm.h - The include file for dbm users. */ | /* gdbm.h - The include file for dbm users. -*- c -*- */ | |||
/* This file is part of GDBM, the GNU data base manager, by Philip A. Nels on. | /* This file is part of GDBM, the GNU data base manager, by Philip A. Nels on. | |||
Copyright (C) 1990, 1991, 1993 Free Software Foundation, Inc. | Copyright (C) 1990, 1991, 1993, 2011 Free Software Foundation, Inc. | |||
GDBM is free software; you can redistribute it and/or modify | GDBM is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2, or (at your option) | the Free Software Foundation; either version 2, or (at your option) | |||
any later version. | any later version. | |||
GDBM is distributed in the hope that it will be useful, | GDBM is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | You should have received a copy of the GNU General Public License | |||
along with GDBM; see the file COPYING. If not, write to | along with GDBM. If not, see <http://www.gnu.org/licenses/>. | |||
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
You may contact the author by: | You may contact the author by: | |||
e-mail: phil@cs.wwu.edu | e-mail: phil@cs.wwu.edu | |||
us-mail: Philip A. Nelson | us-mail: Philip A. Nelson | |||
Computer Science Department | Computer Science Department | |||
Western Washington University | Western Washington University | |||
Bellingham, WA 98226 | Bellingham, WA 98226 | |||
*************************************************************************/ | *************************************************************************/ | |||
/* Protection for multiple includes. */ | /* Protection for multiple includes. */ | |||
#ifndef _GDBM_H_ | #ifndef _GDBM_H_ | |||
#define _GDBM_H_ | #define _GDBM_H_ | |||
/* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who | /* Parameters to gdbm_open for READERS, WRITERS, and WRITERS who | |||
can create the database. */ | can create the database. */ | |||
#define GDBM_READER 0 /* A reader. */ | #define GDBM_READER 0 /* A reader. */ | |||
#define GDBM_WRITER 1 /* A writer. */ | #define GDBM_WRITER 1 /* A writer. */ | |||
#define GDBM_WRCREAT 2 /* A writer. Create the db if neede | #define GDBM_WRCREAT 2 /* A writer. Create the db if needed. */ | |||
d. */ | #define GDBM_NEWDB 3 /* A writer. Always create a new db. */ | |||
#define GDBM_NEWDB 3 /* A writer. Always create a new db | #define GDBM_OPENMASK 7 /* Mask for the above. */ | |||
. */ | ||||
#define GDBM_FAST 0x10 /* Write fast! => No fsyncs. OBSOLETE. */ | #define GDBM_FAST 0x10 /* Write fast! => No fsyncs. OBSOLETE. */ | |||
#define GDBM_SYNC 0x20 /* Sync operations to the disk. */ | #define GDBM_SYNC 0x20 /* Sync operations to the disk. */ | |||
#define GDBM_NOLOCK 0x40 /* Don't do file locking operations. */ | #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 | /* Parameters to gdbm_store for simple insertion or replacement in the | |||
case that the key is already in the database. */ | case that the key is already in the database. */ | |||
#define GDBM_INSERT 0 /* Never replace old data with new. | #define GDBM_INSERT 0 /* Never replace old data with new. */ | |||
*/ | #define GDBM_REPLACE 1 /* Always 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. * / | /* Parameters to gdbm_setopt, specifing the type of operation to perform. * / | |||
#define GDBM_CACHESIZE 1 /* Set the cache size. */ | #define GDBM_SETCACHESIZE 1 /* Set the cache size. */ | |||
#define GDBM_FASTMODE 2 /* Toggle fast mode. OBSOLETE. */ | #define GDBM_FASTMODE 2 /* Toggle fast mode. OBSOLETE. */ | |||
#define GDBM_SYNCMODE 3 /* Turn on or off sync operations. */ | #define GDBM_SETSYNCMODE 3 /* Turn on or off sync operations. */ | |||
#define GDBM_CENTFREE 4 /* Keep all free blocks in the header. */ | #define GDBM_SETCENTFREE 4 /* Keep all free blocks in the header. */ | |||
#define GDBM_COALESCEBLKS 5 /* Attempt to coalesce free blocks. */ | #define GDBM_SETCOALESCEBLKS 5 /* Attempt to coalesce free blocks. */ | |||
#define GDBM_SETMAXMAPSIZE 6 /* Set maximum mapped memory size */ | ||||
#define GDBM_SETMMAP 7 /* Toggle mmap mode */ | ||||
/* The data and key structure. This structure is defined for compatibility | /* Compatibility defines: */ | |||
. */ | #define GDBM_CACHESIZE GDBM_SETCACHESIZE | |||
#define GDBM_SYNCMODE GDBM_SETSYNCMODE | ||||
#define GDBM_CENTFREE GDBM_SETCENTFREE | ||||
#define GDBM_COALESCEBLKS GDBM_SETCOALESCEBLKS | ||||
#define GDBM_GETFLAGS 8 /* Get gdbm_open flags */ | ||||
#define GDBM_GETMMAP 9 /* Get mmap status */ | ||||
#define GDBM_GETCACHESIZE 10 /* Get current cache side */ | ||||
#define GDBM_GETSYNCMODE 11 /* Get synch mode */ | ||||
#define GDBM_GETCENTFREE 12 /* Get "centfree" status */ | ||||
#define GDBM_GETCOALESCEBLKS 13 /* Get free block coalesce status */ | ||||
#define GDBM_GETMAXMAPSIZE 14 /* Get maximum mapped memory size */ | ||||
#define GDBM_GETDBNAME 15 /* Return database file name */ | ||||
/* The data and key structure. */ | ||||
typedef struct { | typedef struct { | |||
char *dptr; | char *dptr; | |||
int dsize; | int dsize; | |||
} datum; | } datum; | |||
/* The file information header. This is good enough for most applications. */ | /* The file information header. This is good enough for most applications. */ | |||
typedef struct {int dummy[10];} *GDBM_FILE; | typedef struct gdbm_file_info *GDBM_FILE; | |||
/* Determine if the C(++) compiler requires complete function prototype */ | ||||
#ifndef __P | ||||
#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus) | ||||
#define __P(x) x | ||||
#else | ||||
#define __P(x) () | ||||
#endif | ||||
#endif | ||||
/* External variable, the gdbm build release string. */ | /* External variable, the gdbm build release string. */ | |||
extern char *gdbm_version; | extern const char *gdbm_version; | |||
#define GDBM_VERSION_MAJOR 1 | ||||
#define GDBM_VERSION_MINOR 9 | ||||
#define GDBM_VERSION_PATCH 1 | ||||
extern int const gdbm_version_number[3]; | ||||
/* GDBM C++ support */ | /* GDBM C++ support */ | |||
#if defined(__cplusplus) || defined(c_plusplus) | #if defined(__cplusplus) || defined(c_plusplus) | |||
extern "C" { | extern "C" { | |||
#endif | #endif | |||
/* These are the routines! */ | /* GDBM external functions. */ | |||
extern GDBM_FILE gdbm_open __P((char *, int, int, int, void (*)())); | extern GDBM_FILE gdbm_open (const char *, int, int, int, | |||
extern void gdbm_close __P((GDBM_FILE)); | void (*)(const char *)); | |||
extern int gdbm_store __P((GDBM_FILE, datum, datum, int)); | extern void gdbm_close (GDBM_FILE); | |||
extern datum gdbm_fetch __P((GDBM_FILE, datum)); | extern int gdbm_store (GDBM_FILE, datum, datum, int); | |||
extern int gdbm_delete __P((GDBM_FILE, datum)); | extern datum gdbm_fetch (GDBM_FILE, datum); | |||
extern datum gdbm_firstkey __P((GDBM_FILE)); | extern int gdbm_delete (GDBM_FILE, datum); | |||
extern datum gdbm_nextkey __P((GDBM_FILE, datum)); | extern datum gdbm_firstkey (GDBM_FILE); | |||
extern int gdbm_reorganize __P((GDBM_FILE)); | extern datum gdbm_nextkey (GDBM_FILE, datum); | |||
extern void gdbm_sync __P((GDBM_FILE)); | extern int gdbm_reorganize (GDBM_FILE); | |||
extern int gdbm_exists __P((GDBM_FILE, datum)); | extern void gdbm_sync (GDBM_FILE); | |||
extern int gdbm_setopt __P((GDBM_FILE, int, int *, int)); | extern int gdbm_exists (GDBM_FILE, datum); | |||
extern int gdbm_fdesc __P((GDBM_FILE)); | extern int gdbm_setopt (GDBM_FILE, int, void *, 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) | #if defined(__cplusplus) || defined(c_plusplus) | |||
} | } | |||
#endif | #endif | |||
#define GDBM_NO_ERROR 0 | #define GDBM_NO_ERROR 0 | |||
#define GDBM_MALLOC_ERROR 1 | #define GDBM_MALLOC_ERROR 1 | |||
#define GDBM_BLOCK_SIZE_ERROR 2 | #define GDBM_BLOCK_SIZE_ERROR 2 | |||
#define GDBM_FILE_OPEN_ERROR 3 | #define GDBM_FILE_OPEN_ERROR 3 | |||
#define GDBM_FILE_WRITE_ERROR 4 | #define GDBM_FILE_WRITE_ERROR 4 | |||
skipping to change at line 121 | skipping to change at line 140 | |||
#define GDBM_READER_CANT_DELETE 11 | #define GDBM_READER_CANT_DELETE 11 | |||
#define GDBM_READER_CANT_STORE 12 | #define GDBM_READER_CANT_STORE 12 | |||
#define GDBM_READER_CANT_REORGANIZE 13 | #define GDBM_READER_CANT_REORGANIZE 13 | |||
#define GDBM_UNKNOWN_UPDATE 14 | #define GDBM_UNKNOWN_UPDATE 14 | |||
#define GDBM_ITEM_NOT_FOUND 15 | #define GDBM_ITEM_NOT_FOUND 15 | |||
#define GDBM_REORGANIZE_FAILED 16 | #define GDBM_REORGANIZE_FAILED 16 | |||
#define GDBM_CANNOT_REPLACE 17 | #define GDBM_CANNOT_REPLACE 17 | |||
#define GDBM_ILLEGAL_DATA 18 | #define GDBM_ILLEGAL_DATA 18 | |||
#define GDBM_OPT_ALREADY_SET 19 | #define GDBM_OPT_ALREADY_SET 19 | |||
#define GDBM_OPT_ILLEGAL 20 | #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. */ | typedef int gdbm_error; /* For compatibilities sake. */ | |||
extern gdbm_error gdbm_errno; | extern gdbm_error gdbm_errno; | |||
extern const char * const gdbm_errlist[]; | ||||
/* extra prototypes */ | /* extra prototypes */ | |||
/* GDBM C++ support */ | /* GDBM C++ support */ | |||
#if defined(__cplusplus) || defined(c_plusplus) | #if defined(__cplusplus) || defined(c_plusplus) | |||
extern "C" { | extern "C" { | |||
#endif | #endif | |||
extern char *gdbm_strerror __P((gdbm_error)); | extern const char *gdbm_strerror (gdbm_error); | |||
extern int gdbm_version_cmp (int const a[], int const b[]); | ||||
#if defined(__cplusplus) || defined(c_plusplus) | #if defined(__cplusplus) || defined(c_plusplus) | |||
} | } | |||
#endif | #endif | |||
#endif | #endif | |||
End of changes. 14 change blocks. | ||||
49 lines changed or deleted | 70 lines changed or added | |||