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

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

?? hticons.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
字號:
/*								       HTIcon.c**	ICON MANAGEMENT****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTIcons.c,v 2.30 2000/01/04 20:25:32 kahan Exp $****	This module contains the functions for initializing, adding**	and selecting the icon for local directory listings, FTP and Gopher.****	History:**	   Mar 94	Written by Ari Luotonen, luotonen@dxcern.cern.ch**			Henrik Frystyk, frystyk@w3.org***//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTIcons.h"					 /* Implemented here */struct _HTIconNode {    char *	icon_url;    char *	icon_alt;    char *	type_templ;};/* Globals */PRIVATE HTIconNode * icon_unknown = NULL;	/* Unknown file type */PRIVATE HTIconNode * icon_blank = NULL;		/* Blank icon in heading */PRIVATE HTIconNode * icon_parent = NULL;	/* Parent directory icon */PRIVATE HTIconNode * icon_dir = NULL;		/* Directory icon *//* Type definitions and global variables etc. local to this module */PRIVATE HTList * icons = NULL;PRIVATE int alt_len = 0;			/* Longest ALT text *//* ------------------------------------------------------------------------- */PRIVATE void alt_resize (char * alt){    if (alt) {	int len = strlen(alt);	if (len > alt_len) alt_len = len;    }}PRIVATE BOOL match (char * templ,		    const char * actual){    static char * c1 = NULL;    static char * c2 = NULL;    char * slash1;    char * slash2;    StrAllocCopy(c1,templ);    StrAllocCopy(c2,actual);    slash1 = strchr(c1,'/');    slash2 = strchr(c2,'/');    if (slash1 && slash2) {	*slash1++ = 0;	*slash2++ = 0;	return HTStrMatch(c1,c2) && HTStrMatch(slash1,slash2);    }    else if (!slash1 && !slash2)	return HTStrMatch(c1,c2) ? YES : NO;    else	return NO;}PRIVATE char * prefixed (const char * name, const char * prefix){    char * ret = NULL;    if (name) {	int len = prefix ? strlen(prefix) : 0;	if ((ret = (char *) HT_MALLOC(len + strlen(name) + 2)) == NULL)	    HT_OUTOFMEM("prefixed");	if (prefix) {	    strcpy(ret, prefix);	    if (*prefix && prefix[len-1] != '/') strcat(ret, "/");	    strcat(ret, name);	} else	    strcpy(ret, name);    }    return ret;}PUBLIC char * HTIcon_url (HTIconNode * node){    return node ? node->icon_url : NULL;}/***	Returned string must be freed by caller*/PUBLIC char * HTIcon_alternative (HTIconNode * node, BOOL brackets){    char * ret = NULL;    if (node) {	char * p = NULL;	int len = node->icon_alt ? strlen(node->icon_alt) : 0;	if ((p = ret = (char *) HT_MALLOC(alt_len + 3)) == NULL)	    HT_OUTOFMEM("HTIcon_alt_string");	*p++ = brackets ? '[' : ' ';	if (node->icon_alt) strcpy(p, node->icon_alt);	p += len;	while (len++ < alt_len) *p++=' ';	*p++ = brackets ? ']' : ' ';	*p = 0;    }    return ret;}/***	HTAddIcon(url, alt, type_templ) adds icon:****		<IMG SRC="url" ALT="[alt]">****	for files for which content-type or content-encoding matches**	type_templ.  If type_templ contains a slash, it is taken to be**	a content-type template.  Otherwise, it is a content-encoding**	template.*/PUBLIC BOOL HTIcon_add (const char * url, const char * prefix,			char * alt, char * type_templ){    if (url && type_templ) {	HTIconNode * node;	if ((node = (HTIconNode *) HT_CALLOC(1,sizeof(HTIconNode))) == NULL)	    HT_OUTOFMEM("HTAddIcon");	if (url) node->icon_url = prefixed(url, prefix);	if (alt) StrAllocCopy(node->icon_alt, alt);	if (type_templ) StrAllocCopy(node->type_templ, type_templ);	if (!icons) icons = HTList_new();	HTList_addObject(icons, (void *) node);	alt_resize(alt);	HTTRACE(PROT_TRACE, "AddIcon..... %s => SRC=\"%s\" ALT=\"%s\"\n" _ 		    type_templ _ url _ alt ? alt : "");	return YES;    }    return NO;}/***	Add the icon used for files for which**	no other icon seems appropriate (unknown type).*/PUBLIC BOOL HTIcon_addUnknown (const char * url, const char * prefix,			       char * alt){    if ((icon_unknown = (HTIconNode *) HT_CALLOC(1,sizeof(HTIconNode)))==NULL)        HT_OUTOFMEM("HTAddUnknownIcon");    if (url) icon_unknown->icon_url = prefixed(url, prefix);    if (alt) StrAllocCopy(icon_unknown->icon_alt, alt);    alt_resize(alt);    HTTRACE(PROT_TRACE, "Icon add.... UNKNOWN => SRC=\"%s\" ALT=\"%s\"\n" _ url _ 		alt ? alt : "");    return YES;}/***	Add the blank icon used in the heading of the listing.*/PUBLIC BOOL HTIcon_addBlank (const char * url, const char * prefix, char * alt){    if ((icon_blank = (HTIconNode *) HT_CALLOC(1,sizeof(HTIconNode))) == NULL)        HT_OUTOFMEM("HTAddBlankIcon");    if (url) icon_blank->icon_url = prefixed(url, prefix);    if (alt) StrAllocCopy(icon_blank->icon_alt, alt);    alt_resize(alt);    HTTRACE(PROT_TRACE, "Icon add.... BLANK => SRC=\"%s\" ALT=\"%s\"\n" _ url _ 		alt ? alt : "");    return YES;}/***	Add the parent directory icon.*/PUBLIC BOOL HTIcon_addParent (const char * url, const char * prefix, char * alt){    if ((icon_parent = (HTIconNode *) HT_CALLOC(1,sizeof(HTIconNode))) == NULL)        HT_OUTOFMEM("HTAddBlankIcon");    if (url) icon_parent->icon_url = prefixed(url, prefix);    if (alt) StrAllocCopy(icon_parent->icon_alt, alt);    alt_resize(alt);    HTTRACE(PROT_TRACE, "Icon add.... PARENT => SRC=\"%s\" ALT=\"%s\"\n" _ url _ 		alt ? alt : "");    return YES;}/***	Add the directory icon.*/PUBLIC BOOL HTIcon_addDir (const char * url, const char * prefix, char * alt){    if ((icon_dir = (HTIconNode *) HT_CALLOC(1,sizeof(HTIconNode))) == NULL)        HT_OUTOFMEM("HTAddBlankIcon");    if (url) icon_dir->icon_url = prefixed(url, prefix);    if (alt) StrAllocCopy(icon_dir->icon_alt, alt);    alt_resize(alt);    HTTRACE(PROT_TRACE, "Icon add.... DIRECTORY => SRC=\"%s\" ALT=\"%s\"\n" _ url _ 		alt ? alt : "");    return YES;}/***	Returns the icon corresponding to content_type or content_encoding.**	If no match is found then use "unknown icon"*/PUBLIC HTIconNode * HTIcon_find (HTFileMode	mode,				 HTFormat	content_type,				 HTEncoding	content_encoding){    if (!icon_unknown) icon_unknown = icon_blank;    if (mode == HT_IS_FILE) {	const char * ct = content_type ? HTAtom_name(content_type) : NULL;	const char * ce = content_encoding ? HTAtom_name(content_encoding) : NULL;	HTList * cur = icons;	HTIconNode * node;	while ((node = (HTIconNode*)HTList_nextObject(cur))) {	    char * slash = strchr(node->type_templ,'/');	    if ((ct && slash && match(node->type_templ,ct)) ||		(ce && !slash && HTStrMatch(node->type_templ,ce))) {		return node;	    }	}    } else if (mode == HT_IS_DIR) {	return icon_dir ? icon_dir : icon_unknown;    } else if (mode == HT_IS_BLANK) {	return icon_blank ? icon_blank : icon_unknown;    } else if (mode == HT_IS_PARENT) {	return icon_parent ? icon_parent : icon_unknown;    }    return icon_unknown;}PRIVATE void HTIconNode_delete (HTIconNode* pNode){    if (pNode) {      HT_FREE(pNode->icon_url);      HT_FREE(pNode->icon_alt);      HT_FREE(pNode->type_templ);      HT_FREE(pNode);    }}/***  cleans up all memory used by icons. Should be called by**  HTLibTerminate() (but it isn't)***/PUBLIC void HTIcon_deleteAll (void){    if(icons != NULL) {	HTList * iconList = icons;	HTIconNode * node;	while((node = (HTIconNode*)HTList_removeLastObject(iconList))) {	  HTIconNode_delete(node);	}	/* delete the list as well */	HTList_delete(icons);	icons = NULL;    }    HTIconNode_delete(icon_unknown);    icon_unknown = NULL;    HTIconNode_delete(icon_blank);    icon_blank = NULL;    HTIconNode_delete(icon_parent);    icon_parent = NULL;    HTIconNode_delete(icon_dir);    icon_dir = NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费一区二区| 成人黄色电影在线| 在线观看91视频| 亚洲一区二区三区在线看| 色综合激情久久| 亚洲一二三四久久| 51精品国自产在线| 久久精品99国产精品日本| 久久免费的精品国产v∧| 懂色av噜噜一区二区三区av| 国产精品大尺度| 色婷婷激情久久| 国产精品久久精品日日| 色狠狠桃花综合| 日韩精品91亚洲二区在线观看 | 成人午夜av电影| 亚洲欧美中日韩| 欧美日本韩国一区二区三区视频| 玖玖九九国产精品| 国产精品乱码一区二区三区软件 | 一区二区免费在线| 91精品国产麻豆| 粉嫩嫩av羞羞动漫久久久| 日韩一区在线看| 日韩欧美国产高清| 色综合一区二区| 蜜桃av一区二区三区电影| 国产精品久久久久天堂| 欧美一区二区黄| 99久久er热在这里只有精品15| 日日欢夜夜爽一区| 国产精品久久久久一区二区三区| 成人夜色视频网站在线观看| 国产精品久久久久久久久图文区 | 在线亚洲+欧美+日本专区| 麻豆精品视频在线观看视频| 亚洲国产精品成人综合 | 日本一二三四高清不卡| 欧亚一区二区三区| 高清国产一区二区三区| 首页欧美精品中文字幕| 国产精品日韩成人| 欧美一区二区三区在线视频| 99久久综合99久久综合网站| 蜜桃视频免费观看一区| 一区二区三区视频在线看| 久久久久久久久久久久久女国产乱| 色综合欧美在线视频区| 国产精品一区二区不卡| 欧美美女一区二区三区| 精品国产制服丝袜高跟| 97se亚洲国产综合在线| 国产做a爰片久久毛片| 亚洲激情网站免费观看| 亚洲国产精品成人综合色在线婷婷| 欧美剧情片在线观看| 色综合久久88色综合天天6| 国产在线播精品第三| 日日夜夜精品视频免费| 亚洲一区二区欧美| 综合色中文字幕| 国产精品久久午夜夜伦鲁鲁| 久久久久久久久久久久久久久99| 日韩欧美色电影| 欧美精品自拍偷拍| 欧美日韩一区不卡| 色8久久人人97超碰香蕉987| 99精品视频在线观看| 成人激情免费视频| 欧美激情一区二区三区不卡| voyeur盗摄精品| 国产精品123区| 狠狠色综合播放一区二区| 免费在线观看精品| 日本视频免费一区| 视频一区二区三区入口| 午夜欧美一区二区三区在线播放| 亚洲国产美国国产综合一区二区| 亚洲欧美国产三级| 亚洲三级小视频| 亚洲激情在线激情| 午夜在线成人av| 天天亚洲美女在线视频| 免费在线观看一区| 久久99国产精品久久99 | 久久久久久久久久美女| 久久久国产一区二区三区四区小说| 日韩精品中文字幕一区| 26uuu色噜噜精品一区| 精品久久久网站| 亚洲黄色在线视频| 亚洲精品国产a| 亚洲一区二区在线视频| 亚洲一级片在线观看| 无码av免费一区二区三区试看 | av一区二区三区| 91蜜桃网址入口| 欧美亚洲国产一区二区三区| 欧美日韩激情一区| 亚洲精品一线二线三线无人区| 精品国产免费一区二区三区香蕉| 国产日产欧美一区| 亚洲另类一区二区| 日韩中文字幕不卡| 国产福利不卡视频| 欧洲精品在线观看| 欧美成人三级在线| 国产精品传媒入口麻豆| 亚洲高清免费视频| 国产成人亚洲精品青草天美| 99re成人精品视频| 日韩欧美自拍偷拍| 中文字幕日本不卡| 亚州成人在线电影| 蜜芽一区二区三区| 成人高清av在线| 91精品国产综合久久蜜臀 | 欧美系列在线观看| 91.麻豆视频| 日韩成人一区二区| 精品一区二区三区影院在线午夜| 蜜桃久久av一区| 成人激情小说乱人伦| 色综合久久综合网97色综合| 欧美伊人久久大香线蕉综合69| 欧美日韩一区二区在线观看视频| 久久九九久久九九| 亚洲美女屁股眼交| 人人超碰91尤物精品国产| 国产一区二区三区四区在线观看| www.日韩在线| 精品国产一区二区精华 | 中文av一区特黄| 亚洲国产一区二区视频| 美女视频网站久久| 色婷婷久久一区二区三区麻豆| 91精品国产一区二区三区| 亚洲成a人v欧美综合天堂| 老司机一区二区| 成人福利视频网站| 欧美日本一道本在线视频| 久久久噜噜噜久噜久久综合| 国产三区在线成人av| 青青草伊人久久| 色成人在线视频| 久久色在线观看| 亚洲高清视频中文字幕| 国产精品亚洲午夜一区二区三区| 在线观看网站黄不卡| 午夜不卡在线视频| 成人黄色一级视频| 91精品国产91久久综合桃花| 亚洲午夜在线观看视频在线| 国产成人欧美日韩在线电影| 欧美日韩日日夜夜| 国产精品入口麻豆九色| 一区二区三区四区精品在线视频| 成人国产精品免费观看| 日韩免费福利电影在线观看| 亚洲狠狠丁香婷婷综合久久久| 激情综合色播五月| 一本大道久久a久久精二百 | 日韩国产成人精品| 午夜精品久久久久久久久久久 | 国产无人区一区二区三区| 蜜桃久久精品一区二区| 欧美日韩色综合| 亚洲激情自拍视频| 99热精品一区二区| 日韩一区二区精品在线观看| 奇米影视一区二区三区| 欧美色网一区二区| 1区2区3区欧美| 成年人国产精品| 日本一区二区视频在线观看| 久久精品国产成人一区二区三区| 欧美日韩大陆一区二区| 亚洲精选视频在线| 99re8在线精品视频免费播放| 亚洲女与黑人做爰| av不卡免费电影| 亚洲色图丝袜美腿| 99国内精品久久| 日韩精品一区二区在线观看| 国产精品一卡二| 国产亚洲1区2区3区| 国产九色sp调教91| 久久久国产一区二区三区四区小说 | 国产九色精品成人porny| 欧美日韩国产大片| 最新国产成人在线观看| 欧美在线观看视频一区二区| 亚洲女同ⅹxx女同tv| 色哟哟国产精品免费观看| 亚洲免费资源在线播放| 69堂国产成人免费视频| 首页亚洲欧美制服丝腿| 日韩欧美一二区| 国产精品99久久久久久宅男| 国产精品护士白丝一区av|