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

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

?? htwriter.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
字號:
/*							              HTWrite.c**	FILE WRITER BASED ON A SOCKET****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTWriter.c,v 2.56 2000/06/23 14:22:43 kahan Exp $****	This is a try with a non-buffered output stream which remembers**	state using the write_pointer. As normally we have a big buffer**	somewhere else in the stream chain an extra output buffer will often**	not be needed.*//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTNet.h"#include "HTNetMan.h"#include "HTWriter.h"					 /* Implemented here */#include "HTHstMan.h"struct _HTStream {    const HTStreamClass *	isa;    /* ... */};struct _HTOutputStream {    const HTOutputStreamClass *	isa;    HTChannel *			ch;    HTHost *			host;    int				offset;#ifdef NOT_ASCII    char *			ascbuf;	    /* Buffer for TOASCII conversion */#endif};/* ------------------------------------------------------------------------- */PRIVATE int HTWriter_flush (HTOutputStream * me){    return HT_OK;		       /* As we don't have any output buffer */}PRIVATE int HTWriter_free (HTOutputStream * me){    return HT_OK;}PRIVATE int HTWriter_abort (HTOutputStream * me, HTList * e){    return HT_ERROR;}/*	Write to the socket**** According to Solaris 2.3 man on write:****    o	If O_NONBLOCK and O_NDELAY are clear, write() blocks**	until the data can be accepted.****    o	If O_NONBLOCK or O_NDELAY is set, write()  does  not**	block  the  process.   If  some  data  can be written**	without blocking the process, write() writes what  it**	can  and returns the number of bytes written.  Other-**	wise, if O_NONBLOCK is set, it returns - 1  and  sets**	errno to EAGAIN or if O_NDELAY is set, it returns 0.**** According to SunOS 4.1.1 man on write:****   +	If the descriptor is  marked  for  non-blocking  I/O**	using  fcntl()  to  set  the FNONBLOCK or O_NONBLOCK**	flag (defined in  <sys/fcntl.h>),  write()  requests**	for  {PIPE_BUF}  (see  pathconf(2V))  or fewer bytes**	either  succeed  completely  and  return  nbyte,  or**	return -1 and set errno to EAGAIN. A write() request**	for greater than {PIPE_BUF} bytes  either  transfers**	what it can and returns the number of bytes written,**	or transfers no data and returns -1 and  sets  errno**	to  EAGAIN.  If  a  write()  request is greater than**	{PIPE_BUF} bytes and all data previously written  to**	the  pipe  has been read, write() transfers at least**	{PIPE_BUF} bytes.*/PRIVATE int HTWriter_write (HTOutputStream * me, const char * buf, int len){    HTHost * host = me->host;    SOCKET soc = HTChannel_socket(HTHost_channel(host));    HTNet * net = HTHost_getWriteNet(host);    int b_write;    char * wrtp;    const char *limit = buf+len;    /* If we don't have a Net object then return right away */    if (!net) {	HTTRACE(STREAM_TRACE, "Write Socket No Net object %d (offset %d)\n" _ soc _ me->offset);	return HT_ERROR;    }#ifdef NOT_ASCII    if (len && !me->ascbuf) {			      /* Generate new buffer */	const char *orig = buf;	char *dest;	int cnt;	if ((me->ascbuf = (char  *) HT_MALLOC(len)) == NULL)	    HT_OUTOFMEM("HTWriter_write");	dest = me->ascbuf;	for (cnt=0; cnt<len; cnt++) {	    *dest = TOASCII(*orig);	    dest++, orig++;	}	wrtp = me->ascbuf;	limit = me->ascbuf+len;    }#else    if (!me->offset)	wrtp = (char *) buf;    else {	wrtp = (char *) buf + me->offset;	len -= me->offset;	me->offset = 0;    }#endif    /* Write data to the network */    while (wrtp < limit) {	if ((b_write = NETWRITE(soc, wrtp, len)) < 0) {#ifdef EAGAIN	    if (socerrno == EAGAIN || socerrno == EWOULDBLOCK)/* POSIX, SVR4 */#else	    if (socerrno == EWOULDBLOCK)			      /* BSD */#endif	    {		HTHost_register(host, net, HTEvent_WRITE);		me->offset = wrtp - buf;		HTTRACE(STREAM_TRACE, "Write Socket WOULD BLOCK %d (offset %d)\n" _ soc _ me->offset);		return HT_WOULD_BLOCK;#ifdef EINTR	    } else if (socerrno == EINTR) {		/*		**	EINTR	A signal was caught during the  write  opera-		**		tion and no data was transferred.		*/		HTTRACE(STREAM_TRACE, "Write Socket call interrupted - try again\n");		continue;#endif	    } else {		host->broken_pipe = YES;#ifdef EPIPE	        if (socerrno == EPIPE) {		    /* JK: an experimental bug solution proposed by                       Olga and Mikhael */		    HTTRACE(STREAM_TRACE, "Write Socket got EPIPE\n");		    HTHost_unregister(host, net, HTEvent_WRITE);		    HTHost_register(host, net, HTEvent_CLOSE);		    /* @@ JK: seems that some functions check the errors 		       as part of the flow control */                    HTRequest_addSystemError(net->request, ERR_FATAL, socerrno, NO,					     "NETWRITE");		    return HT_CLOSED;		    		}#endif /* EPIPE */		/* all errors that aren't EPIPE */		HTRequest_addSystemError(net->request, ERR_FATAL, socerrno, NO,					 "NETWRITE");		return HT_ERROR;	    }	}	/* We do this unconditionally, should we check to see if we ever blocked? */	HTTRACEDATA(wrtp, b_write, "Writing to socket %d" _ soc);	HTNet_addBytesWritten(net, b_write);	wrtp += b_write;	len -= b_write;	HTTRACE(STREAM_TRACE, "Write Socket %d bytes written to %d\n" _ b_write _ soc);	{	    HTAlertCallback *cbf = HTAlert_find(HT_PROG_WRITE);	    if (cbf) {		int tw = HTNet_bytesWritten(net);		(*cbf)(net->request, HT_PROG_WRITE,		       HT_MSG_NULL, NULL, &tw, NULL);	    }	}    }#ifdef NOT_ASCII    HT_FREE(me->ascbuf);#endif    return HT_OK;}/*	Character handling**	------------------*/PRIVATE int HTWriter_put_character (HTOutputStream * me, char c){    return HTWriter_write(me, &c, 1);}/*	String handling**	---------------****	Strings must be smaller than this buffer size.*/PRIVATE int HTWriter_put_string (HTOutputStream * me, const char * s){    return HTWriter_write(me, s, (int) strlen(s));}/***	The difference between the close and the free method is that we don't**	close the connection in the free method - we only call the free method**	of the target stream. That way, we can keep the output stream as long **	as the channel itself.*/PRIVATE int HTWriter_close (HTOutputStream * me){    HTTRACE(STREAM_TRACE, "Socket write FREEING....\n");    HT_FREE(me);    return HT_OK;}PRIVATE const HTOutputStreamClass HTWriter ={		    "SocketWriter",    HTWriter_flush,    HTWriter_free,    HTWriter_abort,    HTWriter_put_character,    HTWriter_put_string,    HTWriter_write,    HTWriter_close}; PUBLIC HTOutputStream * HTWriter_new (HTHost * host, HTChannel * ch,				      void * param, int mode){    if (host && ch) {	HTOutputStream * me = HTChannel_output(ch);	if (!me) {	    if ((me=(HTOutputStream *) HT_CALLOC(1, sizeof(HTOutputStream)))==NULL)		HT_OUTOFMEM("HTWriter_new");	    me->isa = &HTWriter;	    me->ch = ch;	    me->host = host;	}	return me;    }    return NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
aaa欧美大片| 国产欧美精品一区二区三区四区 | 香港成人在线视频| 九九视频精品免费| 在线观看成人小视频| 久久免费午夜影院| 午夜成人免费视频| 色屁屁一区二区| 国产午夜亚洲精品午夜鲁丝片 | 日本一区二区三区国色天香 | 亚洲乱码中文字幕综合| 韩国精品在线观看| 91精品国产黑色紧身裤美女| 一区二区在线观看免费| 成人美女视频在线看| 精品少妇一区二区三区在线视频| 亚洲国产裸拍裸体视频在线观看乱了| 国产成人在线视频播放| 欧美一区二区人人喊爽| 亚洲一区二区欧美| 99re这里只有精品6| 久久久久久久久久久久久夜| 日韩av一区二区三区四区| 欧美网站一区二区| 亚洲自拍与偷拍| 日本高清成人免费播放| 亚洲精品国产品国语在线app| 99热在这里有精品免费| 欧美国产视频在线| 国产suv精品一区二区6| 久久这里只有精品6| 国产在线精品一区在线观看麻豆| 欧美一级国产精品| 看国产成人h片视频| 日韩精品中文字幕一区二区三区| 日日骚欧美日韩| 91精品麻豆日日躁夜夜躁| 亚洲大型综合色站| 欧美一区二区久久| 久久99精品一区二区三区| 欧美精品一区二区三区蜜桃| 狠狠色狠狠色综合系列| 精品国产露脸精彩对白| 国产在线视频精品一区| 国产欧美一区二区精品性色| 福利一区福利二区| 亚洲免费高清视频在线| 欧美日韩在线精品一区二区三区激情 | 成人福利视频在线| 亚洲欧洲综合另类| 一本大道久久a久久精品综合| 亚洲免费av网站| 69成人精品免费视频| 国产自产视频一区二区三区| 国产欧美精品一区二区色综合朱莉| 欧美日韩精品欧美日韩精品一| 亚洲自拍偷拍综合| 欧美精品一区二区三区在线| 99久久精品国产导航| 午夜日韩在线电影| 久久亚区不卡日本| 91一区在线观看| 日韩电影在线一区二区三区| 亚洲精品一区二区三区蜜桃下载 | 麻豆视频一区二区| 国产精品传媒视频| 欧美日韩国产精选| 国产伦精品一区二区三区免费迷| 成人免费小视频| 91麻豆精品国产91久久久久久久久 | 成人午夜在线视频| 日韩精品电影在线观看| 久久精品无码一区二区三区| 欧美日韩在线三区| 成人激情综合网站| 久国产精品韩国三级视频| 亚洲人成在线观看一区二区| 欧美岛国在线观看| 在线免费精品视频| 国产成人超碰人人澡人人澡| 亚洲一区视频在线观看视频| 久久影院午夜论| 欧美日韩久久一区二区| 国产福利一区二区三区视频在线| 洋洋成人永久网站入口| 日本一区二区三区四区| 欧美一区二区在线观看| 色8久久精品久久久久久蜜| 九一九一国产精品| 日韩国产高清影视| 亚洲欧美视频在线观看| 久久青草欧美一区二区三区| 欧美在线视频你懂得| 成人激情黄色小说| 久久国产生活片100| 国产999精品久久| 国产精品不卡在线观看| 精品1区2区在线观看| 欧美日韩国产综合久久| 色综合天天天天做夜夜夜夜做| 国内一区二区在线| 青娱乐精品在线视频| 亚洲电影一级片| 亚洲女人小视频在线观看| 亚洲视频中文字幕| 国产精品国产三级国产普通话99| 欧美一区二区三区成人| 91精品婷婷国产综合久久性色| 色狠狠av一区二区三区| 色综合色综合色综合| 成人av网站在线| 成人免费看视频| 成人av高清在线| 99久久精品免费| 91在线精品一区二区三区| 成人免费毛片片v| av不卡在线观看| kk眼镜猥琐国模调教系列一区二区| 国产99久久久国产精品潘金网站| 国产在线国偷精品免费看| 韩国毛片一区二区三区| 国产制服丝袜一区| 国产成人亚洲精品青草天美| 国产黄色精品网站| 国产成人三级在线观看| 成人性生交大片免费看在线播放| 国产成人精品一区二区三区四区| 国产成人免费av在线| eeuss国产一区二区三区| 91天堂素人约啪| 欧美午夜寂寞影院| 日韩片之四级片| 国产午夜精品理论片a级大结局| 国产日韩欧美a| 一区二区三区中文字幕在线观看| 亚洲已满18点击进入久久| 午夜成人在线视频| 国产一区二区毛片| 91色综合久久久久婷婷| 欧美另类一区二区三区| wwww国产精品欧美| 亚洲欧洲日韩av| 亚洲午夜在线视频| 韩国三级中文字幕hd久久精品| 成人国产亚洲欧美成人综合网| 色综合婷婷久久| 欧美一区二区三区日韩| 久久久精品2019中文字幕之3| 18涩涩午夜精品.www| 三级影片在线观看欧美日韩一区二区 | 国产精品久久久久久户外露出 | 欧美国产日韩在线观看| 亚洲九九爱视频| 美女视频黄久久| 99综合电影在线视频| 在线91免费看| 日韩一区中文字幕| 秋霞成人午夜伦在线观看| 成人中文字幕在线| 欧美日韩一区二区三区在线 | 成人午夜私人影院| 欧美日韩电影一区| 国产日韩欧美a| 午夜一区二区三区在线观看| 国产一区在线不卡| 欧美日韩精品福利| 国产欧美日韩精品在线| 日韩黄色一级片| 成人国产亚洲欧美成人综合网| 日韩一区和二区| 亚洲一区二区欧美日韩| 成人午夜看片网址| 日韩欧美中文字幕制服| 亚洲综合丝袜美腿| 成人综合在线视频| 日韩一级免费观看| 亚洲自拍欧美精品| 9l国产精品久久久久麻豆| 久久综合久久久久88| 日韩经典一区二区| 色94色欧美sute亚洲线路一久| 国产视频一区在线播放| 久久精品免费看| 欧美日韩专区在线| 亚洲免费观看高清完整版在线观看| 国产一区二区三区四区五区美女 | 久久久五月婷婷| 日韩va亚洲va欧美va久久| 在线视频亚洲一区| 中文字幕中文字幕在线一区| 国产二区国产一区在线观看| 日韩精品一区二区三区视频在线观看| 亚洲一二三区在线观看| 91国偷自产一区二区使用方法| 国产精品网友自拍| 国产v综合v亚洲欧| 国产精品麻豆欧美日韩ww| 成人黄色片在线观看| 国产精品国产三级国产aⅴ入口| 精品综合免费视频观看|