diff options
Diffstat (limited to 'nss/nss_db/nss_db.h')
-rw-r--r-- | nss/nss_db/nss_db.h | 64 |
1 files changed, 37 insertions, 27 deletions
diff --git a/nss/nss_db/nss_db.h b/nss/nss_db/nss_db.h index 8abec2d8de..4ace9ed846 100644 --- a/nss/nss_db/nss_db.h +++ b/nss/nss_db/nss_db.h @@ -20,32 +20,44 @@ #ifndef _NSS_DB_H #define _NSS_DB_H 1 +#include <nss.h> #include <stdint.h> /* Variables which keep track of the error values. */ extern int db_keyexist; extern int db_notfound; -/* Constants which vary from version to version are actually variables - here. */ +/* This flag is the same for all versions of the Berkeley DB library. */ +#define DB_CREATE 0x000001 + +/* But constants which vary from version to version are actually + variables here. */ extern int db_first; extern int db_next; extern int db_nooverwrite; extern int db_truncate; extern int db_rdonly; -/* Flags are also unchanged. */ -#define DB_CREATE 0x000001 - +/* The `DBT' type is the same in all versions we support. */ +typedef struct +{ + void *data; + uint32_t size; + uint32_t ulen; + uint32_t dlen; + uint32_t doff; + uint32_t flags; +} DBT; -/* Similarly we have to handle the cursor object. It is also very - different from version to version. */ +/* But the cursor object is very different from version to version. */ typedef struct { void *cursor; - int (*c_get) (void *, void *, void *, uint32_t); + int (*c_get) (void *, DBT *, DBT *, uint32_t); } NSS_DBC; +/* We need a helper function for it. */ +extern int db_cursor (void *db, void *txn, NSS_DBC **dbcp); /* This is the wrapper we put around the `DB' structures to provide a uniform interface to the higher-level functions. */ @@ -55,30 +67,28 @@ typedef struct int (*close) (void *, uint32_t); int (*cursor) (void *, void *, NSS_DBC **); int (*fd) (void *, int *); - int (*get) (void *, void *, void *, void *, uint32_t); - int (*put) (void *, void *, void *, void *, uint32_t); + int (*get) (void *, void *, DBT *, DBT *, uint32_t); + int (*put) (void *, void *, DBT *, DBT *, uint32_t); } NSS_DB; +/* Open the database stored in FILE. If succesful, store the database + handle in *DBP and return NSS_STATUS_SUCCESS. On failure, return + the appropriate lookup status. */ +extern enum nss_status internal_setent (const char *file, NSS_DB **dbp); -/* The `DBT' type is the same in all versions we support. */ -typedef struct { - void *data; - uint32_t size; - uint32_t ulen; - uint32_t dlen; - uint32_t doff; - uint32_t flags; -} DBT; - +/* Close the database *DBP. */ +extern void internal_endent (NSS_DB **dbp); -/* Private routines to nss_db. - You must have included nsswitch.h and db.h before this file. */ +/* Dynamically load the Berkeley DB library. Return zero if + successful, non-zero if no suitable version of the library could be + loaded. */ +extern enum nss_status load_db (void); -extern enum nss_status internal_setent (const char *file, NSS_DB **dbp); -extern void internal_endent (NSS_DB **dbp); -extern int db_cursor (void *db, void *txn, NSS_DBC **dbcp); -extern int load_db (void); +/* Open the database in FNAME, for access specified by FLAGS. If + opening the database causes the file FNAME to be created, it is + created with MODE. If succesful, store the database handle in *DBP + and return NSS_STATUS_SUCCESS. On failure, return the appropriate + lookup status. */ extern int dbopen (const char *fname, int oper, int mode, NSS_DB **dbp); - #endif /* nss_db.h */ |