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

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

?? nxml_utf.c

?? libnxml-no-curl-簡化版2007-07-01,一個別很不錯的XML生成和解析程序。
?? C
字號:
/* nXml - Copyright (C) 2005 bakunin - Andrea Marchesini  *                                <bakunin@autistici.org> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */#ifdef HAVE_CONFIG_H#include <config.h>#else# error Use configure; make; make install#endif#include "nxml.h"#include "nxml_internal.h"/* * UTF-8 * 7bits:	0xxxxxxx * 11bits:	110xxxxx 10xxxxxx * 16bits:	1110xxxx 10xxxxxx 10xxxxxx * 21bits:	11110xxx 10xxxxxx 10xxxxxx 10xxxxxx * 26bits:	111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx * 31bits:	1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */int64_t__nxml_utf8 (unsigned char **buffer, size_t * size, int *byte){  int64_t ret;  unsigned char c0 = **buffer, c1, c2, c3, c4;  if (c0 < 0x80 || *size < 2)    {      *byte = 1;      ret = (int64_t) c0;      return ret;    }  c1 = *(*buffer + 1);  if ((c0 & 0xe0) == 0xc0 || *size < 3)    {      *byte = 2;      ret = (((c0 & 0x1f) << 6) | (c1 & 0x3f));      return ret;    }  c2 = *(*buffer + 2);  if ((c0 & 0xf0) == 0xe0 || *size < 4)    {      *byte = 3;      ret = (((c0 & 0x0f) << 12) | ((c1 & 0x3f) << 6) | (c2 & 0x3f));      return ret;    }  c3 = *(*buffer + 3);  if ((c0 & 0xf8) == 0xf0 || *size < 5)    {      *byte = 4;      ret =	(((c0 & 0x7) << 18) | ((c1 & 0x3f) << 12) | ((c2 & 0x3f) << 6) |	 (c3 & 0x3f));      return ret;    }  c4 = *(*buffer + 4);  if ((c0 & 0xfc) == 0xf8)    {      *byte = 5;      ret =	(((c0 & 0x3) << 24) | ((c1 & 0x3f) << 18) | ((c2 & 0x3f) << 12) |	 ((c3 & 0x3f) << 6) | (c4 & 0x3f));      return ret;    }  *byte = 1;  ret = (int64_t) c0;  return ret;}#define __NXML_XTO8( x , b ) \	    if(byte>=1023-b) { \		    if(!(ret=realloc(ret, (j+b)*sizeof(char)))) return -1; \		    byte=0; \	    } \            memcpy(&ret[j], x, b); \	    j+=b; \	    byte+=b;static size_t__nxml_utf16to8 (int le, unsigned char *buffer, size_t size,		 unsigned char **ret_buffer){  int64_t ch;  int j = 0;  int byte = 0;  unsigned char *ret;  if (!(ret = (unsigned char *) malloc (sizeof (unsigned char) * 1024)))    return -1;  while (size > 0)    {      if (le)	{	  if ((*buffer & 0xfc) == 0xd8 && (*(buffer + 2) & 0xfc) == 0xdc)	    {	      ch = ((*buffer & 0x03) << 18) + (*(buffer + 1) << 10) +		((*(buffer + 2) & 0x03) << 8) + *(buffer + 3);	      buffer += 4;	      size -= 4;	    }	  else	    {	      ch = (*buffer << 8) + *(buffer + 1);	      buffer += 2;	      size -= 2;	    }	}      else if ((*(buffer + 1) & 0xfc) == 0xd8	       && (*(buffer + 3) & 0xfc) == 0xdc)	{	  ch = ((*(buffer + 1) & 0x03) << 18) + (*buffer << 10) +	    ((*(buffer + 3) & 0x03) << 8) + *(buffer + 2);	  buffer += 4;	  size -= 4;	}      else	{	  ch = (*(buffer + 1) << 8) + *buffer;	  buffer += 2;	  size -= 2;	}      /* 8bit:  1000000 */      if (ch < 0x80)	{	  __NXML_XTO8 ((void *) &ch, 1);	}      /* 11bit:  xx100000 xx000000       *         1000 0000 0000        *      0x 8    0    0       */      else if (ch < 0x800)	{	  /* 11bits:    110xxxxx 10xxxxxx */	  char a[2];	  a[0] = (ch >> 6) | 0xc0;	  a[1] = (ch & 0x2f) | 0x80;	  __NXML_XTO8 ((void *) a, 2);	}      /* 16bit:  xxx10000 xx000000 xx000000       *         1 0000 0000 0000 0000       *      0x 1    0    0    0    0       */      else if (ch < 0x10000)	{	  /* 16bits:  1110xxxx 10xxxxxx 10xxxxxx */	  char a[3];	  a[0] = (ch >> 12) | 0xe0;	  a[1] = ((ch >> 6) & 0x2f) | 0x80;	  a[2] = (ch & 0x2f) | 0x80;	  __NXML_XTO8 ((void *) a, 3);	}      /* 21bit:  xxxx1000 xx000000 xx000000 xx000000       *         10 0000 0000 0000 0000 0000       *      0x 2  0    0    0    0    0       */      else if (ch < 0x200000)	{	  /* 21bits:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */	  char a[4];	  a[0] = (ch >> 18) | 0xf0;	  a[1] = ((ch >> 12) & 0x2f);	  a[2] = ((ch >> 6) & 0x2f);	  a[3] = (ch & 0x2f);	  __NXML_XTO8 ((void *) a, 4);	}      /* 26bit:  xxxxx100 xx000000 xx000000 xx000000 xx000000       *         100 0000 0000 0000 0000 0000 0000       *      0x 4   0    0    0    0    0    0       */      else if (ch < 0x4000000)	{	  /* 21bits:  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */	  char a[5];	  a[0] = (ch >> 24) | 0xf8;	  a[1] = ((ch >> 18) & 0x2f);	  a[2] = ((ch >> 12) & 0x2f);	  a[3] = ((ch >> 6) & 0x2f);	  a[4] = (ch & 0x2f);	  __NXML_XTO8 ((void *) a, 5);	}    }  ret[j] = 0;  (*ret_buffer) = ret;  return (size_t) j;}static size_t__nxml_ucs4to8 (int type, unsigned char *buffer, size_t size,		unsigned char **ret_buffer){  int64_t ch;  int j = 0;  int byte = 0;  unsigned char *ret;  if (!(ret = (unsigned char *) malloc (sizeof (unsigned char) * 1024)))    return -1;  while (size > 0)    {      switch (type)	{	case 0:		/* 1234 */	  ch =	    (*buffer << 18) + (*(buffer + 1) << 12) + (*(buffer + 2) << 6) +	    (*(buffer + 3));	  break;	case 1:		/* 4321 */	  ch =	    (*buffer) + (*(buffer + 1) << 6) + (*(buffer + 2) << 12) +	    (*(buffer + 3) << 18);	  break;	case 2:		/* 2143 */	  ch =	    ((*buffer) << 12) + (*(buffer + 1) << 18) + (*(buffer + 2)) +	    (*(buffer + 3) << 6);	  break;	case 3:		/* 3412 */	  ch =	    ((*buffer) << 6) + (*(buffer + 1)) + (*(buffer + 2) << 18) +	    (*(buffer + 3) << 12);	  break;	}      buffer += 4;      size -= 4;      /* 8bit:  1000000 */      if (ch < 0x80)	{	  __NXML_XTO8 ((void *) &ch, 1);	}      /* 11bit:  xx100000 xx000000       *         1000 0000 0000        *      0x 8    0    0       */      else if (ch < 0x800)	{	  /* 11bits:    110xxxxx 10xxxxxx */	  char a[2];	  a[0] = (ch >> 6) | 0xc0;	  a[1] = (ch & 0x2f) | 0x80;	  __NXML_XTO8 ((void *) a, 2);	}      /* 16bit:  xxx10000 xx000000 xx000000       *         1 0000 0000 0000 0000       *      0x 1    0    0    0    0       */      else if (ch < 0x10000)	{	  /* 16bits:  1110xxxx 10xxxxxx 10xxxxxx */	  char a[3];	  a[0] = (ch >> 12) | 0xe0;	  a[1] = ((ch >> 6) & 0x2f) | 0x80;	  a[2] = (ch & 0x2f) | 0x80;	  __NXML_XTO8 ((void *) a, 3);	}      /* 21bit:  xxxx1000 xx000000 xx000000 xx000000       *         10 0000 0000 0000 0000 0000       *      0x 2  0    0    0    0    0       */      else if (ch < 0x200000)	{	  /* 21bits:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */	  char a[4];	  a[0] = (ch >> 18) | 0xf0;	  a[1] = ((ch >> 12) & 0x2f);	  a[2] = ((ch >> 6) & 0x2f);	  a[3] = (ch & 0x2f);	  __NXML_XTO8 ((void *) a, 4);	}      /* 26bit:  xxxxx100 xx000000 xx000000 xx000000 xx000000       *         100 0000 0000 0000 0000 0000 0000       *      0x 4   0    0    0    0    0    0       */      else if (ch < 0x4000000)	{	  /* 21bits:  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */	  char a[5];	  a[0] = (ch >> 24) | 0xf8;	  a[1] = ((ch >> 18) & 0x2f);	  a[2] = ((ch >> 12) & 0x2f);	  a[3] = ((ch >> 6) & 0x2f);	  a[4] = (ch & 0x2f);	  __NXML_XTO8 ((void *) a, 5);	}    }  ret[j] = 0;  (*ret_buffer) = ret;  return (size_t) j;}int__nxml_utf_detection (char *r_buffer, size_t r_size, char **buffer,		      size_t * size, nxml_charset_t * charset){  /* Utf-8: 0x3c 0x3f 0x78 0x6d */  if (strncmp (r_buffer, "<?xml", 5))    {      *charset = NXML_CHARSET_UTF8;      return 0;    }  /* Utf-16LE: 0x00 0x3c 0x00 0x3f */  if (*r_buffer == 0x00 && *(r_buffer + 1) == 0x3c && *(r_buffer + 2) == 0x00      && *(r_buffer + 3) == 0x3f)    {      (*size) =	__nxml_utf16to8 (1, (unsigned char *) r_buffer, r_size,			 (unsigned char **) buffer);      if (*size < 0)	return -1;      *charset = NXML_CHARSET_UTF16LE;      return 1;    }  /* Utf-16BE: 0x3c 0x00 0x3f 0x00 */  if (*r_buffer == 0x3c && *(r_buffer + 1) == 0x00 && *(r_buffer + 2) == 0x3f      && *(r_buffer + 3) == 0x00)    {      (*size) =	__nxml_utf16to8 (0, (unsigned char *) r_buffer, r_size,			 (unsigned char **) buffer);      if (*size < 0)	return -1;      *charset = NXML_CHARSET_UTF16BE;      return 1;    }  /* UCS-4 (1234): 0x00 0x00 0x00 0x3c */  if (*r_buffer == 0x00 && *(r_buffer + 1) == 0x00 && *(r_buffer + 2) == 0x00      && *(r_buffer + 3) == 0x3c)    {      (*size) =	__nxml_ucs4to8 (0, (unsigned char *) r_buffer, r_size,			(unsigned char **) buffer);      if (*size < 0)	return -1;      *charset = NXML_CHARSET_UCS4_1234;      return 1;    }  /* UCS-4 (4321): 0x3c 0x00 0x00 0x00 */  if (*r_buffer == 0x3c && *(r_buffer + 1) == 0x00 && *(r_buffer + 2) == 0x00      && *(r_buffer + 3) == 0x00)    {      (*size) =	__nxml_ucs4to8 (1, (unsigned char *) r_buffer, r_size,			(unsigned char **) buffer);      if (*size < 0)	return -1;      *charset = NXML_CHARSET_UCS4_4321;      return 1;    }  /* UCS-4 (2143): 0x00 0x00 0x3c 0x00 */  if (*r_buffer == 0x00 && *(r_buffer + 1) == 0x00 && *(r_buffer + 2) == 0x3c      && *(r_buffer + 3) == 0x00)    {      (*size) =	__nxml_ucs4to8 (2, (unsigned char *) r_buffer, r_size,			(unsigned char **) buffer);      if (*size < 0)	return -1;      *charset = NXML_CHARSET_UCS4_2143;      return 1;    }  /* UCS-4 (3412): 0x00 0x3c 0x00 0x00 */  if (*r_buffer == 0x00 && *(r_buffer + 1) == 0x3c && *(r_buffer + 2) == 0x00      && *(r_buffer + 3) == 0x00)    {      (*size) =	__nxml_ucs4to8 (3, (unsigned char *) r_buffer, r_size,			(unsigned char **) buffer);      if (*size < 0)	return -1;      *charset = NXML_CHARSET_UCS4_3412;      return 1;    }  *charset = NXML_CHARSET_UNKNOWN;  return 0;}int64_t__nxml_int_charset (int ch, unsigned char *str, char *charset){  if (!charset || strcasecmp (charset, "utf-8"))    {      str[0] = ch;      return 1;    }  /* 8bit:  1000000 */  if (ch < 0x80)    {      str[0] = ch;      return 1;    }  /* 11bit:  xx100000 xx000000   *         1000 0000 0000    *      0x 8    0    0   */  else if (ch < 0x800)    {      /* 11bits:    110xxxxx 10xxxxxx */      str[0] = (ch >> 6) | 0xc0;      str[1] = (ch & 0x2f) | 0x80;      return 2;    }  /* 16bit:  xxx10000 xx000000 xx000000   *         1 0000 0000 0000 0000   *      0x 1    0    0    0    0   */  else if (ch < 0x10000)    {      /* 16bits:  1110xxxx 10xxxxxx 10xxxxxx */      str[0] = (ch >> 12) | 0xe0;      str[1] = ((ch >> 6) & 0x2f) | 0x80;      str[2] = (ch & 0x2f) | 0x80;      return 3;    }  /* 21bit:  xxxx1000 xx000000 xx000000 xx000000   *         10 0000 0000 0000 0000 0000   *      0x 2  0    0    0    0    0   */  else if (ch < 0x200000)    {      /* 21bits:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */      str[0] = (ch >> 18) | 0xf0;      str[1] = ((ch >> 12) & 0x2f);      str[2] = ((ch >> 6) & 0x2f);      str[3] = (ch & 0x2f);      return 4;    }  /* 26bit:  xxxxx100 xx000000 xx000000 xx000000 xx000000   *         100 0000 0000 0000 0000 0000 0000   *      0x 4   0    0    0    0    0    0   */  else if (ch < 0x4000000)    {      /* 21bits:  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx */      str[0] = (ch >> 24) | 0xf8;      str[1] = ((ch >> 18) & 0x2f);      str[2] = ((ch >> 12) & 0x2f);      str[3] = ((ch >> 6) & 0x2f);      str[4] = (ch & 0x2f);      return 5;    }  return 0;}/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片你懂的| 精品欧美一区二区在线观看| 中文字幕一区av| a级精品国产片在线观看| 国产蜜臀97一区二区三区| 黄网站免费久久| 欧美激情在线一区二区三区| 不卡的av网站| 一区二区三区欧美激情| 欧美在线视频全部完| 三级亚洲高清视频| 久久久777精品电影网影网| 成人午夜av电影| 亚洲精品国产精华液| 欧美狂野另类xxxxoooo| 国产综合色在线| 专区另类欧美日韩| 在线播放欧美女士性生活| 韩国毛片一区二区三区| 国产精品对白交换视频 | 欧美自拍丝袜亚洲| 亚洲成a人片综合在线| 欧美一级欧美三级在线观看| 精品一区二区三区在线播放| 中文字幕av一区 二区| 日本黄色一区二区| 精品亚洲免费视频| 91视频免费播放| 五月婷婷激情综合| 国产网站一区二区三区| 成人动漫av在线| 亚洲一区二区欧美激情| 精品国产免费一区二区三区香蕉| 成人精品视频一区| 日韩精品一二三区| 国产精品久久久久一区二区三区共| 欧美中文一区二区三区| 国产一区二区三区视频在线播放| 亚洲一区二区三区中文字幕| 2024国产精品| 91精品国产综合久久久久| 成人黄色777网| 久久se这里有精品| 亚洲成人在线免费| 亚洲欧洲在线观看av| 亚洲精品videosex极品| 欧美性大战久久久| 一区二区三区.www| 国产女主播视频一区二区| 欧美精品三级日韩久久| 成人免费毛片片v| 日本午夜精品一区二区三区电影 | 97久久久精品综合88久久| 日本一道高清亚洲日美韩| 亚洲色图20p| 中文在线一区二区| 日韩精品一区二| 91精品国产色综合久久不卡电影| 91丨九色丨蝌蚪丨老版| 国产美女精品在线| 免费精品视频在线| 国产亚洲精品资源在线26u| 日韩一级高清毛片| 欧美久久免费观看| 日本电影欧美片| 色综合久久久久网| av不卡在线播放| 成人污污视频在线观看| 国产乱人伦偷精品视频免下载| 日韩二区在线观看| 视频在线观看一区二区三区| 亚洲综合色噜噜狠狠| 亚洲天堂网中文字| 亚洲欧洲日韩综合一区二区| 久久精品欧美一区二区三区麻豆| 91精品国产美女浴室洗澡无遮挡| 欧美亚洲动漫另类| 欧美日韩三级一区| 欧美精品在欧美一区二区少妇| 日本韩国一区二区三区视频| 色婷婷综合久久久中文字幕| 色婷婷精品久久二区二区蜜臂av | 亚洲成在线观看| 亚洲高清免费观看 | 国产精品国产三级国产aⅴ入口 | 91老师片黄在线观看| 91丝袜美女网| 在线观看国产日韩| av亚洲精华国产精华精华| 成人avav影音| 91蜜桃网址入口| 欧美三级视频在线| 91麻豆精品国产91久久久久久 | 欧美在线免费视屏| 欧美美女一区二区在线观看| 欧美三级视频在线| 日韩欧美三级在线| 中文字幕不卡一区| 亚洲免费在线播放| 日韩福利电影在线| 福利一区二区在线观看| 91高清视频在线| 成人毛片视频在线观看| 久久精品视频一区二区| 国产日韩v精品一区二区| 国产色产综合产在线视频| 亚洲成a人片在线观看中文| 日本网站在线观看一区二区三区 | 亚洲三级电影网站| 一区二区三区不卡在线观看 | 成人在线综合网站| 91在线视频18| 欧美人妖巨大在线| 久久一区二区三区四区| 亚洲人吸女人奶水| 日韩国产一区二| 成人看片黄a免费看在线| 欧美性猛交xxxxxxxx| 91麻豆精品国产91久久久资源速度| www日韩大片| 一区二区三区高清不卡| 狠狠色狠狠色综合| 色呦呦网站一区| 精品国产一区二区三区久久影院| 国产精品福利一区二区三区| 亚洲成av人片一区二区三区| 国产成人在线视频播放| 欧美日韩午夜在线视频| 国产视频一区二区在线| 午夜欧美一区二区三区在线播放| 国产超碰在线一区| 日韩一区二区电影网| 中文字幕欧美一| 精品一区二区在线播放| 欧美日韩精品福利| 亚洲欧洲无码一区二区三区| 美腿丝袜亚洲三区| 欧美色窝79yyyycom| 国产精品久久国产精麻豆99网站| 丝袜亚洲另类丝袜在线| 色综合久久88色综合天天6| 久久久久国产免费免费| 美女精品一区二区| 欧美无砖专区一中文字| 中文字幕中文乱码欧美一区二区| 麻豆91免费看| 欧美日本精品一区二区三区| 亚洲视频 欧洲视频| 成人av动漫网站| 国产欧美精品一区二区三区四区| 久久精品国产第一区二区三区| 欧美日产国产精品| 亚洲午夜精品一区二区三区他趣| eeuss鲁片一区二区三区 | 日韩一区欧美一区| 国产成人精品在线看| 久久亚洲欧美国产精品乐播| 人人超碰91尤物精品国产| 精品视频资源站| 亚洲一区视频在线| 欧美在线看片a免费观看| 亚洲欧美色一区| 91麻豆国产在线观看| 亚洲欧洲成人自拍| 91在线播放网址| 国产精品电影一区二区三区| 国产91精品露脸国语对白| 久久日一线二线三线suv| 国产一区二区三区蝌蚪| 久久久精品免费免费| 国产在线不卡视频| 国产日韩v精品一区二区| 国产999精品久久久久久| 久久久av毛片精品| 成人毛片视频在线观看| 亚洲美女视频在线观看| 在线日韩av片| 亚洲成av人片在线| 日韩一区二区三区观看| 韩国午夜理伦三级不卡影院| 亚洲黄色在线视频| 777xxx欧美| 欧洲一区二区av| 最新高清无码专区| 精品国产三级电影在线观看| 欧美在线色视频| www.亚洲色图| 国产成人日日夜夜| 日本欧美肥老太交大片| 亚洲中国最大av网站| 亚洲国产精品t66y| 欧美精品一区二区在线观看| 91麻豆国产精品久久| 国产成人精品免费网站| 99热精品国产| 精品一二三四在线| 久久蜜桃av一区二区天堂| 东方aⅴ免费观看久久av| 亚洲男女一区二区三区| 日韩一级片网站|