/*
* Copyright (c) 1985 Corporation for Research and Educational Networking
* Copyright (c) 1988 University of Illinois Board of Trustees, Steven
* Dorner, and Paul Pomes
* 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 acknowledgement:
* This product includes software developed by the Corporation for
* Research and Educational Networking (CREN), the University of
* Illinois at Urbana, and their contributors.
* 4. Neither the name of CREN, the University nor the names of their
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE TRUSTEES AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS 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 THE TRUSTEES OR 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.
*
* @(#)$Id: qdb.h,v 1.1 1994/03/25 14:58:18 paul Exp $
*/
#ifndef QDB_H
#define QDB_H
#include "conf.h"
#define PTRTYPE long /* type to use for record pointers */
#define PTRSIZE sizeof(PTRTYPE) /* size of a record pointer */
/*
* d_record sizes. The total size should be DRECSIZE. The number of bytes
* for data is found by subtracting the sizes of the other fields from this.
*/
#define NDCHARS (DRECSIZE - 2*PTRSIZE - 2*sizeof(long) - 2*sizeof(short))
/*
* d_ovrflo sizes. The total size should be DOVRSIZE. The number of bytes
* for data is found by subtracting the sizes of the other fields from this.
*/
#define NDOCHARS (DOVRSIZE - PTRSIZE)
/*
* iindex sizes. The total size should be NICHARS. The number of pointers
* available is dependent on the size of a pointer...
*/
#define NIPTRS (NICHARS/PTRSIZE)
#define NOPTRS (NOCHARS/PTRSIZE) /* 1K index overflow blocks */
#define EMPTY '\377' /* delete signifies a once used but now empty
* node */
#define MAXTRIES 32
#define NHASH 32
struct d_record
{
PTRTYPE d_ovrptr; /* ptr to ovrflo block ( if any ) */
PTRTYPE d_id; /* unique id */
time_t d_crdate; /* date of creation */
time_t d_chdate; /* date of last modification */
unsigned short d_dead; /* deleted entry */
unsigned short d_datalen; /* length of data that follows */
char d_data[NDCHARS]; /* various strings, variable length */
};
typedef struct d_record DREC;
struct d_ovrflo
{
char d_mdata[NDOCHARS];
PTRTYPE d_nextptr; /* ptr to next ovrflo block */
};
typedef struct d_ovrflo DOVR;
struct dirhead
{ /* in block 0 of the .dir file */
PTRTYPE nents; /* number of entries in the .dir file */
PTRTYPE next_id; /* the next id capable of being issued */
int hashes[NHASH]; /* # of hashes to find index entries */
int nfree; /* number of free entries in freelist,(not
* cur used) */
int freel[10];
};
#endif