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

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

?? htmimerq.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
字號(hào):
/*								     HTMIMERq.c**	MIME ENTITY HEADERS GENERATION****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTMIMERq.c,v 2.42 1999/02/22 22:10:11 frystyk Exp $****	This module implements the output stream for MIME used for sending**	requests with a entity body to HTTP, NEWS, etc. or for generating**	responses**** History:**	Jan 95 HFN	Written*//* Library Includes */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTAncMan.h"#include "HTNetMan.h"#include "HTReqMan.h"#include "HTHeader.h"#include "HTMIMERq.h"					       /* Implements */#define PUTC(c)		(*me->target->isa->put_character)(me->target, c)#define PUTS(s)		(*me->target->isa->put_string)(me->target, s)#define PUTBLOCK(b, l)	(*me->target->isa->put_block)(me->target, b, l)struct _HTStream {    const HTStreamClass *	isa;    HTStream *		  	target;    HTRequest *			request;    BOOL			endHeader;    BOOL			transparent;};#define HT_MAX_WAIT		8      /* Max number of secs to wait for PUT */PRIVATE int MIMERequest_put_block (HTStream * me, const char * b, int l);/* ------------------------------------------------------------------------- *//* 			    MIME Output Request Stream			     *//* ------------------------------------------------------------------------- *//*	MIMEMakeRequest**	---------------**	Generates the BODY parts of a MIME message.*/PRIVATE int MIMEMakeRequest (HTStream * me, HTRequest * request){    char crlf[3];    char linebuf[256];			/* @@@ */    HTParentAnchor * entity = HTRequest_entityAnchor(request);    HTEnHd EntityMask = HTRequest_enHd(request);    BOOL transfer_coding = NO;		/* We should get this from the Host object */    *crlf = CR; *(crlf+1) = LF; *(crlf+2) = '\0';    if (EntityMask & HT_E_ALLOW) {	BOOL first = YES;	int cnt;	HTMethod methodset = HTAnchor_allow(entity);	for (cnt=0; cnt<sizeof(HTMethod)<<3 ; cnt++) {	    if (methodset & (1<<cnt)) {		if (first) {		    PUTS("Allow: ");		    first = NO;		} else		    PUTC(',');		PUTS(HTMethod_name(1<<cnt));	    }	}	if (!first) PUTBLOCK(crlf, 2);    }    if (EntityMask & HT_E_CONTENT_ENCODING && entity->content_encoding) {	BOOL first = YES;	HTList * cur = entity->content_encoding;	HTEncoding pres;	while ((pres = (HTEncoding) HTList_nextObject(cur)) &&	       !HTFormat_isUnityContent(pres)) {	    if (first) {		PUTS("Content-Encoding: ");		first = NO;	    } else		PUTC(',');	    PUTS(HTAtom_name(pres));	}	if (!first) PUTBLOCK(crlf, 2);    }    if (EntityMask & HT_E_CTE && entity->cte) {	HTEncoding cte = HTAnchor_contentTransferEncoding(entity);	if (!HTFormat_isUnityTransfer(cte)) {	    sprintf(linebuf, "Content-Transfer-Encoding: %s%c%c",		    HTAtom_name(cte), CR, LF);	    PUTBLOCK(linebuf, (int) strlen(linebuf));	}    }    if (EntityMask & HT_E_CONTENT_LANGUAGE && entity->content_language){	BOOL first = YES;	HTList * cur = entity->content_language;	HTLanguage pres;	while ((pres = (HTLanguage) HTList_nextObject(cur))) {	    if (first) {		PUTS("Content-Language: ");		first = NO;	    } else		PUTC(',');	    PUTS(HTAtom_name(pres));	}	if (!first) PUTBLOCK(crlf, 2);    }    /* Only send out Content-Length if we don't have a transfer coding */    if (!HTRequest_transfer(request)) {	if (EntityMask & HT_E_CONTENT_LENGTH) {	    if (entity->content_length >= 0) {		sprintf(linebuf, "Content-Length: %ld%c%c",			entity->content_length, CR, LF);		PUTBLOCK(linebuf, (int) strlen(linebuf));		    } else {		transfer_coding = YES;    	        sprintf(linebuf, "Transfer-Encoding: %s%c%c",                        HTAtom_name(WWW_CODING_CHUNKED), CR, LF);	        PUTBLOCK(linebuf, (int) strlen(linebuf));	    }	}    }    if (EntityMask & HT_E_CONTENT_TYPE && entity->content_type) {	HTFormat format = entity->content_type != WWW_UNKNOWN ?	    entity->content_type : WWW_BINARY;	HTAssocList * parameters = HTAnchor_formatParam(entity);	/* Output the content type */	PUTS("Content-Type: ");	PUTS(HTAtom_name(format));	/* Add all parameters */	if (parameters) {	    HTAssoc * pres;	    while ((pres = (HTAssoc *) HTAssocList_nextObject(parameters))) {		PUTS(";");		PUTS(HTAssoc_name(pres));		PUTS("=");		PUTS(HTAssoc_value(pres));	    }	}	PUTBLOCK(crlf, 2);    }    if (EntityMask & HT_E_DERIVED_FROM && entity->derived_from) {	sprintf(linebuf, "Derived-From: %s%c%c", entity->derived_from,		CR, LF);	PUTBLOCK(linebuf, (int) strlen(linebuf));    }    if (EntityMask & HT_E_EXPIRES) {	if (entity->expires != -1) {	    sprintf(linebuf, "Expires: %s%c%c",		    HTDateTimeStr(&entity->expires, NO), CR,LF);	    PUTBLOCK(linebuf, (int) strlen(linebuf));	}    }    if (EntityMask & HT_E_LAST_MODIFIED) {	if (entity->last_modified != -1) {	    sprintf(linebuf, "Last-Modified: %s%c%c",		    HTDateTimeStr(&entity->last_modified, NO), CR,LF);	    PUTBLOCK(linebuf, (int) strlen(linebuf));	}    }    if (EntityMask & HT_E_LINK) {	HTLink * link = HTAnchor_mainLink((HTAnchor *) entity);	HTList * sublinks = HTAnchor_subLinks((HTAnchor *) entity);	HTLinkType linktype = NULL;	/* First look in the main link */	if (link && (linktype = HTLink_type(link))) {		    	    char * src = HTAnchor_address((HTAnchor *) HTRequest_anchor(request));	    HTParentAnchor * dest = HTAnchor_parent(HTLink_destination(link));	    char * dst = HTAnchor_address((HTAnchor *) dest);	    char * rel_dst = HTRelative(dst, src);	    if (rel_dst) {		PUTS("Link: \"");		PUTS(rel_dst);		PUTS("\"");		sprintf(linebuf, ";rel=\"%s\"", HTAtom_name(linktype));		PUTBLOCK(linebuf, (int) strlen(linebuf));		HT_FREE(rel_dst);		HT_FREE(dst);	    }	    /* ... and then in any sublinks */	    if (sublinks) {		HTLink * pres;		while ((pres = (HTLink *) HTList_nextObject(sublinks))) {		    if ((linktype = HTLink_type(pres))) {			dest = HTAnchor_parent(HTLink_destination(pres));			dst = HTAnchor_address((HTAnchor *) dest);			rel_dst = HTRelative(dst, src);			if (rel_dst) {			    PUTS(", \"");			    PUTS(rel_dst);			    PUTS("\"");			    sprintf(linebuf, ";rel=\"%s\"", HTAtom_name(linktype));			    PUTBLOCK(linebuf, (int) strlen(linebuf));			    HT_FREE(rel_dst);			    HT_FREE(dst);			}		    }		}	    }	    PUTBLOCK(crlf, 2);	    HT_FREE(src);	}    }    if (EntityMask & HT_E_TITLE && entity->title) {	sprintf(linebuf, "Title: %s%c%c", entity->title, CR, LF);	PUTBLOCK(linebuf, (int) strlen(linebuf));    }    if (EntityMask & HT_E_URI) {		/* @@@@@@@@@@ */    }    if (EntityMask & HT_E_VERSION && entity->version) {	sprintf(linebuf, "Content-Version: %s%c%c", entity->version, CR, LF);	PUTBLOCK(linebuf, (int) strlen(linebuf));    }    if (me->endHeader) {	sprintf(linebuf, "%c%c", CR, LF);	   /* Blank line means "end" */	PUTBLOCK(linebuf, (int) strlen(linebuf));    }    /*    **  Handle any Transfer encoding. This is really a transport issue but    **  as it often pops up when we are sending an entity then we put it    **  here for now. A better place whould be in the HTTPGen stream.    **  the real problem is that the server doesn't have any mechanism of    **  telling the client what transports it can handle. The best we can    **  hope for is that the server understands "chunked" although we are    **  certainly capable of handling nested encodings :(    */    if (transfer_coding) {	HTStream * target = HTTransferCodingStack(WWW_CODING_CHUNKED,						  me->target, request, NULL, YES);	HTTRACE(STREAM_TRACE, "Building.... Transfer-Encoding stack\n");	if (target == HTBlackHole()) {	    if (me->target) (*me->target->isa->abort)(me->target, NULL);	    me->target = HTErrorStream();	} else	    me->target = target;    }#if 0    /*    **  We expect the anchor object already to have the right encoding and    **  we therefore should not set up extra streams for doing this.    */    /* Handle any Content Transfer encoding */    {	HTEncoding cte = HTAnchor_contentTransferEncoding(entity);	if (!HTFormat_isUnityTransfer(cte)) {	    HTTRACE(STREAM_TRACE, "Building.... C-T-E stack\n");	    me->target = HTContentTransferCodingStack(cte, me->target,						      request, NULL, YES);	}    }    /* Handle any Content Encodings */    {	HTList * cc = HTAnchor_encoding(entity);	if (cc) {	    HTTRACE(STREAM_TRACE, "Building.... C-E stack\n");	    me->target = HTContentEncodingStack(cc, me->target, request, NULL);	}    }#endif    HTTRACE(PROT_TRACE, "MIME........ Generating Entity Headers\n");    return HT_OK;}/***	Flushes header but doesn't free stream object*/PRIVATE int MIMERequest_flush (HTStream * me){    int status = MIMERequest_put_block(me, NULL, 0);    return status==HT_OK ? (*me->target->isa->flush)(me->target) : status;}PRIVATE int MIMERequest_put_block (HTStream * me, const char * b, int l){    HTNet * net = HTRequest_net(me->request);    if (!me->transparent) {	MIMEMakeRequest(me, me->request);	me->transparent = YES;		/*	**  First we only send the header	*/	if (HTMethod_hasEntity(HTRequest_method(me->request))) {	    HTHost * host = HTNet_host(net);	    char * class = HTHost_class(host);	    if (class && !strcmp(class, "http")) {		MIMERequest_flush(me);		HTNet_setHeaderBytesWritten(net, HTNet_bytesWritten(net));		return HT_PAUSE;	    }	}    }        /* Check if we have written it all */    if (b) {	HTParentAnchor * entity = HTRequest_entityAnchor(me->request);	long cl = HTAnchor_length(entity);	return (cl>=0 && HTNet_bytesWritten(net)-HTNet_headerBytesWritten(net) >= cl) ?	    HT_LOADED : PUTBLOCK(b, l);    }    return HT_OK;}PRIVATE int MIMERequest_put_character (HTStream * me, char c){    return MIMERequest_put_block(me, &c, 1);}PRIVATE int MIMERequest_put_string (HTStream * me, const char * s){    return MIMERequest_put_block(me, s, strlen(s));}/***	Flushes data and frees stream object*/PRIVATE int MIMERequest_free (HTStream * me){    int status = MIMERequest_flush(me);    if (status != HT_WOULD_BLOCK) {	if ((status = (*me->target->isa->_free)(me->target)) == HT_WOULD_BLOCK)	    return HT_WOULD_BLOCK;	HT_FREE(me);    }    return status;}PRIVATE int MIMERequest_abort (HTStream * me, HTList * e){    if (me->target) (*me->target->isa->abort)(me->target, e);    HT_FREE(me);    HTTRACE(PROT_TRACE, "MIMERequest. ABORTING...\n");    return HT_ERROR;}/*	MIMERequest Stream**	-----------------*/PRIVATE const HTStreamClass MIMERequestClass ={		    "MIMERequest",    MIMERequest_flush,    MIMERequest_free,    MIMERequest_abort,    MIMERequest_put_character,    MIMERequest_put_string,    MIMERequest_put_block};PUBLIC HTStream * HTMIMERequest_new (HTRequest * request, HTStream * target,				     BOOL endHeader){    HTStream * me;    if ((me = (HTStream  *) HT_CALLOC(1, sizeof(HTStream))) == NULL)        HT_OUTOFMEM("HTMIMERequest_new");    me->isa = &MIMERequestClass;    me->target = target;    me->request = request;    me->endHeader = endHeader;    me->transparent = NO;    return me;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩亚洲综合一区 | 粉嫩欧美一区二区三区高清影视| 国产欧美日韩另类一区| 欧美美女bb生活片| 国产成人精品1024| 日韩精品乱码免费| 亚洲乱码国产乱码精品精的特点| 91精品一区二区三区在线观看| 成人久久视频在线观看| 久久爱另类一区二区小说| 一区二区三区四区不卡在线| 国产片一区二区| 欧美一区二区三区影视| 欧美性生交片4| 色天天综合色天天久久| 国产成a人亚洲精| 久久99九九99精品| 日韩精品乱码免费| 亚洲国产日韩综合久久精品| 亚洲欧美在线aaa| 国产欧美日韩在线视频| 亚洲精品一区二区三区四区高清| 欧美日韩国产一区二区三区地区| 91视频xxxx| 菠萝蜜视频在线观看一区| 成人三级在线视频| 国产91露脸合集magnet| 国产精品1024| 国产一区二区三区久久悠悠色av| 青娱乐精品视频在线| 日韩精品电影在线| 亚洲不卡av一区二区三区| 亚洲精品乱码久久久久久久久| 亚洲欧美在线另类| 亚洲人成网站色在线观看| 国产精品美女久久久久aⅴ| 国产色综合久久| 国产亚洲女人久久久久毛片| 久久久久久久久久久久久久久99| 日韩免费性生活视频播放| 欧美精品精品一区| 日韩一级欧美一级| 精品三级av在线| 精品国产伦理网| 久久久久久麻豆| 欧美激情资源网| 中文字幕一区二区三区不卡| 中文字幕一区免费在线观看| 亚洲欧美经典视频| 亚洲女厕所小便bbb| 亚洲欧美日韩电影| 亚洲成人综合网站| 日韩成人一区二区三区在线观看| 91麻豆视频网站| 色偷偷久久人人79超碰人人澡| 色老汉一区二区三区| 欧美精品vⅰdeose4hd| 精品国产一区二区亚洲人成毛片| 精品福利一区二区三区| 国产免费久久精品| 亚洲美女精品一区| 午夜不卡在线视频| 精品亚洲欧美一区| 成人免费视频免费观看| 在线亚洲一区二区| 日韩丝袜情趣美女图片| 国产视频一区二区在线观看| 亚洲欧美精品午睡沙发| 日本不卡高清视频| 国产成人av电影在线| 欧美性一二三区| 日韩欧美三级在线| 中文一区一区三区高中清不卡| 亚洲猫色日本管| 美女网站色91| 色综合久久中文字幕| 日韩一区二区麻豆国产| 中文字幕精品一区二区精品绿巨人 | 欧美精品丝袜久久久中文字幕| 日韩视频一区二区| 国产精品久久久久久妇女6080| 一区二区三区日韩精品视频| 麻豆成人久久精品二区三区红 | 欧美一区日本一区韩国一区| 国产亚洲1区2区3区| 亚洲无线码一区二区三区| 国产一区视频导航| 欧美午夜精品一区| 国产三级一区二区| 亚洲国产日韩综合久久精品| 国产精品一区一区| 欧美日韩一区成人| 国产精品卡一卡二| 久久精品国产亚洲高清剧情介绍 | 制服丝袜在线91| 国产精品久久久久天堂| 久久精品99久久久| 欧美怡红院视频| 国产精品国产三级国产aⅴ入口| 男女男精品视频网| 91福利小视频| 国产精品妹子av| 精品亚洲欧美一区| 91精品国产综合久久久久久| 国产精品国产自产拍高清av| 777奇米四色成人影色区| 国产精品私人影院| 国产综合一区二区| 日韩欧美亚洲一区二区| 香港成人在线视频| 91免费版在线| 国产精品欧美久久久久无广告 | 免费观看在线色综合| 色综合网色综合| 久久久久久综合| 精品一区二区三区在线播放| 欧美精品三级在线观看| 亚洲最新视频在线观看| 92国产精品观看| 亚洲国产精品传媒在线观看| 国产一区二区免费看| 精品国产露脸精彩对白| 捆绑调教美女网站视频一区| 欧美一级片在线看| 肉肉av福利一精品导航| 欧美日韩国产天堂| 香港成人在线视频| 欧美日韩国产123区| 亚洲成人在线观看视频| 欧美日韩一区视频| 亚洲国产精品麻豆| 欧美三日本三级三级在线播放| 亚洲综合一二三区| 欧美日韩中文一区| 偷拍一区二区三区| 欧美福利一区二区| 蜜桃精品在线观看| 精品国产网站在线观看| 精品一区二区免费视频| 精品久久久久香蕉网| 国产精品一区二区不卡| 久久精品日韩一区二区三区| 久久先锋影音av| 国产一区视频在线看| 中文字幕av一区二区三区高| 成人午夜视频网站| 亚洲欧美日韩久久精品| 欧美日韩一区二区三区在线| 日日摸夜夜添夜夜添亚洲女人| 日韩午夜激情免费电影| 国产在线播放一区三区四| 国产片一区二区| 色综合天天狠狠| 亚洲成人一区在线| 欧美r级在线观看| 岛国一区二区在线观看| 亚洲视频一区二区在线观看| 欧美无砖专区一中文字| 日本人妖一区二区| 国产亚洲欧美激情| 91黄色免费看| 青青青伊人色综合久久| 国产女主播视频一区二区| 色88888久久久久久影院野外| 天天综合网天天综合色| 久久亚洲精精品中文字幕早川悠里| 成人一级黄色片| 亚洲国产一区二区三区青草影视| 日韩一区二区三区视频| 成人ar影院免费观看视频| 亚洲综合成人网| 久久婷婷综合激情| 色综合久久66| 久久疯狂做爰流白浆xx| 亚洲色图在线视频| 欧美videos中文字幕| 99这里只有久久精品视频| 免费看黄色91| 亚洲视频免费观看| 日韩欧美一级二级三级久久久 | 欧美不卡一区二区三区四区| 成人综合婷婷国产精品久久免费| 一区二区免费视频| 欧美精品一区二区三| 色哟哟一区二区| 激情小说欧美图片| 亚洲一区二区在线播放相泽| 2023国产精品自拍| 欧美日韩一区二区电影| 成人精品免费网站| 美女在线视频一区| 一区二区欧美精品| 国产精品免费久久| 欧美电影精品一区二区| 在线精品视频一区二区| 国产精品乡下勾搭老头1| 日本va欧美va精品| 亚洲一区二区视频在线| 国产精品久久久久久久久动漫| 精品免费视频一区二区|