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

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

?? io.c

?? harvest是一個下載html網(wǎng)頁得機器人
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* Copyright (c) 1994 Sun Wu, Udi Manber, Burra Gopal.  All Rights Reserved. *//* ./glimpse/index/io.c */#include "glimpse.h"#include <stdio.h>#include <sys/stat.h>#include <errno.h>extern char INDEX_DIR[MAX_LINE_LEN];extern int memory_usage;#include "utils.c"int	REAL_INDEX_BUF = DEF_REAL_INDEX_BUF,	MAX_ALL_INDEX = DEF_MAX_ALL_INDEX,	FILEMASK_SIZE = DEF_FILEMASK_SIZE,	REAL_PARTITION = DEF_REAL_PARTITION;/* Escapes single quotes in "original" string with backquote (\) s.t. it can be passed on to the shell as a file name: returns its second argument for printf *//* Called before passing any argument to the system() routine in glimpse or glimspeindex source code *//* Works only if the new name is going to be passed as argument to the shell within two ''s */char *escapesinglequote(original, new)	char	*original, *new;{	char	*oldnew = new;	while (*original != '\0') {		if (*original == '\'') {			*new ++ = '\'';	/* close existing ' : this guy will be a part of a file name starting from a ' */			*new ++ = '\\';	/* add escape character */			*new ++ = '\'';	/* add single quote from original here */		}		*new ++ = *original ++; /* start the real single quote to continute existing file name if *original was ' */	}	*new = *original;	return oldnew;}/* --------------------------------------------------------------------get_array_of_lines()input: an input filename, address of the table, maximum number of entriesof the table, and a overflow handling flag.output: a set of strings in the table.when overflow is ON, the function returns after the table is filled.otherwise the function will exit if overflow occurs.In normal return, the function returns the number of entries read.----------------------------------------------------------------------*/get_array_of_lines(inputfile, table, max_entry, overflow_ok)char *inputfile;char **table[];int  max_entry;  /* max number of entries in the table */int  overflow_ok;   /* flag for handling overflow */{	int  tx=0;    /* index for table */	FILE *file_in;	unsigned char buffer[MAX_NAME_BUF];	char *np; 		int  line_length;	int  num_lines;	if((file_in = fopen(inputfile, "r")) == NULL) {		if (overflow_ok) return 0;		fprintf(stderr, "can't open for reading: %s\n", inputfile);		exit(2);	}	fgets(buffer, MAX_NAME_BUF, file_in);	sscanf(buffer, "%d", &num_lines);	if ((num_lines < 0) || (num_lines > MaxNum24bPartition)) {		fclose(file_in);		if (overflow_ok) return 0;		fprintf(stderr, "Error in reading: %s\n", inputfile);		exit(2);	}	while(fgets(buffer, MAX_NAME_BUF, file_in)) {		line_length = strlen(buffer);		if (line_length == 1) continue;		buffer[line_length-1] = '\0';  /* discard the '\n' */#if	BG_DEBUG		np = (char *) my_malloc(sizeof(char) * (line_length + 2));#else	/*BG_DEBUG*/		np = (char *) my_malloc(sizeof(char) * (line_length + 2));#endif	/*BG_DEBUG*/		if(np == NULL) {		    int	i=0;		    fclose(file_in);		    for (i=0; i<tx; i++) {#if	BG_DEBUG			memory_usage -= (strlen(LIST_GET(table, i)) + 2);#endif	/*BG_DEBUG*/			if (LIST_GET(table, i) != NULL) {				my_free(LIST_GET(table, i), 0);				LIST_SUREGET(table, i) = NULL;			}		    }		    if (overflow_ok) {			fclose(file_in);			return 0;		    }		    fprintf(stderr, "malloc failure in get_array_of_lines\n");		    exit(2);		}		LIST_ADD(table, tx, np, char*);		tx ++;		/* table[tx++] = (unsigned char *)np; */		strcpy(np, buffer);		if(tx > max_entry) {		    fclose(file_in);		    if(overflow_ok) {			fclose(file_in);			return(tx);		    }		    fprintf(stderr, "overflow in get_array_of_lines()\n");		    exit(2);		}	}	fclose(file_in);	return(tx);   /* return number of lines read */}/* --------------------------------------------------------------------get_table():input: an input filename, address of the table, maximum number of entriesof the table, and a overflow handling flag.output: a set of integers in the table.when overflow_ok is ON, the function returns after the table is filled.otherwise the function will exit if overflow occurs.In normal return, the function returns the number of entries read.----------------------------------------------------------------------*/int get_table(inputfile, table, max_entry, overflow_ok)char *inputfile;int  table[];int  max_entry;int  overflow_ok;{	int  val = 0;	int  c = 0;	FILE *file_in;	int  tx=0;           /* number of entries read */	if((file_in = fopen(inputfile, "r")) == NULL) {		if (overflow_ok) return 0;		fprintf(stderr, "can't open %s for reading\n", inputfile);		exit(2);	}	while((c = getc(file_in)) != EOF) {		val = c << 24;		if ((c = getc(file_in)) == EOF) break;		val |= c << 16;		if ((c = getc(file_in)) == EOF) break;		val |= c << 8;		if ((c = getc(file_in)) == EOF) break;		val |= c;		table[tx++] = val;		if(tx > max_entry) {			if(!overflow_ok) {			    fprintf(stderr, "in get_table: table overflow\n");			    exit(2);			}			break;		}	}	fclose(file_in);	return(tx);}get_index_type(s, dashn, num, attr, delim)char s[];int *dashn, *num, *attr;char delim[];{	FILE *fp = fopen(s, "r");	char buf[MAX_LINE_LEN];	*dashn = *num = *attr = 0;	*delim = '\0';	if (fp == NULL) return 0;	fscanf(fp, "%s\n%%%d\n%%%d%s\n", buf, num, attr, delim);	/* printf("get_index_type(): %s %d %d %s\n", buf, num, attr, delim); */	fclose(fp);	if (strstr(buf, "1234567890")) *dashn = ON;	return *num;}/* Read offset from srcbuf first so that you can use it with srcbuf=destbuf */get_block_numbers(srcbuf, destbuf, partfp)	unsigned char *srcbuf, *destbuf;	FILE *partfp;{	int	offset, pat_size;	static int printederror = 0;	/* Does not do caching of blocks seen so far: done in OS hopefully */	offset = (srcbuf[0] << 24) |		(srcbuf[1] << 16) |		(srcbuf[2] << 8) |		(srcbuf[3]);	pat_size = decode32b(offset);	if (-1 == fseek(partfp, pat_size, 0)) {		if (!printederror) {			fprintf(stderr, "Warning! Error in the format of the index!\n");			printederror = 1;		}	}	destbuf[0] = '\n';	destbuf[1] = '\0';	destbuf[2] = '\0';	destbuf[3] = '\0';	if (fgets(destbuf, REAL_INDEX_BUF - MAX_WORD_BUF - 1, partfp) == NULL) {		destbuf[0] = '\n';		destbuf[1] = '\0';		destbuf[2] = '\0';		destbuf[3] = '\0';	}}int num_filter=0;int filter_len[MAX_FILTER];CHAR *filter[MAX_FILTER];CHAR *filter_command[MAX_FILTER];struct stat filstbuf;read_filters(index_dir, dofilter)char	*index_dir;int	dofilter;{    int len;    int patlen;    int patpos;    int commandpos;    FILE *filterfile;    char filterbuf[MAX_LINE_LEN];    char tempbuf[MAX_LINE_LEN];    char s[MAX_LINE_LEN];    num_filter = 0;    memset(filter, '\0', sizeof(CHAR *) * MAX_FILTER);    memset(filter_command, '\0', sizeof(CHAR *) * MAX_FILTER);    memset(filter_len, '\0', sizeof(int) * MAX_FILTER);    if (!dofilter) return;    sprintf(s, "%s/%s", index_dir, FILTER_FILE);    filterfile = fopen(s, "r");    if(filterfile == NULL) {	/* fprintf(stderr, "can't open filter file %s\n", s); -- no need */	num_filter = 0;    }    else if (fstat(fileno(filterfile), &filstbuf) == -1) {	num_filter = 0;    }    else {	while((num_filter < MAX_FILTER) && fgets(filterbuf, MAX_LINE_LEN, filterfile)) {		if ((len = strlen(filterbuf)) < 1) continue;		filterbuf[len-1] = '\0';		commandpos = 0;		while ((commandpos < len) && ((filterbuf[commandpos] == ' ') || (filterbuf[commandpos] == '\t'))) commandpos ++;	/* leading spaces */		if (commandpos >= len) continue;		if (filterbuf[commandpos] == '\'') {			commandpos ++;			patpos = commandpos;			patlen = 0;			while (commandpos < len) {				if (filterbuf[commandpos] == '\\') {					commandpos += 2;					patlen += 2;				}				else if (filterbuf[commandpos] != '\'') {					commandpos ++;					patlen ++;				}				else break;			}			if ((commandpos >= len) || (patlen <= 0)) continue;			commandpos ++;		}		else {			patpos = commandpos;			patlen = 0;			while ((commandpos < len) && (filterbuf[commandpos] != ' ') && (filterbuf[commandpos] != '\t')) {				commandpos ++;				patlen ++;			}			while ((commandpos < len) && ((filterbuf[commandpos] == ' ') || (filterbuf[commandpos] == '\t'))) commandpos ++;			if (commandpos >= len) continue;		}		memcpy(tempbuf, &filterbuf[patpos], patlen);		tempbuf[patlen] = '\0';		if ((filter_len[num_filter] = convert2agrepregexp(tempbuf, patlen)) == 0) continue;	/* inplace conversion */		filter[num_filter] = (unsigned char *) strdup(tempbuf);		filter_command[num_filter] = (unsigned char *)strdup(&filterbuf[commandpos]);		num_filter ++;	}	fclose(filterfile);    }}/* 1 if filter application was successful and the output (>1B) is in outname, 2 if some pattern matched but there is no output, 0 otherwise: sep 15-18 '94 *//* memagrep is initialized in partition.c for calls from dir.c, and it is already done by the time we call this function from main.c */apply_filter(inname, outname)	char	*inname, *outname;	/* outname is in-out, inname is in */{	int	i;	char	name[MAX_LINE_LEN], es1[MAX_LINE_LEN], es2[MAX_LINE_LEN];	int	name_len = strlen(inname);	char	s[MAX_LINE_LEN];	FILE	*dummyout;	FILE	*dummyin;	char	dummybuf[4];	char	prevoutname[MAX_LINE_LEN];	char	newoutname[MAX_LINE_LEN];	char	tempoutname[MAX_LINE_LEN];	char	tempinname[MAX_LINE_LEN];	int	ret = 0;	int	unlink_prevoutname = 0;	if (num_filter <= 0) return 0;	if ((dummyout = fopen("/dev/null", "w")) == NULL) return 0;	/* ready for memgrep */	name[0] = '\n';	special_get_name(inname, name_len, tempinname);	name_len = strlen(tempinname);	strcpy(name+1, tempinname);	strcpy(prevoutname, tempinname);	strcpy(newoutname, outname);	/* Current properly filtered output is always in prevoutname */	for(i=0; i<num_filter; i++) {		if (filter_len[i] > 0) {			char *suffix;			name[name_len + 1] = '\0';			if ((suffix = strstr(name+1, filter[i])) != NULL) {	/* Chris Dalton */				if (ret == 0) ret = 2;				/* yes, it matched: now apply the command and get the output */				/* printf("filtering %s\n", name); */				sprintf(s, "exec %s '%s' > '%s'", filter_command[i], escapesinglequote(prevoutname, es1), escapesinglequote(newoutname, es2));				system(s);				if (((dummyin = my_fopen(newoutname, "r")) == NULL) || (fread(dummybuf, 1, 1, dummyin) <= 0)) {					if (dummyin != NULL) fclose(dummyin);					unlink(newoutname);					continue;				}				/* Filter was successful: output exists and has atleast 1 byte in it */				fclose(dummyin);				if (unlink_prevoutname) {					unlink(prevoutname);					strcpy(tempoutname, prevoutname);					strcpy(prevoutname, newoutname);					strcpy(newoutname, tempoutname);				}				else {					strcpy(prevoutname, newoutname);					sprintf(newoutname, "%s.o", prevoutname);				}				ret = 1;				unlink_prevoutname = 1;#if	1				/* if the matched text was a proper suffix of the name, */				/* remove the suffix just processed before examining the */				/* name again. Chris Dalton */				/* And I don't know what the equivalent thing is with */				/* memagrep_search: since it doesn't return a pointer to */				/* the place where the match occured. Burra Gopal */				if (strcmp(filter[i], suffix) == 0) {					name_len -= strlen(suffix);					*suffix= '\0';				}#endif	/*1*/				if (strlen(newoutname) >= MAX_LINE_LEN - 1) break;			}		}		else {	/* must call memagrep */			name[name_len + 1] = '\n';	/* memagrep wants names to end with '\n': '\0' is not necessary */			/* printf("i=%d filterlen=%d filter=%s inlen=%d input=%s\n", i, -filter_len[i], filter[i], len_current_dir_buf, current_dir_buf); */			if (((filter_len[i] == -2) && (filter[i][0] == '.') && (filter[i][1] == '*')) ||			    (memagrep_search(-filter_len[i], filter[i], name_len + 2, name, 0, dummyout) > 0)) {				if (ret == 0) ret = 2;				/* yes, it matched: now apply the command and get the output */				/* printf("filtering %s\n", name); */				sprintf(s, "exec %s '%s' > '%s'", filter_command[i], escapesinglequote(prevoutname, es1), escapesinglequote(newoutname, es2));				system(s);				if (((dummyin = my_fopen(newoutname, "r")) == NULL) || (fread(dummybuf, 1, 1, dummyin) <= 0)) {					if (dummyin != NULL) fclose(dummyin);					unlink(newoutname);					continue;				}				/* Filter was successful: output exists and has atleast 1 byte in it */				fclose(dummyin);				if (unlink_prevoutname) {					unlink(prevoutname);					strcpy(tempoutname, prevoutname);					strcpy(prevoutname, newoutname);					strcpy(newoutname, tempoutname);				}				else {					strcpy(prevoutname, newoutname);					sprintf(newoutname, "%s.o", prevoutname);				}		  		ret = 1;				unlink_prevoutname = 1;				if (strlen(newoutname) >= MAX_LINE_LEN - 1) break;			}		}	}	if (ret == 1) strcpy(outname, prevoutname);	else {	/* dummy filter that copies input to output: caller can use tempinname but this has easy interface */		sprintf(s, "exec %s '%s' > '%s'\n", SYSTEM_CAT, escapesinglequote(tempinname, es1), escapesinglequote(outname, es2));		system(s);	}	fclose(dummyout);	return ret;}/* Use a modified wais stoplist to do this with simple strcmp's in a for loop */static_stop_list(word)	char	*word;{	return 0;}/* This is the stuff that used to be present in the old build_in.c *//* Some variables used throughout */FILE *TIMEFILE;		/* file descriptor for sorting .glimpse_filenames by time */#if	BG_DEBUGFILE  *LOGFILE; 	/* file descriptor for LOG output */#endif	/*BG_DEBUG*/FILE  *STATFILE;	/* file descriptor for statistical data about indexed files */FILE  *MESSAGEFILE;	/* file descriptor for important messages meant for the user */char  INDEX_DIR[MAX_LINE_LEN];char  sync_path[MAX_LINE_LEN];struct stat istbuf;struct stat excstbuf;struct stat incstbuf;int ICurrentFileOffset;int NextICurrentFileOffset;/* Some options used throughout */int GenerateHash = OFF;int KeepFilenames = OFF;int OneFilePerBlock = OFF;int total_size = 0;int total_deleted = 0;int MAXWORDSPERFILE = 0;int NUMERICWORDPERCENT = DEF_NUMERIC_WORD_PERCENT;int AddToIndex = OFF;int DeleteFromIndex = OFF;int PurgeIndex = ON;int FastIndex = OFF;int BuildDictionary = OFF;int BuildDictionaryExisting = OFF;int CompressAfterBuild = OFF;int IncludeHigherPriority = OFF;int FilenamesOnStdin = OFF;int ExtractInfo = OFF;int InfoAfterFilename = OFF;int FirstWordOfInfoIsKey = OFF;int UseFilters = OFF;int ByteLevelIndex = OFF;int RecordLevelIndex = OFF;	/* When we want a -o like index but want to do booleans on a per-record basis directly from index: robint@zedcor.com */				/* This type of index doesn't make sense with attributes since they span > 1 record; hence StructuredIndex == -2 => this = ON */int StoreByteOffset = OFF;	/* In RecordLevelIndex, store record # for each word or byte offset of the record: record # is the default (12/12/96) */char rdelim[MAX_LINE_LEN];char old_rdelim[MAX_LINE_LEN];int rdelim_len = 0;/* int IndexUnderscore = OFF; */int IndexableFile = OFF;int MAX_INDEX_PERCENT = DEF_MAX_INDEX_PERCENT;int MAX_PER_MB = DEF_MAX_PER_MB;int I_THRESHOLD = DEF_I_THRESHOLD;int BigHashTable = OFF;int IndexEverything = OFF;int HashTableSize = MAX_64K_HASH;int BuildTurbo = OFF;int SortByTime = OFF;int AddedMaxWordsMessage = OFF;int AddedMixedWordsMessage = OFF;int  icount=0; /* count the number of my_malloc for indices structure */int  hash_icount=0; /* to see how much was added to the current hash table */int  save_icount=0; /* to see how much was added to the index by the current file */int  numeric_icount=0; /* to see how many numeric words were there in the current file */int mask_int[32] = MASK_INT;int p_table[MAX_PARTITION];int memory_usage = 0;char *my_malloc(len)    int len;{    char *s;    static int i=100;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区视频| 天堂成人国产精品一区| 成人夜色视频网站在线观看| 中文成人av在线| 99riav久久精品riav| 最新热久久免费视频| 91久久精品一区二区三| 亚洲高清在线视频| 日韩欧美一级在线播放| 国产一区二区三区免费看| 国产精品久久免费看| 91看片淫黄大片一级| 日韩精品一区第一页| 久久色在线观看| 色综合久久88色综合天天| 午夜欧美一区二区三区在线播放| 91精品国产综合久久香蕉的特点| 国产精品一区一区| 亚洲欧美激情一区二区| 在线播放中文一区| 国产精品自拍网站| 一区二区三区精品视频| 日韩精品一区二区三区蜜臀 | 亚洲444eee在线观看| 欧美区视频在线观看| 国产精品一区一区| 亚洲成人动漫在线免费观看| 欧美成人vr18sexvr| 色综合欧美在线| 久久99国产精品久久| 亚洲日本护士毛茸茸| 精品久久久久久久久久久院品网 | 91黄色免费观看| 蜜臀av一级做a爰片久久| 国产精品理论在线观看| 91精品国产综合久久精品| 成人黄动漫网站免费app| 青青青伊人色综合久久| 亚洲免费在线电影| 久久综合久久99| 欧美日韩免费不卡视频一区二区三区| 国内不卡的二区三区中文字幕| 亚洲免费在线视频一区 二区| 久久香蕉国产线看观看99| 欧美偷拍一区二区| 成人久久18免费网站麻豆 | 国产精品污污网站在线观看| 欧美一区二区私人影院日本| 色播五月激情综合网| 豆国产96在线|亚洲| 蜜臀99久久精品久久久久久软件| 亚洲免费在线观看视频| 国产精品少妇自拍| 亚洲精品一区二区三区精华液| 91久久线看在观草草青青| 丰满亚洲少妇av| 国产呦萝稀缺另类资源| 男女男精品视频网| 亚洲伊人色欲综合网| 亚洲美女免费视频| 国产精品久久久久久久久免费樱桃| 欧美成人a∨高清免费观看| 欧美日韩精品一区二区在线播放| 99精品视频在线观看免费| 国产99久久久国产精品免费看| 精品一区精品二区高清| 日日骚欧美日韩| 日韩激情中文字幕| 婷婷久久综合九色国产成人| 亚洲国产一区二区三区青草影视| 亚洲三级电影全部在线观看高清| 国产精品美女视频| 国产欧美一区二区三区在线老狼| 久久久www成人免费无遮挡大片| 日韩欧美中文字幕公布| 欧美一区二区三区男人的天堂| 欧美日韩免费观看一区二区三区| 欧美在线一二三四区| 欧美自拍丝袜亚洲| 欧美影院午夜播放| 欧美三区在线视频| 欧美另类高清zo欧美| 欧美一区二区女人| 精品少妇一区二区三区在线播放| 欧美精品一区二区不卡| 久久久91精品国产一区二区三区| 国产拍揄自揄精品视频麻豆| 中文字幕第一区综合| 亚洲欧美色一区| 亚洲成av人**亚洲成av**| 午夜av一区二区| 久久激五月天综合精品| 国产成人aaa| 91麻豆精品秘密| 欧美日韩国产天堂| 精品99999| 国产精品久久久久久久岛一牛影视| 国产精品国产a| 亚洲一区自拍偷拍| 免费美女久久99| 国产成人一级电影| 一本色道a无线码一区v| 91精品免费在线| 久久综合久久综合久久综合| 日本一区二区电影| 亚洲mv大片欧洲mv大片精品| 狠狠色丁香婷婷综合| www.日韩在线| 欧美一级生活片| 国产欧美日韩三区| 亚洲成人福利片| 高清成人免费视频| 欧美午夜电影网| 国产夜色精品一区二区av| 亚洲激情图片qvod| 精品影视av免费| 色婷婷香蕉在线一区二区| 精品久久久三级丝袜| 亚洲三级在线免费观看| 美女网站色91| 日本高清不卡aⅴ免费网站| 精品福利一二区| 亚洲综合清纯丝袜自拍| 国产一区二区在线看| 欧美日韩一本到| 国产精品素人视频| 午夜av一区二区| 99久久99久久免费精品蜜臀| 日韩欧美自拍偷拍| 亚洲精品伦理在线| 国产高清无密码一区二区三区| 欧美三级在线播放| 国产精品国产三级国产有无不卡| 蜜桃精品在线观看| 在线视频一区二区三| 国产视频亚洲色图| 美脚の诱脚舐め脚责91| 欧美丝袜丝交足nylons图片| 国产精品五月天| 国产在线视频不卡二| 欧美日韩精品三区| 亚洲人成电影网站色mp4| 国产99久久久国产精品| 欧美电影免费提供在线观看| 亚洲成av人综合在线观看| 色爱区综合激月婷婷| 国产精品素人一区二区| 国产精品综合二区| 久久婷婷国产综合精品青草| 日本91福利区| 欧美日韩二区三区| 亚洲第一福利视频在线| 色综合天天综合网天天狠天天 | 一本到三区不卡视频| 国产日韩成人精品| 国产精品1区2区| 精品粉嫩aⅴ一区二区三区四区 | 韩国理伦片一区二区三区在线播放| 欧美日韩你懂得| 亚洲成人av一区| 欧美色图在线观看| 亚洲香肠在线观看| 91极品视觉盛宴| 亚洲一级电影视频| 欧美亚洲一区三区| 亚洲午夜国产一区99re久久| 欧美午夜理伦三级在线观看| 亚洲网友自拍偷拍| 欧美日韩精品一区二区三区| 五月激情六月综合| 日韩亚洲电影在线| 久久精品国产亚洲5555| 精品国产三级a在线观看| 久久99精品一区二区三区 | 国产欧美一区二区精品久导航 | 91麻豆国产福利在线观看| 亚洲男女毛片无遮挡| 欧美在线免费播放| 亚州成人在线电影| 精品国产免费视频| 国产丶欧美丶日本不卡视频| 中文字幕av一区二区三区免费看| 成人深夜福利app| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩一区二区在线观看| 午夜免费欧美电影| 精品黑人一区二区三区久久| 国产**成人网毛片九色 | 中文一区在线播放| 色综合天天综合网天天狠天天 | 精品国产在天天线2019| 国产精品一二三在| 亚洲日本免费电影| 51午夜精品国产| 国产黑丝在线一区二区三区| 亚洲日本中文字幕区| 欧美三级中文字幕| 欧美精品vⅰdeose4hd| 国产精品电影院| 欧洲日韩一区二区三区|