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

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

?? httchunk.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
字號:
/***	CHUNKED TRANSFER CODING****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTTChunk.c,v 2.16 1999/02/22 22:10:12 frystyk Exp $****	This stream parses a chunked transfer encoding using multiple chunks.**** Authors**	HF	Henrik Frystyk <frystyk@w3.org>**** History:**	Apr 96	Written from scratch***//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTTChunk.h"					 /* Implemented here */#define PUTBLOCK(b, l)	(*me->target->isa->put_block)(me->target, b, l)#define PUTC(c)		(*me->target->isa->put_character)(me->target, c)struct _HTStream {    const HTStreamClass *	isa;    HTEncoding			coding;    HTStream *			target;    HTRequest *			request;    char * 			param;	    /* Extra parameters for encoding */    long			left;	    /* Remaining bytes in this chunk */    long			total;			      /* Full length */    BOOL			lastchunk;	  /* Is this the last chunk? */    BOOL			trailer;	    /* Do we have a trailer? */    HTEOLState			state;        HTChunk *			buf;    int				status;	     /* return code from down stream */};/* ------------------------------------------------------------------------- *//***	Chunked Decoder stream*/PRIVATE BOOL HTChunkDecode_header (HTStream * me) {    char * line = HTChunk_data(me->buf);    if (line) {	char *errstr = NULL;	me->left = strtol(line, &errstr, 16);    /* hex! */	HTTRACE(STREAM_TRACE, "Chunked..... `%s\' chunk size: %X\n" _ line _ me->left);	if (errstr == line)	    HTDEBUGBREAK("Chunk decoder received illigal chunk size: `%s\'\n" _ line);	if (me->left > 0) {	    me->total += me->left;	    /* Look for arguments */		    HTChunk_clear(me->buf);	} else if (me->left == 0)	       		      /* Last chunk */	    me->lastchunk = YES;	else if (me->left < 0)	    return NO;	return YES;    }    return NO;}PRIVATE int HTChunkDecode_block (HTStream * me, const char * b, int l){    while (l > 0) {	int length = l;	if (me->left <= 0 && !me->trailer) {	    while (l > 0) {		if (me->state == EOL_FLF) {		    if (HTChunkDecode_header(me) == NO) return HT_ERROR;		    if (me->lastchunk) if (*b != CR && *b != LF) me->trailer = YES;		    me->state = EOL_DOT;		    break;		} else if (me->state == EOL_SLF) {		    if (me->lastchunk) break;		    me->state = EOL_BEGIN;		    HTChunk_putc(me->buf, *b);		} else if (*b == CR) {		    me->state = me->state == EOL_DOT ? EOL_SCR : EOL_FCR;		} else if (*b == LF) {		    me->state = me->state == EOL_SCR ? EOL_SLF : EOL_FLF;		} else		    HTChunk_putc(me->buf, *b);		b++, l--;	    }	}	/*	** Account for the parts we read in the chunk header +	** the chunk that we are reading.	*/	if (length != l)	    HTHost_setConsumed(HTNet_host(HTRequest_net(me->request)), length - l);	/*	** If we have to read trailers. Otherwise we are done.	*/	if (me->trailer) {	    me->target = HTStreamStack(WWW_MIME_FOOT, WWW_SOURCE,				       me->target, me->request, NO);	} else if (me->state == EOL_SLF) {            if (me->lastchunk) {                HTAlertCallback * cbf = HTAlert_find(HT_PROG_DONE);                if (cbf) (*cbf)(me->request, HT_PROG_DONE, HT_MSG_NULL,                                NULL, NULL, NULL);                return HT_LOADED;            }	    me->state = EOL_BEGIN;	}	/*	**  Handle the rest of the data including trailers	*/	if (l > 0 && me->left) {	    int bytes = HTMIN(l, me->left);	    int status = (*me->target->isa->put_block)(me->target, b, bytes);	    if (status != HT_OK) return status;	    HTHost_setConsumed(HTNet_host(HTRequest_net(me->request)), bytes);	    me->left -= bytes;	    l -= bytes, b+= bytes;	}    }    return HT_OK;}PRIVATE int HTChunkDecode_string (HTStream * me, const char * s){    return HTChunkDecode_block(me, s, (int) strlen(s));}PRIVATE int HTChunkDecode_character (HTStream * me, char c){    return HTChunkDecode_block(me, &c, 1);}PRIVATE int HTChunkDecode_flush (HTStream * me){    return (*me->target->isa->flush)(me->target);}PRIVATE int HTChunkDecode_free (HTStream * me){    int status = HT_OK;    HTParentAnchor * anchor = HTRequest_anchor(me->request);    /*    **  Update the amount of data that we read in all.    */    HTAnchor_setLength(anchor, me->total);    if (me->target) {	if ((status = (*me->target->isa->_free)(me->target)) == HT_WOULD_BLOCK)	    return HT_WOULD_BLOCK;    }    HTTRACE(PROT_TRACE, "Chunked..... FREEING....\n");    HTChunk_delete(me->buf);    HT_FREE(me);    return status;}PRIVATE int HTChunkDecode_abort (HTStream * me, HTList * e){    int status = HT_ERROR;    if (me->target) status = (*me->target->isa->abort)(me->target, e);    HTTRACE(PROT_TRACE, "Chunked..... ABORTING...\n");    HTChunk_delete(me->buf);    HT_FREE(me);    return status;}PRIVATE const HTStreamClass HTChunkDecodeClass ={    "ChunkDecoder",    HTChunkDecode_flush,    HTChunkDecode_free,    HTChunkDecode_abort,    HTChunkDecode_character,    HTChunkDecode_string,    HTChunkDecode_block};PUBLIC HTStream * HTChunkedDecoder   (HTRequest *	request,				      void *		param,				      HTEncoding	coding,				      HTStream *	target){    HTStream * me;    HTParentAnchor * anchor = HTRequest_anchor(request);    if ((me = (HTStream  *) HT_CALLOC(1, sizeof(HTStream))) == NULL)        HT_OUTOFMEM("HTChunkDecoder");    me->isa = &HTChunkDecodeClass;    me->coding = coding;    me->target = target;    me->request = request;    me->state = EOL_BEGIN;    me->buf = HTChunk_new(64);    me->status = HT_ERROR;        /* Adjust information in anchor */    HTAnchor_setLength(anchor, -1);    HTTRACE(STREAM_TRACE, "Chunked..... Decoder stream created\n");    return me;}/***	Chunked Encoder Stream*/PRIVATE int HTChunkEncode_block (HTStream * me, const char * b, int l){    char * chunky = HTChunk_data(me->buf);    if (me->lastchunk) return HT_LOADED;    if (me->param) {	if (me->total)	    sprintf(chunky, "%c%c%x %s %c%c", CR, LF, l, me->param, CR, LF);	else	    sprintf(chunky, "%x %s %c%c", l, me->param, CR, LF);    } else {	if (me->total)	    sprintf(chunky, "%c%c%x%c%c", CR, LF, l, CR, LF);	else	    sprintf(chunky, "%x%c%c", l, CR, LF);    }    me->total += l;    PUTBLOCK(chunky, (int) strlen(chunky));    HTTRACE(STREAM_TRACE, "Chunked..... chunk size 0x%X\n" _ l);    if (l > 0) return PUTBLOCK(b, l);    /* Here we should provide a footer */    PUTC(CR);    PUTC(LF);    me->lastchunk = YES;    (*me->target->isa->flush)(me->target);    return HT_LOADED;}PRIVATE int HTChunkEncode_string (HTStream * me, const char * s){    return HTChunkEncode_block(me, s, (int) strlen(s));}PRIVATE int HTChunkEncode_character (HTStream * me, char c){    return HTChunkEncode_block(me, &c, 1);}PRIVATE int HTChunkEncode_flush (HTStream * me){    return (*me->target->isa->flush)(me->target);}PRIVATE int HTChunkEncode_free (HTStream * me){#if 0    int status = HTChunkEncode_block(me, NULL, 0);    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;#else    int status = me->target ? (*me->target->isa->_free)(me->target) : HT_OK;    HT_FREE(me);    return status;#endif}PRIVATE int HTChunkEncode_abort (HTStream * me, HTList * e){    int status = HT_ERROR;    if (me->target) status = (*me->target->isa->_free)(me->target);    HTTRACE(PROT_TRACE, "Chunked..... ABORTING...\n");    HT_FREE(me);    return status;}PRIVATE const HTStreamClass HTChunkEncoderClass ={    "ChunkEncoder",    HTChunkEncode_flush,    HTChunkEncode_free,    HTChunkEncode_abort,    HTChunkEncode_character,    HTChunkEncode_string,    HTChunkEncode_block};PUBLIC HTStream * HTChunkedEncoder   (HTRequest *	request,				      void *		param,				      HTEncoding	coding,				      HTStream *	target){    HTStream * me;    if ((me = (HTStream  *) HT_CALLOC(1, sizeof(HTStream))) == NULL)        HT_OUTOFMEM("HTChunkEncoder");    me->isa = &HTChunkEncoderClass;    me->coding = coding;    me->target = target;    me->request = request;    me->param = (char *) param;    me->state = EOL_BEGIN;    me->status = HT_ERROR;    {	int length = me->param ? strlen(me->param)+20 : 20;	me->buf = HTChunk_new(length);	HTChunk_ensure(me->buf, length);    }    HTTRACE(STREAM_TRACE, "Chunked..... Encoder stream created\n");    return me;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美一区二区久久 | 精品1区2区在线观看| 国产精品久久久久久久久搜平片| 亚洲一区成人在线| 国产白丝精品91爽爽久久| 日韩精品一区二区在线观看| 亚洲午夜在线电影| 在线一区二区视频| 亚洲色图欧美激情| 99久久婷婷国产| 欧美国产成人精品| 国产成人综合网| 2020国产精品| 国产91精品免费| 亚洲欧洲在线观看av| 96av麻豆蜜桃一区二区| 最新国产成人在线观看| 一本色道久久综合亚洲精品按摩| 国产精品国产三级国产普通话蜜臀 | 亚洲免费观看高清完整版在线观看熊| 日韩精品免费视频人成| 国产精品午夜电影| 久久久久久99精品| 亚洲免费观看高清完整版在线观看 | 调教+趴+乳夹+国产+精品| 亚洲欧洲一区二区在线播放| 国产欧美久久久精品影院| 精品国内二区三区| 日韩欧美国产三级电影视频| 午夜视频久久久久久| 亚洲精品在线免费播放| 成人国产亚洲欧美成人综合网 | 国产黄色成人av| 欧美最猛黑人xxxxx猛交| 日产欧产美韩系列久久99| 久久久久久日产精品| 日本电影亚洲天堂一区| 国内成人免费视频| 一区二区三区四区高清精品免费观看 | 免费观看在线综合色| 欧美mv和日韩mv的网站| 色综合色综合色综合色综合色综合 | 国产真实乱对白精彩久久| 国产亚洲精品久| 日韩女优电影在线观看| 91天堂素人约啪| 福利视频网站一区二区三区| 久久综合色一综合色88| 麻豆91在线播放免费| 亚洲一区中文在线| 综合欧美亚洲日本| 韩国女主播成人在线| 久久久激情视频| 日本韩国欧美三级| 欧美日韩免费观看一区三区| 欧美久久久久久久久| 日韩一区二区在线看片| 久久久久久一二三区| 中文字幕一区二区三区乱码在线| 亚洲图片另类小说| 亚洲福利一区二区三区| 久久99精品国产.久久久久久 | 99久久久精品| 国产美女视频91| 成人性生交大片免费看视频在线| 老司机免费视频一区二区 | 精品国产sm最大网站免费看| 欧美性大战久久久久久久 | 国产精品麻豆久久久| 国产婷婷色一区二区三区| 中文在线免费一区三区高中清不卡 | 精品免费国产一区二区三区四区| 91精品国产福利| 亚洲精品一区二区三区香蕉| 久久一二三国产| 亚洲精品菠萝久久久久久久| 欧美熟乱第一页| 7777精品伊人久久久大香线蕉 | 亚洲成人激情av| 偷偷要91色婷婷| 亚洲午夜激情网站| 国产精品不卡一区| 一区二区三区蜜桃| 国内成人自拍视频| 综合婷婷亚洲小说| 日韩视频一区二区三区| 亚洲欧美成人一区二区三区| 亚洲综合久久久久| 国产美女精品人人做人人爽| 91久久奴性调教| 久久综合九色综合97_久久久| 中文字幕视频一区| 免费成人av在线播放| 91日韩精品一区| 26uuu欧美| 日韩欧美国产综合一区| 亚洲欧洲综合另类| 蜜桃久久久久久| 色哟哟精品一区| 国产精品免费av| 麻豆国产精品视频| 国产一区二区福利| 日韩欧美国产精品| 国产一区二区三区免费| 精品国产污网站| 欧美午夜理伦三级在线观看| 精品一区二区三区香蕉蜜桃| 国产免费成人在线视频| 精品少妇一区二区三区免费观看| 国产成人av电影在线播放| 亚洲精品免费播放| 日本一区二区高清| 精品久久一二三区| 91精品国产综合久久福利| 91在线视频免费91| 丁香五精品蜜臀久久久久99网站 | 欧美一级日韩免费不卡| 在线观看亚洲精品视频| 成人av在线看| 精品一区二区三区的国产在线播放 | 欧美日韩aaaaaa| 一区二区三区视频在线看| jvid福利写真一区二区三区| 青娱乐精品视频| 国产精品视频观看| av激情亚洲男人天堂| 精品少妇一区二区| 青青草国产成人av片免费 | 制服丝袜一区二区三区| 一区二区国产盗摄色噜噜| 色婷婷国产精品久久包臀| 亚洲欧洲日产国码二区| 成人aa视频在线观看| 亚洲欧美在线视频| 成年人国产精品| 中文字幕一区二区三区视频| 成人教育av在线| 亚洲欧美日韩国产综合在线| 99精品欧美一区| 日韩一区中文字幕| 色综合久久久久久久久| 亚洲欧洲av色图| 日本电影欧美片| 亚洲bdsm女犯bdsm网站| 在线电影国产精品| 男人的天堂久久精品| 日韩精品一区二区三区三区免费 | 亚洲国产视频一区二区| 国产精品久久久久久久久图文区 | 日韩极品在线观看| 欧美一卡在线观看| 国产一区二区h| 国产精品丝袜在线| 91免费视频观看| 亚洲影视在线观看| 欧美一卡二卡三卡四卡| 韩国av一区二区三区| 中文字幕欧美激情| 日本道免费精品一区二区三区| 亚洲第一av色| 精品99一区二区三区| 东方欧美亚洲色图在线| 亚洲一区影音先锋| 精品国产青草久久久久福利| 丰满白嫩尤物一区二区| 一区二区三区毛片| 日韩亚洲欧美一区| 成人av资源站| 石原莉奈一区二区三区在线观看| 精品成人一区二区三区| 不卡电影一区二区三区| 婷婷久久综合九色综合绿巨人| 欧美xxxx老人做受| 91免费在线播放| 九色综合狠狠综合久久| 亚洲图片欧美激情| 欧美成人猛片aaaaaaa| 97国产精品videossex| 捆绑变态av一区二区三区| 国产精品久久看| 91精品国产一区二区| 成人免费看的视频| 日韩精品福利网| 亚洲精品自拍动漫在线| 精品国产欧美一区二区| 欧美在线视频全部完| 国产成人无遮挡在线视频| 午夜精品久久久| 中文字幕一区三区| 欧美电视剧免费全集观看| 一本一道波多野结衣一区二区| 精品一区二区三区免费毛片爱| 亚洲一区av在线| 国产精品福利一区二区三区| 日韩免费性生活视频播放| 91久久线看在观草草青青| 大胆亚洲人体视频| 久久99国产精品久久| 亚洲成人激情综合网| 亚洲人xxxx|