ldbm.h
来自「ldap服务器源码」· C头文件 代码 · 共 279 行
H
279 行
/* ldbm.h - ldap dbm compatibility routine header file *//* $OpenLDAP: pkg/ldap/servers/slapd/back-ldbm/ldbm.h,v 1.2.2.3 2007/01/02 21:44:03 kurt Exp $ *//* This work is part of OpenLDAP Software <http://www.openldap.org/>. * * Copyright 1998-2007 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted only as authorized by the OpenLDAP * Public License. * * A copy of this license is available in file LICENSE in the * top-level directory of the distribution or, alternatively, at * <http://www.OpenLDAP.org/license.html>. */#ifndef _LDBM_H_#define _LDBM_H_#include <ldap_cdefs.h>#include <ac/string.h>/* dummy DB_ENV for non Berkeley DB */#if !defined( LDBM_USE_DBBTREE ) && !defined( LDBM_USE_DBHASH )# define DB_ENV void#endif#if defined( LDBM_USE_DBBTREE ) || defined( LDBM_USE_DBHASH )/***************************************************************** * * * use berkeley db btree or hash package * * * *****************************************************************/#include <sys/types.h>#include <limits.h>#include <fcntl.h>#ifdef HAVE_DB_185_H# include <db_185.h>#else# ifdef HAVE_DB1_DB_H# include <db1/db.h># else# include <db.h># endif#endif#ifndef DB_VERSION_MAJOR# define DB_VERSION_MAJOR 1#endif#ifndef DB_VERSION_MINOR# define DB_VERSION_MINOR 85#endif#if DB_VERSION_MAJOR >= 2# define R_NOOVERWRITE DB_NOOVERWRITE# ifndef DEFAULT_DB_PAGE_SIZE# define DEFAULT_DB_PAGE_SIZE 4096# endif#else# define DB_ENV void#endifLDAP_BEGIN_DECLtypedef DBT Datum;#define dsize size#define dptr datatypedef DB *LDBM;/* for ldbm_open */#if DB_VERSION_MAJOR >= 2typedef DBC LDBMCursor;# define LDBM_READER DB_RDONLY# define LDBM_WRITER 0x00000 /* hopefully */# if defined( HAVE_BERKELEY_DB_THREAD )# define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE|DB_THREAD)# define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE|DB_THREAD)# else# define LDBM_WRCREAT (DB_NOMMAP|DB_CREATE)# define LDBM_NEWDB (DB_TRUNCATE|DB_CREATE)# endif#elsetypedef void LDBMCursor;# define LDBM_READER O_RDONLY# define LDBM_WRITER O_RDWR# define LDBM_WRCREAT (O_RDWR|O_CREAT)# define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)#endifLDAP_END_DECL/* for ldbm_open */#define LDBM_NOSYNC 0#define LDBM_SYNC 0#define LDBM_LOCKING 0#define LDBM_NOLOCKING 0/* for ldbm_insert */#define LDBM_INSERT R_NOOVERWRITE#define LDBM_REPLACE 0#ifdef LDBM_USE_DBBTREE# define LDBM_ORDERED 1# define LDBM_SUFFIX ".dbb"# define DB_TYPE DB_BTREE#else# define LDBM_SUFFIX ".dbh"# define DB_TYPE DB_HASH#endif#elif defined( HAVE_GDBM )/***************************************************************** * * * use gdbm if possible * * * *****************************************************************/#include <gdbm.h>LDAP_BEGIN_DECLtypedef datum Datum;typedef Datum LDBMCursor;typedef GDBM_FILE LDBM;LDAP_END_DECL/* for ldbm_open */#define LDBM_READER GDBM_READER#define LDBM_WRITER GDBM_WRITER#define LDBM_WRCREAT GDBM_WRCREAT#define LDBM_NEWDB GDBM_NEWDB#ifdef GDBM_FAST#define LDBM_NOSYNC GDBM_FAST#else#define LDBM_NOSYNC 0#endif#ifdef GDBM_SYNC#define LDBM_SYNC GDBM_SYNC#else#define LDBM_SYNC 0#endif#define LDBM_LOCKING 0#ifdef GDBM_NOLOCK#define LDBM_NOLOCKING GDBM_NOLOCK#else#define LDBM_NOLOCKING 0#endif#define LDBM_SUFFIX ".gdbm"/* for ldbm_insert */#define LDBM_INSERT GDBM_INSERT#define LDBM_REPLACE GDBM_REPLACE#elif defined( HAVE_MDBM )/***************************************************************** * * * use mdbm if possible * * * *****************************************************************/#include <mdbm.h>LDAP_BEGIN_DECLtypedef datum Datum;typedef int LDBMCursor;typedef MDBM *LDBM;LDAP_END_DECL#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>/* for ldbm_open */#define LDBM_READER O_RDONLY#define LDBM_WRITER O_RDWR#define LDBM_WRCREAT (O_RDWR|O_CREAT)#define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)#define LDBM_SYNC 0#define LDBM_NOSYNC 0#define LDBM_LOCKING 0#define LDBM_NOLOCKING 0#define LDBM_SUFFIX ".mdbm"/* for ldbm_insert */#define LDBM_INSERT MDBM_INSERT#define LDBM_REPLACE MDBM_REPLACE#elif defined( HAVE_NDBM )/***************************************************************** * * * if none of the above use ndbm, the standard unix thing * * * *****************************************************************/#include <ndbm.h>#ifdef HAVE_FCNTL_H#include <fcntl.h>#endifLDAP_BEGIN_DECLtypedef datum Datum;typedef int LDBMCursor;typedef DBM *LDBM;LDAP_END_DECL/* for ldbm_open */#define LDBM_READER O_RDONLY#define LDBM_WRITER O_WRONLY#define LDBM_WRCREAT (O_RDWR|O_CREAT)#define LDBM_NEWDB (O_RDWR|O_TRUNC|O_CREAT)#define LDBM_NOSYNC 0#define LDBM_SYNC 0#define LDBM_NOLOCK 0#define LDBM_SYNC 0#define LDBM_SUFFIX ".ndbm"/* for ldbm_insert */#define LDBM_INSERT DBM_INSERT#define LDBM_REPLACE DBM_REPLACE#endifLDAP_BEGIN_DECLLDAP_LDBM_F (int) ldbm_initialize( const char * );LDAP_LDBM_F (int) ldbm_shutdown( void );LDAP_LDBM_F (DB_ENV*) ldbm_initialize_env(const char *, int dbcachesize, int *envdirok);LDAP_LDBM_F (void) ldbm_shutdown_env(DB_ENV *);LDAP_LDBM_F (int) ldbm_errno( LDBM ldbm );LDAP_LDBM_F (LDBM) ldbm_open( DB_ENV *env, char *name, int rw, int mode, int dbcachesize );LDAP_LDBM_F (void) ldbm_close( LDBM ldbm );LDAP_LDBM_F (void) ldbm_sync( LDBM ldbm );LDAP_LDBM_F (void) ldbm_datum_free( LDBM ldbm, Datum data );LDAP_LDBM_F (Datum) ldbm_datum_dup( LDBM ldbm, Datum data );LDAP_LDBM_F (Datum) ldbm_fetch( LDBM ldbm, Datum key );LDAP_LDBM_F (int) ldbm_store( LDBM ldbm, Datum key, Datum data, int flags );LDAP_LDBM_F (int) ldbm_delete( LDBM ldbm, Datum key );LDAP_LDBM_F (Datum) ldbm_firstkey( LDBM ldbm, LDBMCursor **cursor );LDAP_LDBM_F (Datum) ldbm_nextkey( LDBM ldbm, Datum key, LDBMCursor *cursor );/* initialization of Datum structures */#if defined( HAVE_BERKELEY_DB ) && (DB_VERSION_MAJOR >= 2) LDAP_LDBM_F (void *) ldbm_malloc( size_t size );# define ldbm_datum_init(d) ((void)memset(&(d), '\0', sizeof(Datum)))#else# define ldbm_datum_init(d) ((void)0)#endif /* HAVE_BERKELEY_DB */LDAP_END_DECL#endif /* _ldbm_h_ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?