⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssl_util_sdbm.h

📁 mod_ssl-2.8.31-1.3.41.tar.gz 好用的ssl工具
💻 H
字号:
/*                      _             _**  _ __ ___   ___   __| |    ___ ___| |  mod_ssl** | '_ ` _ \ / _ \ / _` |   / __/ __| |  Apache Interface to OpenSSL** | | | | | | (_) | (_| |   \__ \__ \ |  www.modssl.org** |_| |_| |_|\___/ \__,_|___|___/___/_|  ftp.modssl.org**                      |_____|**  ssl_util_sdbm.c**  Built-in Simple DBM (Header)*//* ==================================================================== * Copyright (c) 1998-2006 Ralf S. Engelschall. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following *    disclaimer in the documentation and/or other materials *    provided with the distribution. * * 3. All advertising materials mentioning features or use of this *    software must display the following acknowledgment: *    "This product includes software developed by *     Ralf S. Engelschall <rse@engelschall.com> for use in the *     mod_ssl project (http://www.modssl.org/)." * * 4. The names "mod_ssl" must not be used to endorse or promote *    products derived from this software without prior written *    permission. For written permission, please contact *    rse@engelschall.com. * * 5. Products derived from this software may not be called "mod_ssl" *    nor may "mod_ssl" appear in their names without prior *    written permission of Ralf S. Engelschall. * * 6. Redistributions of any form whatsoever must retain the following *    acknowledgment: *    "This product includes software developed by *     Ralf S. Engelschall <rse@engelschall.com> for use in the *     mod_ssl project (http://www.modssl.org/)." * * THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL RALF S. ENGELSCHALL OR * HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== *//* * sdbm - ndbm work-alike hashed database library * based on Per-Ake Larson's Dynamic Hashing algorithms. BIT 18 (1978). * author: oz@nexus.yorku.ca * status: public domain. */#ifndef SSL_UTIL_SDBM_H#define SSL_UTIL_SDBM_H#define DUFF    /* go ahead and use the loop-unrolled version */#include <stdio.h>#ifdef MOD_SSL#define DBLKSIZ 16384                   /* SSL cert chains require more */#define PBLKSIZ 8192                    /* SSL cert chains require more */#define PAIRMAX 8008                    /* arbitrary on PBLKSIZ-N */#else#define DBLKSIZ 4096#define PBLKSIZ 1024#define PAIRMAX 1008                    /* arbitrary on PBLKSIZ-N */#endif#define SPLTMAX 10                      /* maximum allowed splits */                                        /* for a single insertion */#define DIRFEXT ".dir"#define PAGFEXT ".pag"typedef struct {        int dirf;                      /* directory file descriptor */        int pagf;                      /* page file descriptor */        int flags;                     /* status/error flags, see below */        long maxbno;                   /* size of dirfile in bits */        long curbit;                   /* current bit number */        long hmask;                    /* current hash mask */        long blkptr;                   /* current block for nextkey */        int keyptr;                    /* current key for nextkey */        long blkno;                    /* current page to read/write */        long pagbno;                   /* current page in pagbuf */        char pagbuf[PBLKSIZ];          /* page file block buffer */        long dirbno;                   /* current block in dirbuf */        char dirbuf[DBLKSIZ];          /* directory file block buffer */} DBM;#define DBM_RDONLY      0x1            /* data base open read-only */#define DBM_IOERR       0x2            /* data base I/O error *//* * utility macros */#define sdbm_rdonly(db)         ((db)->flags & DBM_RDONLY)#define sdbm_error(db)          ((db)->flags & DBM_IOERR)#define sdbm_clearerr(db)       ((db)->flags &= ~DBM_IOERR)  /* ouch */#define sdbm_dirfno(db) ((db)->dirf)#define sdbm_pagfno(db) ((db)->pagf)typedef struct {        char *dptr;        int dsize;} datum;extern datum nullitem;#ifdef __STDC__#define proto(p) p#else#define proto(p) ()#endif/* * flags to sdbm_store */#define DBM_INSERT      0#define DBM_REPLACE     1/* * ndbm interface */extern DBM *sdbm_open proto((char *, int, int));extern void sdbm_close proto((DBM *));extern datum sdbm_fetch proto((DBM *, datum));extern int sdbm_delete proto((DBM *, datum));extern int sdbm_store proto((DBM *, datum, datum, int));extern datum sdbm_firstkey proto((DBM *));extern datum sdbm_nextkey proto((DBM *));/* * other */extern DBM *sdbm_prep proto((char *, char *, int, int));extern long sdbm_hash proto((char *, int));/* pair.h */extern int fitpair proto((char *, int));extern void  putpair proto((char *, datum, datum));extern datum    getpair proto((char *, datum));extern int  delpair proto((char *, datum));extern int  chkpage proto((char *));extern datum getnkey proto((char *, int));extern void splpage proto((char *, char *, long));extern int duppair proto((char *, datum));/* tune.h *//* * sdbm - ndbm work-alike hashed database library * tuning and portability constructs [not nearly enough] * author: oz@nexus.yorku.ca */#define BYTESIZ         8/* * important tuning parms (hah) */#define SEEDUPS                 /* always detect duplicates */#define BADMESS                 /* generate a message for worst case:                                   cannot make room after SPLTMAX splits *//* * misc */#ifdef DEBUG#define debug(x)        printf x#else#define debug(x)#endif#endif /* SSL_UTIL_SDBM_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -