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

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

?? io.c

?? harvest是一個下載html網(wǎng)頁得機器人
?? C
?? 第 1 頁 / 共 3 頁
字號:
	sprintf(s, "%s.tmp", indexfile);	if ((newindexfp = fopen(s, "w")) == NULL) {		fprintf(stderr, "Can't open for writing: %s\n", s);		fclose(indexfp);		exit(2);	}	sprintf(s, "%s/%s", INDEX_DIR, MINI_FILE);	if ((minifp = fopen(s, "w")) == NULL) {		fprintf(stderr, "Can't open for writing: %s\n", s);		fclose(indexfp);		fclose(newindexfp);		exit(2);	}	fputs(indexnumber, newindexfp);	fputs(onefileperblock, newindexfp);	if (attr_num != -2) fprintf(newindexfp, "%%%d\n", attr_num);	else fprintf(newindexfp, "%%%d %s\n", attr_num, temp_rdelim);	prev_hash_value = -1;	hash_value = 0;	offset = ftell(newindexfp);	while (fgets(s, MAX_LINE_LEN, indexfp) != NULL) {		linelen = strlen(s);		t = s;		while ((*t != ' ') && (t < s + linelen)) t++;		if (t >= s + linelen) continue;		*t = '\0';		sscanf(s, "%d", &hash_value);		t ++;	/* points to first character of the beginning of s */		fputs(t, newindexfp);		if (hash_value != prev_hash_value) {			for (j=prev_hash_value + 1; j<=hash_value; j++) {				eoffset = encode32b((int)offset);				putc((eoffset & 0xff000000) >> 24, minifp);				putc((eoffset & 0xff0000) >> 16, minifp);				putc((eoffset & 0xff00) >> 8, minifp);				if (putc((eoffset & 0xff), minifp) == EOF) {					fprintf(stderr, "Error: write failed at %s:%d\n", __FILE__, __LINE__);					exit(2);				}			}			prev_hash_value = hash_value;		}		offset = ftell(newindexfp);	}	for (hash_value = prev_hash_value + 1; hash_value<MINI_ARRAY_LEN; hash_value++) {		eoffset = encode32b((int)offset);	/* end of index file */		putc((eoffset & 0xff000000) >> 24, minifp);		putc((eoffset & 0xff0000) >> 16, minifp);		putc((eoffset & 0xff00) >> 8, minifp);		if (putc((eoffset & 0xff), minifp) == EOF) {			fprintf(stderr, "Error: write failed at %s:%d\n", __FILE__, __LINE__);			exit(2);		}	}	fclose(indexfp);	fflush(newindexfp);	fclose(newindexfp);	fflush(minifp);	fclose(minifp);#if	SFS_COMPAT	unlink(indexfile);#else	sprintf(s, "exec %s '%s'", SYSTEM_RM, escapesinglequote(indexfile, es1));	system(s);#endif#if	SFS_COMPAT	sprintf(s, "%s.tmp", indexfile);	rename(s, indexfile);#else	sprintf(s, "exec %s '%s.tmp' '%s'\n", SYSTEM_MV, escapesinglequote(indexfile, es1), escapesinglequote(indexfile, es2));	system(s);#endif	system(sync_path);	/* sync() has a BUG */}#endif	/* WORD_SORTED *//* Creates data structures that are related to the number of files present in * ".glimpse_filenames". These data structures are: * 1. index sets	-- use my_malloc * 2. index bufs	-- use my_malloc * Once this is done, this function can be called directly from glimpse/get_filenames() * and that can use all sets/bufs data structures directly. * This doesn't care how name_list() is created to be an array of arrays to be able to * add/delete dynamically from it: this uses malloc completely. * But: *	disable_list (which is used only inside glimpse_index) must be malloced separately. *	multi_dest_index_set (which is used only inside glimpse) must be malloced separately. */initialize_data_structures(files)int	files;{	FILEMASK_SIZE = ((files + 1)/(8*sizeof(int)) + 4);	REAL_PARTITION = (FILEMASK_SIZE + 4);	if (REAL_PARTITION < MAX_PARTITION + 2) REAL_PARTITION = MAX_PARTITION + 2;	REAL_INDEX_BUF = ((files + 1)  + 2*MAX_WORD_BUF + 2);	/* index line length with OneFilePerBlock (and/or ByteLevelIndex) */	if (REAL_INDEX_BUF < MAX_SORTLINE_LEN) REAL_INDEX_BUF = MAX_SORTLINE_LEN;	MAX_ALL_INDEX = (REAL_INDEX_BUF / 2);	if (src_index_set == NULL) src_index_set = (unsigned int *)my_malloc(sizeof(int)*REAL_PARTITION);	memset(src_index_set, '\0', sizeof(int) * REAL_PARTITION);	if (dest_index_set == NULL) dest_index_set = (unsigned int *)my_malloc(sizeof(int)*REAL_PARTITION);	memset(dest_index_set, '\0', sizeof(int) * REAL_PARTITION);	if (src_index_buf == NULL) src_index_buf = (unsigned char *)my_malloc(sizeof(char)*REAL_INDEX_BUF);	memset(src_index_buf, '\0', sizeof(char)*REAL_INDEX_BUF);	if (dest_index_buf == NULL) dest_index_buf = (unsigned char *)my_malloc(sizeof(char)*REAL_INDEX_BUF);	memset(dest_index_buf, '\0', sizeof(char)*REAL_INDEX_BUF);	if (merge_index_buf == NULL) merge_index_buf = (unsigned char *)my_malloc(sizeof(char)*REAL_INDEX_BUF);	memset(merge_index_buf, '\0', sizeof(char)*REAL_INDEX_BUF);}destroy_data_structures(){	if (src_index_set != NULL) free(src_index_set);	src_index_set = NULL;	if (dest_index_set != NULL) free(dest_index_set);	dest_index_set = NULL;	if (src_index_buf != NULL) free(src_index_buf);	src_index_buf = NULL;	if (dest_index_buf != NULL) free(dest_index_buf);	dest_index_buf = NULL;	if (merge_index_buf != NULL) free(merge_index_buf);	merge_index_buf = NULL;}/* We MUST be able to parse name as: "goodoldunixfilename firstwordofotherinfo restofotherinfo_whichifNULL_willnotbeprecededbyblanklikeitdoeshere\n" *//* len is strlen(name), being points to                   ^ and end points to ^: the firstwordofotherinfo can be used to create .glimpse_filehash when -U ON *//* Restriction: the 3 strings above cannot contain '\n' or '\0' or ' ' *//* returns 0 if parsing was successful, -1 if error *//* begin/end values are NOT stored for each file (painful!), so this function may be called multiple times for the same name: caller MUST save if reqd. */intspecial_parse_name(name, len, begin, end)	char	*name;	int	len;	int	*begin, *end;{	int	i;	int	index;	*begin = -1;	*end = -1;	if (InfoAfterFilename || ExtractInfo) {	/* Glimpse will ALWAYS terminate filename at first blank (no ' ', '\n', '\0' in filename) */		/* Trying to use FILE_END_MARK instead of blank! --GB 6/7/99 */		for (i=0; i<len; i++) {			if (name[i] == '\n') break;			if (name[i] == FILE_END_MARK)  {				if (*begin == -1) {					*begin = i+1;					if (!InfoAfterFilename) break;	/* don't care about URL since it doesn't exist as far as I know */				}				else {					*end = i;					break;				}			}		}		if (*begin == -1) {			*begin = 0; *end = len;			return 0;		}		else {			if (*end == -1) *end = len;			if (*begin >= *end) {				*end = *begin - 1; *begin = 0;				/* was returning -1 before, but if can't find any "firstwordofinfo", then just use the first word in buffer for indexing... */			}			return 0;		}	}	else {		*begin = 0; *end = len;		return 0;	}}/* Puts the actual name of the file in the file-system into temp (caller must pass buffer that is large enough to hold it...) */intspecial_get_name(name, len, temp)	char	*name;	int	len;	char	*temp;{	int	begin=-1, end=-1;	if (name == NULL) return -1;	if (len < 0) len = strlen(name);	if (len <= 0) {		errno = EINVAL;		return -1;	}	if (special_parse_name(name, len, &begin, &end) == -1) return -1;	if ((begin >= MAX_LINE_LEN) || (len >= MAX_LINE_LEN)) {		errno = ENAMETOOLONG;		return -1;	}	if (begin > 0) {	/* points to first element of the information (like URL) stored after filename */		memcpy(temp, name, begin-1);		temp[begin-1] = '\0';	}	else {	/* no other information stored with filename */		memcpy(temp, name, len);		temp[len] = '\0';	}	return 0;}/* Must NOT write into name or flag since they may be passed as "const" char* on some systems */FILE *my_fopen(name, flag)	char	*name;	char	*flag;{	int	len;	char	temp[MAX_LINE_LEN];	if (name == NULL) return NULL;	len = strlen(name);	if (special_get_name(name, len, temp) == -1) return NULL;	return fopen(temp, flag);}intmy_open(name, flag, mode)	char	*name;	int	flag, mode;{	int	len;	char	temp[MAX_LINE_LEN];	if (name == NULL) return -1;	len = strlen(name);	if (special_get_name(name, len, temp) == -1) return -1;	return open(temp, flag, mode);}intmy_stat(name, buf)	char	*name;	struct stat *buf;{	int	len;	char	temp[MAX_LINE_LEN];	if (name == NULL) return -1;	len = strlen(name);	if (special_get_name(name, len, temp) == -1) return -1;	return stat(temp, buf);}intmy_lstat(name, buf)	char	*name;	struct stat *buf;{	int	len;	char	temp[MAX_LINE_LEN];	if (name == NULL) return -1;	len = strlen(name);	if (special_get_name(name, len, temp) == -1) return -1;	return lstat(temp, buf);}/* Changed hash-routines to look at exactly that portion of the filename that occurs before the first blank character, *//* and use that to compare names: Oct/96 --- But lose efficiency since must parse name everytime: at least 1 string copy *//* Using FILE_END_MARK instead of blank. --GB 6/7/99 */name_hashelement *name_hashtable[MAX_64K_HASH];	/* if (!BigFilenameHashTable) then only the first 4K entries in it are used *//* * Returns the index of the name if the it is found amongst the set * of files in name_array; -1 otherwise. */intget_filename_index(name)	char	*name;{	int	index;	int	len;	int	i, begin=-1, end=-1;	/* int	skips=0; */	name_hashelement	*e;	char	*temp;	int	temp_len;	if (name == NULL) return -1;	len = strlen(name);	if (special_parse_name(name, len, &begin, &end) == -1) return -1;	if ((begin >= MAX_LINE_LEN) || (len >= MAX_LINE_LEN)) {		errno = ENAMETOOLONG;		return -1;	}	temp = name;	if (begin > 0) {	/* points to first element of the information (like URL) stored after filename */		temp_len = begin - 1;	}	else {	/* no other information stored with filename */		temp_len = len;	}	if (FirstWordOfInfoIsKey) index = hashNk(name, end-begin);	else {	/* hash on filename */		if (begin <= 0) index = hashNk(name, len);		else index = hashNk(name, begin-1);	}	e = name_hashtable[index];	while((e != NULL) && (strncmp(temp, e->name, temp_len))) {		/* skips ++; */		e = e->next;	}	/* fprintf(STATFILE, "skips = %d\n", skips); */	if (e == NULL) return -1;	return e->index;}insert_filename(name, name_index)	char	*name;	int	name_index;{	int	len;	int	index;	int	i, begin=-1, end=-1;	name_hashelement **pe;	char	*temp;	int	temp_len;	if (name == NULL) return;	len = strlen(name);	if (special_parse_name(name, len, &begin, &end) == -1) return;	if ((begin >= MAX_LINE_LEN) || (len >= MAX_LINE_LEN)) {		errno = ENAMETOOLONG;		return;	}	temp = name;	if (begin > 0) {	/* points to first element of the information (like URL) stored after filename */		temp_len = begin - 1;	}	else {	/* no other information stored with filename */		temp_len = len;	}	if (FirstWordOfInfoIsKey) index = hashNk(name, end-begin);	else {	/* hash on filename */		if (begin <= 0) index = hashNk(name, len);		else index = hashNk(name, begin-1);	}	pe = &name_hashtable[index];	while((*pe != NULL) && (strncmp((*pe)->name, temp, temp_len))) pe = &(*pe)->next;	if ((*pe) != NULL) return;	if ((*pe = (name_hashelement *)my_malloc(sizeof(name_hashelement))) == NULL) {		fprintf(stderr, "malloc failure in insert_filename %s:%d\n", __FILE__, __LINE__);		exit(2);	}	(*pe)->next = NULL;#if	0	if (((*pe)->name = (char *)my_malloc(len + 2)) == NULL) {		fprintf(stderr, "malloc failure in insert_filename %s:%d\n", __FILE__, __LINE__);		exit(2);	}	strcpy((*pe)->name, name);#else	(*pe)->name = name;#endif	(*pe)->name_len = strlen(name);	(*pe)->index = name_index;}change_filename(name, len, index, newname)	char	*name;	int	len;	int	index;	char	*newname;{	name_hashelement **pe, *t;	char	temp[MAX_LINE_LEN];	int	temp_len;	if (special_get_name(name, len, temp) == -1) return;	temp_len = strlen(temp);	pe = &name_hashtable[index];	while((*pe != NULL) && (strncmp((*pe)->name, temp, temp_len))) pe = &(*pe)->next;	if ((*pe) == NULL) return;#if	0	my_free((*pe)->name);#endif	(*pe)->name = newname;	return;}delete_filename(name, name_index)	char	*name;	int	name_index;{	int	len;	int	index;	int	i, begin=-1, end=-1;	name_hashelement **pe, *t;	char	*temp;	int	temp_len;	if (name == NULL) return;	len = strlen(name);	if (special_parse_name(name, len, &begin, &end) == -1) return;	if ((begin >= MAX_LINE_LEN) || (len >= MAX_LINE_LEN)) {		errno = ENAMETOOLONG;		return;	}	temp = name;	if (begin > 0) {	/* points to first element of the information (like URL) stored after filename */		temp_len = begin - 1;	}	else {	/* no other information stored with filename */		temp_len = len;	}	if (FirstWordOfInfoIsKey) index = hashNk(name, end-begin);	else {	/* hash on filename */		if (begin <= 0) index = hashNk(name, len);		else index = hashNk(name, begin-1);	}	pe = &name_hashtable[index];	while((*pe != NULL) && (strncmp((*pe)->name, temp, temp_len))) pe = &(*pe)->next;	if ((*pe) == NULL) return;	t = *pe;	*pe = (*pe)->next;#if	0	my_free(t->name);#endif	my_free(t, sizeof(name_hashelement));	return;}init_filename_hashtable(){	int	i;	for (i=0; i<MAX_64K_HASH; i++) name_hashtable[i] = NULL;}int	built_filename_hashtable = 0;build_filename_hashtable(names, num)	char	**names[];	int	num;{	int	i;	init_filename_hashtable();	for (i=0; i<num; i++) insert_filename(LIST_GET(names, i), i);	built_filename_hashtable = 1;}destroy_filename_hashtable(){	int	i;	name_hashelement **pe, *t;	for (i=0; i<MAX_64K_HASH; i++) {		pe = &name_hashtable[i];		while(*pe!=NULL) {			t = *pe;			*pe = (*pe)->next;#if	0			my_free(t->name);#endif			my_free(t, sizeof(name_hashelement));		}		*pe = NULL;	}	built_filename_hashtable = 0;}longget_file_time(fp, stbuf, name, i)	FILE	*fp;	struct stat *stbuf;	char	*name;	int	i;{	CHAR	array[sizeof(long)];	int	xx;	long	ret = 0;	struct stat mystbuf;	if (fp != NULL) {		fseek(fp, i*sizeof(long), 0);		fread(array, sizeof(long), 1, fp);		for (xx=0; xx<sizeof(long); xx++) ret |= array[xx] << (8*(sizeof(long) - xx - 1));	}	else if (stbuf != NULL) {		ret = stbuf->st_mtime;	}	else {		if (my_stat(name, &mystbuf) == -1) ret = 0;		else ret = mystbuf.st_mtime;	}	return ret;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲码国产岛国毛片在线| 亚洲一区二区三区视频在线播放 | 日本高清不卡aⅴ免费网站| 亚洲v精品v日韩v欧美v专区 | 中文字幕亚洲视频| 日韩一区二区三区四区| 91影视在线播放| 麻豆精品视频在线| 亚洲视频在线观看一区| 久久久久亚洲综合| 9191久久久久久久久久久| 成人99免费视频| 久久99久国产精品黄毛片色诱| 亚洲乱码一区二区三区在线观看| 久久久三级国产网站| 欧美一区二区网站| 一本久道久久综合中文字幕| 国产成人一级电影| 美女任你摸久久| 亚洲123区在线观看| 亚洲精品视频一区二区| 国产亚洲欧美日韩在线一区| 日韩欧美久久一区| 欧美精品三级在线观看| 色婷婷综合久色| 成人免费高清在线| 风间由美一区二区三区在线观看| 久久99日本精品| 日韩精品久久久久久| 亚洲激情六月丁香| 亚洲欧美激情小说另类| 亚洲三级电影全部在线观看高清| 久久久久国产精品麻豆| 2023国产精品视频| 666欧美在线视频| 在线成人免费视频| 欧美剧在线免费观看网站| 欧洲视频一区二区| 欧洲一区在线电影| 欧美日韩久久久| 欧美中文字幕一区二区三区 | 成人性生交大片免费看在线播放| 久久国产精品免费| 另类小说视频一区二区| 蓝色福利精品导航| 激情小说欧美图片| 国产一区高清在线| 国产乱码精品一区二区三 | 精品亚洲成av人在线观看| 秋霞国产午夜精品免费视频| 日韩高清不卡一区二区三区| 麻豆国产精品一区二区三区 | 国产成人亚洲综合a∨猫咪| 韩国欧美国产1区| 国产一区啦啦啦在线观看| 国产精品乡下勾搭老头1| 成人在线视频一区二区| 成人免费黄色大片| 色婷婷久久久亚洲一区二区三区| 91高清视频免费看| 欧美一区二区视频在线观看2020 | 国产精品无人区| 亚洲色图制服丝袜| 日韩专区一卡二卡| 久久机这里只有精品| 国产精品主播直播| 91麻豆国产在线观看| 欧美日韩高清在线播放| 亚洲精品在线观看网站| 国产拍欧美日韩视频二区| 亚洲欧美电影院| 三级欧美韩日大片在线看| 亚洲美女免费在线| 亚洲国产日韩a在线播放| 亚洲曰韩产成在线| 精品一区二区免费在线观看| 成人午夜在线免费| 欧美在线观看视频一区二区三区| 国产91精品一区二区麻豆网站| 久久精品国产77777蜜臀| 国产精品自拍毛片| 欧美在线影院一区二区| 欧美一区二区三区视频在线| 国产亚洲成av人在线观看导航 | 国产精品区一区二区三| 亚洲一区二区不卡免费| 国产另类ts人妖一区二区| 色欲综合视频天天天| 7777精品伊人久久久大香线蕉经典版下载 | 久久九九国产精品| 亚洲一区视频在线观看视频| 国产一区在线观看麻豆| 欧美艳星brazzers| 欧美精品一区二区三区一线天视频 | 欧美日韩亚洲国产综合| 国产视频一区二区在线| 亚瑟在线精品视频| 不卡免费追剧大全电视剧网站| 欧美另类videos死尸| 中文字幕亚洲一区二区av在线| 日本一不卡视频| 色欧美乱欧美15图片| 久久精品亚洲麻豆av一区二区| 亚洲gay无套男同| 成人av网址在线| 日韩精品一区二| 亚洲一区在线视频观看| 成人av电影免费观看| 精品少妇一区二区三区日产乱码 | 国产乱码精品一区二区三 | 欧美日韩在线亚洲一区蜜芽| 国产精品美女久久久久久久久 | 成人综合激情网| 正在播放亚洲一区| 亚洲色图欧洲色图婷婷| 国产 欧美在线| 精品久久久网站| 五月激情综合网| 在线影视一区二区三区| 国产精品二三区| 国产不卡视频在线播放| 欧美r级电影在线观看| 五月婷婷激情综合| 欧美性三三影院| 亚洲一区二区三区四区在线| 色呦呦网站一区| 中文字幕中文字幕一区二区| 国产成人一级电影| 日本一区二区三区免费乱视频| 蜜桃av噜噜一区| 91麻豆精品国产91久久久资源速度| 一区二区三区成人| 91麻豆精品在线观看| 亚洲欧美日韩人成在线播放| 成人小视频免费在线观看| 欧美激情一区三区| 岛国一区二区在线观看| 国产精品美女久久久久aⅴ | 亚洲小说欧美激情另类| 色婷婷精品大在线视频| 一区二区三区在线视频播放| 99久久免费精品高清特色大片| 国产精品嫩草影院com| 99久久精品国产毛片| 成人欧美一区二区三区小说| av亚洲精华国产精华精| 国产精品国产三级国产普通话三级| 国产91丝袜在线观看| 国产精品热久久久久夜色精品三区| 高清不卡一二三区| 中文字幕在线一区二区三区| 91亚洲精品久久久蜜桃网站| 亚洲精品乱码久久久久久| 欧洲精品视频在线观看| 青青青伊人色综合久久| www国产亚洲精品久久麻豆| 国产精品18久久久久久久网站| 国产精品污www在线观看| 波多野结衣中文字幕一区二区三区| 亚洲欧洲一区二区三区| 欧美色爱综合网| 看电视剧不卡顿的网站| 国产欧美日韩三级| 91免费版在线看| 五月天网站亚洲| 精品成人在线观看| 粉嫩高潮美女一区二区三区| 亚洲乱码一区二区三区在线观看| 欧美日韩精品一区二区| 久久99精品一区二区三区| 国产精品免费视频观看| 欧美视频在线观看一区二区| 麻豆精品在线播放| 综合电影一区二区三区| 91精品国产免费| 成人白浆超碰人人人人| 亚洲永久精品大片| 久久这里只精品最新地址| www.亚洲人| 99久久精品免费精品国产| 欧美国产日产图区| 欧美性生活久久| 国产一区二区在线影院| 亚洲精品国久久99热| 日韩精品自拍偷拍| 99久久99久久精品免费观看 | 日本亚洲一区二区| 中文成人综合网| 6080亚洲精品一区二区| av亚洲产国偷v产偷v自拍| 蜜桃视频免费观看一区| 综合中文字幕亚洲| 欧美www视频| 91福利在线看| 国产成人av一区| 免费高清在线视频一区·| 亚洲欧美在线高清| 精品第一国产综合精品aⅴ| 在线观看91精品国产入口| 国产suv一区二区三区88区|