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

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

?? gopherenum-depth.c

?? harvest是一個下載html網頁得機器人
?? C
?? 第 1 頁 / 共 2 頁
字號:
    char *gopher_port = NULL;    int y;    if (url_in_db(up->url)) {	/* Have we been here? */	Debug(43, 1, ("Already Visited URL: %s\n", up->url));	return (NULL);    }    if ((y = filter_selection(up))) {	/* Match the URL based on REs */	Debug(43, 1, ("Removing Candidate: [%s] %s\n",		Filter_Type_Name[y], up->url));	return (NULL);    }    if (!visit_server(up)) {	/* Can we visit this server? */	Debug(43, 1, ("Disallowed to Visit Server: %s\n", up->url));	return (NULL);    }    if (!RobotsTxtCheck(up)) {        Debug(43, 1, ("Disallowed by robots.txt: %s\n", up->url));	return (NULL);    }    if (url_retrieve(up)) {	/* Grab the URL; success? */	Debug(43, 1, ("Cannot Retrieve URL: %s\n", up->url));#ifdef DONT_RETRY_FAILS	mark_failed(up);#endif	return (NULL);    }    if (up->md5 && md5_in_db(up->md5)) {	/* Have we been here? */	Debug(43, 1, ("Already Visited MD5: %s\n", up->url));	return (NULL);    }    /* Remember that we've been here before */    if (up->md5 != NULL)	mark_retrieved(up);    if (up->gophertype == 0)	return (NULL);    /*     *  For each pointer, convert it to a URL, and add it to     *  the list of URLs to return.     */    if ((fp = fopen(up->filename, "r")) == NULL) {	log_errno2(__FILE__, __LINE__, up->filename);	return (NULL);    }    Tail = &head;    while (fgets(buf, BUFSIZ, fp)) {	if (buf[0] == '.' || buf[0] == '\n')	    break;	urlbuf = xstrdup(buf);	if ((q = strrchr(buf, '\n')))	    *q = (char) '\0';	p = urlbuf;	if ((q = strchr(p, '\t')) == NULL) {	    errorlog("Illegal Gopher format: No Name: %s\n", buf);	    goto gopher_enum_cont;	}	*q = (char) '\0';	gopher_name = xstrdup(p);	p = q + 1;	if ((q = strchr(p, '\t')) == NULL) {	    errorlog("Illegal Gopher format: No Path: %s\n", buf);	    goto gopher_enum_cont;	}	*q = (char) '\0';	gopher_path = xstrdup(rfc1738_escape(p));	p = q + 1;	if ((q = strchr(p, '\t')) == NULL) {	    errorlog("Illegal Gopher format: No Host: %s\n", buf);	    goto gopher_enum_cont;	}	*q = (char) '\0';	gopher_host = xstrdup(p);	p = q + 1;	if ((q = strchr(p, '\n')) == NULL) {	    errorlog("Illegal Gopher format: No Port: %s\n", buf);	    goto gopher_enum_cont;	}	*q = (char) '\0';	gopher_port = xstrdup(p);	/* Fix for wierd cross-site Gopher links - wessels */	if (!strncasecmp(gopher_path, "ftp%3a", 6))	    goto gopher_enum_cont;	if (!strncasecmp(gopher_path, "ftp:", 4))	    goto gopher_enum_cont;	if (!strncasecmp(gopher_path, "exec%3a", 7))	    goto gopher_enum_cont;	if (!strncasecmp(gopher_path, "exec:", 5))	    goto gopher_enum_cont;	sprintf(newurl, "gopher://%s:%d/%c%s\n", gopher_host,	    atoi(gopher_port), gopher_name[0], gopher_path);	l = (list_t *) xmalloc(sizeof(list_t));	l->ptr = (void *) xstrdup(newurl);	l->next = (list_t *) NULL;	*Tail = l;	Tail = &(l->next);      gopher_enum_cont:	if (gopher_name)	    xfree(gopher_name);	gopher_name = NULL;	if (gopher_path)	    xfree(gopher_path);	gopher_path = NULL;	if (gopher_host)	    xfree(gopher_host);	gopher_host = NULL;	if (gopher_port)	    xfree(gopher_port);	gopher_port = NULL;	if (urlbuf)	    xfree(urlbuf);	gopher_name = NULL;    }    fclose(fp);    return (head);}/* *  process_url() - Retrieves the given URL, computes an MD5, *  and extracts the list of menu pointers within the documents. */static void process_url(up, depth)     URL *up;     int depth;{    list_t *head = 0;    list_t *l = 0;    list_t *next_l = 0;    char *url;    URL *tup;    if (max_depth > 0 && depth > max_depth) {	Debug(43, 1, ("Maximum Depth of %d Reached: %s\n",		max_depth, up->url));	url_close(up);	return;    }    Debug(43, 1, ("Processing: [%2d] %s\n", depth, up->url));    if ((head = gopher_enum(up)) == NULL) {	url_close(up);	return;    }    url_close(up);    /*     *  Now, for each URL in the list, call process_url() if     *  the URL is a Gopher url and it is on the same host     */    for (l = head; l; l = next_l) {	next_l = l->next;	url = (char *) l->ptr;	if (url == (char *) NULL)	    goto free_list_entry;	if ((tup = url_open(url)) == NULL)	    goto free_list_entry;	if ((tup->type != URL_GOPHER)) {	    url_close(tup);	    goto free_list_entry;	}	if (tup->gophertype >= 2) {	/* ignore everything 2 or higher */	    url_close(tup);	    goto free_list_entry;	}	process_url(tup, depth + 1);	/* should be a 1 - menu */      free_list_entry:	xfree(l->ptr);	xfree(l);    }}/* ---------------------------------------------------------------------- *//* *  initialize() - Basic init routines */static void initialize(){    char *s;    FILE *logfp = NULL;#ifdef USE_HOST_CACHE    host_cache_init();#endif    max_depth = url_max = host_max = 0;    if ((s = getenv("HARVEST_URL_MAX")) != NULL)	url_max = atoi(s);    if ((s = getenv("HARVEST_HOST_MAX")) != NULL)	host_max = atoi(s);    if ((s = getenv("HARVEST_DEPTH_MAX")) != NULL)	max_depth = atoi(s);    if ((s = getenv("HARVEST_DEPTH_CUR")) != NULL)	start_depth = atoi(s);    Debug(43, 9, ("HARVEST_DEPTH_CUR=%d\n", s ? s : "NULL"));    if (url_max < 1)	url_max = 250;		/* hard-coded maximum */    if (host_max < 1)	host_max = 1;		/* hard-coded maximum */    if (max_depth < 1)	max_depth = 0;		/* hard-coded maximum */    host_filterfile = getenv("HARVEST_HOST_FILTER");    url_filterfile = getenv("HARVEST_URL_FILTER");    if (getenv("HARVEST_GATHERER_LOGFILE") != (char *) NULL)	logfp = fopen(getenv("HARVEST_GATHERER_LOGFILE"), "a+");    if (logfp == (FILE *) NULL)	logfp = stderr;    init_log3("gopherenum-depth", logfp, stderr);    init_url();    filter_initialize();    /* Open GDBM databases to keep track of where we've been */    urldb_filename = xstrdup(tempnam(NULL, "Gurl"));    urldbf = gdbm_open(urldb_filename, 0, GDBM_NEWDB, 0644, NULL);    if (urldbf == NULL) {	log_errno(urldb_filename);	fatal("gdbm_open: %s: %s", urldb_filename,	    gdbm_strerror(gdbm_errno));    }    hostdb_filename = xstrdup(tempnam(NULL, "Ghost"));    hostdbf = gdbm_open(hostdb_filename, 0, GDBM_NEWDB, 0644, NULL);    if (hostdbf == NULL) {	log_errno(hostdb_filename);	fatal("gdbm_open: %s: %s", hostdb_filename,	    gdbm_strerror(gdbm_errno));    }    md5db_filename = xstrdup(tempnam(NULL, "Gmd5"));    md5dbf = gdbm_open(md5db_filename, 0, GDBM_NEWDB, 0644, NULL);    if (md5dbf == NULL) {	log_errno(md5db_filename);	fatal("gdbm_open: %s: %s", md5db_filename,	    gdbm_strerror(gdbm_errno));    }}/* Die gracefully */static void sigdie(){    if (urldbf != NULL)	gdbm_close(urldbf);    if (hostdbf != NULL)	gdbm_close(hostdbf);    if (md5dbf != NULL)	gdbm_close(md5dbf);    /*     * (void) unlink(urldb_filename);     * (void) unlink(hostdb_filename);     * (void) unlink(md5db_filename);     */    crremove(urldb_filename);    crremove(hostdb_filename);    crremove(md5db_filename);    exit(0);}/* ---------------------------------------------------------------------- */static void usage(){    fprintf(stderr, "Usage: gopherenum-depth gopher-URL\n");    exit(1);}int main(argc, argv)     int argc;     char **argv;{    URL *up;    debug_init();    for (argc--, argv++; argc > 0 && **argv == '-'; argc--, argv++) {	if (strncmp(*argv, "-D", 2) == 0) {	    debug_flag(*argv);	}    }    if (argc != 1)	usage();    signal(SIGTERM, sigdie);	/* Die gracefully */    signal(SIGINT, sigdie);    signal(SIGPIPE, sigdie);	/* Clean up on broken pipe */    initialize();		/* Initialize */    /* Grab the RootNode URL from the command line */    if ((up = url_open(*argv)) == NULL || up->type != URL_GOPHER)	usage();    /* Mark the RootNode */    tree_root = xstrdup(up->url);    printf("%s\n", up->url);	/* Print tree root */    process_url(up, start_depth);	/* Do the Enumeration recursively */    url_close(up);		/* Clean up */    finish_url();    sigdie();    /* NOTREACHED */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区网站| 韩国女主播成人在线| 欧美日韩中文一区| 久久超碰97中文字幕| 久久精品人人做人人爽人人| 国产盗摄一区二区| 亚洲一区二区欧美日韩| 日韩一区二区三区在线观看| 麻豆国产一区二区| 亚洲欧洲精品一区二区三区| 99精品国产热久久91蜜凸| 一区二区三区日韩| 久久久精品天堂| 欧美性一区二区| 成人黄页在线观看| 日本一区二区三区视频视频| 日本韩国一区二区三区视频| 丝袜a∨在线一区二区三区不卡| 欧美成人精品1314www| 91麻豆精品一区二区三区| 国产成人啪午夜精品网站男同| 亚洲天堂精品在线观看| 欧美精品一区男女天堂| 精品久久人人做人人爱| 制服丝袜亚洲精品中文字幕| 91精品办公室少妇高潮对白| 国产91丝袜在线观看| 国产在线精品国自产拍免费| 久久99国产乱子伦精品免费| 亚洲成人一二三| 美女www一区二区| 免播放器亚洲一区| 午夜精品久久久久影视| 全国精品久久少妇| 国模少妇一区二区三区| 精品一区二区在线免费观看| 国产福利一区二区| av激情成人网| 91国产福利在线| 亚洲精品在线免费观看视频| 日韩免费在线观看| 亚洲日本一区二区三区| 中文字幕日韩欧美一区二区三区| 亚洲欧洲日本在线| 日韩在线播放一区二区| 国产盗摄视频一区二区三区| av电影在线不卡| 欧美精品欧美精品系列| 久久这里只有精品首页| 亚洲欧美日韩国产综合| 国模套图日韩精品一区二区| 91影视在线播放| 精品国产电影一区二区| 亚洲激情校园春色| 99视频一区二区| 中文字幕精品综合| 成人a级免费电影| 亚洲国产精品成人综合| 精品一区二区三区av| 精品福利一二区| 国产精品88888| 精品国产乱码久久久久久夜甘婷婷| 亚洲国产欧美另类丝袜| 欧美亚洲一区三区| 一区二区三区四区视频精品免费 | 伊人色综合久久天天人手人婷| 久久99精品一区二区三区三区| 在线影院国内精品| 婷婷久久综合九色综合伊人色| 97se亚洲国产综合自在线观| 中文字幕巨乱亚洲| 99re这里只有精品视频首页| 中文字幕二三区不卡| 99在线精品视频| 亚洲嫩草精品久久| 日韩精品一区国产麻豆| 国产精品系列在线观看| 亚洲精品成a人| 91精品欧美福利在线观看| 国产精品69毛片高清亚洲| 国产精品久久久久久久久晋中 | 国产成人av资源| 亚洲午夜免费电影| 久久久午夜电影| 日韩一区二区视频| 成人午夜视频福利| 亚洲午夜一区二区| 国产亚洲一区字幕| 色呦呦日韩精品| 不卡一区二区在线| 国产精品一区二区91| 日韩精品91亚洲二区在线观看| 日韩欧美自拍偷拍| 欧美色图片你懂的| 波多野结衣的一区二区三区| 久久精工是国产品牌吗| 香蕉乱码成人久久天堂爱免费| 国产欧美一区二区三区沐欲| 欧美日韩一区二区三区四区| 成人网页在线观看| 国产91丝袜在线播放| 国产制服丝袜一区| 另类小说视频一区二区| 日韩影院精彩在线| 亚洲一区二区av在线| 亚洲福利一区二区| 婷婷久久综合九色综合伊人色| 亚洲一区二区不卡免费| 亚洲韩国一区二区三区| 亚洲午夜激情av| 日韩成人dvd| 久久99精品国产麻豆不卡| 成人午夜激情片| 色一区在线观看| 制服丝袜亚洲网站| 精品乱人伦小说| 中文幕一区二区三区久久蜜桃| 日本高清不卡在线观看| 日韩一区二区三区视频| 欧美激情中文不卡| 亚洲永久精品大片| 日韩中文字幕亚洲一区二区va在线| 蜜桃久久精品一区二区| 国产一区二区三区四| 99免费精品在线观看| 在线影视一区二区三区| 精品久久一二三区| 亚洲精品乱码久久久久| 久久精品国产成人一区二区三区| 国产激情一区二区三区四区| av不卡免费电影| 欧美激情一区二区三区| 国产资源精品在线观看| 日韩精品一区二区三区三区免费| 中文一区在线播放| 国产成人免费视频| 欧美激情一区二区三区四区| 成人综合婷婷国产精品久久 | 精品国产一区二区三区四区四| 免费的国产精品| 亚洲精品一区二区三区精华液| 国产精品99久久久久久久vr| 久久久亚洲午夜电影| 欧美在线不卡视频| 蜜臀va亚洲va欧美va天堂 | 欧美日韩国产经典色站一区二区三区 | 97超碰欧美中文字幕| 亚洲va天堂va国产va久| 精品国产一区二区三区忘忧草 | 狠狠狠色丁香婷婷综合激情 | 麻豆成人av在线| 久久久久青草大香线综合精品| 亚洲成人av一区二区三区| 欧美日本在线视频| 麻豆91在线看| 亚洲日穴在线视频| 日韩精品专区在线| www.欧美.com| 日韩激情一二三区| 国产日韩成人精品| 欧美丰满少妇xxxxx高潮对白| 国产成人日日夜夜| 日韩激情在线观看| 亚洲欧洲制服丝袜| 精品国产91乱码一区二区三区 | 日本一区二区免费在线观看视频| 在线视频一区二区三| 国产99久久久精品| 天堂va蜜桃一区二区三区漫画版| 欧美电影免费观看高清完整版在线观看| 成人国产视频在线观看| 国产suv精品一区二区6| 久久国内精品自在自线400部| 亚洲成人你懂的| 一区二区三区在线播| 国产精品久久久久久亚洲伦| 久久网站热最新地址| 91精品欧美一区二区三区综合在| av一区二区不卡| 国产高清精品网站| 国产美女在线精品| 久久不见久久见免费视频7| 三级在线观看一区二区| 石原莉奈一区二区三区在线观看| 一区二区三区四区在线免费观看| 中文字幕一区二区在线观看| 国产精品久久久久久久久动漫| 日本一区二区三区视频视频| 中文字幕乱码日本亚洲一区二区| 国产精品久99| 亚洲va韩国va欧美va精品| 奇米色777欧美一区二区| 久热成人在线视频| 成人一区在线观看| 欧美性大战久久| 久久色.com| 亚洲人成网站影音先锋播放| 日本视频一区二区三区| 大尺度一区二区| 欧美日韩成人在线|