diff options
Diffstat (limited to 'usr/src/lib/libast/common/misc/findlib.h')
-rw-r--r-- | usr/src/lib/libast/common/misc/findlib.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/usr/src/lib/libast/common/misc/findlib.h b/usr/src/lib/libast/common/misc/findlib.h new file mode 100644 index 0000000000..50d977ebea --- /dev/null +++ b/usr/src/lib/libast/common/misc/findlib.h @@ -0,0 +1,123 @@ +/*********************************************************************** +* * +* This software is part of the ast package * +* Copyright (c) 1985-2007 AT&T Knowledge Ventures * +* and is licensed under the * +* Common Public License, Version 1.0 * +* by AT&T Knowledge Ventures * +* * +* A copy of the License is available at * +* http://www.opensource.org/licenses/cpl1.0.txt * +* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * +* * +* Information and Software Systems Research * +* AT&T Research * +* Florham Park NJ * +* * +* Glenn Fowler <gsf@research.att.com> * +* David Korn <dgk@research.att.com> * +* Phong Vo <kpv@research.att.com> * +* * +***********************************************************************/ +#pragma prototyped +/* + * fast find private interface + */ + +#ifndef _FINDLIB_H +#define _FINDLIB_H + +#include <ast.h> +#include <cdt.h> +#include <ctype.h> +#include <error.h> +#include <ls.h> +#include <regex.h> +#include <vmalloc.h> + +#define FF_old 1 /* old format - 7 bit bigram */ +#define FF_gnu 2 /* gnu 8 bit no bigram */ +#define FF_dir 3 /* FF_gnu, dirs have trailing / */ +#define FF_typ 4 /* FF_dir with types */ + +#define FF_gnu_magic "LOCATE02" +#define FF_dir_magic "FIND-DIR-02" +#define FF_typ_magic "FIND-DIR-TYPE-03" + +#define FF_ESC 0036 +#define FF_MAX 0200 +#define FF_MIN 0040 +#define FF_OFF 0016 + +#define FF_SET_TYPE(p,i) ((p)->decode.bigram1[((i)>>3)&((1<<CHAR_BIT)-1)]|=(1<<((i)&07))) +#define FF_OK_TYPE(p,i) (!(p)->types||((p)->decode.bigram1[((i)>>3)&((1<<CHAR_BIT)-1)]&(1<<((i)&07)))) + +typedef struct +{ + char* end; + char* type; + char* restore; + int count; + int found; + int ignorecase; + int match; + int peek; + int swap; + regex_t re; + char bigram1[(1<<(CHAR_BIT-1))]; + char bigram2[(1<<(CHAR_BIT-1))]; + char path[PATH_MAX]; + char temp[PATH_MAX]; + char pattern[1]; +} Decode_t; + +typedef struct +{ + Dtdisc_t namedisc; + Dtdisc_t indexdisc; + Dt_t* namedict; + Dt_t* indexdict; + int prefix; + unsigned char bigram[2*FF_MAX]; + unsigned short code[FF_MAX][FF_MAX]; + unsigned short hits[USHRT_MAX+1]; + char path[PATH_MAX]; + char mark[PATH_MAX]; + char file[PATH_MAX]; + char temp[PATH_MAX]; +} Encode_t; + +typedef union +{ + Decode_t code_decode; + Encode_t code_encode; +} Code_t; + +typedef struct +{ + Dtlink_t byname; + Dtlink_t byindex; + unsigned long index; + char name[1]; +} Type_t; + +#define _FIND_PRIVATE_ \ + Finddisc_t* disc; \ + Vmalloc_t* vm; \ + char** dirs; \ + int* lens; \ + Sfio_t* fp; \ + Findverify_f verifyf; \ + int generate; \ + int method; \ + int secure; \ + int types; \ + int verify; \ + Code_t code; + +#define decode code.code_decode +#define encode code.code_encode + +#include <find.h> + +#endif |