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

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

?? htmulti.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 2 頁
字號:
PRIVATE HTArray * dir_matches (char * path){    static char * required[MAX_SUFF+1];    static char * actual[MAX_SUFF+1];    int m,n;    char * dirname = NULL;    char * basename = NULL;    int baselen;    char * multi = NULL;    DIR * dp;    struct dirent * dirbuf;    HTArray * matches = NULL;#ifdef HT_REENTRANT    struct dirent result;				         /* For readdir_r */#endif    if (!path) return NULL;    StrAllocCopy(dirname, path);    basename = (strrchr(dirname, '/'));    if (!basename)	goto dir_match_failed;    *basename++ = 0;    multi = strrchr(basename, MULTI_SUFFIX[0]);    if (multi && !strcasecomp(multi, MULTI_SUFFIX))	*multi = 0;    baselen = strlen(basename);    m = HTSplitFilename(basename, required);    dp = opendir(dirname);    if (!dp) {	HTTRACE(PROT_TRACE, "Warning..... Can't open directory %s\n" _ dirname);	goto dir_match_failed;    }    matches = HTArray_new(VARIANTS);#ifdef HAVE_READDIR_R_2	while ((dirbuf = (struct dirent *) readdir_r(dp, &result))) {#elif defined(HAVE_READDIR_R_3)        while (readdir_r(dp, &result, &dirbuf) == 0) {#else	while ((dirbuf = readdir(dp))) {#endif /* HAVE_READDIR_R_2 */	if (!dirbuf->d_ino) continue;	/* Not in use */	if (!strcmp(dirbuf->d_name,".") ||	    !strcmp(dirbuf->d_name,"..") ||	    !strcmp(dirbuf->d_name, DEFAULT_DIR_FILE))	    continue;	/* Use of direct->namlen is only valid in BSD'ish system */	/* Thanks to chip@chinacat.unicom.com (Chip Rosenthal) */	/* if ((int)(dirbuf->d_namlen) >= baselen) { */	if ((int) strlen(dirbuf->d_name) >= baselen) {	    n = HTSplitFilename(dirbuf->d_name, actual);	    if (multi_match(required, m, actual, n)) {		HTContentDescription * cd;		if ((cd = (HTContentDescription  *)		     HT_CALLOC(1, sizeof(HTContentDescription))) == NULL)		    HT_OUTOFMEM("dir_matches");		if (HTBind_getFormat(dirbuf->d_name,				     &cd->content_type,				     &cd->content_encoding,				     &cd->content_transfer,				     &cd->content_language,				     &cd->quality)) {		    if (cd->content_type) {			if ((cd->filename = (char *) HT_MALLOC(strlen(dirname) + 2 + strlen(dirbuf->d_name))) == NULL)			    HT_OUTOFMEM("dir_matches");			sprintf(cd->filename, "%s/%s", dirname, dirbuf->d_name);			HTArray_addObject(matches, (void *) cd);		    } else {			HT_FREE(cd);		    }		} else {		    HT_FREE(cd);		}	    }	}    }    closedir(dp);  dir_match_failed:    HT_FREE(dirname);    return matches;}/***	Get the best match for a given file**	-----------------------------------** On entry:**	req->conversions  accepted content-types**	req->encodings	  accepted content-transfer-encodings**	req->languages	  accepted content-languages**	path		  absolute pathname of the filename for**			  which the match is desired.** On exit:**	returns	a newly allocated absolute filepath.*/PRIVATE char * HTGetBest (HTRequest * req, char * path){    HTArray * variants = NULL;    char * representation = NULL;    if (!path || !*path) return NULL;    if ((variants = dir_matches(path)) == NULL) {	HTTRACE(PROT_TRACE, "No matches.. for \"%s\"\n" _ path);	return NULL;    }#ifdef HTDEBUG    if (PROT_TRACE) {	void ** data;	HTContentDescription * cd = HTArray_firstObject(variants, data);	HTTRACE(PROT_TRACE, "Multi....... Possibilities for \"%s\"\n" _ path);	HTTRACE(PROT_TRACE, "     QUALITY CONTENT-TYPE         LANGUAGE ENCODING  FILE\n");	while (cd) {	    HTTRACE(PROT_TRACE, "     %.4f  %-20.20s %-8.8s %-10.10s %s\n" _		    cd->quality _		    cd->content_type    ?HTAtom_name(cd->content_type)  :"-\t" _		    cd->content_language?HTAtom_name(cd->content_language):"-" _		    cd->content_encoding?HTAtom_name(cd->content_encoding):"-" _		    cd->filename        ?cd->filename                    :"-");	    cd = (HTContentDescription *) HTArray_nextObject(variants, data);	}    }#endif /* HTDEBUG */    /*    ** Finally get the best variant which is readable    */    if (HTRank(req, variants)) {	void ** data;	HTContentDescription * cd = HTArray_firstObject(variants, data);	while (cd) {	    if (cd->filename) {		if (access(cd->filename, R_OK) != -1)		    StrAllocCopy(representation, cd->filename);		else HTTRACE(PROT_TRACE, "Multi....... `%s\' is not readable\n" _ 			    cd->filename);	    }	    HT_FREE(cd->filename);	    HT_FREE(cd);	    cd = (HTContentDescription *) HTArray_nextObject(variants, data);	}    }    HTArray_delete(variants);    return representation;}PRIVATE int welcome_value (char * name){    HTList * cur = welcome_names;    char * welcome;    int v = 0;    while ((welcome = (char*)HTList_nextObject(cur))) {	v++;	if (!strcmp(welcome,name)) return v;    }    return 0;}PRIVATE char * get_best_welcome (char * path){    char * best_welcome = NULL;    int best_value = 0;    DIR * dp;    struct dirent * dirbuf;    char * last = strrchr(path, '/');    if (!welcome_names) {	HTAddWelcome("Welcome.html");	HTAddWelcome("welcome.html");#if 0	HTAddWelcome("Index.html");#endif	HTAddWelcome("index.html");    }    if (last && last!=path) *last = 0;    dp = opendir(path);    if (last && last!=path) *last='/';    if (!dp) {	HTTRACE(PROT_TRACE, "Warning..... Can't open directory %s\n" _ path);	return NULL;    }    while ((dirbuf = readdir(dp))) {	if (!dirbuf->d_ino ||	    !strcmp(dirbuf->d_name,".") ||	    !strcmp(dirbuf->d_name,"..") ||	    !strcmp(dirbuf->d_name, DEFAULT_DIR_FILE))	    continue;	else {	    int v = welcome_value(dirbuf->d_name);	    if (v > best_value) {		best_value = v;		StrAllocCopy(best_welcome, dirbuf->d_name);	    }	}    }    closedir(dp);    if (best_welcome) {	char * welcome;	if ((welcome = (char *) HT_MALLOC(strlen(path) + strlen(best_welcome)+2)) == NULL)	    HT_OUTOFMEM("get_best_welcome");	sprintf(welcome, "%s%s%s", path, last ? "" : "/", best_welcome);	HT_FREE(best_welcome);	HTTRACE(PROT_TRACE, "Welcome..... \"%s\"\n" _ welcome);	return welcome;    }    return NULL;}#endif /* HAVE_READDIR *//***	Do multiformat handling**	-----------------------** On entry:**	req->conversions  accepted content-types**	req->encodings	  accepted content-transfer-encodings**	req->languages	  accepted content-languages**	path		  absolute pathname of the filename for**			  which the match is desired.**	stat_info	  pointer to result space.**** On exit:**	returns	a newly allocated absolute filepath of the best**		match, or NULL if no match.**	stat_info	  will contain inode information as**			  returned by stat().*/PUBLIC char * HTMulti (HTRequest *	req,		       char *		path,		       struct stat *	stat_info){    char * new_path = NULL;    int stat_status = -1;    if (!req || !path || !*path || !stat_info)	return NULL;#ifdef HAVE_READDIR    if (*(path+strlen(path)-1) == '/') {	/* Find welcome page */	new_path = get_best_welcome(path);	if (new_path) path = new_path;    } else{	char * multi = strrchr(path, MULTI_SUFFIX[0]);	if (multi && !strcasecomp(multi, MULTI_SUFFIX)) {	    HTTRACE(PROT_TRACE, "Multi....... by %s suffix\n" _ MULTI_SUFFIX);	    if (!(new_path = HTGetBest(req, path))) {		HTTRACE(PROT_TRACE, "Multi....... failed -- giving up\n");		return NULL;	    }	    path = new_path;	} else {	    stat_status = HT_STAT(path, stat_info);	    if (stat_status == -1) {		HTTRACE(PROT_TRACE, "AutoMulti... can't stat \"%s\"(errno %d)\n" _ 			    path _ errno);		if (!(new_path = HTGetBest(req, path))) {		    HTTRACE(PROT_TRACE, "AutoMulti... failed -- giving up\n");		    return NULL;		}		path = new_path;	    }	}    }#endif /* HAVE_READDIR */    if (stat_status == -1)	stat_status = HT_STAT(path, stat_info);    if (stat_status == -1) {	HTTRACE(PROT_TRACE, "Stat fails.. on \"%s\" -- giving up (errno %d)\n" _ 		    path _ errno);	return NULL;    } else {	if (!new_path) {	    StrAllocCopy(new_path, path);	    return new_path;	}	else return path;    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜在线电影| 精品国产污污免费网站入口| 国产精品理伦片| 成人深夜在线观看| 欧美国产欧美综合| 99国产精品一区| 亚洲精品伦理在线| 欧美精品日日鲁夜夜添| 舔着乳尖日韩一区| 日韩欧美一级在线播放| 精品制服美女丁香| 久久综合久久综合九色| 99国产精品久久久| 亚洲不卡一区二区三区| 欧美变态tickle挠乳网站| 蜜桃免费网站一区二区三区 | 95精品视频在线| 一区二区三区四区五区视频在线观看| 欧美日韩在线播| 久久不见久久见中文字幕免费| 久久久久久久久久久99999| 成人免费观看视频| 亚洲一区在线视频观看| 最新久久zyz资源站| 欧美久久一二三四区| 国产精品一区二区久久不卡| 一区二区三区免费在线观看| 日韩精品一区二区三区视频在线观看 | 蜜桃久久久久久| 国产精品欧美一级免费| 欧美午夜精品久久久| 激情六月婷婷久久| 亚洲一卡二卡三卡四卡五卡| 久久综合给合久久狠狠狠97色69| 99久久综合99久久综合网站| 日韩成人伦理电影在线观看| 国产精品国产馆在线真实露脸| 51精品秘密在线观看| 成人免费av资源| 日产国产欧美视频一区精品| 国产精品久线观看视频| 欧美乱妇15p| 91免费视频大全| 欧美自拍偷拍午夜视频| 久久国产夜色精品鲁鲁99| 亚洲男帅同性gay1069| 欧美videos大乳护士334| 欧美伊人精品成人久久综合97| 国产乱码精品一品二品| 日韩精品三区四区| 伊人色综合久久天天| 欧美韩日一区二区三区| 日韩三级免费观看| 在线观看日产精品| 成人在线视频首页| 国产在线看一区| 日本中文字幕不卡| 亚洲成年人网站在线观看| 国产精品久久99| 国产欧美日韩综合精品一区二区| 欧美精品久久久久久久多人混战| 色婷婷激情一区二区三区| 北条麻妃国产九九精品视频| 国产美女主播视频一区| 麻豆精品一二三| 欧美aⅴ一区二区三区视频| 亚洲国产毛片aaaaa无费看| 亚洲视频中文字幕| 亚洲精品乱码久久久久久黑人| 国产精品久久久久久妇女6080 | 欧美aaaaa成人免费观看视频| 亚洲午夜精品久久久久久久久| 亚洲三级久久久| 18欧美乱大交hd1984| 中文字幕一区二区三中文字幕 | 亚洲欧美一区二区三区久本道91 | 美女视频第一区二区三区免费观看网站| 亚洲人成亚洲人成在线观看图片| 中文字幕乱码亚洲精品一区| 日本一区二区成人| 国产精品视频一区二区三区不卡| 久久久久久久久久美女| 久久久精品蜜桃| 国产精品久久久久影视| 国产精品剧情在线亚洲| 中文字幕一区二区三区不卡在线 | 国产一区二区三区免费| 国产精一区二区三区| 国产精品一区二区免费不卡| 欧美一区二区三区白人| 日韩一区二区免费视频| 精品国产一区二区三区久久久蜜月| 91精品国产综合久久婷婷香蕉 | 欧美亚日韩国产aⅴ精品中极品| 欧美午夜精品久久久久久孕妇| 欧美日韩一级视频| 日韩女优电影在线观看| 精品免费国产一区二区三区四区| 久久综合色之久久综合| 中文字幕亚洲综合久久菠萝蜜| 亚洲综合精品久久| 美国三级日本三级久久99| 国产在线视视频有精品| 波多野结衣中文字幕一区二区三区| 91在线观看视频| 欧美三级日韩三级国产三级| 日韩欧美一二三四区| 国产午夜精品久久| 一区二区三区四区国产精品| 日本免费新一区视频| 国产在线精品一区二区不卡了 | 日韩免费看的电影| 中文字幕国产一区二区| 亚洲精品国产一区二区三区四区在线 | 久久精品免费在线观看| 亚洲女性喷水在线观看一区| 日韩在线一二三区| 国产精一品亚洲二区在线视频| 91香蕉视频在线| 欧美一区2区视频在线观看| 欧美韩国日本不卡| 日日夜夜精品视频天天综合网| 国产精品538一区二区在线| 91福利在线导航| 国产亚洲欧美色| 亚洲成人免费观看| 丰满岳乱妇一区二区三区| 欧美一区二区在线免费播放| 国产精品色婷婷久久58| 日本成人在线电影网| 成人毛片在线观看| 欧美一区二区在线免费播放 | 一区二区欧美精品| 国产呦精品一区二区三区网站| 在线观看日韩电影| 国产精品三级在线观看| 蜜臀av国产精品久久久久| 99国产精品久| 中文字幕精品一区二区三区精品| 麻豆精品在线视频| 欧美日韩色一区| 综合激情成人伊人| 91麻豆精品国产91久久久久久久久 | 99精品在线免费| 26uuu精品一区二区| 亚洲午夜久久久久久久久电影网 | 色综合欧美在线| 国产三级久久久| 国精品**一区二区三区在线蜜桃| 欧美色欧美亚洲另类二区| 中文字幕一区二区三区色视频| 国产一二精品视频| 日韩精品一区二区三区视频播放 | 精品久久久久久久久久久久久久久久久| 亚洲日本一区二区| 波波电影院一区二区三区| 久久久91精品国产一区二区三区| 免费美女久久99| 欧美福利电影网| 午夜精品福利一区二区三区av | 欧美电影免费观看高清完整版在| 不卡av在线网| 亚洲天堂网中文字| 波多野结衣中文一区| 1区2区3区欧美| 91蝌蚪porny| 一区二区三区中文字幕在线观看| 99久久精品免费观看| 亚洲欧美另类久久久精品| 99久久精品免费看国产| 亚洲欧美另类图片小说| 日本精品一级二级| 亚洲卡通动漫在线| 欧美亚洲免费在线一区| 亚洲午夜三级在线| 欧美久久婷婷综合色| 久久精品国产色蜜蜜麻豆| 欧美成人一区二区三区在线观看| 久久精品国产免费| 久久精品一区二区| 成人成人成人在线视频| 最新国产精品久久精品| 欧美系列亚洲系列| 免费成人在线观看视频| 26uuu另类欧美亚洲曰本| 国产精品一区二区久激情瑜伽| 国产嫩草影院久久久久| 95精品视频在线| 日韩精品色哟哟| 国产亚洲综合在线| 91精品办公室少妇高潮对白| 亚洲sss视频在线视频| 欧美videofree性高清杂交| 顶级嫩模精品视频在线看| 夜夜夜精品看看| 亚洲精品久久久蜜桃| 日韩西西人体444www| 国产成人精品亚洲777人妖| 亚洲欧美日韩国产另类专区| 欧美猛男gaygay网站|