1/*********************************************************************** 2* * 3* This software is part of the ast package * 4* Copyright (c) 1985-2011 AT&T Intellectual Property * 5* and is licensed under the * 6* Common Public License, Version 1.0 * 7* by AT&T Intellectual Property * 8* * 9* A copy of the License is available at * 10* http://www.opensource.org/licenses/cpl1.0.txt * 11* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12* * 13* Information and Software Systems Research * 14* AT&T Research * 15* Florham Park NJ * 16* * 17* Glenn Fowler <gsf@research.att.com> * 18* David Korn <dgk@research.att.com> * 19* Phong Vo <kpv@research.att.com> * 20* * 21***********************************************************************/ 22#pragma prototyped 23/* 24 * fast find private interface 25 */ 26 27#ifndef _FINDLIB_H 28#define _FINDLIB_H 29 30#include <ast.h> 31#include <cdt.h> 32#include <ctype.h> 33#include <error.h> 34#include <ls.h> 35#include <regex.h> 36#include <vmalloc.h> 37 38#define FF_old 1 /* old format - 7 bit bigram */ 39#define FF_gnu 2 /* gnu 8 bit no bigram */ 40#define FF_dir 3 /* FF_gnu, dirs have trailing / */ 41#define FF_typ 4 /* FF_dir with types */ 42 43#define FF_gnu_magic "LOCATE02" 44#define FF_dir_magic "FIND-DIR-02" 45#define FF_typ_magic "FIND-DIR-TYPE-03" 46 47#define FF_ESC 0036 48#define FF_MAX 0200 49#define FF_MIN 0040 50#define FF_OFF 0016 51 52#define FF_SET_TYPE(p,i) ((p)->decode.bigram1[((i)>>3)&((1<<CHAR_BIT)-1)]|=(1<<((i)&07))) 53#define FF_OK_TYPE(p,i) (!(p)->types||((p)->decode.bigram1[((i)>>3)&((1<<CHAR_BIT)-1)]&(1<<((i)&07)))) 54 55typedef struct 56{ 57 char* end; 58 char* type; 59 char* restore; 60 int count; 61 int found; 62 int ignorecase; 63 int match; 64 int peek; 65 int swap; 66 regex_t re; 67 char bigram1[(1<<(CHAR_BIT-1))]; 68 char bigram2[(1<<(CHAR_BIT-1))]; 69 char path[PATH_MAX]; 70 char temp[PATH_MAX]; 71 char pattern[1]; 72} Decode_t; 73 74typedef struct 75{ 76 Dtdisc_t namedisc; 77 Dtdisc_t indexdisc; 78 Dt_t* namedict; 79 Dt_t* indexdict; 80 int prefix; 81 unsigned char bigram[2*FF_MAX]; 82 unsigned short code[FF_MAX][FF_MAX]; 83 unsigned short hits[USHRT_MAX+1]; 84 char path[PATH_MAX]; 85 char mark[PATH_MAX]; 86 char file[PATH_MAX]; 87 char temp[PATH_MAX]; 88} Encode_t; 89 90typedef union 91{ 92 Decode_t code_decode; 93 Encode_t code_encode; 94} Code_t; 95 96typedef struct 97{ 98 Dtlink_t byname; 99 Dtlink_t byindex; 100 unsigned long index; 101 char name[1]; 102} Type_t; 103 104#define _FIND_PRIVATE_ \ 105 Finddisc_t* disc; \ 106 Vmalloc_t* vm; \ 107 char** dirs; \ 108 int* lens; \ 109 Sfio_t* fp; \ 110 Findverify_f verifyf; \ 111 int generate; \ 112 int method; \ 113 int secure; \ 114 int types; \ 115 int verify; \ 116 Code_t code; 117 118#define decode code.code_decode 119#define encode code.code_encode 120 121#include <find.h> 122 123#endif 124