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

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

?? htinet.c

?? www工具包. 這是W3C官方支持的www支撐庫(kù). 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*								       HTInet.c**	GENERIC INTERNET UTILITIES****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTInet.c,v 2.28 2000/01/06 10:48:50 kahan Exp $****	This code is in common between client and server sides.****	16 Mar 96  HFN	Spawned off from HTTCP.c*//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "HTParse.h"#include "HTAlert.h"#include "HTError.h"#include "HTNetMan.h"#include "HTDNS.h"#include "HTInet.h"					 /* Implemented here */#ifndef DEFAULT_NEWS_HOST#define DEFAULT_NEWS_HOST	"news"#endif#ifndef SERVER_FILE#define SERVER_FILE		"/usr/local/lib/rn/server"#endif/* ------------------------------------------------------------------------- *//***	Returns the string equivalent to the errno passed in the argument.**	We can't use errno directly as we have both errno and socerrno. The**	result is a dynamic string that must be freed by the caller.*/PUBLIC char * HTErrnoString (int errornumber){    char * msg = NULL;#ifdef _WINSOCKAPI_    if ((msg = (char *) HT_MALLOC(64)) == NULL)	HT_OUTOFMEM("HTErrnoString");    *msg = '\0';    sprintf(msg, "WinSock reported error=%ld", WSAGetLastError());#else#ifdef HAVE_STRERROR    StrAllocCopy(msg, strerror(errornumber));#else#ifdef HAVE_SYS_ERRLIST#ifdef HAVE_SYS_NERR    if (errno < sys_nerr)	StrAllocCopy(msg, sys_errlist[errno]);    else         StrAllocCopy(msg, "Unknown error");#else    StrAllocCopy(msg, sys_errlist[errno]);#endif /* HAVE_SYS_NERR */#else#ifdef VMS    if ((msg = (char *) HT_MALLOC(64)) == NULL)	HT_OUTOFMEM("HTErrnoString");    *msg = '\0';    sprintf(msg, "Unix errno=%ld dec, VMS error=%lx hex", errornumber,	    vaxc$errno);#else    StrAllocCopy(msg, "Error number not translated!");#endif /* _WINSOCKAPI_ */#endif /* VMS */#endif /* HAVE_SYS_ERRLIST */#endif /* HAVE_STRERROR */    return msg;}/*	Debug error message*/PUBLIC int HTInetStatus (int errnum, char * where){#ifdef VMS    HTTRACE(CORE_TRACE, "System Error Unix = %ld dec\n" _ errno);    HTTRACE(CORE_TRACE, "System Error VMS  = %lx hex\n" _ vaxc$errno);    return (-vaxc$errno);#else#ifdef _WINSOCKAPI_    HTTRACE(CORE_TRACE, "System Error Unix = %ld dec\n" _ errno);    HTTRACE(CORE_TRACE, "System Error WinSock error=%lx hex\n" _ 			    WSAGetLastError());    return (-errnum);#else#ifdef HTDEBUG    if (CORE_TRACE) {	char * errmsg = HTErrnoString(errnum);	HTTRACE(CORE_TRACE, "System Error %d after call to %s() failed\n............ %s\n" _		errno _ where _ errmsg);	HT_FREE(errmsg);    }#endif /* HTDEBUG */    return (-errnum);#endif /* _WINSOCKAPI_ */#endif /* VMS */}/*	Parse a cardinal value				       parse_cardinal()**	----------------------**** On entry,**	*pp	    points to first character to be interpreted, terminated by**		    non 0:9 character.**	*pstatus    points to status already valid**	maxvalue    gives the largest allowable value.**** On exit,**	*pp	    points to first unread character**	*pstatus    points to status updated iff bad*/PUBLIC unsigned int HTCardinal (int *		pstatus,				char **		pp,				unsigned int	max_value){    unsigned int n=0;    if ( (**pp<'0') || (**pp>'9')) {	    /* Null string is error */	*pstatus = -3;  /* No number where one expeceted */	return 0;    }    while ((**pp>='0') && (**pp<='9')) n = n*10 + *((*pp)++) - '0';    if (n>max_value) {	*pstatus = -4;  /* Cardinal outside range */	return 0;    }    return n;}/* ------------------------------------------------------------------------- *//*	       		        SIGNAL HANDLING 			     *//* ------------------------------------------------------------------------- */#ifdef WWWLIB_SIG/*								    HTSetSignal**  This function sets up signal handlers. This might not be necessary to**  call if the application has its own handlers.*/#include <signal.h>PUBLIC void HTSetSignal (void){    /* On some systems (SYSV) it is necessary to catch the SIGPIPE signal    ** when attemting to connect to a remote host where you normally should    ** get `connection refused' back    */    if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {	HTTRACE(CORE_TRACE, "HTSignal.... Can't catch SIGPIPE\n");    } else {	HTTRACE(CORE_TRACE, "HTSignal.... Ignoring SIGPIPE\n");    }}#else /* WWWLIB_SIG */PUBLIC void HTSetSignal (void) { }#endif /* WWWLIB_SIG *//* ------------------------------------------------------------------------- *//*	       		     HOST NAME FUNCTIONS 			     *//* ------------------------------------------------------------------------- *//*	Produce a string for an Internet address**	----------------------------------------**** On exit,**	returns	a pointer to a static string which must be copied if**		it is to be kept.*/PUBLIC const char * HTInetString (SockA * sin){#ifndef DECNET  /* Function only used below for a trace message */#if 0    /* This dumps core on some Sun systems :-(. The problem is now, that        the current implememtation only works for IP-addresses and not in       other address spaces. */    return inet_ntoa(sin->sin_addr);#endif    static char string[16];    sprintf(string, "%d.%d.%d.%d",	    (int)*((unsigned char *)(&sin->sin_addr)+0),	    (int)*((unsigned char *)(&sin->sin_addr)+1),	    (int)*((unsigned char *)(&sin->sin_addr)+2),	    (int)*((unsigned char *)(&sin->sin_addr)+3));    return string;#else    return "";#endif /* Decnet */}/*	Parse a network node address and port**	-------------------------------------** 	It is assumed that any portnumber and numeric host address**	is given in decimal notation. Separation character is '.'**	Any port number gets chopped off**      Returns:**	       	>0	Number of homes**		 0	Wait for persistent socket**		-1	Error*/PUBLIC int HTParseInet (HTHost * host, char * hostname, HTRequest * request){    int status = 1;    SockA *sin = &host->sock_addr;#ifdef DECNET    /* read Decnet node name. @@ Should know about DECnet addresses, but it's       probably worth waiting until the Phase transition from IV to V. */    sin->sdn_nam.n_len = min(DN_MAXNAML, strlen(hostname));  /* <=6 in phase 4 */    strncpy (sin->sdn_nam.n_name, hostname, sin->sdn_nam.n_len + 1);    HTTRACE(CORE_TRACE, "DECnet: Parsed address as object number %d on host %.6s...\n" _ 		sin->sdn_objnum _ hostname);#else /* Internet */    {	char *strptr = hostname;	while (*strptr) {	    if (*strptr == ':') {		*strptr = '\0';	   /* Don't want port number in numeric host */		break;	    }	    if (!isdigit((int) *strptr) && *strptr != '.')		break;	    strptr++;	}	if (!*strptr) {#ifdef GUSI	    sin->sin_addr = inet_addr(hostname); 		 /* See netinet/in.h */#else	    sin->sin_addr.s_addr = inet_addr(hostname);	  /* See arpa/inet.h */#endif	} else {	    char * port = strchr(hostname, ':');			/* Chop port */	    if (port) *port = '\0';	    status = HTGetHostByName(host, hostname, request);	}#ifdef HTDEBUG	if (status > 0)	    HTTRACE(CORE_TRACE, "ParseInet... as port %d on %s with %d homes\n" _		    (int) ntohs(sin->sin_port) _ HTInetString(sin) _ status);#endif /* HTDEBUG */    }#endif /* Internet vs. Decnet */    return status;}#if 0/*								HTGetDomainName**	Returns the current domain name without the local host name.**	The response is pointing to a static area that might be changed**	using HTSetHostName().****	Returns NULL on error, "" if domain name is not found*/PRIVATE char * HTGetDomainName (void){    char * host = HTGetHostName();    char * domain;    if (host && *host) {	if ((domain = strchr(host, '.')) != NULL)	    return ++domain;	else	    return "";    } else	return NULL;}#endif/*								HTGetHostName**	Returns the name of this host. It uses the following algoritm:****	1) gethostname()**	2) if the hostname doesn't contain any '.' try to read**	   /etc/resolv.conf. If there is no domain line in this file then**	3) Try getdomainname and do as the man pages say for resolv.conf (sun)**	   If there is no domain line in this file, then it is derived**	   from the domain name set by the domainname(1) command, usually**	   by removing the first component. For example, if the domain-**	   name is set to ``foo.podunk.edu'' then the default domain name**	   used will be ``pudunk.edu''.****	This is the same procedure as used by res_init() and sendmail.****	Return: hostname on success else NULL*/PUBLIC char * HTGetHostName (void){    char * hostname = NULL;    int fqdn = 0;				     /* 0=no, 1=host, 2=fqdn */    char name[MAXHOSTNAMELEN+1];    *(name+MAXHOSTNAMELEN) = '\0';#if defined(HAVE_SYSINFO) && defined(SI_HOSTNAME)    if (!fqdn && sysinfo(SI_HOSTNAME, name, MAXHOSTNAMELEN) > 0) {	char * dot = strchr(name, '.');	HTTRACE(CORE_TRACE, "HostName.... sysinfo says `%s\'\n" _ name);	StrAllocCopy(hostname, name);	fqdn = dot ? 2 : 1;    }#endif /* HAVE_SYSINFO */#ifdef HAVE_GETHOSTNAME    if (!fqdn && gethostname(name, MAXHOSTNAMELEN) == 0) {	char * dot = strchr(name, '.');	HTTRACE(CORE_TRACE, "HostName.... gethostname says `%s\'\n" _ name);	StrAllocCopy(hostname, name);	fqdn = dot ? 2 : 1;    }#endif /* HAVE_GETHOSTNAME */#ifdef RESOLV_CONF    /* Now try the resolver config file */    {	FILE *fp;	if (fqdn==1 && (fp = fopen(RESOLV_CONF, "r")) != NULL) {	    char buffer[80];	    *(buffer+79) = '\0';	    while (fgets(buffer, 79, fp)) {		if (!strncasecomp(buffer, "domain", 6) ||		    !strncasecomp(buffer, "search", 6)) {		    char *domainstr = buffer+6;		    char *end;		    while (*domainstr == ' ' || *domainstr == '\t')			domainstr++;		    end = domainstr;		    while (*end && !isspace((int) *end))			end++;		    *end = '\0';		    if (*domainstr) {			StrAllocCat(hostname, ".");			StrAllocCat(hostname, domainstr);			fqdn = 2;			break;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu精品一区二区在线观看| 粉嫩av亚洲一区二区图片| 欧美最猛黑人xxxxx猛交| 亚洲蜜臀av乱码久久精品蜜桃| 99re这里只有精品视频首页| 国产精品一二三| 韩国成人福利片在线播放| 国产精品原创巨作av| 国产**成人网毛片九色| 成人一区在线看| 色诱亚洲精品久久久久久| 99热国产精品| 91麻豆免费视频| 欧美系列一区二区| 97久久超碰精品国产| 欧美成人一级视频| 亚洲欧美日韩中文播放 | 亚洲中国最大av网站| 欧美性猛交xxxx黑人交| 奇米影视在线99精品| 国产色婷婷亚洲99精品小说| 99麻豆久久久国产精品免费优播| 亚洲国产精品自拍| 精品日韩一区二区三区免费视频| 高清不卡在线观看| 亚洲国产你懂的| 久久婷婷综合激情| 欧美影院精品一区| 福利一区在线观看| 免费在线观看一区| 一色桃子久久精品亚洲| 欧美一级日韩免费不卡| 国产91精品免费| 日韩va欧美va亚洲va久久| 国产欧美日韩精品一区| 欧美高清视频不卡网| 成人黄色综合网站| 乱一区二区av| 亚洲成人免费电影| 国产精品国产自产拍在线| 欧美精品第1页| 日本韩国一区二区三区| 国产精品亚洲人在线观看| 亚洲h在线观看| 亚洲欧美日韩电影| 国产日韩精品视频一区| 91精品国产麻豆国产自产在线 | 在线观看一区二区视频| 国产在线看一区| 免费观看日韩av| 亚洲综合成人网| 免费高清不卡av| 国产欧美一区二区精品久导航 | 亚洲欧美一区二区视频| 伦理电影国产精品| 久久亚洲私人国产精品va媚药| 亚洲一卡二卡三卡四卡无卡久久 | 国产91精品露脸国语对白| 亚洲蜜臀av乱码久久精品蜜桃| 精品盗摄一区二区三区| 3d动漫精品啪啪1区2区免费| 一本一道波多野结衣一区二区| 粉嫩aⅴ一区二区三区四区 | 午夜精品久久久| 一区二区三区资源| 国产成人99久久亚洲综合精品| 日韩高清一区在线| 亚洲一二三四在线| 亚洲黄网站在线观看| 综合欧美一区二区三区| 国产精品免费久久久久| 日本一区二区综合亚洲| 中文字幕国产一区| 欧美国产精品中文字幕| 国产情人综合久久777777| 久久九九国产精品| 久久久国际精品| 国产精品欧美极品| 国产精品美女视频| 国产精品久久久久国产精品日日| 亚洲国产精品精华液ab| 中文一区二区在线观看| 亚洲欧美中日韩| 亚洲黄色在线视频| 亚洲国产色一区| 美女一区二区视频| 国产精品一线二线三线精华| 国产成人av一区二区三区在线| 大胆亚洲人体视频| 99v久久综合狠狠综合久久| 日本精品一级二级| 欧美精品日韩一本| 欧美xxxxx牲另类人与| 欧美韩日一区二区三区| 亚洲免费在线视频| 亚洲不卡一区二区三区| 久久er99精品| 亚洲国产精品嫩草影院| 一区二区三区免费看视频| 精油按摩中文字幕久久| 日韩avvvv在线播放| 亚洲综合免费观看高清完整版| 亚洲精品视频观看| 丝袜美腿亚洲一区| 蜜臀a∨国产成人精品| 国产成人综合在线播放| 成人在线视频一区| 色综合 综合色| 精品一区二区影视| 日韩免费看的电影| 亚洲国产激情av| 婷婷一区二区三区| 国产精品乡下勾搭老头1| 91麻豆swag| 亚洲精品一区二区三区四区高清| 国产精品毛片久久久久久久| 午夜精品视频在线观看| 国产不卡在线视频| 欧美精品免费视频| 中文字幕五月欧美| 蜜桃av一区二区| 91丨九色丨蝌蚪富婆spa| 日韩精品自拍偷拍| 一二三四区精品视频| 蜜臀av一区二区| 色综合天天视频在线观看 | 色网站国产精品| 欧美成人精品3d动漫h| 亚洲精品成人天堂一二三| 奇米888四色在线精品| a亚洲天堂av| 久久中文字幕电影| 三级成人在线视频| 色综合一个色综合| 久久精品夜色噜噜亚洲aⅴ| 亚洲高清三级视频| 91在线视频官网| 欧美激情在线一区二区| 久久精品国产一区二区| 91久久精品网| 国产精品激情偷乱一区二区∴| 韩国午夜理伦三级不卡影院| 欧洲国内综合视频| 亚洲视频在线一区观看| 国产精品一区久久久久| 欧美一区二区视频网站| 亚洲午夜在线观看视频在线| 91在线视频免费观看| 国产日产欧美一区二区三区| 青青草精品视频| 51精品国自产在线| 亚洲午夜免费福利视频| 在线精品视频一区二区三四 | 国精产品一区一区三区mba桃花| 色综合咪咪久久| 国产91精品一区二区麻豆亚洲| 日韩一区欧美小说| 一本色道亚洲精品aⅴ| 亚洲免费观看高清完整版在线 | 久久久一区二区三区| 亚洲国产aⅴ成人精品无吗| 337p日本欧洲亚洲大胆色噜噜| 欧美性生活久久| 中文字幕免费在线观看视频一区| 极品瑜伽女神91| 欧美大片在线观看| 九一九一国产精品| 精品久久久影院| 九九在线精品视频| 亚洲精品一区二区三区影院| 久久精品国产亚洲高清剧情介绍| 日韩欧美的一区二区| 免费观看久久久4p| 日韩亚洲欧美中文三级| 精品制服美女丁香| 精品国产乱子伦一区| 韩国三级中文字幕hd久久精品| 精品美女一区二区| 国产在线精品不卡| 国产欧美日韩另类一区| 成人av资源站| 亚洲综合免费观看高清完整版在线| 日本精品一级二级| 视频一区在线播放| 欧美电影免费观看高清完整版在线 | 精品视频在线看| 日韩av成人高清| www一区二区| 波多野结衣亚洲一区| 尤物av一区二区| 欧美一区二区在线播放| 国产精品自产自拍| 亚洲天堂a在线| 欧美一区二区三区视频在线观看 | 另类人妖一区二区av| 国产色婷婷亚洲99精品小说| 日本久久电影网| 九九国产精品视频| 亚洲视频每日更新| 欧美一级电影网站|