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

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

?? asearch.c

?? Mehldau和Myer的Agrep3版本
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* Copyright (c) 1994 Sun Wu, Udi Manber, Burra Gopal.  All Rights Reserved. */
#include "agrep.h"

extern unsigned Init1, Init[], Mask[], endposition, D_endpos, AND, NO_ERR_MASK;
extern int DELIMITER, FILENAMEONLY, INVERSE;
extern CHAR CurrentFileName[];
extern int I, num_of_matched, prev_num_of_matched, TRUNCATE;

extern int CurrentByteOffset;
#ifndef __BORLANDC__
extern int errno;
#endif
extern CHAR *agrep_inbuffer;
extern int  agrep_inlen;
extern int  agrep_initialfd;
extern int  EXITONERROR;
extern int  agrep_inpointer;

extern FILE *agrep_finalfp;
extern CHAR *agrep_outbuffer;
extern int agrep_outlen;
extern int agrep_outpointer;

extern int NEW_FILE, POST_FILTER;

extern int LIMITOUTPUT, LIMITPERFILE;

#ifdef _WIN32
int  output();            /* agrep.c */
int  asearch0();          /* asearch.c */
int  fill_buf();          /* bitap.c */
#endif

int
asearch(old_D_pat, text, D)
CHAR old_D_pat[]; 
int text; 
register unsigned D;
{
	register unsigned i, c, r1, r2, CMask, r_NO_ERR, r_Init1; 
	register unsigned A0, B0, A1, B1, endpos;
	unsigned A2, B2, A3, B3, A4, B4;
	unsigned A[MaxError+1], B[MaxError+1];
	unsigned D_Mask;
	int end;
	int D_length, FIRSTROUND, ResidueSize, lasti, l, k, j=0;
	int printout_end;
	CHAR *buffer;
	/* CHAR *tempbuf = NULL; */	/* used only when text == -1 */

	if (I == 0) Init1 = (unsigned)037777777777;
	if(D > 4) {
		return asearch0(old_D_pat, text, D); 
	}

	D_length = strlen(old_D_pat);
	D_Mask = D_endpos;
	for ( i=1; i<D_length; i++) D_Mask = (D_Mask<<1) | D_Mask;
	D_Mask = ~D_Mask;

	r_Init1 = Init1; /* put Init1 in register */
	r_NO_ERR = NO_ERR_MASK; /* put NO_ERR_MASK in register */
	endpos = D_endpos;    
	FIRSTROUND = ON;
	A0 = B0 = A1 = B1 = A2 = B2 = A3 = B3 = A4 = B4 = Init[0];
	for(k=0; k<=D; k++) A[k] = B[k] = Init[0];

#if	AGREP_POINTER
	if (text != -1) {
#endif	/*AGREP_POINTER*/
		lasti = Max_record;
		alloc_buf(text, &buffer, Max_record+BlockSize+1);
		buffer[Max_record-1] = '\n';

		while ((l = fill_buf(text, buffer + Max_record, BlockSize)) > 0)
		{
			i = Max_record;
			end = Max_record + l ;
			if (FIRSTROUND) { 
				i = Max_record - 1;
				if(DELIMITER) {
					for(k=0; k<D_length; k++) {
						if(old_D_pat[k] != buffer[Max_record+k]) break;
					}
					if(k>=D_length) j--;
				}
				FIRSTROUND = OFF; 
			}
			if (l < BlockSize) {	/* copy pattern and '\0' at end of buffer */
				strncpy(buffer+end, old_D_pat, D_length);
				buffer[end+D_length] = '\0';
				end = end + D_length; 
			}

			/* ASEARCH_PROCESS: the while-loop below */
			while (i < end )
			{
				c = buffer[i];
				CMask = Mask[c];
				r1 = r_Init1 & B0;
				A0 = ((B0 >>1 ) & CMask) | r1;
				r1 = r_Init1 & B1;
				r2 =  B0 | (((A0 | B0) >> 1) & r_NO_ERR); 
				A1 = ((B1 >>1 ) & CMask) | r2 | r1 ;  
				if(D == 1) goto Nextcharfile;
				r1 = r_Init1 & B2;
				r2 =  B1 | (((A1 | B1) >> 1) & r_NO_ERR); 
				A2 = ((B2 >>1 ) & CMask) | r2 | r1 ;  
				if(D == 2) goto Nextcharfile;
				r1 = r_Init1 & B3;
				r2 =  B2 | (((A2 | B2) >> 1) & r_NO_ERR); 
				A3 = ((B3 >>1 ) & CMask) | r2 | r1 ;  
				if(D == 3) goto Nextcharfile;
				r1 = r_Init1 & B4;
				r2 =  B3 | (((A3 | B3) >> 1) & r_NO_ERR); 
				A4 = ((B4 >>1 ) & CMask) | r2 | r1 ;  
				if(D == 4) goto Nextcharfile;
Nextcharfile:
				i=i+1;
				CurrentByteOffset ++;
				if(A0 & endpos) {
					j++;  
					if (DELIMITER) CurrentByteOffset -= D_length;
					else CurrentByteOffset -= 1;
					r1 = A0;
					if ( D == 1) r1 = A1;
					if ( D == 2) r1 = A2;
					if ( D == 3) r1 = A3;
					if ( D == 4) r1 = A4;
					if(((AND == 1) && ((r1 & endposition) == endposition)) || ((AND == 0) && (r1 & endposition)) ^ INVERSE )
					{    
						if(FILENAMEONLY && (NEW_FILE || !POST_FILTER)) {
							num_of_matched++;
							if (agrep_finalfp != NULL) 
								fprintf(agrep_finalfp, "%s\n", CurrentFileName);
							else {
								int outindex;
								for(outindex=0; (outindex+agrep_outpointer<agrep_outlen) && 
										(CurrentFileName[outindex] != '\0'); outindex++) {
									agrep_outbuffer[agrep_outpointer+outindex] = CurrentFileName[outindex];
								}
								if ((CurrentFileName[outindex] != '\0') || (outindex+agrep_outpointer+1>=agrep_outlen)) {
									OUTPUT_OVERFLOW;
									/*
									if (text == -1) {
										memcpy(buffer+end-D_length, tempbuf, D_length+1);
									}
									*/
									free_buf(text, buffer);
									return -1;
								}
								else agrep_outbuffer[agrep_outpointer+outindex++] = '\n';
								agrep_outpointer += outindex;
							}
							/*
							if (text == -1) {
								memcpy(buffer+end-D_length, tempbuf, D_length+1);
							}
							*/
							free_buf(text, buffer);
							NEW_FILE = OFF;
							return 0;  
						}
						printout_end = i - D_length - 1 ; 
						if ((text != -1) && !(lasti >= Max_record + l - 1)) {
							if (-1 == output(buffer, lasti, printout_end, j)) {free_buf(text, buffer); return -1;}
						}
						else if ((text == -1) && !(lasti >= l)) {
							if (-1 == output(buffer, lasti, printout_end, j)) {free_buf(text, buffer); return -1;}
						}
						if (((LIMITOUTPUT > 0) && (LIMITOUTPUT <= num_of_matched)) ||
						    ((LIMITPERFILE > 0) && (LIMITPERFILE <= num_of_matched - prev_num_of_matched))) {
							free_buf(text, buffer);
							return 0;	/* done */
						}
					}
					lasti = i - D_length; /* point to starting position of D_pat */
					TRUNCATE = OFF;
					for(k=0; k<= D; k++) {
						B[k] = Init[0];
					}
					r1 = B[0] & Init1;
					A[0] = (((B[0]>>1) & CMask) | r1) & D_Mask;
					for(k=1; k<= D; k++) {
						r1 = Init1 & B[k];
						r2 = B[k-1] | (((A[k-1] | B[k-1])>>1)&r_NO_ERR);
						A[k] = (((B[k]>>1)&CMask) | r1 | r2) ;
					}
					A0 = A[0]; 
					B0 = B[0]; 
					A1 = A[1]; 
					B1 = B[1]; 
					A2 = A[2]; 
					B2 = B[2];
					A3 = A[3]; 
					B3 = B[3]; 
					A4 = A[4]; 
					B4 = B[4];
					if (DELIMITER) CurrentByteOffset += 1*D_length;
					else CurrentByteOffset += 1*1;
				}
				c = buffer[i];
				CMask = Mask[c];
				r1 = r_Init1 & A0;
				B0 = ((A0 >> 1 ) & CMask) | r1;
				/* printf("Mask = %o, B0 = %on", CMask, B0); */
				r1 = r_Init1 & A1;
				r2 =  A0 | (((A0 | B0) >> 1) & r_NO_ERR); 
				B1 = ((A1 >>1 ) & CMask) | r2 | r1 ;  
				if(D == 1) goto Nextchar1file;
				r1 = r_Init1 & A2;
				r2 =  A1 | (((A1 | B1) >> 1) & r_NO_ERR); 
				B2 = ((A2 >>1 ) & CMask) | r2 | r1 ;  
				if(D == 2) goto Nextchar1file;
				r1 = r_Init1 & A3;
				r2 =  A2 | (((A2 | B2) >> 1) & r_NO_ERR); 
				B3 = ((A3 >>1 ) & CMask) | r2 | r1 ;  
				if(D == 3) goto Nextchar1file;
				r1 = r_Init1 & A4;
				r2 =  A3 | (((A3 | B3) >> 1) & r_NO_ERR); 
				B4 = ((A4 >>1 ) & CMask) | r2 | r1 ;  
				if(D == 4) goto Nextchar1file;
Nextchar1file:
				i=i+1;
				CurrentByteOffset ++;
				if(B0 & endpos) {
					j++;  
					if (DELIMITER) CurrentByteOffset -= D_length;
					else CurrentByteOffset -= 1;
					r1 = B0;
					if ( D == 1) r1 = B1;
					if ( D == 2) r1 = B2;
					if ( D == 3) r1 = B3;
					if ( D == 4) r1 = B4;
					if(((AND == 1) && ((r1 & endposition) == endposition)) || ((AND == 0) && (r1 & endposition)) ^ INVERSE )
					{ 
						if(FILENAMEONLY && (NEW_FILE || !POST_FILTER)) {
							num_of_matched++;
							free_buf(text, buffer);
							if (agrep_finalfp != NULL) 
								fprintf(agrep_finalfp, "%s\n", CurrentFileName);
							else {
								int outindex;
								for(outindex=0; (outindex+agrep_outpointer<agrep_outlen) && 
										(CurrentFileName[outindex] != '\0'); outindex++) {
									agrep_outbuffer[agrep_outpointer+outindex] = CurrentFileName[outindex];
								}
								if ((CurrentFileName[outindex] != '\0') || (outindex+agrep_outpointer+1>=agrep_outlen)) {
									OUTPUT_OVERFLOW;
									/*
									if (text == -1) {
										memcpy(buffer+end-D_length, tempbuf, D_length+1);
									}
									*/
									free_buf(text, buffer);
									return -1;
								}
								else agrep_outbuffer[agrep_outpointer+outindex++] = '\n';
								agrep_outpointer += outindex;
							}
							/*
							if (text == -1) {
								memcpy(buffer+end-D_length, tempbuf, D_length+1);
							}
							*/
							free_buf(text, buffer);
							NEW_FILE = OFF;
							return 0; 
						}
						printout_end = i - D_length - 1 ; 
						if((text != -1) && !(lasti >= Max_record + l - 1)) {
							if (-1 == output(buffer, lasti, printout_end, j)) {free_buf(text, buffer); return -1;}
						}
						else if ((text == -1) && !(lasti >= l)) {
							if (-1 == output(buffer, lasti, printout_end, j)) {free_buf(text, buffer); return -1;}
						}
						if (((LIMITOUTPUT > 0) && (LIMITOUTPUT <= num_of_matched)) ||
						    ((LIMITPERFILE > 0) && (LIMITPERFILE <= num_of_matched - prev_num_of_matched))) {
							free_buf(text, buffer);
							return 0;	/* done */
						}
					}
					lasti = i - D_length ;
					TRUNCATE = OFF;
					for(k=0; k<= D; k++) {
						A[k] = Init[0];
					}
					r1 = A[0] & Init1; 
					B[0] = (((A[0]>>1)&CMask) | r1) & D_Mask;
					for(k=1; k<= D; k++) {
						r1 = Init1 & A[k];
						r2 = A[k-1] | (((A[k-1] | B[k-1])>>1)&r_NO_ERR);
						B[k] = (((A[k]>>1)&CMask) | r1 | r2) ;
					}
					A0 = A[0]; 
					B0 = B[0]; 
					A1 = A[1]; 
					B1 = B[1]; 
					A2 = A[2]; 
					B2 = B[2];
					A3 = A[3]; 
					B3 = B[3]; 
					A4 = A[4]; 
					B4 = B[4];
					if (DELIMITER) CurrentByteOffset += 1*D_length;
					else CurrentByteOffset += 1*1;
				}
			}

			if(l < BlockSize) {
				lasti = Max_record ;
			}
			else {
				ResidueSize = Max_record + l - lasti;
				if(ResidueSize > Max_record) {
					ResidueSize = Max_record;
					TRUNCATE = ON;         
				}
				strncpy(buffer+Max_record-ResidueSize, buffer+lasti, ResidueSize);
				lasti = Max_record - ResidueSize;
				if(lasti == 0)     lasti = 1; 
			}
		}
		free_buf(text, buffer);
		return 0;
#if	AGREP_POINTER
	}
	else {
		lasti = 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜精品一区二区三区| 亚洲国产精华液网站w| 日本女人一区二区三区| 久久综合一区二区| 欧美综合天天夜夜久久| 久久97超碰国产精品超碰| 一区二区三区在线播放| 久久人人超碰精品| 在线播放中文一区| 97久久超碰精品国产| 经典三级视频一区| 亚洲v日本v欧美v久久精品| 国产日产欧产精品推荐色| 欧美巨大另类极品videosbest| a在线播放不卡| 韩日精品视频一区| 老汉av免费一区二区三区| 亚洲尤物视频在线| 国产精品日韩精品欧美在线| 欧美sm美女调教| 欧美一区二区精品| 欧美一级午夜免费电影| 国产超碰在线一区| 婷婷久久综合九色综合伊人色| 亚洲天堂久久久久久久| 久久久久久久久一| 国产三级久久久| 国产日韩精品一区| 国产精品天干天干在线综合| 久久精品一区二区三区不卡 | 国产一区二区伦理片| 日韩精品高清不卡| 日韩成人dvd| 天天爽夜夜爽夜夜爽精品视频| 精品一区二区精品| 欧美日韩精品一区二区三区四区| 欧美一区二区人人喊爽| 综合分类小说区另类春色亚洲小说欧美| 亚洲综合久久av| 国产一区二区三区四区五区美女 | 亚洲v精品v日韩v欧美v专区| 日韩二区三区在线观看| 国产精品综合在线视频| 欧美绝品在线观看成人午夜影视| 国产欧美中文在线| 免费在线观看视频一区| 日本精品免费观看高清观看| 久久亚区不卡日本| 午夜激情一区二区三区| 成人精品鲁一区一区二区| 91在线云播放| 日韩久久久精品| 久久精品夜色噜噜亚洲a∨| 亚洲精品国产精华液| 国产精品一二二区| 精品欧美一区二区久久| 日日摸夜夜添夜夜添亚洲女人| 国产一区二区三区免费看| 日本高清不卡在线观看| 久久久久国色av免费看影院| 日韩黄色免费网站| 日本道色综合久久| 综合久久久久久| 成人午夜短视频| 日本一区二区三区dvd视频在线| 日本成人在线电影网| 欧美一区二区三区男人的天堂| 亚洲精品国产一区二区三区四区在线| 国产一区二区三区国产| 精品成人a区在线观看| 美女网站一区二区| 日韩欧美一级精品久久| 麻豆精品在线播放| 日韩欧美123| 韩国理伦片一区二区三区在线播放 | 国产精品久久久久久久裸模| 成人深夜视频在线观看| 国产精品福利影院| 91麻豆免费在线观看| 亚洲视频免费看| 在线欧美小视频| 亚洲一级片在线观看| 色猫猫国产区一区二在线视频| 亚洲欧美日韩电影| 成人av资源站| 午夜欧美电影在线观看| 精品国产一二三区| 日本在线观看不卡视频| 色综合天天综合狠狠| 欧美精品一区二区高清在线观看 | 欧美亚一区二区| 日韩成人一级大片| 国产精品久久三区| 国产日韩精品视频一区| 麻豆成人91精品二区三区| 五月天网站亚洲| 亚洲免费观看在线观看| 欧美激情在线免费观看| 2017欧美狠狠色| 欧美成人精品1314www| 日韩精品中午字幕| 欧美激情在线观看视频免费| 国产精品麻豆视频| 亚洲最新在线观看| 午夜精品久久久久久久久| 日韩福利电影在线| 国产精品一区二区无线| 成人a区在线观看| 欧美日韩高清不卡| 在线亚洲欧美专区二区| a亚洲天堂av| 国产电影精品久久禁18| 日韩va欧美va亚洲va久久| 亚洲欧洲精品一区二区三区 | 精品电影一区二区三区| 91同城在线观看| 国产在线视频不卡二| 亚洲成人av免费| 亚洲精品伦理在线| 伊人一区二区三区| 一区二区三区资源| 国产精品天干天干在线综合| 欧美日韩一区成人| 国产夫妻精品视频| 狠狠网亚洲精品| 国产精品系列在线观看| 精彩视频一区二区| 欧美午夜不卡在线观看免费| 久久精品视频一区二区三区| 69堂成人精品免费视频| 成人av先锋影音| 久久99精品久久久久婷婷| 精品一区二区三区免费| 一本久久综合亚洲鲁鲁五月天| 色综合色综合色综合| 国产91色综合久久免费分享| 亚洲综合一二区| 亚洲美女屁股眼交| 国产三级一区二区| 欧美成人video| 欧美激情在线看| 精品国产青草久久久久福利| 91一区二区三区在线观看| 久久av中文字幕片| 美女在线视频一区| 免费人成在线不卡| 国产成人超碰人人澡人人澡| 色哦色哦哦色天天综合| 欧美男同性恋视频网站| 欧美经典三级视频一区二区三区| 成人免费小视频| 亚洲成人久久影院| 免费视频最近日韩| 国产精品1024久久| 国产经典欧美精品| 久久99国产精品免费网站| 久久国产乱子精品免费女| 久久久精品影视| 国产精品久久久久久久久动漫| 亚洲欧美一区二区不卡| 国产综合色产在线精品| 一本色道**综合亚洲精品蜜桃冫| 欧美精品一区在线观看| 亚洲免费视频成人| 国产成人夜色高潮福利影视| 欧美三级视频在线播放| 国产日韩欧美麻豆| 五月激情丁香一区二区三区| 色综合视频一区二区三区高清| 欧美一级黄色片| 午夜亚洲国产au精品一区二区| 99久久99久久精品免费看蜜桃| 久久夜色精品国产欧美乱极品| 偷拍日韩校园综合在线| 色噜噜狠狠成人中文综合| 中文成人av在线| 国产ts人妖一区二区| 亚洲精品一区二区三区精华液| 午夜电影网一区| 欧美亚洲国产怡红院影院| 一区二区三区四区蜜桃| 色综合色综合色综合| 亚洲欧洲精品天堂一级| 99r国产精品| 亚洲色图一区二区| 色综合久久久久综合99| 亚洲女同一区二区| 欧美综合在线视频| 日韩专区中文字幕一区二区| 欧美日韩精品一区二区在线播放| 性做久久久久久免费观看| 7777精品伊人久久久大香线蕉的| 丝袜亚洲另类欧美| 日韩欧美电影一区| 大桥未久av一区二区三区中文| 国产精品成人免费精品自在线观看| 91美女片黄在线观看91美女| 亚洲第一激情av| 精品久久久久久无| 99精品热视频|