findlib.h revision 3e14f97f673e8a630f076077de35afdd43dc1587
2N/A/***********************************************************************
2N/A* *
2N/A* This software is part of the ast package *
2N/A* Copyright (c) 1985-2010 AT&T Intellectual Property *
2N/A* and is licensed under the *
2N/A* Common Public License, Version 1.0 *
2N/A* by AT&T Intellectual Property *
2N/A* *
2N/A* A copy of the License is available at *
2N/A* http://www.opensource.org/licenses/cpl1.0.txt *
2N/A* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
2N/A* *
2N/A* Information and Software Systems Research *
2N/A* AT&T Research *
2N/A* Florham Park NJ *
2N/A* *
2N/A* Glenn Fowler <gsf@research.att.com> *
2N/A* David Korn <dgk@research.att.com> *
2N/A* Phong Vo <kpv@research.att.com> *
2N/A* *
2N/A***********************************************************************/
2N/A#pragma prototyped
2N/A/*
2N/A * fast find private interface
2N/A */
2N/A
2N/A#ifndef _FINDLIB_H
2N/A#define _FINDLIB_H
2N/A
2N/A#include <ast.h>
2N/A#include <cdt.h>
2N/A#include <ctype.h>
2N/A#include <error.h>
2N/A#include <ls.h>
2N/A#include <regex.h>
2N/A#include <vmalloc.h>
2N/A
2N/A#define FF_old 1 /* old format - 7 bit bigram */
2N/A#define FF_gnu 2 /* gnu 8 bit no bigram */
2N/A#define FF_dir 3 /* FF_gnu, dirs have trailing / */
2N/A#define FF_typ 4 /* FF_dir with types */
2N/A
2N/A#define FF_gnu_magic "LOCATE02"
2N/A#define FF_dir_magic "FIND-DIR-02"
2N/A#define FF_typ_magic "FIND-DIR-TYPE-03"
2N/A
2N/A#define FF_ESC 0036
2N/A#define FF_MAX 0200
2N/A#define FF_MIN 0040
2N/A#define FF_OFF 0016
2N/A
2N/A#define FF_SET_TYPE(p,i) ((p)->decode.bigram1[((i)>>3)&((1<<CHAR_BIT)-1)]|=(1<<((i)&07)))
2N/A#define FF_OK_TYPE(p,i) (!(p)->types||((p)->decode.bigram1[((i)>>3)&((1<<CHAR_BIT)-1)]&(1<<((i)&07))))
2N/A
2N/Atypedef struct
2N/A{
2N/A char* end;
2N/A char* type;
2N/A char* restore;
2N/A int count;
2N/A int found;
2N/A int ignorecase;
2N/A int match;
2N/A int peek;
2N/A int swap;
2N/A regex_t re;
2N/A char bigram1[(1<<(CHAR_BIT-1))];
2N/A char bigram2[(1<<(CHAR_BIT-1))];
2N/A char path[PATH_MAX];
2N/A char temp[PATH_MAX];
2N/A char pattern[1];
2N/A} Decode_t;
2N/A
2N/Atypedef struct
2N/A{
2N/A Dtdisc_t namedisc;
2N/A Dtdisc_t indexdisc;
2N/A Dt_t* namedict;
2N/A Dt_t* indexdict;
2N/A int prefix;
2N/A unsigned char bigram[2*FF_MAX];
2N/A unsigned short code[FF_MAX][FF_MAX];
2N/A unsigned short hits[USHRT_MAX+1];
2N/A char path[PATH_MAX];
2N/A char mark[PATH_MAX];
2N/A char file[PATH_MAX];
2N/A char temp[PATH_MAX];
2N/A} Encode_t;
2N/A
2N/Atypedef union
2N/A{
2N/A Decode_t code_decode;
2N/A Encode_t code_encode;
2N/A} Code_t;
2N/A
2N/Atypedef struct
2N/A{
2N/A Dtlink_t byname;
2N/A Dtlink_t byindex;
2N/A unsigned long index;
2N/A char name[1];
2N/A} Type_t;
2N/A
#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