亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? agrep.c

?? Mehldau和Myer的Agrep3版本
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*
 	AGREP	APPROXIMATE PATTERN - GREP.
	
	Copyright (c) 1994-1997 Sun Wu, Udi Manber, Burra Gopal, Tom Gries (for OS/2)
	All Rights Reserved.

[fix]	3.35	TG 11.12.97	agrep.c: -f function did not work because of a simple
				problem in the commandline parser: the patternfile preprocessing
				prepf() was done before definition of the codepage. Oops.
[fix]	3.34			newmgrep.c: input buffer was used before its start address
[chg]	3.33	TG 02.03.97	when no target filename(s) were given:
				AGREP displays an error message now
				instead of reading from stdin.
				Solves the following problem:
				When one uses "AGREP <needle> *" and there are
				no files in that subdirectory,
				the 3.32 has waited for stdin (=haystack, target).
[new]				verbose option -V5 dumps codepage table
[chg]				compiled with emx 0.9c

[chg]		TG 18.02.97     new homepage, see AGREPHLP.C.
				I keep the same version number.

[chg]   3.32    TG 15.01.97     new links, helppage revised
[new]	3.31	TG 16.12.96	new option -i0
[fix]	3.29	TG 14.10.96	see version.h
[new]	3.21	TG 07.10.96	Verbose option -V
[new]	3.20	TG 06.10.96	multi-codepage support
				now implemented CP437 and CP850
[new]	3.19	TG 05.10.96	environment variable AGREPOPTS
[new]	3.14	TG 25.09.96	new option -i#:
				let letters match letters, digits match digits,
				others match others
[new]	3.12			dynamic metasymbol assignment (in preparation)
[chg]				returncode = total number of hits
[new]	3.11	TG 23.09.96	option -ia maps all ISO characters to nearest ASCII
[chg]	3.10	TG 22.09.96	handling and check for metasymbols in searchstring
[fix]	3.09	TG 22.09.96	BITAP.C: type CHAR instead of type char
[new]				AGREP.C: Grand Total
[fix]	3.08 	TG 16.09.96
	
		- A dummy printf("") statement is now used to avoid the
		  following memory(?) problem:

		  now and then, when using the delimiter option and
		  on big files and piping AGREP's output to a file..
		  
		  Example: AGREP -d "/AN " -i "next;block" infile > outfile
		  
		  ..AGREP has crashed with SYS3175 (access violation).
		  

		- provisonally un-commenting the diagnostic error message
		  for OUTPUT_OVERFLOW (in AGRPEP.H)

[chg]   3.07 [TG]
	
		- improved performance for CP850 upper to lower translation
		  (now using a look-up table)
		  
		- improved help screens
		
[chg]	3.04 R.M. Thomas [MT] & Th. Gries [TG] July/August 1996:
	
		- conditional compiling using the __EMX__ flag
		- EMX: use of _wildcard() function to expand wildcards
		- using constants AGREP_VERSION, AGREP_DATE in agrep.h

[ini]	3.x bgopal: (1993-1994)
 
 		- Added a library interface and removed some bugs.
 	   	- Also selectively modified many routines to work
		  with our text-compression algo.
*/

/* definition of an environmentvariable which value is prepended to
   to value of the actual command line.		[TG]
   
   Example:
   SET AGREPOPTS=-i	to let AGREP search case-insensitive
*/

unsigned char metasymb[16];			/* we define 16 metasymbols */
#include "agrep.h"
#include "version.h"
#include "codepage.h"
#include "checkfil.h"

char	AGREPOPT_STR[MAX_LINE_LEN];

extern char	CODEPAGE_STR[MAX_LINE_LEN];	/* holds the selected codepage identifier */
extern int	CODEPAGE;			/* corresponding number */
extern char	CP_MAPPING;			/* -i option = case(in)sensitive search ?
						   is one of 'i', 'a', '#' or 0	*/

extern struct CODEPAGE_struct CP[CODEPAGES][CPSIZE];
extern unsigned char LUT[256];

#define PRINT(s)
#ifndef __BORLANDC__
extern char **environ;
extern int errno;
#endif
int pattern_index;		/* index in argv where the pattern is */

int glimpse_isserver=0;		/* so that there is no user interaction */
int glimpse_call = 0;		/* So that usage message is not printed twice */
int glimpse_clientdied=0;	/* to quit search if glimpseserver's client dies */

int  agrep_initialfd;		/* Where does input come from? File/Memory? */
CHAR *agrep_inbuffer;
int  agrep_inlen;
int  agrep_inpointer;

FILE *agrep_finalfp;		/* Where does output go to? File/Memory? */
CHAR *agrep_outbuffer;
int  agrep_outlen;
int  agrep_outpointer;

int  execfd;	   /* used by exec called within agrep_search, set in agrep_init */
int  multifd = -1; /* fd for multipattern search used in ^^ , set in   ^^^^^^^^ */
extern char *pat_spool;

#if	DOTCOMPRESSED
extern char *tc_pat_spool;
#endif	/* DOTCOMPRESSED */

char *multibuf=NULL; 	/* buffer to put the multiple patterns in */
int  multilen = 0; 	/* length of the multibuf: not the #of multi-patterns! */

extern int pos_cnt;	/* to re-initialize it to 0 for reg-exp search */
unsigned Mask[MAXSYM];
unsigned Init1, NO_ERR_MASK, Init[MaxError];
unsigned Bit[WORD+1];
CHAR buffer[BlockSize+Maxline+1];	/* should not be used anywhere: 10/18/93 */
unsigned Next[MaxNext], Next1[MaxNext];
unsigned wildmask, endposition, D_endpos; 
int  LIMITOUTPUT;	/* maximum number of matches we are going to allow */
int  LIMITPERFILE;	/* maximum number of matches per file we are going to allow */
int  LIMITTOTALFILE;	/* maximum number of files we are going to allow */
int  EXITONERROR;	/* return -1 or exit on error? */
int  REGEX, FASTREGEX, RE_ERR, FNAME, WHOLELINE, SIMPLEPATTERN;
int  COUNT, HEAD, TAIL, LINENUM, INVERSE, I, S, DD, AND, SGREP, JUMP; 
int  NOOUTPUTZERO;
int  Num_Pat, PSIZE, prev_num_of_matched, num_of_matched, files_matched;
int  SILENT, NOPROMPT, BESTMATCH, NOUPPER, ISO2ASCII;
int  NOMATCH, TRUNCATE, FIRST_IN_RE, FIRSTOUTPUT;
int  WORDBOUND, DELIMITER, D_length, tc_D_length, original_D_length;
int  EATFIRST, OUTTAIL;
int  BYTECOUNT;
int  PRINTOFFSET;
int  PRINTRECORD;
int  VERBOSE=1;			/* Verbose default: AGREP shows the Grand Total */
int  FILEOUT;
int  DNA;
int  APPROX;

int  PAT_FILE;			/* multiple patterns from a given file */
char PAT_FILE_NAME[MAX_LINE_LEN];
int  PAT_BUFFER;		/* multiple patterns from a given buffer */
int  CONSTANT;
int  RECURSIVE;

int  total_line;	/* used in mgrep */
int  D;
int  M;
int  TCOMPRESSED;
int  EASYSEARCH;	/* 1 used only for compressed files: LITTLE/BIG */
int  ALWAYSFILENAME = OFF;
int  POST_FILTER = OFF;
int  NEW_FILE = OFF;	/* only when post-filter is used */
int  PRINTFILENUMBER = OFF;
int  PRINTPATTERN = OFF;
int  MULTI_OUTPUT = OFF; /* should mgrep print the matched line multiple times for each matched pattern or just once? */
/* invisible to the user, used only by glimpse: cannot use -l since it is incompatible with stdin and -A is used for the index search (done next) */

/* Stuff to handle complicated boolean patterns */

int  AComplexBoolean = 0;
ParseTree *AParse = NULL;
int anum_terminals = 0;
ParseTree aterminals[MAXNUM_PAT];
char amatched_terminals[MAXNUM_PAT];

#if	MEASURE_TIMES
					/* timing variables */
int OUTFILTER_ms;
int FILTERALGO_ms;
int INFILTER_ms;
#endif					/*MEASURE_TIMES*/

CHAR **Textfiles = NULL;		/* array of filenames to be searched */
int Numfiles = 0;			/* indicates how many files in Textfiles */
int copied_from_argv = 0;		/* were filenames copied from argv (should I free 'em)? */
CHAR old_D_pat[MaxDelimit * 2] = "\n";  /* to hold original D_pattern */
CHAR original_old_D_pat[MaxDelimit * 2] = "\n";
CHAR Pattern[MAXPAT], OldPattern[MAXPAT];
CHAR CurrentFileName[MAX_LINE_LEN];
int SetCurrentFileName = 0;		/* dirty glimpse trick to make filters work: output seems to come from another file */
int CurrentByteOffset;
int SetCurrentByteOffset = 0;
CHAR Progname[MAXNAME]; 

/* string which delimits records -- defaults to newline */
CHAR D_pattern[MaxDelimit * 2] = "\n; ";

CHAR tc_D_pattern[MaxDelimit * 2] = "\n";
CHAR original_D_pattern[MaxDelimit * 2] = "\n; ";
char COMP_DIR[MAX_LINE_LEN];
char FREQ_FILE[MAX_LINE_LEN], HASH_FILE[MAX_LINE_LEN], STRING_FILE[MAX_LINE_LEN];	/* interfacing with tcompress */

int  NOFILENAME,  			/* Boolean flag, set for -h option */
     FILENAMEONLY;			/* Boolean flag, set for -l option */
     
extern int init();
int table[WORD][WORD];
CHAR *agrep_saved_pattern = NULL;	/* to prevent multiple prepfs for each boolean search: crd@hplb.hpl.hp.com */

#ifdef _WIN32
#include <direct.h>
#include <io.h>
int  agrep_usage();       /* agrep.c */
int  exec();              /* agrep.c */
int  exponen();           /* agrep.c */
int  r_output();          /* agrep.c */
int  file_out();          /* agrep.c */
void agrep_online_help(); /* agrephlp.c */
int  bitap();             /* bitap.c */
int  fill_buf();          /* bitap.c */
int  check_file();        /* checkfil.c */
int  checksg();           /* checksg.c */
int  get_current_codepage(); /* codepage.c */
int  compat();            /* compat.c */
int  maskgen();           /* maskgen.c */
int  mgrep();             /* newmgrep.c */
int  prepf();             /* newmgrep.c */
int  preprocess();        /* preproce.c */
void destroy_tree();      /* putils.c */
int  recursive();         /* recursiv.c */
int  sgrep();             /* sgrep.c */
int  initialize_common(); /* dummyfil.c */
int  tuncompressible_filename();   /* dummyfil.c */
int  quick_tcompress();   /* dummyfil.c */
#endif

/* Called when multipattern search and pattern has not changed */

void reinit_value_partial()
{
	num_of_matched = prev_num_of_matched = 0;
	errno = 0;
	FIRST_IN_RE = ON;
}

/* This must be called before every agrep_search to reset agrep globals */
void reinit_value()
{
        int i, j;

	/* Added on 7th Oct 1994 */
	
	if (AParse) {
		if (AComplexBoolean) destroy_tree(AParse);
		AComplexBoolean = 0;
		AParse = 0;
		PAT_BUFFER = 0;
		if (multibuf != NULL) free(multibuf);	/* this was allocated for arbit booleans, not multipattern search */
		multibuf = NULL;
		multilen = 0;
		/* Cannot free multifd here since that is always allocated for multipattern search */
	}
	for (i=0; i<anum_terminals; i++) {
		free(aterminals[i].data.leaf.value);
		memset(&aterminals[i], '\0', sizeof(ParseTree));
	}
	anum_terminals = 0;

        Bit[WORD] = 1;
        for (i = WORD - 1; i > 0  ; i--)  Bit[i] = Bit[i+1] << 1;
        for (i=0; i< MAXSYM; i++) Mask[i] = 0;

        /* bg: new things added on Mar 13 94 */
	
        Init1 = 0;
        NO_ERR_MASK = 0;
        memset(Init, '\0', MaxError * sizeof(unsigned));
        memset(Next, '\0', MaxNext * sizeof(unsigned));
        memset(Next1, '\0', MaxNext * sizeof(unsigned));
        wildmask = endposition = D_endpos = 0;
        for (i=0; i<WORD; i++)
                for (j=0; j<WORD; j++)
                        table[i][j] = 0;

        strcpy(D_pattern, original_D_pattern);
        D_length = original_D_length;
        strcpy(old_D_pat, original_old_D_pat);

	/* Changed on Dec 26th: bg */
	FASTREGEX = REGEX = 0;
	HEAD = TAIL = ON;	/* were off initially */
	RE_ERR = 0;
	AND = 0;
	M = 0;
	pos_cnt = 0;	/* added 31 Jan 95 */

	reinit_value_partial();
}

/* This must be called before every agrep_init to reset agrep options */

void initial_value()
{
	SetCurrentFileName = 0;	/* 16/9/94 */
	SetCurrentByteOffset = 0;	/* 23/9/94 */

	/* courtesy: crd@hplb.hpl.hp.com */
	
	if (agrep_saved_pattern) {
		free(agrep_saved_pattern);
		agrep_saved_pattern= NULL;
	}
	
	/* bg: new stuff on 17/Feb/94 */
	
	if (multifd != -1) close(multifd);
	multifd = -1;
	if (multibuf != NULL) free(multibuf);
	multibuf = NULL;
	multilen = 0;
	if (pat_spool != NULL) free(pat_spool);
	pat_spool = NULL;

#if	DOTCOMPRESSED
	if (tc_pat_spool != NULL) free(tc_pat_spool);
	tc_pat_spool = NULL;
#endif	/* DOTCOMPRESSED */

	LIMITOUTPUT = 0;	/* means infinity = current semantics */
	LIMITPERFILE = 0;	/* means infinity = current semantics */
	LIMITTOTALFILE = 0;	/* means infinity = current semantics */
	EASYSEARCH = 1;
	DNA = APPROX = PAT_FILE = PAT_BUFFER = CONSTANT = total_line = D = TCOMPRESSED = 0;
	PAT_FILE_NAME[0] = '\0';
	EXITONERROR = NOFILENAME = FILENAMEONLY = FILEOUT = ALWAYSFILENAME = NEW_FILE = POST_FILTER = 0;

        original_old_D_pat[0] = old_D_pat[0] = '\n';
        original_old_D_pat[1] = old_D_pat[1] = '\0';
        original_D_pattern[0] = D_pattern[0] = '\n';
        original_D_pattern[1] = D_pattern[1] = ';';
        original_D_pattern[2] = D_pattern[2] = ' ';
        original_D_pattern[3] = D_pattern[3] = '\0';

	strcpy(tc_D_pattern, "\n");
	tc_D_length = 1;

	/* the functions agrep_init and agrep_search take care of Textfiles and Numfiles */
	agrep_inpointer = 0;
	agrep_outpointer = 0;
	agrep_outlen = 0;

#if	MEASURE_TIMES
	OUTFILTER_ms = FILTERALGO_ms = INFILTER_ms = 0;
#endif	/*MEASURE_TIMES*/

	MULTI_OUTPUT = 0;
	PRINTPATTERN = 0;
	PRINTFILENUMBER = 0;
	JUMP = FNAME = BESTMATCH = NOPROMPT = NOUPPER = ISO2ASCII = 0 ;
	RECURSIVE = 0;
	COUNT = LINENUM = WHOLELINE = SGREP = 0;
	NOOUTPUTZERO = 0;
	EATFIRST = INVERSE = TRUNCATE = OUTTAIL = 0; 
	NOMATCH = FIRSTOUTPUT = ON;	/* were off initally */
	I = DD = S = 1;	/* were off initially */
	original_D_length = D_length = 2;	/* was 0 initially */
	SILENT = Num_Pat = PSIZE = SIMPLEPATTERN = prev_num_of_matched = num_of_matched = files_matched = 0;
	WORDBOUND = DELIMITER = 0;

	COMP_DIR[0] = '\0';
	FREQ_FILE[0] = '\0';
	HASH_FILE[0] = '\0';
	STRING_FILE[0] = '\0';
	BYTECOUNT = OFF;
	PRINTOFFSET = OFF;
	PRINTRECORD = ON;

	glimpse_clientdied = 0;	/* added 15th Feb 95 */

	/* Pattern, OldPattern, execfd, Numfiles are set in agrep_init: so no need to initialize */
	reinit_value();
}

void compute_next(M, Next, Next1)
int M; 
unsigned *Next, *Next1;
{
	int i, j=0, n,  k, temp;
	int mid, pp;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品一区二区| 国产精品二三区| 成人免费高清在线| 91福利区一区二区三区| 亚洲欧洲一区二区在线播放| 99精品欧美一区二区蜜桃免费| 日韩一区中文字幕| 日本黄色一区二区| 亚洲电影在线免费观看| 51精品视频一区二区三区| 日本va欧美va精品| 337p粉嫩大胆噜噜噜噜噜91av | 欧美高清在线一区| 成人高清免费观看| 亚洲精品国产第一综合99久久| 精品视频资源站| 美女视频黄免费的久久| 国产亚洲一二三区| 一本在线高清不卡dvd| 亚洲福利视频一区二区| 精品久久久久香蕉网| 成人精品国产一区二区4080| 亚洲免费看黄网站| 欧美一区午夜视频在线观看 | 91蝌蚪国产九色| 午夜视黄欧洲亚洲| 精品福利一二区| 成人av网在线| 日韩av午夜在线观看| 国产日韩欧美在线一区| 在线一区二区视频| 国内成人免费视频| 伊人婷婷欧美激情| 精品国产一区久久| 91美女片黄在线| 麻豆成人久久精品二区三区小说| 国产精品无人区| 欧美卡1卡2卡| 成人午夜av电影| 午夜精品久久久久影视| 国产网站一区二区| 欧美网站大全在线观看| 激情小说亚洲一区| 亚洲综合丝袜美腿| 久久嫩草精品久久久精品| 91精品办公室少妇高潮对白| 久久99热国产| 一区二区日韩电影| 久久嫩草精品久久久久| 欧美日韩国产综合草草| 国产91富婆露脸刺激对白 | 一区二区久久久久久| 日韩精品中文字幕在线一区| 97se亚洲国产综合自在线| 久久国产精品第一页| 亚洲精品视频在线| 久久蜜桃香蕉精品一区二区三区| 欧美色图一区二区三区| 粉嫩久久99精品久久久久久夜| 日韩经典一区二区| 中文字幕亚洲欧美在线不卡| 精品免费日韩av| 欧美亚洲动漫精品| 成人精品视频一区| 久久激情五月婷婷| 亚洲国产精品欧美一二99| 国产精品女上位| 精品三级av在线| 欧美日韩国产三级| 色婷婷综合五月| 高清在线观看日韩| 久久精品国产久精国产| 亚洲狠狠爱一区二区三区| 国产精品久久久久久久蜜臀| 欧美va亚洲va在线观看蝴蝶网| 精品视频1区2区3区| 99久久精品国产导航| 国产成人免费在线视频| 久久精品国产精品亚洲红杏| 爽好多水快深点欧美视频| 一区二区三区国产精华| 国产精品白丝在线| 国产日韩视频一区二区三区| 精品欧美乱码久久久久久| 777亚洲妇女| 欧美少妇一区二区| 色综合天天综合狠狠| 成人教育av在线| 国产精品一区二区果冻传媒| 捆绑变态av一区二区三区| 日韩国产在线一| 亚洲国产aⅴ天堂久久| 亚洲免费av网站| 自拍偷自拍亚洲精品播放| 国产精品久久久久一区二区三区 | 精品乱人伦小说| 制服丝袜一区二区三区| 欧美日韩一区小说| 欧美视频三区在线播放| 欧美私模裸体表演在线观看| 色婷婷综合久久久久中文 | 日产国产欧美视频一区精品| 亚洲电影在线播放| 亚洲伊人色欲综合网| 亚洲卡通动漫在线| 一区二区三区四区亚洲| 依依成人综合视频| 亚洲一二三区在线观看| 亚洲图片一区二区| 午夜欧美电影在线观看| 亚洲18色成人| 午夜精品久久久久久久蜜桃app| 视频一区视频二区中文| 肉肉av福利一精品导航| 日韩成人免费电影| 免费看欧美美女黄的网站| 免费高清在线一区| 精品一区二区三区在线观看国产 | 成人免费av网站| 成人精品亚洲人成在线| 97久久精品人人澡人人爽| 色偷偷久久一区二区三区| 欧美日韩在线一区二区| 91精品国产综合久久福利软件| 日韩午夜电影在线观看| 久久婷婷色综合| 欧美激情一区三区| 亚洲欧美日韩国产手机在线| 艳妇臀荡乳欲伦亚洲一区| 性久久久久久久久| 麻豆91精品91久久久的内涵| 国产在线日韩欧美| 不卡视频免费播放| 91视频www| 在线看日韩精品电影| 8x福利精品第一导航| 精品久久久久久最新网址| 久久久久久久久岛国免费| 国产日韩欧美综合在线| 亚洲天堂av老司机| 午夜亚洲国产au精品一区二区| 免费高清在线一区| 风间由美一区二区av101| 色综合久久88色综合天天免费| 欧美福利视频导航| 久久奇米777| 亚洲三级理论片| 日韩精品电影一区亚洲| 国产黄色成人av| 在线一区二区观看| 日韩欧美国产综合一区| 欧美激情一区二区三区蜜桃视频| 亚洲老妇xxxxxx| 美女免费视频一区二区| 成人黄色在线网站| 欧美日本韩国一区| 2023国产一二三区日本精品2022| 国产精品国产自产拍高清av| 亚洲成人激情自拍| 国产精品一区免费视频| 日本韩国视频一区二区| 日韩欧美久久久| 最新久久zyz资源站| 日韩中文字幕麻豆| 成人深夜在线观看| 欧美日韩国产综合视频在线观看| 久久精品人人做人人爽97| 亚洲综合在线五月| 国产九色sp调教91| 精品视频在线免费看| 国产欧美日韩视频一区二区| 亚洲福利视频一区二区| 风间由美性色一区二区三区| 欧美色男人天堂| 国产精品视频一二三区| 日本欧美一区二区在线观看| 成人av资源站| 欧美成人女星排名| 一区二区三区高清| 国产成人精品www牛牛影视| 欧美精品在线一区二区三区| 国产精品嫩草99a| 免费在线欧美视频| 在线一区二区三区四区五区| 国产拍欧美日韩视频二区| 日韩在线一二三区| 91丨九色丨黑人外教| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美精品aⅴ在线视频| 欧美激情一区二区在线| 蜜桃视频第一区免费观看| 欧美亚洲尤物久久| 国产女同互慰高潮91漫画| 日本不卡不码高清免费观看| 色偷偷久久一区二区三区| 日本一区二区三级电影在线观看 | 欧美日韩成人激情| 国产精品久久久久久久久免费桃花 | 亚洲精品免费一二三区| 国产精品亚洲一区二区三区妖精|