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

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

?? search.cpp

?? WEB上實現的局域網FTP搜索程序
?? CPP
字號:
#include <sys/time.h>#include <regex.h>#include "conf.h"char* FileDB[MAXHOSTS];int OnList[MAXHOSTS];char* token[MAXHOSTS];regex_t rc[MAXHOSTS];char itemtype[12];FILE *idx, *ref;int Counter;int tokencnt;bool onlineonly;timeval starttime;void Chop(char *s){  char *ptr;  if((ptr=strchr(s,CR))!=NULL) *ptr='\0';  if((ptr=strchr(s,LF))!=NULL) *ptr='\0';}int timeval_subtract (timeval *result, timeval *x, timeval *y){    /* Perform the carry for the later subtraction by updating y. */    if (x->tv_usec < y->tv_usec) {	int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;	y->tv_usec -= 1000000 * nsec;	y->tv_sec += nsec;    }    if (x->tv_usec - y->tv_usec > 1000000) {	int nsec = (x->tv_usec - y->tv_usec) / 1000000;	y->tv_usec += 1000000 * nsec;	y->tv_sec -= nsec;    }    /* Compute the time remaining to wait.       tv_usec is certainly positive. */    result->tv_sec = x->tv_sec - y->tv_sec;    result->tv_usec = x->tv_usec - y->tv_usec;    /* Return 1 if result is negative. */    return x->tv_sec < y->tv_sec;}void InitTiming(){    gettimeofday(&starttime, NULL);}void PrintTiming(const char* event){    timeval now, rs;    gettimeofday(&now, NULL);    timeval_subtract(&rs, &now, &starttime);    fprintf(stderr, "%03d%03d.%03d -- %s\n", rs.tv_sec, rs.tv_usec/1000, rs.tv_usec%1000, event);}void LoadFDB(void){    FILE *filedb;    char buffer[MAX], fn[MAX], host[MAX];    int c, on;    fprintf(stderr,"Loading filelist...");    if(!(filedb=fopen(DBHOSTS,"r"))) {	perror("550 Cannot open filelist");	exit(101);    }    while(1)    {	fgets(buffer, MAX, filedb);	if (feof(filedb)) break;	sscanf(buffer,"%d %d %s", &c, &on, host);	Chop(host);	sprintf(fn, "ftpdata/%s.dat", host);	FileDB[c] = new char[strlen(fn)+2];	strcpy(FileDB[c], fn);	OnList[c] = on;    }    fclose(filedb);    fprintf(stderr,"end\n");}int FindBItem(FILE *idx, char *key, DiskBTreeHead *head){    int i, r;    char tmp[20];    while(1)    {	fread(head, sizeof(DiskBTreeHead), 1, idx);	if(!strncasecmp(key, head->key, KEYSIZE)) return S_OK;	for(i=0;i<B;i++)	{	    if((*head->treerefs[i].top) &&	       (strncasecmp(key,head->treerefs[i].top,KEYSIZE)<=0))	    {		r = ftell(idx);		fseek(idx, head->treerefs[i].offset, SEEK_SET);		if (ftell(idx) == r) return S_ERROR;		break;	    }	}	if(i==B) return S_ERROR;    }}void DumpRefs(FILE *idx, FILE *ref, long numhosts){    FILE *db;    HostRef hostref;    char buffer[MAX];    char *fn, host[MAX];    long itemcnt, offset;    int i, j, t;    bool dironly = false;    for (t = 0; t < tokencnt; t++)    {	regcomp(&rc[t], token[t], REG_ICASE);    }    if (strcmp(itemtype, "directory") == 0) dironly = true;    itemcnt = 0L;    for (i = 0; i < numhosts; i++)    {//	PrintTiming("Start Dump a host");	fread(&hostref, sizeof(HostRef), 1, idx);	if (onlineonly && OnList[hostref.host] == 0) continue;	fn = FileDB[hostref.host];	strcpy(host, fn+8);	host[strlen(host)-4] = 0;	db = fopen(fn, "r");	fseek(ref, hostref.offset * sizeof(long), SEEK_SET);//	PrintTiming("Finish Read a hostref");	for (j = 0; j < hostref.len; j++)	{//	    PrintTiming("Start Read a itemref");	    fread(&offset, sizeof(long), 1, ref);	    fseek(db, offset, SEEK_SET);	    fgets(buffer, MAX, db);	    	    char *p1 = buffer+strlen(buffer), *p2;	    while (p1 != buffer && *p1 != '/') p1--;	    p1++;	    p2 = p1;	    while (*(p2+1) != 0 && (*p2 != '!' || *(p2+1) != '!')) p2++;	    *p2 = 0;	    if (dironly && *(p2+2) != 'd') continue;	    bool matched = true;	    for (t = 0; t < tokencnt; t++)	    {		if (regexec(&rc[t], p1, 0, NULL, 0) != 0) 		{		    matched = false;		    break;		}	    }	    if (matched && itemtype[0] != 0 && !dironly && strcasecmp(p2-strlen(itemtype), itemtype) != 0)		matched = false;	    *p2 = '!';	    //	    PrintTiming("Finish Read a itemref");	    if (matched)	    {		printf("%s!!%s", host, buffer);		itemcnt++;	    }	}	fclose(db);    }}void OpenIdx(){    if (!(idx = fopen(DBINDEX, "r")))     {        printf("550 Cannot open SEEDBTREE");        exit(102);    }    if (!(ref = fopen(DBITEMOFFSET, "r")))     {        printf("550 Cannot open SEEDBTREE");        exit(102);    }}void DumpBTree(char* key){    DiskBTreeHead head;        if (!idx)     {	fprintf(stderr,"ERROR ! Idx not open !\n");	return;    }    fread(&head, sizeof(DiskBTreeHead), 1, idx);    fprintf(stderr,"numhosts : %ld\n", head.numhosts);    PrintTiming("Finish Read Last BTreeHead");    DumpRefs(idx, ref, head.numhosts);    fclose(idx);    fclose(ref);    idx=NULL;}void Substring(){    char *c;    char z[2];    char key[KEYSIZE+1];    DiskBTreeHead head;    long minrefs;    long bestoffset;    int i, t, len;    minrefs=-1;    bestoffset=0L;    for (t = 0; t < tokencnt; t++)    {	c = token[t];	len = strlen(c) - KEYSIZE;	for(i = 0; i <= len; i++)	{	    rewind(idx);	    if(FindBItem(idx, &c[i], &head)!=S_OK) {		bestoffset=-1;		continue;	    }	    if((minrefs==-1) || (minrefs>head.numrefs)) {		bzero(key,sizeof(key));		strncpy(key,&c[i],KEYSIZE);		minrefs=head.numrefs;		bestoffset=ftell(idx)-sizeof(DiskBTreeHead);	    }	}    }    if(bestoffset==-1) {	return;    }    key[KEYSIZE]='\0';    fseek(idx, bestoffset, SEEK_SET);    fprintf(stderr, "Searching (key=`%s') (offset=%ld)\n",key,bestoffset);    fflush(stdout);    Counter=-1;    PrintTiming("Finish Find Key");    DumpBTree(key);}void PreProcess(char* query){    const char delimiters[] = " ";    char *t, *cp;    tokencnt = 0;    cp = strdup(query);    t = strtok(cp, delimiters);    while (t)     {	tokencnt++;	token[tokencnt-1] = strdup(t);	t = strtok(NULL, delimiters);     }}int main(int argc, char** argv){    if (argc <= 1) return -1;    onlineonly = false;    if (argc >= 3 && strncmp(argv[2], "on", 2) == 0) onlineonly = true;    itemtype[0] = 0;    if (argc >= 4) strncpy(itemtype, argv[3], 10);    InitTiming();    LoadFDB();    PrintTiming("Finish Load Host List");    OpenIdx();    PrintTiming("Finish Open Index");    PreProcess(argv[1]);    Substring();    PrintTiming("Finish All");    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清在线精品| 亚洲男人的天堂网| 久久精品国产精品青草| 99久久免费视频.com| 欧美tickling挠脚心丨vk| 日韩av中文字幕一区二区| 欧美日韩精品免费观看视频| 亚洲激情图片一区| 欧美日韩一区久久| 午夜天堂影视香蕉久久| 欧美日韩在线免费视频| 偷拍亚洲欧洲综合| 日韩免费视频一区二区| 久久精品国产亚洲一区二区三区 | 久久久久久久综合日本| 国产在线播放一区| 久久精品夜夜夜夜久久| 成人免费电影视频| 亚洲欧美成人一区二区三区| 在线视频综合导航| 天天综合网天天综合色| 欧美成人午夜电影| 成人性视频免费网站| 久久影视一区二区| 不卡av在线网| 伊人婷婷欧美激情| 国产成人精品亚洲777人妖| 99re热视频这里只精品| 亚洲午夜一区二区三区| 在线91免费看| 亚洲va欧美va人人爽午夜| 欧美精品久久一区| 九九国产精品视频| 成人欧美一区二区三区黑人麻豆| 91在线码无精品| 亚洲成a人v欧美综合天堂下载| 4438x成人网最大色成网站| 国模大尺度一区二区三区| 国产欧美一区二区三区鸳鸯浴| 在线亚洲高清视频| 精品一区二区三区久久| 国产精品色呦呦| 色综合色综合色综合色综合色综合| 亚洲电影中文字幕在线观看| 欧美日韩国产综合一区二区三区| 激情五月激情综合网| 自拍偷拍亚洲综合| 日韩欧美在线1卡| 91亚洲永久精品| 久久66热偷产精品| 亚洲激情av在线| 91精品国产综合久久福利软件| 国产传媒久久文化传媒| 亚洲尤物视频在线| 精品国产自在久精品国产| 92国产精品观看| 极品美女销魂一区二区三区| 国产精品电影一区二区三区| 91精品国产综合久久婷婷香蕉| 丁香激情综合国产| 亚洲午夜久久久久久久久久久| 久久久无码精品亚洲日韩按摩| 欧美在线观看18| 在线看不卡av| 欧美艳星brazzers| 色狠狠一区二区| 91免费看`日韩一区二区| 国产99久久久精品| 国产精品69毛片高清亚洲| 国模冰冰炮一区二区| 国内精品国产成人| 国产福利精品一区二区| 国产精品一区在线| 国产91露脸合集magnet| 丰满少妇在线播放bd日韩电影| 激情欧美一区二区| 国产综合久久久久久鬼色| 国产中文字幕一区| 国产福利91精品一区二区三区| 国产成人鲁色资源国产91色综| 国产盗摄一区二区| av激情综合网| 欧美自拍偷拍午夜视频| 欧美日韩精品一区二区三区蜜桃| 欧美日韩免费一区二区三区| 欧美日韩免费电影| 7777精品伊人久久久大香线蕉超级流畅 | 国产美女在线观看一区| 国产又粗又猛又爽又黄91精品| 久久不见久久见免费视频1| 国产伦精品一区二区三区免费| 国产精品一二三四五| av在线不卡网| 91福利精品视频| 欧美日韩一区二区三区高清| 日韩午夜激情免费电影| 久久品道一品道久久精品| 日本一区二区三区四区| 亚洲男同1069视频| 奇米一区二区三区| 懂色av一区二区夜夜嗨| 91官网在线观看| 欧美大片一区二区| 国产精品的网站| 日韩国产欧美一区二区三区| 久久狠狠亚洲综合| 成人高清免费在线播放| 欧美日韩一本到| 国产片一区二区三区| 一区二区三区色| 精品在线播放午夜| 91在线观看成人| 日韩三级.com| 国产精品国产三级国产普通话三级 | 日本怡春院一区二区| 国产精品一区二区久久精品爱涩| 色婷婷综合五月| 精品久久久三级丝袜| 亚洲欧洲精品天堂一级| 麻豆精品一区二区av白丝在线| 岛国精品在线播放| 日韩欧美色综合| 一区二区三区在线播| 精品一区二区国语对白| 91麻豆精东视频| 久久午夜色播影院免费高清| 亚洲小少妇裸体bbw| 风流少妇一区二区| 91精品久久久久久久91蜜桃 | 亚洲免费在线看| 精品在线亚洲视频| 色欧美片视频在线观看在线视频| 欧美成人一区二区| 亚洲成人动漫在线免费观看| 国产高清无密码一区二区三区| 欧美日本在线视频| 亚洲私人影院在线观看| 国产精品一二三四五| 欧美一区二视频| 亚洲永久精品国产| av一本久道久久综合久久鬼色| 日韩欧美精品在线视频| 午夜成人在线视频| 欧美调教femdomvk| 亚洲婷婷综合久久一本伊一区 | 蜜桃视频免费观看一区| 欧美亚洲综合在线| 亚洲精品ww久久久久久p站| 国产一区二三区好的| 欧美一级搡bbbb搡bbbb| 午夜精品在线看| 欧美视频中文一区二区三区在线观看| 欧美国产精品专区| 国产一区二区三区高清播放| 日韩区在线观看| 美国三级日本三级久久99 | 欧美大片拔萝卜| 午夜精品久久久久久久| 欧美色成人综合| 亚洲一二三区在线观看| 色爱区综合激月婷婷| 亚洲精品伦理在线| 色综合久久综合| 夜夜亚洲天天久久| 欧美在线一区二区三区| 亚洲一区二区三区国产| 欧美午夜影院一区| 日韩在线卡一卡二| 欧美一区二区私人影院日本| 天天做天天摸天天爽国产一区| 欧美丝袜自拍制服另类| 午夜不卡av免费| 欧美成人一区二区三区在线观看| 久久不见久久见免费视频7| 精品国产免费一区二区三区香蕉| 国内精品自线一区二区三区视频| 久久这里只有精品首页| 成人动漫av在线| 一区二区三区四区中文字幕| 欧美系列在线观看| 首页国产丝袜综合| 久久欧美中文字幕| 欧美日韩国产不卡| 日本欧美在线观看| 久久久91精品国产一区二区三区| 岛国精品在线观看| 亚洲综合免费观看高清完整版| 9191精品国产综合久久久久久| 麻豆精品精品国产自在97香蕉| 国产日韩欧美麻豆| 91丝袜美腿高跟国产极品老师| 亚洲成人免费影院| 日韩女优视频免费观看| 国产91精品久久久久久久网曝门 | 国产成人99久久亚洲综合精品| 一区在线中文字幕| 4hu四虎永久在线影院成人| 久草热8精品视频在线观看| 国产精品亲子伦对白| 欧美天天综合网|