⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asearch1.c

📁 harvest是一个下载html网页得机器人
💻 C
📖 第 1 页 / 共 2 页
字号:
					lasti = i-D_length; 					TRUNCATE = OFF;					for(k=D; k <= r4; k++) A[k] = B[k] = Init[0];					r1 = Init1 & A[D];					B[D] = (((A[D] >> 1) & CMask )  | r1) & D_Mask;					for(k = r3; k <= r4; k++)  /* r3 = D+1, r4 = 2*D */					{ 						r5 = A[k];						r1 = Init1 & r5;						B[k] = ((r5 >> 1) & CMask) | A[k-I] | (((B[k-DD] | A[k-S]) >>1) & r_NO_ERR) | r1 ; 					}					if (DELIMITER) CurrentByteOffset += 1*D_length;					else CurrentByteOffset += 1*1;				}  /* end if (B[D]&endpos) */			}			ResidueSize = Max_record + num_read - 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;			if(num_read < BlockSize) lasti = Max_record;		}		free_buf(Text, buffer);		return 0;#if	AGREP_POINTER	}	else {		lasti = 1;		/* if (DELIMITER) tempbuf = (CHAR*)malloc(D_length + 1); */		buffer = (CHAR *)agrep_inbuffer;		num_read = agrep_inlen;		end = num_read;		/* buffer[end-1] = '\n';*/ /* at end of the text. */		/* buffer[0] = '\n';*/  /* in front of the  text. */		i = 0;		if(DELIMITER) {			for(k=0; k<D_length; k++) {				if(old_D_pat[k] != buffer[k]) break;			}			if(k>=D_length) j--;			/*			memcpy(tempbuf, buffer+end, D_length+1);			strncpy(buffer+end, old_D_pat, D_length);			buffer[end+D_length] = '\0';			end = end + D_length;			*/		}			/* An exact copy of the above ASEARCH1_PROCESS: the while-loop below */			while (i < end)			{				CMask = Mask[buffer[i++]];				CurrentByteOffset ++;				r1 = Init1 & B[D];				A[D] = ((B[D] >> 1) & CMask )  | r1;				for(k = r3; k <= r4; k++)  /* r3 = D+1, r4 = 2*D */				{ 					r5 = B[k];					r1 = Init1 & r5;					A[k] = ((r5 >> 1) & CMask) | B[k-I] | (((A[k-DD] | B[k-S]) >>1) & r_NO_ERR) | r1 ; 				}				if(A[D] & endpos) {  					j++;					if (DELIMITER) CurrentByteOffset -= D_length;					else CurrentByteOffset -= 1;					if(((AND == 1) && ((A[D*2] & endposition) == endposition)) || ((AND == 0) && (A[D*2] & endposition)) ^ INVERSE )					{ 						if(FILENAMEONLY && (NEW_FILE || !POST_FILTER)) {							num_of_matched++;							if (agrep_finalfp != NULL)								fprintf(agrep_finalfp, "%s", 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>=agrep_outlen)) {									OUTPUT_OVERFLOW;									free_buf(Text, buffer);									return -1;								}								agrep_outpointer += outindex;							}							if (PRINTFILETIME) {								char *s = aprint_file_time(CurrentFileTime);								if (agrep_finalfp != NULL)									fprintf(agrep_finalfp, "%s", s);								else {									int outindex;									for(outindex=0; (outindex+agrep_outpointer<agrep_outlen) &&											(s[outindex] != '\0'); outindex++) {										agrep_outbuffer[agrep_outpointer+outindex] = s[outindex];									}									if ((s[outindex] != '\0') || (outindex+agrep_outpointer>=agrep_outlen)) {										OUTPUT_OVERFLOW;										free_buf(Text, buffer);										return -1;									}									agrep_outpointer += outindex;								}							}							if (agrep_finalfp != NULL)								fprintf(agrep_finalfp, "\n");							else {								if (agrep_outpointer+1>=agrep_outlen) {									OUTPUT_OVERFLOW;									free_buf(Text, buffer);									return -1;								}								else agrep_outbuffer[agrep_outpointer++] = '\n';							}							/*							if (Text == -1) {								memcpy(buffer+end-D_length, tempbuf, D_length+1);							}							*/							free_buf(Text, buffer);							NEW_FILE = OFF;							return 0;       						} 						if((Text != -1) && !(lasti >= Max_record + num_read - 1)) {							if (-1 == output(buffer, lasti, i-D_length-1, j)) {free_buf(Text, buffer); return -1;}						}						else if ((Text == -1) && !(lasti >= num_read)) {							if (-1 == output(buffer, lasti, i-D_length-1, 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 = D; k <= r4 ; k++) A[k] = B[k] = Init[0];					r1 = Init1 & B[D];					A[D] = (((B[D] >> 1) & CMask )  | r1) & D_Mask;					for(k = r3; k <= r4; k++)  /* r3 = D+1, r4 = 2*D */					{ 						r5 = B[k];						r1 = Init1 & r5;						A[k] = ((r5 >> 1) & CMask) | B[k-I] | (((A[k-DD] | B[k-S]) >>1) & r_NO_ERR) | r1 ; 					}					if (DELIMITER) CurrentByteOffset += 1*D_length;					else CurrentByteOffset += 1*1;				}  /* end if (A[D]&endpos) */				CMask = Mask[buffer[i++]];				CurrentByteOffset ++;				r1 = A[D] & Init1;				B[D] = ((A[D] >> 1) & CMask) | r1;				for(k = r3; k <= r4; k++)				{ 					r1 = A[k] & Init1;					B[k] = ((A[k] >> 1) & CMask) | A[k-I] | (((B[k-DD] | A[k-S]) >>1)&r_NO_ERR) | r1 ; 				}				if(B[D] & endpos)  {  					j++;					if (DELIMITER) CurrentByteOffset -= D_length;					else CurrentByteOffset -= 1;					if(((AND == 1) && ((B[r4] & endposition) == endposition)) || ((AND == 0) && (B[r4] & endposition)) ^ INVERSE )					{ 						if(FILENAMEONLY && (NEW_FILE || !POST_FILTER)) {							num_of_matched++;							if (agrep_finalfp != NULL)								fprintf(agrep_finalfp, "%s", 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>=agrep_outlen)) {									OUTPUT_OVERFLOW;									free_buf(Text, buffer);									return -1;								}								agrep_outpointer += outindex;							}							if (PRINTFILETIME) {								char *s = aprint_file_time(CurrentFileTime);								if (agrep_finalfp != NULL)									fprintf(agrep_finalfp, "%s", s);								else {									int outindex;									for(outindex=0; (outindex+agrep_outpointer<agrep_outlen) &&											(s[outindex] != '\0'); outindex++) {										agrep_outbuffer[agrep_outpointer+outindex] = s[outindex];									}									if ((s[outindex] != '\0') || (outindex+agrep_outpointer>=agrep_outlen)) {										OUTPUT_OVERFLOW;										free_buf(Text, buffer);										return -1;									}									agrep_outpointer += outindex;								}							}							if (agrep_finalfp != NULL)								fprintf(agrep_finalfp, "\n");							else {								if (agrep_outpointer+1>=agrep_outlen) {									OUTPUT_OVERFLOW;									free_buf(Text, buffer);									return -1;								}								else agrep_outbuffer[agrep_outpointer++] = '\n';							}							/*							if (Text == -1) {								memcpy(buffer+end-D_length, tempbuf, D_length+1);							}							*/							free_buf(Text, buffer);							NEW_FILE = OFF;							return 0;						}						if((Text != -1) && !(lasti >= Max_record + num_read - 1)) {							if (-1 == output(buffer, lasti, i-D_length-1, j)) {free_buf(Text, buffer); return -1;}						}						else if ((Text == -1) && !(lasti >= num_read)) {							if (-1 == output(buffer, lasti, i-D_length-1, 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=D; k <= r4; k++) A[k] = B[k] = Init[0];					r1 = Init1 & A[D];					B[D] = (((A[D] >> 1) & CMask )  | r1) & D_Mask;					for(k = r3; k <= r4; k++)  /* r3 = D+1, r4 = 2*D */					{ 						r5 = A[k];						r1 = Init1 & r5;						B[k] = ((r5 >> 1) & CMask) | A[k-I] | (((B[k-DD] | A[k-S]) >>1) & r_NO_ERR) | r1 ; 					}					if (DELIMITER) CurrentByteOffset += 1*D_length;					else CurrentByteOffset += 1*1;				}  /* end if (B[D]&endpos) */			}		/*		if (DELIMITER) {			memcpy(buffer+end, tempbuf, D_length+1);			free(tempbuf);		}		*/		return 0;	}#endif	/*AGREP_POINTER*/}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -