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

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

?? htmulti.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***	CONTENT NEGOTIATION****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTMulti.c,v 2.36 2000/01/06 10:48:50 kahan Exp $**** History:**	March 94  AL	Separated from HTFile.c because**			multiformat handling would be a mess in VMS.*//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTMulti.h"#include "HTBind.h"#include "HTFile.h"#define MULTI_SUFFIX	".multi"/* Extension for scanning formats */#define MAX_SUFF	15	/* Maximum number of suffixes for a file */#define VARIANTS	4	/* We start with this array size */typedef struct _HTContentDescription {    char *	filename;    HTFormat	content_type;    HTLanguage	content_language;    HTEncoding	content_encoding;    HTEncoding	content_transfer;    int		content_length;    double	quality;} HTContentDescription;PRIVATE HTList * welcome_names = NULL;	/* Welcome.html, index.html etc. *//* ------------------------------------------------------------------------- *//***  Sort the q values in descending order*/PRIVATE int VariantSort (const void * a, const void * b){    HTContentDescription * aa = *(HTContentDescription **) a;    HTContentDescription * bb = *(HTContentDescription **) b;    if (aa && bb) return (aa->quality > bb->quality) ? -1 : 1;    return bb - aa;}/* * Added by takada@seraph.ntt.jp (94/04/08) */PRIVATE BOOL lang_match (HTAtom * tmplate, HTAtom * actual){    const char *t, *a;    char *st, *sa;    BOOL match = NO;    if (tmplate && actual &&	(t = HTAtom_name(tmplate)) && (a = HTAtom_name(actual))) {	st = strchr(t, '_');	sa = strchr(a, '_');	if ((st != NULL) && (sa != NULL)) {	    if (!strcasecomp(t, a))	      match = YES;	    else	      match = NO;	}	else {	    if (st != NULL) *st = 0;	    if (sa != NULL) *sa = 0;	    if (!strcasecomp(t, a))	      match = YES;	    else	      match = NO;	    if (st != NULL) *st = '_';	    if (sa != NULL) *sa = '_';	}    }    return match;}PRIVATE double type_value (HTAtom * content_type, HTList * accepted){    if (!content_type) return (1.0);    if (accepted) {	HTList * cur = accepted;	HTPresentation * pres;	HTPresentation * wild = NULL;	while ((pres = (HTPresentation *) HTList_nextObject(cur))) {	    if (pres->rep == content_type)		return pres->quality;	    else if (HTMIMEMatch(pres->rep, content_type))		wild = pres;	}	if (wild) return wild->quality;	else return (0.0);				  /* Nothing matched */    }    return (1.0);				      /* We accept all types */}PRIVATE double lang_value (HTAtom * language, HTList * accepted){    if (!language) return (1.0);    if (accepted) {	HTList * cur = accepted;	HTAcceptNode * node;	HTAcceptNode * wild = NULL;	while ((node = (HTAcceptNode *) HTList_nextObject(cur))) {	    if (node->atom == language)		return node->quality;	    /*	     * patch by takada@seraph.ntt.jp (94/04/08)	     * the original line was	     * else if (HTMIMEMatch(node->atom, language)) {	     * and the new line is	     */	    else if (lang_match(node->atom, language))		wild = node;	}	if (wild) return wild->quality;	else return (0.0);				  /* Nothing matched */    }    return (1.0);				  /* We accept all languages */}PRIVATE double encoding_value (HTAtom * encoding, HTList * accepted){    if (!encoding) return (1.0);    if (accepted) {	HTList * cur = accepted;	HTAcceptNode * node;	HTAcceptNode * wild = NULL;	const char * e = HTAtom_name(encoding);	if (!strcmp(e, "7bit") || !strcmp(e, "8bit") || !strcmp(e, "binary"))	    return (1.0);	while ((node = (HTAcceptNode*)HTList_nextObject(cur))) {	    if (node->atom == encoding)		return node->quality;	    else if (HTMIMEMatch(node->atom, encoding))		wild = node;	}	if (wild) return wild->quality;	else return (0.0);				  /* Nothing matched */    }    return (1.0);				  /* We accept all encodings */}PRIVATE BOOL HTRank (HTRequest * request, HTArray * variants){    HTContentDescription * cd;    void ** data;    if (!variants) {	HTTRACE(PROT_TRACE, "Ranking..... No variants\n");	return NO;    }    /*     **  Walk through the list of local and global preferences and find the    **  overall q factor for each variant    */    cd = (HTContentDescription *) HTArray_firstObject(variants, data);    while (cd) {	double ctq_local  = type_value(cd->content_type, HTRequest_conversion(request));	double ctq_global = type_value(cd->content_type, HTFormat_conversion());	double clq_local  = lang_value(cd->content_language, HTRequest_language(request));	double clq_global = lang_value(cd->content_language, HTFormat_language());	double ceq_local  = encoding_value(cd->content_encoding, HTRequest_encoding(request));	double ceq_global = encoding_value(cd->content_encoding, HTFormat_contentCoding());	HTTRACE(PROT_TRACE, "Qualities... Content type: %.3f, Content language: %.3f, Content encoding: %.3f\n" _ 		    HTMAX(ctq_local, ctq_global) _ 		    HTMAX(clq_local, clq_global) _ 		    HTMAX(ceq_local, ceq_global));	cd->quality *= (HTMAX(ctq_local, ctq_global) *			HTMAX(clq_local, clq_global) *			HTMAX(ceq_local, ceq_global));	cd = (HTContentDescription *) HTArray_nextObject(variants, data);    }    /* Sort the array of all our accepted preferences */    HTArray_sort(variants, VariantSort);    /* Write out the result */#ifdef HTDEBUG     if (PROT_TRACE) {	int cnt = 1;	cd = (HTContentDescription *) HTArray_firstObject(variants, data);	HTTRACE(PROT_TRACE, "Ranking.....\n");	HTTRACE(PROT_TRACE, "RANK QUALITY CONTENT-TYPE         LANGUAGE ENCODING  FILE\n");	while (cd) {	    HTTRACE(PROT_TRACE, "%d.   %.4f  %-20.20s %-8.8s %-10.10s %s\n" _		    cnt++ _		    cd->quality _		    cd->content_type ? HTAtom_name(cd->content_type) : "-" _		    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 */    return YES;}/* PUBLIC						HTSplitFilename()****	Split the filename to an array of suffixes.**	Return the number of parts placed to the array.**	Array should have MAX_SUFF+1 items.*/PRIVATE int HTSplitFilename (char * s_str, char ** s_arr){    const char *delimiters = HTBind_delimiters();    char * start = s_str;    char * end;    char save;    int i;    if (!s_str || !s_arr) return 0;    for (i=0; i < MAX_SUFF && *start; i++) {	for(end=start+1; *end && !strchr(delimiters, *end); end++);	save = *end;	*end = 0;	StrAllocCopy(s_arr[i], start);	/* Frees the previous value */	*end = save;	start = end;    }    HT_FREE(s_arr[i]);       /* Terminating NULL */    return i;}/***	Set default file name for welcome page on each directory.*/PUBLIC void HTAddWelcome (char * name){    if (name) {	char * mycopy = NULL;	StrAllocCopy(mycopy,name);	if (!welcome_names)	    welcome_names = HTList_new();	HTList_addObject(welcome_names, (void*)mycopy);    }}#ifdef HAVE_READDIR/* PRIVATE						multi_match()****	Check if actual filename (split in parts) fulfills**	the requirements.*/PRIVATE BOOL multi_match (char ** required, int m, char ** actual, int n){    int c;    int i,j;#ifdef VMS    for(c=0;  c<m && c<n && !strcasecomp(required[c], actual[c]);  c++);#else /* not VMS */    for(c=0;  c<m && c<n && !strcmp(required[c], actual[c]);  c++);#endif /* not VMS */    if (!c) return NO;		/* Names differ rigth from start */    for(i=c; i<m; i++) {	BOOL found = NO;	for(j=c; j<n; j++) {#ifdef VMS	    if (!strcasecomp(required[i], actual[j])) {#else /* not VMS */	    if (!strcmp(required[i], actual[j])) {#endif /* not VMS */		found = YES;		break;	    }	}	if (!found) return NO;    }    return YES;}/***	Get multi-match possibilities for a given file**	----------------------------------------------** On entry:**	path	absolute path to one file in a directory,**		may end in .multi.** On exit:**	returns	a list of ContentDesription structures**		describing the mathing files.***/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线亚洲一区观看| 成人国产在线观看| 丝袜诱惑制服诱惑色一区在线观看| 中文字幕高清不卡| 夜夜嗨av一区二区三区| 亚洲综合图片区| 精品在线一区二区三区| 不卡大黄网站免费看| 9191国产精品| 国产午夜精品一区二区三区嫩草 | 3atv在线一区二区三区| 精品免费日韩av| 中文字幕一区二区三区精华液| 亚洲人吸女人奶水| 国模套图日韩精品一区二区| 欧美影视一区在线| 中文字幕中文在线不卡住| 免费成人在线网站| 91精品欧美福利在线观看| 成人欧美一区二区三区小说 | 欧美日韩精品综合在线| 欧美激情综合在线| 久久99热99| 日韩一区二区三区三四区视频在线观看| 国产三区在线成人av| 精品在线你懂的| 亚洲精品一区二区在线观看| 蜜桃久久精品一区二区| 日韩欧美中文一区二区| 毛片一区二区三区| 久久久综合精品| 奇米影视一区二区三区| 99re这里只有精品视频首页| 久久夜色精品国产欧美乱极品| 蜜臀a∨国产成人精品| 91.麻豆视频| 蜜桃91丨九色丨蝌蚪91桃色| 久久久久高清精品| 99久久国产免费看| 一区二区国产视频| 色婷婷久久综合| 香蕉成人啪国产精品视频综合网| 欧美亚洲国产一区二区三区| 亚洲精品日韩专区silk| 欧美精品在线观看一区二区| 精品一区二区免费视频| 国产精品九色蝌蚪自拍| 欧美在线制服丝袜| 国产麻豆日韩欧美久久| 夜夜操天天操亚洲| 精品日韩一区二区| 色噜噜夜夜夜综合网| 91婷婷韩国欧美一区二区| 日韩理论电影院| 欧美顶级少妇做爰| 91在线丨porny丨国产| 免费观看在线色综合| 亚洲欧美日韩国产一区二区三区| 91麻豆精品国产| 成人性生交大片免费看中文| 一区二区三区免费网站| 精品电影一区二区| 日本国产一区二区| 成人中文字幕电影| 捆绑变态av一区二区三区| 亚洲视频综合在线| 久久精品视频一区二区| 日韩视频免费观看高清在线视频| 99国产精品久久久久久久久久| 亚洲444eee在线观看| 国产精品久久久99| 国产精品成人网| 国产精品久久精品日日| 国产精品无遮挡| 国产欧美一区二区精品忘忧草| 欧美午夜精品一区二区蜜桃| 91极品视觉盛宴| 欧美日韩一区在线观看| 91久久奴性调教| 国产在线日韩欧美| 亚洲成a天堂v人片| 1024成人网| 国产精品国产三级国产aⅴ原创 | 91香蕉视频污在线| 懂色中文一区二区在线播放| 午夜精品免费在线| 亚洲伦在线观看| 欧美经典三级视频一区二区三区| 日韩手机在线导航| 91精品国产乱| 欧美一区二区三区视频在线观看| 欧美日韩国产电影| 精品福利一区二区三区免费视频| 久久精品一区二区三区av| 中文字幕在线一区免费| 亚洲成av人片在线| 粉嫩高潮美女一区二区三区| 色综合久久久网| 欧美一级生活片| 伊人开心综合网| 亚洲图片欧美色图| 国产aⅴ综合色| 制服视频三区第一页精品| 久久久无码精品亚洲日韩按摩| 一区二区三区日韩精品视频| 国产大片一区二区| 91精品婷婷国产综合久久竹菊| 国产精品天天摸av网| 免费av成人在线| 精品视频在线视频| 成人欧美一区二区三区黑人麻豆 | 成人免费毛片嘿嘿连载视频| 欧美一区二区网站| 亚洲欧美日韩国产另类专区| 久久国产乱子精品免费女| 欧美日韩国产综合视频在线观看 | 粉嫩久久99精品久久久久久夜| 91精品国产综合久久精品图片| 中文字幕一区二区三区四区不卡 | 欧美色图在线观看| 一区二区三区在线观看视频| 国产**成人网毛片九色| 久久久一区二区三区捆绑**| 蜜桃av一区二区三区| 欧美一区二区在线免费播放| 一区二区免费在线播放| 一本到不卡精品视频在线观看| 国产精品入口麻豆原神| 成人免费看的视频| 国产欧美1区2区3区| 成人sese在线| 亚洲欧洲av色图| 在线观看亚洲a| 奇米在线7777在线精品 | 日本一区二区成人在线| 99精品久久99久久久久| 一区二区三区高清| 欧美高清www午色夜在线视频| 麻豆freexxxx性91精品| 欧美精品一区二区三区视频| 日本成人中文字幕在线视频| 国产亚洲一本大道中文在线| 不卡影院免费观看| 一区二区三区四区av| 精品日本一线二线三线不卡| 麻豆精品视频在线观看| 亚洲欧美日韩中文字幕一区二区三区| 欧美三级在线播放| 国产精品12区| 麻豆国产91在线播放| 亚洲色图在线视频| 4438亚洲最大| 97精品视频在线观看自产线路二| 人禽交欧美网站| 一区二区三区**美女毛片| 久久九九久久九九| 欧美日韩精品一区二区三区| 成人综合激情网| 精品伊人久久久久7777人| 一区二区三区日韩欧美| 国产精品第四页| 国产午夜亚洲精品理论片色戒| 91精品在线观看入口| 91国内精品野花午夜精品| 成人高清伦理免费影院在线观看| 加勒比av一区二区| 久久国产精品第一页| 秋霞午夜鲁丝一区二区老狼| 午夜精品久久久久久久久| 亚洲国产精品久久艾草纯爱| 亚洲图片欧美综合| 午夜不卡av免费| 日本少妇一区二区| 另类专区欧美蜜桃臀第一页| 日本成人在线不卡视频| 国内精品国产成人| 大尺度一区二区| 欧美最猛性xxxxx直播| 欧美视频一二三区| 久久久精品影视| 亚洲黄色小视频| 奇米四色…亚洲| 成人免费精品视频| 欧美日韩亚洲综合在线| 欧美一二区视频| 日本一区二区免费在线| 亚洲综合视频在线观看| 日韩av电影免费观看高清完整版| 另类小说综合欧美亚洲| 99久久伊人网影院| 91精品一区二区三区久久久久久 | 国产一区二区三区黄视频 | 久久久亚洲综合| 亚洲在线观看免费| 国产精品一二三| 欧美日韩黄色影视| 亚洲欧美一区二区三区久本道91| 日韩中文字幕亚洲一区二区va在线| 精品在线视频一区| 欧美一区二区三区人|