/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* Copyright (c) 1988 AT&T */ /* All Rights Reserved */ /* * Copyright 1999, 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" /* inverted index definitions */ /* postings temporary file long number coding into characters */ #define BASE 95 /* 127 - ' ' */ #define PRECISION 5 /* maximum digits after converting a long */ /* inverted index access parameters */ #define INVAVAIL 0 #define INVBUSY 1 #define INVALONE 2 /* boolean set operations */ #define OR 3 #define AND 4 #define NOT 5 #define REVERSENOT 6 /* note that the entire first block is for parameters */ typedef struct { long version; /* inverted index format version */ long filestat; /* file status word */ long sizeblk; /* size of logical block in bytes */ long startbyte; /* first byte of superfinger */ long supsize; /* size of superfinger in bytes */ long cntlsize; /* size of max cntl space (should be a */ /* multiple of BUFSIZ) */ long share; /* flag whether to use shared memory */ } PARAM; typedef struct { FILE *invfile; /* the inverted file ptr */ FILE *postfile; /* posting file ptr */ PARAM param; /* control parameters for the file */ char *iindex; /* ptr to space for superindex */ char *logblk; /* ptr to space for a logical block */ long numblk; /* number of block presently at *logblk */ long keypnt; /* number item in present block found */ int swap; /* file endian mistmatch? */ } INVCONTROL; typedef struct { short offset; /* offset in this logical block */ unsigned char size; /* size of term */ unsigned char space; /* number of longs of growth space */ long post; /* number of postings for this entry */ } ENTRY; typedef struct { long lineoffset; /* source line database offset */ long fcnoffset; /* function name database offset */ long fileindex : 24; /* source file name index */ long type : 8; /* reference type (mark character) */ } POSTING; extern long *srcoffset; /* source file name database offsets */ extern int nsrcoffset; /* number of file name database offsets */ extern void boolclear(void); extern POSTING *boolfile(INVCONTROL *invcntl, long *num, int bool); extern void invclose(INVCONTROL *invcntl); extern long invfind(INVCONTROL *invcntl, char *searchterm); extern int invforward(INVCONTROL *invcntl); extern int invopen(INVCONTROL *invcntl, char *invname, char *invpost, int stat); extern int invterm(INVCONTROL *invcntl, char *term); extern long invmake(char *invname, char *invpost, FILE *infile);