⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htanchor.c

📁 www工具包. 这是W3C官方支持的www支撑库. 其中提供通用目的的客户端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
💻 C
📖 第 1 页 / 共 3 页
字号:
	char * charset = HTAssocList_findObject(me->type_parameters,"charset");	return HTAtom_for(charset);    }    return NULL;}PUBLIC BOOL HTAnchor_setCharset (HTParentAnchor * me, HTCharset charset){    return HTAnchor_addFormatParam(me, "charset", HTAtom_name(charset));}/***	Level parameter to Content-Type*/PUBLIC HTLevel HTAnchor_level (HTParentAnchor * me){    if (me && me->type_parameters) {	char * level = HTAssocList_findObject(me->type_parameters, "level");	return HTAtom_for(level);    }    return NULL;}PUBLIC BOOL HTAnchor_setLevel (HTParentAnchor * me, HTLevel level){    return HTAnchor_addFormatParam(me, "level", HTAtom_name(level));}/***	Content Encoding*/PUBLIC HTList * HTAnchor_encoding (HTParentAnchor * me){    return me ? me->content_encoding : NULL;}PUBLIC BOOL HTAnchor_addEncoding (HTParentAnchor * me, HTEncoding encoding){    if (me && encoding) {	if (!me->content_encoding) me->content_encoding = HTList_new();	return HTList_addObject(me->content_encoding, encoding);    }    return NO;}PUBLIC BOOL HTAnchor_deleteEncoding (HTParentAnchor * me, HTEncoding encoding){    return (me && me->content_encoding && encoding) ?	HTList_removeObject(me->content_encoding, encoding) : NO;}PUBLIC BOOL HTAnchor_deleteEncodingAll (HTParentAnchor * me){    if (me && me->content_encoding) {	HTList_delete(me->content_encoding);	me->content_encoding = NULL;	return YES;    }    return NO;}/***	Content Language*/PUBLIC HTList * HTAnchor_language (HTParentAnchor * me){    if (me) {	if (me->content_language == NULL && me->headers) {	    char * value = HTAssocList_findObject(me->headers, "content-language");	    char * field;	    if (!me->content_language) me->content_language = HTList_new();	    while ((field = HTNextField(&value)) != NULL) {		char * lc = field;		while ((*lc = TOLOWER(*lc))) lc++;		HTList_addObject(me->content_language, HTAtom_for(field));	    }	}	return me->content_language;    }    return NULL;}PUBLIC BOOL HTAnchor_addLanguage (HTParentAnchor * me, HTLanguage language){    if (me && language) {	if (!me->content_language) me->content_language = HTList_new();	return HTList_addObject(me->content_language, language);    }    return NO;}PUBLIC BOOL HTAnchor_deleteLanguageAll (HTParentAnchor * me){    if (me && me->content_language) {	HTList_delete(me->content_language);	me->content_language = NULL;	return YES;    }    return NO;}/***	Content Length*/PUBLIC long int HTAnchor_length (HTParentAnchor * me){    return me ? me->content_length : -1;}PUBLIC void HTAnchor_setLength (HTParentAnchor * me, long int length){    if (me) me->content_length = length;}PUBLIC void HTAnchor_addLength (HTParentAnchor * me, long int deltalength){    if (me) {	if (me->content_length < 0)	    me->content_length = deltalength;	else	    me->content_length += deltalength;    }}/***	Content Transfer Encoding*/PUBLIC HTEncoding HTAnchor_contentTransferEncoding (HTParentAnchor * me){    return me ? me->cte : NULL;}PUBLIC void HTAnchor_setContentTransferEncoding (HTParentAnchor * me, HTEncoding cte){    if (me) me->cte = cte;}/***	Allowed methods	(Allow)*/PUBLIC HTMethod HTAnchor_allow (HTParentAnchor * me){    if (me) {	if (me->allow == 0 && me->headers) {	    char * value = HTAssocList_findObject(me->headers, "allow");	    char * field;	    /*	    **  We treat methods allowed on this object as case insensitive	    **  in case we receive the information over the net - that is -	    **  in the Allow header.	    */	    while ((field = HTNextField(&value)) != NULL) {		HTMethod new_method;		if ((new_method = HTMethod_enum(field)) != METHOD_INVALID)		    me->allow |= new_method;	    }	}	return me->allow;    }	    return METHOD_INVALID;}PUBLIC void HTAnchor_setAllow (HTParentAnchor * me, HTMethod methodset){    if (me) me->allow = methodset;}PUBLIC void HTAnchor_appendAllow (HTParentAnchor * me, HTMethod methodset){    if (me) me->allow |= methodset;}/***	Title*/PUBLIC const char * HTAnchor_title  (HTParentAnchor * me){    if (me) {	if (me->title)	    return *me->title ? me->title : NULL;	if (me->headers) {	    char * value = HTAssocList_findObject(me->headers, "title");	    char * title;	    if ((title = HTNextField(&value))) StrAllocCopy(me->title, title);	    return me->title;	}    }    return NULL;}PUBLIC void HTAnchor_setTitle (HTParentAnchor * me, const char * title){    if (me && title) {	char * ptr;	StrAllocCopy(me->title, title);	ptr = me->title;	while (*ptr) {	    if (isspace((int) *ptr)) *ptr = ' ';			    ptr++;	}    }}PUBLIC void HTAnchor_appendTitle (HTParentAnchor * me, const char * title){    if (me && title) StrAllocCat(me->title, title);}/***	Version*/PUBLIC char * HTAnchor_version (HTParentAnchor * me){    if (me) {	if (me->version)	    return *me->version ? me->version : NULL;	if (me->headers) {	    char * value = HTAssocList_findObject(me->headers, "version");	    char * version;	    if ((version = HTNextField(&value)))		StrAllocCopy(me->version, version);	    return me->version;	}    }    return NULL;}PUBLIC void HTAnchor_setVersion (HTParentAnchor * me, const char * version){    if (me && version) StrAllocCopy(me->version, version);}/***	Derived from*/PUBLIC char * HTAnchor_derived (HTParentAnchor * me){    if (me) {	if (me->derived_from)	    return *me->derived_from ? me->derived_from : NULL;	if (me->headers) {	    char * value = HTAssocList_findObject(me->headers, "derived-from");	    char * derived_from;	    if ((derived_from = HTNextField(&value)))		StrAllocCopy(me->derived_from, derived_from);	    return me->derived_from;	}    }    return NULL;}PUBLIC void HTAnchor_setDerived (HTParentAnchor * me, const char *derived_from){    if (me && derived_from) StrAllocCopy(me->derived_from, derived_from);}/***	Content MD5*/PUBLIC char * HTAnchor_md5 (HTParentAnchor * me){    if (me) {	if (me->content_md5)	    return *me->content_md5 ? me->content_md5 : NULL;	if (me->headers) {	    char * value = HTAssocList_findObject(me->headers, "content-md5");	    char * md5;	    if ((md5 = HTNextField(&value))) StrAllocCopy(me->content_md5,md5);	    return me->content_md5;	}    }    return NULL;}PUBLIC BOOL HTAnchor_setMd5 (HTParentAnchor * me, const char * hash){    if (me && hash) {	StrAllocCopy(me->content_md5, hash);	return YES;    }    return NO;}/***	Date*/PUBLIC time_t HTAnchor_date (HTParentAnchor * me){    if (me) {	if (me->date == (time_t) -1 && me->headers) {	    char * value = HTAssocList_findObject(me->headers, "date");	    if (value) me->date = HTParseTime(value, NULL, YES);	}	return me->date;    }	    return (time_t) -1;}PUBLIC void HTAnchor_setDate (HTParentAnchor * me, const time_t date){    if (me) me->date = date;}/***	Expires*/PUBLIC time_t HTAnchor_expires (HTParentAnchor * me){    if (me) {	if (me->expires == (time_t) -1 && me->headers) {	    char * value = HTAssocList_findObject(me->headers, "expires");	    if (value) me->expires = HTParseTime(value, NULL, YES);	}	return me->expires;    }	    return (time_t) -1;}PUBLIC void HTAnchor_setExpires (HTParentAnchor * me, const time_t expires){    if (me) me->expires = expires;}/***	Last Modified*/PUBLIC time_t HTAnchor_lastModified (HTParentAnchor * me){    if (me) {	if (me->last_modified == (time_t) -1 && me->headers) {	    char * value = HTAssocList_findObject(me->headers,"last-modified");	    if (value) me->last_modified = HTParseTime(value, NULL, YES);	}	return me->last_modified;    }	    return (time_t) -1;}PUBLIC void HTAnchor_setLastModified (HTParentAnchor * me, const time_t lm){    if (me) me->last_modified = lm;}/***	Age*/PUBLIC time_t HTAnchor_age (HTParentAnchor * me){    if (me) {	if (me->age == (time_t) -1 && me->headers) {	    char * value = HTAssocList_findObject(me->headers, "age");	    if (value) me->age = atol(value);	}	return me->age;    }	    return (time_t) -1;}PUBLIC void HTAnchor_setAge (HTParentAnchor * me, const time_t age){    if (me) me->age = age;}/***	Entity Tag*/PUBLIC char * HTAnchor_etag (HTParentAnchor * me){    if (me) {	if (me->etag)	    return *me->etag ? me->etag : NULL;	if (me->headers) {	    char * value = HTAssocList_findObject(me->headers, "etag");	    char * etag;	    if ((etag = HTNextField(&value))) StrAllocCopy(me->etag, etag);	    return me->etag;	}    }    return me ? me->etag : NULL;}PUBLIC void HTAnchor_setEtag (HTParentAnchor * me, const char * etag){  /* JK: add a new etag if it doesn't exist or if the value has changed */    if (me && etag && ((me->etag == NULL) || strcmp (me->etag, etag)))	StrAllocCopy(me->etag, etag);}PUBLIC BOOL HTAnchor_isEtagWeak (HTParentAnchor * me){    return (me && me->etag && !strncasecomp(me->etag, "W/", 2));}/***	Original headers (if any)*/PUBLIC HTAssocList * HTAnchor_header (HTParentAnchor * me){    return me ? me->headers : NULL;}PUBLIC BOOL HTAnchor_setHeader (HTParentAnchor * me, HTAssocList * headers){    if (me) {	me->headers = headers;	return YES;    }    return NO;}/***  Validate anchor values and finish up parsing*/PUBLIC void HTAnchor_setHeaderParsed (HTParentAnchor * me){    if (me) {	HTTRACE(ANCH_TRACE, "HTAnchor.... Anchor is parsed\n");	me->header_parsed = YES;    }}PUBLIC BOOL HTAnchor_headerParsed (HTParentAnchor * me){    return (me ? me->header_parsed : NO);}/*	Clear Header Information**	------------------------*/PUBLIC void HTAnchor_clearHeader (HTParentAnchor * me){    HTTRACE(ANCH_TRACE, "HTAnchor.... Clear all header information\n");    me->allow = METHOD_INVALID;    if (me->content_encoding) {	HTList_delete(me->content_encoding);	me->content_encoding = NULL;    }    if (me->content_language) {	HTList_delete(me->content_language);	me->content_language = NULL;    }    HT_FREE(me->content_base);    HT_FREE(me->content_location);    me->content_length = -1;					  /* Invalid */    /* Delete the title */    HT_FREE(me->title);    /* Clear the content type */    me->content_type = WWW_UNKNOWN;    if (me->type_parameters) {	HTAssocList_delete(me->type_parameters);	me->type_parameters = NULL;    }        /* Meta tags */    if (me->meta_tags) {	HTAssocList_delete(me->meta_tags);	me->meta_tags = NULL;    }        /* Dates etc. */    me->date = (time_t) -1;    me->expires = (time_t) -1;    me->last_modified = (time_t) -1;    me->age = (time_t) -1;        HT_FREE(me->derived_from);    HT_FREE(me->version);    HT_FREE(me->etag);    /* Delete any original headers */    if (me->headers) HTAssocList_delete(me->headers);    me->headers = NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -