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

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

?? uri.c

?? xml開源解析代碼.版本為libxml2-2.6.29,可支持GB3212.網(wǎng)絡(luò)消息發(fā)送XML時很有用.
?? C
?? 第 1 頁 / 共 5 頁
字號:
/** * uri.c: set of generic URI related routines  * * Reference: RFCs 2396, 2732 and 2373 * * See Copyright for the status of this software. * * daniel@veillard.com */#define IN_LIBXML#include "libxml.h"#include <string.h>#include <libxml/xmlmemory.h>#include <libxml/uri.h>#include <libxml/globals.h>#include <libxml/xmlerror.h>/************************************************************************ *									* *		Macros to differentiate various character type		* *			directly extracted from RFC 2396		* *									* ************************************************************************//* * alpha    = lowalpha | upalpha */#define IS_ALPHA(x) (IS_LOWALPHA(x) || IS_UPALPHA(x))/* * lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | *            "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | *            "u" | "v" | "w" | "x" | "y" | "z" */#define IS_LOWALPHA(x) (((x) >= 'a') && ((x) <= 'z'))/* * upalpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | *           "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | *           "U" | "V" | "W" | "X" | "Y" | "Z" */#define IS_UPALPHA(x) (((x) >= 'A') && ((x) <= 'Z'))#ifdef IS_DIGIT#undef IS_DIGIT#endif/* * digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" */#define IS_DIGIT(x) (((x) >= '0') && ((x) <= '9'))/* * alphanum = alpha | digit */#define IS_ALPHANUM(x) (IS_ALPHA(x) || IS_DIGIT(x))/* * hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | *               "a" | "b" | "c" | "d" | "e" | "f" */#define IS_HEX(x) ((IS_DIGIT(x)) || (((x) >= 'a') && ((x) <= 'f')) || \	    (((x) >= 'A') && ((x) <= 'F')))/* * mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" */#define IS_MARK(x) (((x) == '-') || ((x) == '_') || ((x) == '.') ||	\    ((x) == '!') || ((x) == '~') || ((x) == '*') || ((x) == '\'') ||	\    ((x) == '(') || ((x) == ')'))/* * reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," | * 	      "[" | "]" */#define IS_RESERVED(x) (((x) == ';') || ((x) == '/') || ((x) == '?') ||	\        ((x) == ':') || ((x) == '@') || ((x) == '&') || ((x) == '=') ||	\	((x) == '+') || ((x) == '$') || ((x) == ',') || ((x) == '[') || \	((x) == ']'))/* * unreserved = alphanum | mark */#define IS_UNRESERVED(x) (IS_ALPHANUM(x) || IS_MARK(x))/* * escaped = "%" hex hex */#define IS_ESCAPED(p) ((*(p) == '%') && (IS_HEX((p)[1])) &&		\	    (IS_HEX((p)[2])))/* * uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" | *                        "&" | "=" | "+" | "$" | "," */#define IS_URIC_NO_SLASH(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) ||\	        ((*(p) == ';')) || ((*(p) == '?')) || ((*(p) == ':')) ||\	        ((*(p) == '@')) || ((*(p) == '&')) || ((*(p) == '=')) ||\	        ((*(p) == '+')) || ((*(p) == '$')) || ((*(p) == ',')))/* * pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | "," */#define IS_PCHAR(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) ||	\	        ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) ||\	        ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) ||\	        ((*(p) == ',')))/* * rel_segment   = 1*( unreserved | escaped | *                 ";" | "@" | "&" | "=" | "+" | "$" | "," ) */#define IS_SEGMENT(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) ||	\          ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) ||	\	  ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) ||	\	  ((*(p) == ',')))/* * scheme = alpha *( alpha | digit | "+" | "-" | "." ) */#define IS_SCHEME(x) ((IS_ALPHA(x)) || (IS_DIGIT(x)) ||			\	              ((x) == '+') || ((x) == '-') || ((x) == '.'))/* * reg_name = 1*( unreserved | escaped | "$" | "," | *                ";" | ":" | "@" | "&" | "=" | "+" ) */#define IS_REG_NAME(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) ||	\       ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) ||		\       ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) ||		\       ((*(p) == '=')) || ((*(p) == '+')))/* * userinfo = *( unreserved | escaped | ";" | ":" | "&" | "=" | *                      "+" | "$" | "," ) */#define IS_USERINFO(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) ||	\       ((*(p) == ';')) || ((*(p) == ':')) || ((*(p) == '&')) ||		\       ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) ||		\       ((*(p) == ',')))/* * uric = reserved | unreserved | escaped */#define IS_URIC(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) ||		\	            (IS_RESERVED(*(p))))/*                                                                              * unwise = "{" | "}" | "|" | "\" | "^" | "`"*/                                                                             #define IS_UNWISE(p)                                                    \      (((*(p) == '{')) || ((*(p) == '}')) || ((*(p) == '|')) ||         \       ((*(p) == '\\')) || ((*(p) == '^')) || ((*(p) == '[')) ||        \       ((*(p) == ']')) || ((*(p) == '`')))  /* * Skip to next pointer char, handle escaped sequences */#define NEXT(p) ((*p == '%')? p += 3 : p++)/* * Productions from the spec. * *    authority     = server | reg_name *    reg_name      = 1*( unreserved | escaped | "$" | "," | *                        ";" | ":" | "@" | "&" | "=" | "+" ) * * path          = [ abs_path | opaque_part ] */#define STRNDUP(s, n) (char *) xmlStrndup((const xmlChar *)(s), (n))/************************************************************************ *									* *			Generic URI structure functions			* *									* ************************************************************************//** * xmlCreateURI: * * Simply creates an empty xmlURI * * Returns the new structure or NULL in case of error */xmlURIPtrxmlCreateURI(void) {    xmlURIPtr ret;    ret = (xmlURIPtr) xmlMalloc(sizeof(xmlURI));    if (ret == NULL) {	xmlGenericError(xmlGenericErrorContext,		"xmlCreateURI: out of memory\n");	return(NULL);    }    memset(ret, 0, sizeof(xmlURI));    return(ret);}/** * xmlSaveUri: * @uri:  pointer to an xmlURI * * Save the URI as an escaped string * * Returns a new string (to be deallocated by caller) */xmlChar *xmlSaveUri(xmlURIPtr uri) {    xmlChar *ret = NULL;    const char *p;    int len;    int max;    if (uri == NULL) return(NULL);    max = 80;    ret = (xmlChar *) xmlMallocAtomic((max + 1) * sizeof(xmlChar));    if (ret == NULL) {	xmlGenericError(xmlGenericErrorContext,		"xmlSaveUri: out of memory\n");	return(NULL);    }    len = 0;    if (uri->scheme != NULL) {	p = uri->scheme;	while (*p != 0) {	    if (len >= max) {		max *= 2;		ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));		if (ret == NULL) {		    xmlGenericError(xmlGenericErrorContext,			    "xmlSaveUri: out of memory\n");		    return(NULL);		}	    }	    ret[len++] = *p++;	}	if (len >= max) {	    max *= 2;	    ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));	    if (ret == NULL) {		xmlGenericError(xmlGenericErrorContext,			"xmlSaveUri: out of memory\n");		return(NULL);	    }	}	ret[len++] = ':';    }    if (uri->opaque != NULL) {	p = uri->opaque;	while (*p != 0) {	    if (len + 3 >= max) {		max *= 2;		ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));		if (ret == NULL) {		    xmlGenericError(xmlGenericErrorContext,			    "xmlSaveUri: out of memory\n");		    return(NULL);		}	    }	    if (IS_RESERVED(*(p)) || IS_UNRESERVED(*(p)))		ret[len++] = *p++;	    else {		int val = *(unsigned char *)p++;		int hi = val / 0x10, lo = val % 0x10;		ret[len++] = '%';		ret[len++] = hi + (hi > 9? 'A'-10 : '0');		ret[len++] = lo + (lo > 9? 'A'-10 : '0');	    }	}    } else {	if (uri->server != NULL) {	    if (len + 3 >= max) {		max *= 2;		ret = (xmlChar *) xmlRealloc(ret, (max + 1) * sizeof(xmlChar));		if (ret == NULL) {		    xmlGenericError(xmlGenericErrorContext,			    "xmlSaveUri: out of memory\n");		    return(NULL);		}	    }	    ret[len++] = '/';	    ret[len++] = '/';	    if (uri->user != NULL) {		p = uri->user;		while (*p != 0) {		    if (len + 3 >= max) {			max *= 2;			ret = (xmlChar *) xmlRealloc(ret,				(max + 1) * sizeof(xmlChar));			if (ret == NULL) {			    xmlGenericError(xmlGenericErrorContext,				    "xmlSaveUri: out of memory\n");			    return(NULL);			}		    }		    if ((IS_UNRESERVED(*(p))) ||			((*(p) == ';')) || ((*(p) == ':')) ||			((*(p) == '&')) || ((*(p) == '=')) ||			((*(p) == '+')) || ((*(p) == '$')) ||			((*(p) == ',')))			ret[len++] = *p++;		    else {			int val = *(unsigned char *)p++;			int hi = val / 0x10, lo = val % 0x10;			ret[len++] = '%';			ret[len++] = hi + (hi > 9? 'A'-10 : '0');			ret[len++] = lo + (lo > 9? 'A'-10 : '0');		    }		}		if (len + 3 >= max) {		    max *= 2;		    ret = (xmlChar *) xmlRealloc(ret,			    (max + 1) * sizeof(xmlChar));		    if (ret == NULL) {			xmlGenericError(xmlGenericErrorContext,				"xmlSaveUri: out of memory\n");			return(NULL);		    }		}		ret[len++] = '@';	    }	    p = uri->server;	    while (*p != 0) {		if (len >= max) {		    max *= 2;		    ret = (xmlChar *) xmlRealloc(ret,			    (max + 1) * sizeof(xmlChar));		    if (ret == NULL) {			xmlGenericError(xmlGenericErrorContext,				"xmlSaveUri: out of memory\n");			return(NULL);		    }		}		ret[len++] = *p++;	    }	    if (uri->port > 0) {		if (len + 10 >= max) {		    max *= 2;		    ret = (xmlChar *) xmlRealloc(ret,			    (max + 1) * sizeof(xmlChar));		    if (ret == NULL) {			xmlGenericError(xmlGenericErrorContext,				"xmlSaveUri: out of memory\n");			return(NULL);		    }		}		len += snprintf((char *) &ret[len], max - len, ":%d", uri->port);	    }	} else if (uri->authority != NULL) {	    if (len + 3 >= max) {		max *= 2;		ret = (xmlChar *) xmlRealloc(ret,			(max + 1) * sizeof(xmlChar));		if (ret == NULL) {		    xmlGenericError(xmlGenericErrorContext,			    "xmlSaveUri: out of memory\n");		    return(NULL);		}	    }	    ret[len++] = '/';	    ret[len++] = '/';	    p = uri->authority;	    while (*p != 0) {		if (len + 3 >= max) {		    max *= 2;		    ret = (xmlChar *) xmlRealloc(ret,			    (max + 1) * sizeof(xmlChar));		    if (ret == NULL) {			xmlGenericError(xmlGenericErrorContext,				"xmlSaveUri: out of memory\n");			return(NULL);		    }		}		if ((IS_UNRESERVED(*(p))) ||                    ((*(p) == '$')) || ((*(p) == ',')) || ((*(p) == ';')) ||                    ((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) ||                    ((*(p) == '=')) || ((*(p) == '+')))		    ret[len++] = *p++;		else {		    int val = *(unsigned char *)p++;		    int hi = val / 0x10, lo = val % 0x10;		    ret[len++] = '%';		    ret[len++] = hi + (hi > 9? 'A'-10 : '0');		    ret[len++] = lo + (lo > 9? 'A'-10 : '0');		}	    }	} else if (uri->scheme != NULL) {	    if (len + 3 >= max) {		max *= 2;		ret = (xmlChar *) xmlRealloc(ret,			(max + 1) * sizeof(xmlChar));		if (ret == NULL) {		    xmlGenericError(xmlGenericErrorContext,			    "xmlSaveUri: out of memory\n");		    return(NULL);		}	    }	    ret[len++] = '/';	    ret[len++] = '/';	}	if (uri->path != NULL) {	    p = uri->path;	    while (*p != 0) {		if (len + 3 >= max) {		    max *= 2;		    ret = (xmlChar *) xmlRealloc(ret,			    (max + 1) * sizeof(xmlChar));		    if (ret == NULL) {			xmlGenericError(xmlGenericErrorContext,				"xmlSaveUri: out of memory\n");			return(NULL);		    }		}		if ((IS_UNRESERVED(*(p))) || ((*(p) == '/')) ||                    ((*(p) == ';')) || ((*(p) == '@')) || ((*(p) == '&')) ||	            ((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) ||	            ((*(p) == ',')))		    ret[len++] = *p++;		else {		    int val = *(unsigned char *)p++;		    int hi = val / 0x10, lo = val % 0x10;		    ret[len++] = '%';		    ret[len++] = hi + (hi > 9? 'A'-10 : '0');		    ret[len++] = lo + (lo > 9? 'A'-10 : '0');		}	    }	}	if (uri->query_raw != NULL) {	    if (len + 1 >= max) {		max *= 2;		ret = (xmlChar *) xmlRealloc(ret,			(max + 1) * sizeof(xmlChar));		if (ret == NULL) {		    xmlGenericError(xmlGenericErrorContext,			    "xmlSaveUri: out of memory\n");		    return(NULL);		}	    }	    ret[len++] = '?';	    p = uri->query_raw;	    while (*p != 0) {		if (len + 1 >= max) {		    max *= 2;		    ret = (xmlChar *) xmlRealloc(ret,			    (max + 1) * sizeof(xmlChar));		    if (ret == NULL) {			xmlGenericError(xmlGenericErrorContext,				"xmlSaveUri: out of memory\n");			return(NULL);		    }		}		ret[len++] = *p++;	    }	} else if (uri->query != NULL) {	    if (len + 3 >= max) {		max *= 2;		ret = (xmlChar *) xmlRealloc(ret,			(max + 1) * sizeof(xmlChar));		if (ret == NULL) {		    xmlGenericError(xmlGenericErrorContext,			    "xmlSaveUri: out of memory\n");		    return(NULL);		}	    }	    ret[len++] = '?';	    p = uri->query;	    while (*p != 0) {		if (len + 3 >= max) {		    max *= 2;		    ret = (xmlChar *) xmlRealloc(ret,			    (max + 1) * sizeof(xmlChar));		    if (ret == NULL) {			xmlGenericError(xmlGenericErrorContext,				"xmlSaveUri: out of memory\n");			return(NULL);		    }		}		if ((IS_UNRESERVED(*(p))) || (IS_RESERVED(*(p)))) 		    ret[len++] = *p++;		else {		    int val = *(unsigned char *)p++;		    int hi = val / 0x10, lo = val % 0x10;		    ret[len++] = '%';		    ret[len++] = hi + (hi > 9? 'A'-10 : '0');		    ret[len++] = lo + (lo > 9? 'A'-10 : '0');		}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲美洲综合色网| 国产成人自拍网| 日韩美女一区二区三区| 欧美色视频一区| 色94色欧美sute亚洲线路一ni | 亚洲国产精品一区二区尤物区| 欧美日韩另类一区| 日本成人在线视频网站| 亚洲网友自拍偷拍| 亚洲高清在线精品| 日本中文字幕一区二区有限公司| 亚洲国产精品自拍| 肉色丝袜一区二区| 久久激情五月激情| 青青草原综合久久大伊人精品优势| 国产精品美女一区二区| 久久久综合激的五月天| 亚洲美女淫视频| 日韩视频在线永久播放| 精品一区二区久久| 亚洲福中文字幕伊人影院| 国产三级一区二区三区| 欧美日韩aaa| 色94色欧美sute亚洲线路二| 91色porny在线视频| 欧美猛男超大videosgay| 欧美精品一区二区高清在线观看| 国产日本亚洲高清| 欧美情侣在线播放| 色综合一区二区| 麻豆成人免费电影| 亚洲成人777| 伊人性伊人情综合网| 亚洲国产精品精华液ab| 欧美精品 日韩| 91免费视频观看| 丁香五精品蜜臀久久久久99网站| 久久伊人蜜桃av一区二区| 大桥未久av一区二区三区中文| 亚洲自拍偷拍欧美| 看电视剧不卡顿的网站| 精品一区二区久久久| 国产一区二区在线免费观看| 国产精品原创巨作av| 日本韩国一区二区三区| 69堂精品视频| 日韩美女久久久| 精一区二区三区| 色综合久久中文字幕综合网 | 国产一区二区精品久久99| 麻豆成人av在线| 色久综合一二码| 久久精品男人的天堂| 一区二区国产视频| 国产成人精品午夜视频免费| 欧美亚洲综合另类| 亚洲精品一区二区三区精华液| 亚洲欧洲成人自拍| 亚洲人成网站在线| 91福利小视频| 亚洲国产日韩a在线播放性色| 一本大道av一区二区在线播放| 国产精品护士白丝一区av| 91污在线观看| 天天射综合影视| 欧美一区二区三级| 一本色道久久综合狠狠躁的推荐 | 欧美日韩精品免费| 一区二区三区中文字幕电影 | 日韩一区二区三区高清免费看看| 成人免费小视频| 色综合中文字幕国产 | 欧美日韩国产精选| 国产午夜精品福利| 国产aⅴ精品一区二区三区色成熟| 日韩美女一区二区三区| 国产精品中文字幕欧美| 久久精品视频在线看| 国产ts人妖一区二区| 亚洲一区二区三区四区在线免费观看| 色狠狠av一区二区三区| fc2成人免费人成在线观看播放| 精品一区二区在线观看| 亚洲在线观看免费视频| 国产精品不卡一区二区三区| 精品国产乱码久久久久久久久| 欧美日韩一区二区三区在线 | 99精品久久99久久久久| 国产成人免费视频网站| 精品午夜久久福利影院| 精品一区二区在线免费观看| 美国十次了思思久久精品导航| 亚洲123区在线观看| 亚洲自拍偷拍图区| 亚洲成a人片在线观看中文| 国产精品久久久久久久蜜臀| 久久亚洲欧美国产精品乐播 | 亚洲人吸女人奶水| 亚洲精品欧美专区| 亚洲午夜一区二区三区| 日本一道高清亚洲日美韩| 天堂av在线一区| 国产一区二区三区观看| 国产精品一区二区三区网站| 成人精品国产一区二区4080| 免费三级欧美电影| 国产亚洲综合在线| 日韩视频在线永久播放| 3d成人h动漫网站入口| 精品久久久久久久久久久院品网| 欧美色男人天堂| 欧美日韩在线三级| 欧美日韩一级大片网址| 欧美一二三四在线| 国产色产综合色产在线视频| 国产精品全国免费观看高清| 亚洲激情成人在线| 精品一区二区三区的国产在线播放| 精品一区二区三区免费| 成人99免费视频| 911精品国产一区二区在线| 精品欧美一区二区久久| 成人欧美一区二区三区小说| 一区二区三区四区在线| 精品一区二区三区不卡| 波多野结衣精品在线| 91麻豆精品国产91久久久久| 亚洲国产日韩精品| 天天影视涩香欲综合网| 中文字幕欧美激情| 国产一区二区伦理| 精品国一区二区三区| 日韩国产在线观看| 欧美一二区视频| 日本在线不卡视频| 欧美一区二区三区色| 午夜精品久久久久久久 | 天天综合色天天综合色h| 午夜一区二区三区视频| 狠狠色丁香久久婷婷综合_中 | 欧美日韩国产高清一区二区| 精品国精品自拍自在线| 亚洲一区二区三区四区在线观看| 国产在线不卡一卡二卡三卡四卡| 色综合久久中文字幕综合网| 欧美精品一区在线观看| 视频一区欧美日韩| 在线观看视频91| 亚洲六月丁香色婷婷综合久久 | 久久天堂av综合合色蜜桃网| 日韩精品每日更新| 欧美揉bbbbb揉bbbbb| 亚洲自拍偷拍综合| 欧美性色黄大片| 午夜精品久久久久| 56国语精品自产拍在线观看| 亚洲丰满少妇videoshd| 欧美日韩国产首页| 亚洲成av人片| 日韩写真欧美这视频| 韩国欧美国产1区| 26uuu国产电影一区二区| 国产精品一卡二卡在线观看| 亚洲精品一区二区三区蜜桃下载| 老司机精品视频在线| 国产三级一区二区三区| 91在线视频网址| 视频在线在亚洲| 26uuu欧美日本| 91美女精品福利| 青青草成人在线观看| 国产婷婷色一区二区三区四区| 国产91对白在线观看九色| 亚洲日本韩国一区| 日韩精品最新网址| 成人午夜大片免费观看| 亚洲午夜久久久久久久久电影院| 欧美日本韩国一区二区三区视频| 久久国产精品99久久人人澡| 国产日韩欧美综合一区| 欧美福利电影网| 99精品视频在线免费观看| 美女脱光内衣内裤视频久久网站| 国产精品久久久久久久久动漫 | 欧美三级中文字幕| 成人激情开心网| 大胆欧美人体老妇| 激情图片小说一区| 手机精品视频在线观看| 一区二区三区**美女毛片| 精品久久久久一区| 日韩欧美另类在线| 91精品国产一区二区三区 | 日本高清不卡在线观看| 成人免费高清视频在线观看| 激情综合五月天| 日本美女一区二区三区| 亚洲成人综合网站| 午夜久久久影院| 免费人成黄页网站在线一区二区|