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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sgrep.c

?? agrep
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Copyright (c) 1991 Sun Wu and Udi Manber.  All Rights Reserved. */#include <stdio.h>#include <ctype.h>#define MAXSYM  256#define MAXMEMBER 8192#define	CHARTYPE	unsigned char#define MaxError 20#define MAXPATT 256#define MAXLINE 1024#define MaxCan  2048#define BLOCKSIZE    8192#define MAX_SHIFT_2  4096#define ON      1#define LOG_ASCII 8#define LOG_DNA  3#define MAXMEMBER_1 65536#define LONG_EXAC  20#define LONG_APPX  24#define W_DELIM    128extern COUNT, FNAME, SILENT, FILENAMEONLY, num_of_matched;extern DNA ;  /* DNA flag is set in checksg when pattern is DNA pattern and		 p_size > 16  */extern WORDBOUND, WHOLELINE, NOUPPER;extern unsigned char CurrentFileName[],  Progname[]; extern unsigned Mask[];extern unsigned endposition;unsigned char BSize;                /* log_c m   */unsigned char char_map[MAXSYM];	/* data area */int shift_1;CHARTYPE SHIFT[MAXSYM];CHARTYPE MEMBER[MAXMEMBER];CHARTYPE pat[MAXPATT];unsigned Hashmask;char MEMBER_1[MAXMEMBER_1];CHARTYPE TR[MAXSYM];char_tr(pat, m)	unsigned char *pat;	int *m;{int i;unsigned char temp[MAXPATT];	for(i=0; i<MAXSYM; i++) TR[i] = i;	if(NOUPPER) {		for(i='A'; i<= 'Z'; i++) TR[i] = i + 'a' - 'A';	}	if(WORDBOUND) { /* SUN: To be added to be more complete */		for(i=0; i<128; i++) {			if(!isalnum(i)) TR[i] = W_DELIM;		}	}	if(WHOLELINE) {		memcpy(temp, pat, *m);		pat[0] = '\n';		memcpy(pat+1, temp, *m);		pat[*m+1] = '\n';		pat[*m+2] = 0;		*m = *m + 2;	}}sgrep(pat, m, fd, D)CHARTYPE *pat;  int fd, m, D;{     CHARTYPE text[BLOCKSIZE+2*MAXLINE+MAXPATT]; /* input text stream */    int offset = 2*MAXLINE;    int buf_end, num_read, i, start, end, residue = 0;    if(pat[0] == '^' || pat[0] == '$') pat[0] = '\n';    if(pat[m-1] == '^' || pat[m-1] == '$') pat[m-1] = '\n';    char_tr(pat, &m);   /* will change pat, and m if WHOLELINE is ON */    text[offset-1] = '\n';  /* initial case */    for(i=0; i < MAXLINE; i++) text[i] = 0;   /* security zone */    start = offset;       if(WHOLELINE) start--;    if(m >= MAXPATT) {         fprintf(stderr, "%s: pattern too long\n", Progname);         exit(2);    }    if(D == 0) {	if(m > LONG_EXAC) m_preprocess(pat);	else prep_bm(pat, m);    }    else if (DNA) prep4(pat, m);	 else 	if(m >= LONG_APPX) am_preprocess(pat);		else {			prep(pat, m, D);			initmask(pat, Mask, m, 0, &endposition); 		}    for(i=1; i<=m; i++) text[BLOCKSIZE+offset+i] = pat[m-1];		/* to make sure the skip loop in bm() won't go out of bound */    while( (num_read = read(fd, text+offset, BLOCKSIZE)) > 0)     {       buf_end = end = offset + num_read -1 ;       while(text[end]  != '\n' && end > offset) end--;       residue = buf_end - end + 1 ;       text[start-1] = '\n';       if(D==0)  {		if(m > LONG_EXAC) monkey(pat, m, text+start, text+end);		else bm(pat, m, text+start, text+end);       }       else {		if(DNA) monkey4( pat, m, text+start, text+end, D  );		else {		  if(m >= LONG_APPX) a_monkey(pat, m, text+start, text+end, D);		  else       agrep(pat, m, text+start, text+end, D);		}       }       if(FILENAMEONLY && num_of_matched) {            printf("%s\n", CurrentFileName);            return; }       start = offset - residue ;       if(start < MAXLINE) {            start = MAXLINE;        }       strncpy(text+start, text+end, residue);       start++;    } /* end of while(num_read = ... */    return;} /* end sgrep *//* SUN: bm assumes that the content of text[n]...text[n+m-1] is pat[m-1] such that the skip loop is guaranteed to terminated */bm(pat, m, text, textend)	CHARTYPE *text, *textend, *pat;  int m;{register int shift;register int  m1, j, d1; /*printf("%d\t", textend - text);printf("%c, %c", *text, *textend);*/d1 = shift_1;    /* at least 1 */m1 = m - 1;shift = 0;       while (text <= textend) {	shift = SHIFT[*(text += shift)];	while(shift) {          		shift = SHIFT[*(text += shift)];		shift = SHIFT[*(text += shift)];		shift = SHIFT[*(text += shift)];	}		j = 0;		while(TR[pat[m1 - j]] == TR[*(text - j)]) {			if(++j == m)  break;       /* if statement can be						    saved, but for safty ... */		}	        if (j == m ) { 			if(text > textend) return;			if(WORDBOUND) {				if(TR[*(text+1)] != W_DELIM) goto CONT;				if(TR[*(text-m)] != W_DELIM) goto CONT;			}			num_of_matched++;			if(FILENAMEONLY) return;			if(!(COUNT)) {				if(FNAME) printf("%s: ", CurrentFileName);				while(*(--text) != '\n');				while(*(++text) != '\n') putchar(*(text));				putchar(*text);			}			else { while(*text != '\n') text++; } CONT:			shift = 1;                }		else shift = d1;  }return;}  /* initmask() initializes the mask table for the pattern                    */ /* endposition is a mask for the endposition of the pattern                 *//* endposition will contain k mask bits if the pattern contains k fragments */initmask(pattern, Mask, m, D, endposition)CHARTYPE *pattern; unsigned *Mask; register int m, D; unsigned *endposition;{  register unsigned Bit1, c;  register int i, j, frag_num;  Bit1 = 1 << 31;    /* the first bit of Bit1 is 1, others 0.  */  frag_num = D+1; *endposition = 0;  for (i = 0; i < frag_num; i++) *endposition = *endposition | (Bit1 >> i);  *endposition = *endposition >> (m - frag_num);  for(i = 0; i < m; i++)           if (pattern[i] == '^' || pattern[i] == '$') {              pattern[i] = '\n';           }  for(i = 0; i < MAXSYM; i++) Mask[i] = ~0;  for(i = 0; i < m; i++)     /* initialize the mask table */  {  c = pattern[i];     for ( j = 0; j < m; j++)           if( c == pattern[j] )               Mask[c] = Mask[c] & ~( Bit1 >> j ) ;  }}prep(Pattern, M, D)             /* preprocessing for partitioning_bm */	CHARTYPE *Pattern;  /* can be fine-tuned to choose a better partition */	register int M, D;{register int i, j, k, p, shift;register unsigned m;unsigned hash, b_size = 3;	m = M/(D+1);	p = M - m*(D+1);	for (i = 0; i < MAXSYM; i++) SHIFT[i] = m;	for (i = M-1; i>=p ; i--) {		shift = (M-1-i)%m;		hash = Pattern[i];		if(SHIFT[hash] > shift) SHIFT[hash] = shift;	}#ifdef DEBUG	for(i=0; i<M; i++) printf(" %d,", SHIFT[Pattern[i]]);	printf("\n");#endif	shift_1 = m;	for(i=0; i<D+1; i++) {		j = M-1 - m*i;		for(k=1; k<m; k++) {			for(p=0; p<D+1; p++) 				if(Pattern[j-k] == Pattern[M-1-m*p]) 					if(k < shift_1) shift_1 = k;		}	}#ifdef DEBUG	printf("\nshift_1 = %d", shift_1);#endif	if(shift_1 == 0) shift_1 = 1;	for(i=0; i<MAXMEMBER; i++) MEMBER[i] = 0;	if (m < 3) b_size = m;	for(i=0; i<D+1; i++) {		j = M-1 - m*i;		hash = 0;		for(k=0; k<b_size; k++) {			hash = (hash << 2) + Pattern[j-k];		}#ifdef DEBUG	printf(" hash = %d,", hash);#endif		MEMBER[hash] = 1;	}}agrep( pat, M, text, textend, D ) int M, D ; register CHARTYPE *text, *textend, *pat;{  register int i;  register int m = M/(D+1);  register CHARTYPE *textstart;  register int shift, HASH;  int  j=0, k, m1, d1;  int  n, cdx;  int  Candidate[MaxCan][2], round, lastend=0;  unsigned R1[MaxError+1], R2[MaxError+1];   register unsigned int r1, endpos, c;   unsigned currentpos;  unsigned Bit1;  unsigned r_newline;  Candidate[0][0] = Candidate[0][1] = 0;   d1 = shift_1;  cdx = 0;  if(m < 3) r1 = m;  else r1 = 3;  textstart = text;  shift = m-1;  while (text < textend) {	shift = SHIFT[*(text += shift)];	while(shift) {		shift = SHIFT[*(text += shift)];		shift = SHIFT[*(text += shift)];	}		j = 1; HASH = *text;		while(j < r1) { HASH = (HASH << 2) + *(text-j);				j++; }	        if (MEMBER[HASH]) { 			i = text - textstart;                     	if((i - M - D - 10) > Candidate[cdx][1]) { 					Candidate[++cdx][0] = i-M-D-2;                          	Candidate[cdx][1] = i+M+D; }                     	else Candidate[cdx][1] = i+M+D;			shift = d1;                }		else shift = d1;  }  text = textstart;  n = textend - textstart;  r_newline = '\n';  /* for those candidate areas, find the D-error matches                     */  if(Candidate[1][0] < 0) Candidate[1][0] = 0;  endpos = endposition;                /* the mask table and the endposition */  Bit1 = (1 << 31);  for(round = 0; round <= cdx; round++)  {  i = Candidate[round][0] ;      if(Candidate[round][1] > n) Candidate[round][1] = n;     if(i < 0) i = 0;#ifdef DEBUG     printf("round: %d, start=%d, end=%d, ", round, i, Candidate[round][1]);#endif     R1[0] = R2[0] = ~0;     R1[1] = R2[1] = ~Bit1;     for(k = 1; k <= D; k++) R1[k] = R2[k] = (R1[k-1] >> 1) & R1[k-1];     while (i < Candidate[round][1])                          {  	    c = text[i++];            if(c == r_newline) {               for(k = 0 ; k <= D; k++) R1[k] = R2[k] = (~0 );            }            r1 = Mask[c];            R1[0] = (R2[0] >> 1) | r1;            for(k=1; k<=D; k++)                R1[k] = ((R2[k] >> 1) | r1) & R2[k-1] & ((R1[k-1] & R2[k-1]) >> 1);            if((R1[D] & endpos) == 0) {                                     num_of_matched++;                                    if(FILENAMEONLY) { return; }                                    currentpos = i;                                    if(i <= lastend) i = lastend;                                    else {                                       s_output(text, &currentpos);                                        i = currentpos;                                     }                                    lastend = i;                                    for(k=0; k<=D; k++) R1[k] = R2[k] = ~0;                                  }            c = text[i++];            if(c == r_newline) {                for(k = 0 ; k <= D; k++) R1[k] = R2[k] = (~0 );            }            r1 = Mask[c];            R2[0] = (R1[0] >> 1) | r1;            for(k = 1; k <= D; k++)                R2[k] = ((R1[k] >> 1) | r1) & R1[k-1] & ((R1[k-1] & R2[k-1]) >> 1);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩激情在线| 精品对白一区国产伦| 亚洲色图.com| 国产91露脸合集magnet| 国产拍欧美日韩视频二区| 欧美日韩三级一区二区| 久久久久久久久久久久久久久99| 日韩激情av在线| 精品国产免费人成在线观看| 亚洲1区2区3区4区| 91久久国产最好的精华液| 一区二区三区四区不卡在线| 国产不卡视频在线播放| 久久久久久久久岛国免费| 亚洲一区二区高清| 欧美精三区欧美精三区| 日本成人在线视频网站| 亚洲精品一区二区三区在线观看| 国产福利精品导航| 亚洲综合一二区| 久久久精品国产免费观看同学| 成人av动漫在线| 亚洲黄色在线视频| 日韩欧美在线影院| 国产成人精品www牛牛影视| 一区二区三区在线观看欧美| 欧美亚洲动漫另类| 成人性生交大片免费看中文网站 | 99精品视频一区二区三区| 亚洲v日本v欧美v久久精品| 久久久久久久久蜜桃| 欧美唯美清纯偷拍| av在线一区二区| 不卡高清视频专区| 亚洲gay无套男同| 亚洲一区欧美一区| 精品国产乱码久久久久久久久 | 色婷婷狠狠综合| 亚洲一区二区av电影| 中文字幕一区二区视频| 国产亚洲精品精华液| 91麻豆精品国产自产在线观看一区| 99久久精品国产精品久久| 欧美96一区二区免费视频| 亚洲精品免费视频| 亚洲伦理在线精品| 亚洲国产精品尤物yw在线观看| 国产欧美一区二区精品性色超碰 | 成人av影院在线| 秋霞国产午夜精品免费视频| 亚洲国产精品久久不卡毛片 | 亚洲伦在线观看| 中文字幕在线不卡| 亚洲激情五月婷婷| 三级成人在线视频| 久久成人综合网| 成人午夜av在线| 色妞www精品视频| 欧美一级淫片007| 中文字幕亚洲一区二区av在线| 亚洲日本欧美天堂| 日日夜夜精品免费视频| 精品中文字幕一区二区 | 99精品欧美一区| 欧美精品成人一区二区三区四区| 欧美二区三区的天堂| 成人欧美一区二区三区黑人麻豆 | 一区二区三区欧美视频| 亚洲综合av网| 国产成人免费高清| 日韩一级大片在线观看| 一本大道av伊人久久综合| 精品亚洲国内自在自线福利| 99久久婷婷国产精品综合| 欧美日韩中文字幕一区| 2020国产精品久久精品美国| 亚洲国产va精品久久久不卡综合| 成人污污视频在线观看| 欧美一区二区三区不卡| 亚洲黄色免费网站| 一本大道久久a久久精二百| 久久久99久久精品欧美| 偷偷要91色婷婷| 欧美夫妻性生活| 亚洲国产一区二区a毛片| 色琪琪一区二区三区亚洲区| 久久毛片高清国产| 国产一区亚洲一区| 欧美一级欧美三级| 不卡一区二区在线| 亚洲国产高清在线| 91蜜桃在线免费视频| 亚洲视频在线观看一区| 99视频在线观看一区三区| 中文字幕亚洲视频| 欧美日韩专区在线| 麻豆精品新av中文字幕| 久久久99久久精品欧美| 欧美在线观看一区| 毛片不卡一区二区| 亚洲视频在线一区观看| 91麻豆精品国产91久久久使用方法| 亚瑟在线精品视频| 中文字幕一区二区三区不卡 | 亚洲欧洲综合另类| 日韩精品一区二区在线| 91久久精品日日躁夜夜躁欧美| 乱一区二区av| 亚洲成人免费在线观看| 欧美精品一区二区蜜臀亚洲| 91国产丝袜在线播放| 黑人精品欧美一区二区蜜桃| 欧美成人三级电影在线| 国产一区二区女| 一区二区三区四区高清精品免费观看| 欧美一级一区二区| 欧美色精品在线视频| 菠萝蜜视频在线观看一区| 爽爽淫人综合网网站| 一区二区在线观看视频 | 久久久午夜精品理论片中文字幕| 欧美在线播放高清精品| 99精品热视频| 成人在线视频一区| 国产成人免费在线| 国产自产2019最新不卡| 国模娜娜一区二区三区| 风间由美一区二区三区在线观看 | 一区二区三区欧美久久| 国产精品久久久久四虎| 久久久精品tv| 2022国产精品视频| 久久精品一二三| 亚洲精品福利视频网站| 亚洲成人久久影院| 久久精品国产成人一区二区三区| 日韩成人免费电影| 丁香一区二区三区| 欧美四级电影网| 7777精品伊人久久久大香线蕉的 | 中文字幕一区二区5566日韩| 亚洲国产精品黑人久久久| 一区二区三区四区不卡在线 | 精品国产sm最大网站免费看| 日韩欧美一二三| 欧美日韩精品一区视频| 日韩女优电影在线观看| 精品国产乱码久久久久久免费| 精品国产一区二区三区不卡 | 亚洲女子a中天字幕| 伊人婷婷欧美激情| 青青青爽久久午夜综合久久午夜| 精品综合免费视频观看| 色综合亚洲欧洲| 久久精品视频免费| 蜜桃av一区二区三区电影| 99精品久久只有精品| 久久麻豆一区二区| 免费一级欧美片在线观看| 成人激情综合网站| 久久久精品国产99久久精品芒果| 一区二区三区在线观看动漫| 99这里只有精品| 日韩毛片视频在线看| 国产成人亚洲精品狼色在线| 精品国产一区二区三区忘忧草 | 卡一卡二国产精品 | 美女视频黄免费的久久 | 国产精品久久精品日日| 国产成人综合亚洲91猫咪| 欧美日韩综合在线免费观看| 亚洲自拍与偷拍| 日韩午夜精品视频| 美女www一区二区| 欧美大片一区二区| 懂色av中文字幕一区二区三区| 欧美福利视频一区| 国产乱码字幕精品高清av| 国产精品久久一卡二卡| 一本一道久久a久久精品综合蜜臀| 国产精品无遮挡| 欧美日韩精品系列| 精品99999| 国产在线精品一区二区| 亚洲欧美色图小说| 日韩一区二区不卡| 国产成人av电影免费在线观看| 一区二区在线观看av| 欧美日韩国产成人在线91 | 精品在线视频一区| 国产精品第四页| 久久久99久久精品欧美| 色狠狠av一区二区三区| 老司机精品视频线观看86| 亚洲另类春色国产| 久久久久亚洲综合| 欧美日韩亚洲不卡| 日本韩国一区二区三区| 国产精品白丝av| 韩国午夜理伦三级不卡影院|