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

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

?? xmltok.c

?? 由Kurt Wall著作的Linux Programming 一書中的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
staticint initScan(const ENCODING *enc, int state, const char *ptr, const char *end,	     const char **nextTokPtr){  const ENCODING **encPtr;  if (ptr == end)    return XML_TOK_NONE;  encPtr = ((const INIT_ENCODING *)enc)->encPtr;  if (ptr + 1 == end) {    switch ((unsigned char)*ptr) {    case 0xFE:    case 0xFF:    case 0x00:    case 0x3C:      return XML_TOK_PARTIAL;    }  }  else {    switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) {    case 0x003C:      *encPtr = &big2_encoding.enc;      return XmlTok(*encPtr, state, ptr, end, nextTokPtr);    case 0xFEFF:      *nextTokPtr = ptr + 2;      *encPtr = &big2_encoding.enc;      return XML_TOK_BOM;    case 0x3C00:      *encPtr = &little2_encoding.enc;      return XmlTok(*encPtr, state, ptr, end, nextTokPtr);    case 0xFFFE:      *nextTokPtr = ptr + 2;      *encPtr = &little2_encoding.enc;      return XML_TOK_BOM;    }  }  *encPtr = &utf8_encoding.enc;  return XmlTok(*encPtr, state, ptr, end, nextTokPtr);}staticint initScanProlog(const ENCODING *enc, const char *ptr, const char *end,		   const char **nextTokPtr){  return initScan(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr);}staticint initScanContent(const ENCODING *enc, const char *ptr, const char *end,		    const char **nextTokPtr){  return initScan(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr);}staticvoid initUpdatePosition(const ENCODING *enc, const char *ptr,			const char *end, POSITION *pos){  normal_updatePosition(&utf8_encoding.enc, ptr, end, pos);}const ENCODING *XmlGetUtf8InternalEncoding(){  return &internal_utf8_encoding.enc;}const ENCODING *XmlGetUtf16InternalEncoding(){#if BYTE_ORDER == 12  return &internal_little2_encoding.enc;#elif BYTE_ORDER == 21  return &internal_big2_encoding.enc;#else  const short n = 1;  return *(const char *)&n ? &internal_little2_encoding.enc : &internal_big2_encoding.enc;#endif}int XmlInitEncoding(INIT_ENCODING *p, const ENCODING **encPtr, const char *name){  if (name) {    if (streqci(name, "ISO-8859-1")) {      *encPtr = &latin1_encoding.enc;      return 1;    }    if (streqci(name, "UTF-8")) {      *encPtr = &utf8_encoding.enc;      return 1;    }    if (streqci(name, "US-ASCII")) {      *encPtr = &ascii_encoding.enc;      return 1;    }    if (!streqci(name, "UTF-16"))      return 0;  }  p->initEnc.scanners[XML_PROLOG_STATE] = initScanProlog;  p->initEnc.scanners[XML_CONTENT_STATE] = initScanContent;  p->initEnc.updatePosition = initUpdatePosition;  p->initEnc.minBytesPerChar = 1;  p->encPtr = encPtr;  *encPtr = &(p->initEnc);  return 1;}staticint toAscii(const ENCODING *enc, const char *ptr, const char *end){  char buf[1];  char *p = buf;  XmlUtf8Convert(enc, &ptr, end, &p, p + 1);  if (p == buf)    return -1;  else    return buf[0];}staticint isSpace(int c){  switch (c) {  case ' ':  case '\r':  case '\n':  case '\t':    return 1;  }  return 0;}/* Return 1 if there's just optional white spaceor there's an S followed by name=val. */staticint parsePseudoAttribute(const ENCODING *enc,			 const char *ptr,			 const char *end,			 const char **namePtr,			 const char **valPtr,			 const char **nextTokPtr){  int c;  char open;  if (ptr == end) {    *namePtr = 0;    return 1;  }  if (!isSpace(toAscii(enc, ptr, end))) {    *nextTokPtr = ptr;    return 0;  }  do {    ptr += enc->minBytesPerChar;  } while (isSpace(toAscii(enc, ptr, end)));  if (ptr == end) {    *namePtr = 0;    return 1;  }  *namePtr = ptr;  for (;;) {    c = toAscii(enc, ptr, end);    if (c == -1) {      *nextTokPtr = ptr;      return 0;    }    if (c == '=')      break;    if (isSpace(c)) {      do {	ptr += enc->minBytesPerChar;      } while (isSpace(c = toAscii(enc, ptr, end)));      if (c != '=') {	*nextTokPtr = ptr;	return 0;      }      break;    }    ptr += enc->minBytesPerChar;  }  if (ptr == *namePtr) {    *nextTokPtr = ptr;    return 0;  }  ptr += enc->minBytesPerChar;  c = toAscii(enc, ptr, end);  while (isSpace(c)) {    ptr += enc->minBytesPerChar;    c = toAscii(enc, ptr, end);  }  if (c != '"' && c != '\'') {    *nextTokPtr = ptr;    return 0;  }  open = c;  ptr += enc->minBytesPerChar;  *valPtr = ptr;  for (;; ptr += enc->minBytesPerChar) {    c = toAscii(enc, ptr, end);    if (c == open)      break;    if (!('a' <= c && c <= 'z')	&& !('A' <= c && c <= 'Z')	&& !('0' <= c && c <= '9')	&& c != '.'	&& c != '-'	&& c != '_') {      *nextTokPtr = ptr;      return 0;    }  }  *nextTokPtr = ptr + enc->minBytesPerChar;  return 1;}staticconst ENCODING *findEncoding(const ENCODING *enc, const char *ptr, const char *end){#define ENCODING_MAX 128  char buf[ENCODING_MAX];  char *p = buf;  int i;  XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);  if (ptr != end)    return 0;  *p = 0;  for (i = 0; buf[i]; i++) {    if ('a' <= buf[i] && buf[i] <= 'z')      buf[i] +=  'A' - 'a';  }  if (streqci(buf, "UTF-8"))    return &utf8_encoding.enc;  if (streqci(buf, "ISO-8859-1"))    return &latin1_encoding.enc;  if (streqci(buf, "US-ASCII"))    return &ascii_encoding.enc;  if (streqci(buf, "UTF-16")) {    static const unsigned short n = 1;    if (enc->minBytesPerChar == 2)      return enc;    return &big2_encoding.enc;  }  return 0;  }int XmlParseXmlDecl(int isGeneralTextEntity,		    const ENCODING *enc,		    const char *ptr,		    const char *end,		    const char **badPtr,		    const char **versionPtr,		    const char **encodingName,		    const ENCODING **encoding,		    int *standalone){  const char *val = 0;  const char *name = 0;  ptr += 5 * enc->minBytesPerChar;  end -= 2 * enc->minBytesPerChar;  if (!parsePseudoAttribute(enc, ptr, end, &name, &val, &ptr) || !name) {    *badPtr = ptr;    return 0;  }  if (!XmlNameMatchesAscii(enc, name, "version")) {    if (!isGeneralTextEntity) {      *badPtr = name;      return 0;    }  }  else {    if (versionPtr)      *versionPtr = val;    if (!parsePseudoAttribute(enc, ptr, end, &name, &val, &ptr)) {      *badPtr = ptr;      return 0;    }    if (!name) {      if (isGeneralTextEntity) {	/* a TextDecl must have an EncodingDecl */	*badPtr = ptr;	return 0;      }      return 1;    }  }  if (XmlNameMatchesAscii(enc, name, "encoding")) {    int c = toAscii(enc, val, end);    if (!('a' <= c && c <= 'z') && !('A' <= c && c <= 'Z')) {      *badPtr = val;      return 0;    }    if (encodingName)      *encodingName = val;    if (encoding)      *encoding = findEncoding(enc, val, ptr - enc->minBytesPerChar);    if (!parsePseudoAttribute(enc, ptr, end, &name, &val, &ptr)) {      *badPtr = ptr;      return 0;    }    if (!name)      return 1;  }  if (!XmlNameMatchesAscii(enc, name, "standalone") || isGeneralTextEntity) {    *badPtr = name;    return 0;  }  if (XmlNameMatchesAscii(enc, val, "yes")) {    if (standalone)      *standalone = 1;  }  else if (XmlNameMatchesAscii(enc, val, "no")) {    if (standalone)      *standalone = 0;  }  else {    *badPtr = val;    return 0;  }  while (isSpace(toAscii(enc, ptr, end)))    ptr += enc->minBytesPerChar;  if (ptr != end) {    *badPtr = ptr;    return 0;  }  return 1;}staticint checkCharRefNumber(int result){  switch (result >> 8) {  case 0xD8: case 0xD9: case 0xDA: case 0xDB:  case 0xDC: case 0xDD: case 0xDE: case 0xDF:    return -1;  case 0:    if (latin1_encoding.type[result] == BT_NONXML)      return -1;    break;  case 0xFF:    if (result == 0xFFFE || result == 0xFFFF)      return -1;    break;  }  return result;}int XmlUtf8Encode(int c, char *buf){  enum {    /* minN is minimum legal resulting value for N byte sequence */    min2 = 0x80,    min3 = 0x800,    min4 = 0x10000  };  if (c < 0)    return 0;  if (c < min2) {    buf[0] = (c | UTF8_cval1);    return 1;  }  if (c < min3) {    buf[0] = ((c >> 6) | UTF8_cval2);    buf[1] = ((c & 0x3f) | 0x80);    return 2;  }  if (c < min4) {    buf[0] = ((c >> 12) | UTF8_cval3);    buf[1] = (((c >> 6) & 0x3f) | 0x80);    buf[2] = ((c & 0x3f) | 0x80);    return 3;  }  if (c < 0x110000) {    buf[0] = ((c >> 18) | UTF8_cval4);    buf[1] = (((c >> 12) & 0x3f) | 0x80);    buf[2] = (((c >> 6) & 0x3f) | 0x80);    buf[3] = ((c & 0x3f) | 0x80);    return 4;  }  return 0;}int XmlUtf16Encode(int charNum, unsigned short *buf){  if (charNum < 0)    return 0;  if (charNum < 0x10000) {    buf[0] = charNum;    return 1;  }  if (charNum < 0x110000) {    charNum -= 0x10000;    buf[0] = (charNum >> 10) + 0xD800;    buf[1] = (charNum & 0x3FF) + 0xDC00;    return 2;  }  return 0;}struct unknown_encoding {  struct normal_encoding normal;  int (*convert)(void *userData, const char *p);  void *userData;  unsigned short utf16[256];  char utf8[256][4];};int XmlSizeOfUnknownEncoding(){  return sizeof(struct unknown_encoding);}staticint unknown_isName(const ENCODING *enc, const char *p){  int c = ((const struct unknown_encoding *)enc)	  ->convert(((const struct unknown_encoding *)enc)->userData, p);  if (c & ~0xFFFF)    return 0;  return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF);}staticint unknown_isNmstrt(const ENCODING *enc, const char *p){  int c = ((const struct unknown_encoding *)enc)	  ->convert(((const struct unknown_encoding *)enc)->userData, p);  if (c & ~0xFFFF)    return 0;  return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF);}staticint unknown_isInvalid(const ENCODING *enc, const char *p){  int c = ((const struct unknown_encoding *)enc)	   ->convert(((const struct unknown_encoding *)enc)->userData, p);  return (c & ~0xFFFF) || checkCharRefNumber(c) < 0;}staticvoid unknown_toUtf8(const ENCODING *enc,		    const char **fromP, const char *fromLim,		    char **toP, const char *toLim){  char buf[XML_UTF8_ENCODE_MAX];  for (;;) {    const char *utf8;    int n;    if (*fromP == fromLim)      break;    utf8 = ((const struct unknown_encoding *)enc)->utf8[(unsigned char)**fromP];    n = *utf8++;    if (n == 0) {      int c = ((const struct unknown_encoding *)enc)	      ->convert(((const struct unknown_encoding *)enc)->userData, *fromP);      n = XmlUtf8Encode(c, buf);      if (n > toLim - *toP)	break;      utf8 = buf;      *fromP += ((const struct normal_encoding *)enc)->type[(unsigned char)**fromP]	         - (BT_LEAD2 - 2);    }    else {      if (n > toLim - *toP)	break;      (*fromP)++;    }    do {      *(*toP)++ = *utf8++;    } while (--n != 0);  }}staticvoid unknown_toUtf16(const ENCODING *enc,		     const char **fromP, const char *fromLim,		     unsigned short **toP, const unsigned short *toLim){  while (*fromP != fromLim && *toP != toLim) {    unsigned short c      = ((const struct unknown_encoding *)enc)->utf16[(unsigned char)**fromP];    if (c == 0) {      c = (unsigned short)((const struct unknown_encoding *)enc)	   ->convert(((const struct unknown_encoding *)enc)->userData, *fromP);      *fromP += ((const struct normal_encoding *)enc)->type[(unsigned char)**fromP]	         - (BT_LEAD2 - 2);    }    else      (*fromP)++;    *(*toP)++ = c;  }}ENCODING *XmlInitUnknownEncoding(void *mem,		       int *table,		       int (*convert)(void *userData, const char *p),		       void *userData){  int i;  struct unknown_encoding *e = mem;  for (i = 0; i < sizeof(struct normal_encoding); i++)    ((char *)mem)[i] = ((char *)&latin1_encoding)[i];  for (i = 0; i < 128; i++)    if (latin1_encoding.type[i] != BT_OTHER        && latin1_encoding.type[i] != BT_NONXML	&& table[i] != i)      return 0;  for (i = 0; i < 256; i++) {    int c = table[i];    if (c == -1) {      e->normal.type[i] = BT_MALFORM;      /* This shouldn't really get used. */      e->utf16[i] = 0xFFFF;      e->utf8[i][0] = 1;      e->utf8[i][1] = 0;    }    else if (c < 0) {      if (c < -4)	return 0;      e->normal.type[i] = BT_LEAD2 - (c + 2);      e->utf8[i][0] = 0;      e->utf16[i] = 0;    }    else if (c < 0x80) {      if (latin1_encoding.type[c] != BT_OTHER	  && latin1_encoding.type[c] != BT_NONXML	  && c != i)	return 0;      e->normal.type[i] = latin1_encoding.type[c];      e->utf8[i][0] = 1;      e->utf8[i][1] = (char)c;      e->utf16[i] = c == 0 ? 0xFFFF : c;    }    else if (checkCharRefNumber(c) < 0) {      e->normal.type[i] = BT_NONXML;      /* This shouldn't really get used. */      e->utf16[i] = 0xFFFF;      e->utf8[i][0] = 1;      e->utf8[i][1] = 0;    }    else {      if (c > 0xFFFF)	return 0;      if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff))	e->normal.type[i] = BT_NMSTRT;      else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff))	e->normal.type[i] = BT_NAME;      else	e->normal.type[i] = BT_OTHER;      e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1);      e->utf16[i] = c;    }  }  e->userData = userData;  e->convert = convert;  if (convert) {    e->normal.isName2 = unknown_isName;    e->normal.isName3 = unknown_isName;    e->normal.isName4 = unknown_isName;    e->normal.isNmstrt2 = unknown_isNmstrt;    e->normal.isNmstrt3 = unknown_isNmstrt;    e->normal.isNmstrt4 = unknown_isNmstrt;    e->normal.isInvalid2 = unknown_isInvalid;    e->normal.isInvalid3 = unknown_isInvalid;    e->normal.isInvalid4 = unknown_isInvalid;  }  e->normal.enc.utf8Convert = unknown_toUtf8;  e->normal.enc.utf16Convert = unknown_toUtf16;  return &(e->normal.enc);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品乱人伦小说| 中文字幕不卡一区| 成人美女在线视频| 首页国产丝袜综合| 国产精品美女久久久久久久网站| 7777精品伊人久久久大香线蕉完整版 | 国产成人综合亚洲91猫咪| 亚洲综合精品自拍| 国产欧美va欧美不卡在线| 欧美日本韩国一区二区三区视频| 99久久久精品免费观看国产蜜| 久久狠狠亚洲综合| 亚洲va在线va天堂| 亚洲欧美综合另类在线卡通| 2020国产精品| 欧美一级片在线| 欧美做爰猛烈大尺度电影无法无天| 国产精品自在欧美一区| 免费观看91视频大全| 亚洲乱码国产乱码精品精小说 | 日韩精品国产欧美| 亚洲免费大片在线观看| 亚洲国产高清在线| 久久精品一区二区三区四区| 日韩一区二区视频在线观看| 欧美日韩黄色一区二区| 欧美三级日韩三级国产三级| 在线观看亚洲成人| 欧美在线观看视频在线| av高清不卡在线| eeuss鲁片一区二区三区在线观看| 国产一区二区美女诱惑| 激情文学综合丁香| 精品亚洲免费视频| 久久aⅴ国产欧美74aaa| 奇米一区二区三区av| 日本不卡1234视频| 免费在线观看精品| 久久99精品国产| 国产麻豆成人传媒免费观看| 国产在线观看免费一区| 国产成+人+日韩+欧美+亚洲| 国产风韵犹存在线视精品| 懂色av一区二区在线播放| 国产a区久久久| 99精品欧美一区| 色国产综合视频| 欧美天堂亚洲电影院在线播放| 91久久国产最好的精华液| 91国偷自产一区二区三区观看 | 亚洲女人****多毛耸耸8| 亚洲欧美日韩国产中文在线| 成人免费一区二区三区视频| 亚洲人吸女人奶水| 亚洲国产一区二区视频| 肉色丝袜一区二区| 九九精品一区二区| 国产99精品国产| 91麻豆swag| 337p亚洲精品色噜噜狠狠| 精品国产成人系列| 中文字幕欧美三区| 亚洲午夜精品网| 国模娜娜一区二区三区| 成人在线视频一区| 色偷偷久久一区二区三区| 欧美老年两性高潮| 精品国产伦一区二区三区观看体验| 久久久www免费人成精品| 亚洲天堂免费在线观看视频| 五月综合激情日本mⅴ| 韩国午夜理伦三级不卡影院| 不卡的电视剧免费网站有什么| 欧美日韩亚洲国产综合| 精品国精品国产| 亚洲精品国产精品乱码不99| 奇米色777欧美一区二区| 国产乱码一区二区三区| 在线观看日韩电影| 日韩一区二区不卡| 中文字幕日韩一区二区| 日本不卡一区二区三区高清视频| 国产成人综合视频| 欧美色偷偷大香| 欧美激情一区二区| 日韩精品一卡二卡三卡四卡无卡| 国产成人av网站| 欧美二区乱c少妇| 国产精品免费视频观看| 视频一区视频二区中文字幕| kk眼镜猥琐国模调教系列一区二区| 91精品久久久久久蜜臀| 国产精品久久99| 极品少妇xxxx精品少妇| 欧美无砖砖区免费| 国产精品国产三级国产aⅴ原创| 天天影视涩香欲综合网| 波多野结衣精品在线| 精品免费国产二区三区| 亚洲小说春色综合另类电影| 成人免费福利片| 欧美成人综合网站| 亚洲二区在线视频| 99国产精品一区| 久久综合九色综合97_久久久| 亚洲一区视频在线| av亚洲精华国产精华精华| 26uuu亚洲综合色欧美| 婷婷中文字幕综合| 欧美性猛交xxxxxx富婆| 国产精品久久久久aaaa樱花| 国产精品影视网| 欧美xfplay| 首页欧美精品中文字幕| 欧美午夜不卡视频| 一区二区三区四区不卡在线| 波多野结衣在线一区| 久久久久久久久伊人| 久久99在线观看| 日韩三级伦理片妻子的秘密按摩| 亚洲成人av福利| 欧美亚洲一区二区在线观看| 亚洲欧美另类小说| 成av人片一区二区| 国产欧美日韩精品一区| 国产一区在线不卡| 久久综合五月天婷婷伊人| 奇米一区二区三区av| 欧美一区二区三区视频免费| 午夜久久电影网| 欧美丰满高潮xxxx喷水动漫| 日韩精品电影一区亚洲| 欧美日韩在线播放一区| 亚洲国产精品欧美一二99| 在线一区二区三区做爰视频网站| 亚洲欧美日韩综合aⅴ视频| 91猫先生在线| 一区二区三区在线视频免费| 欧美网站大全在线观看| 婷婷国产在线综合| 欧美一级高清片| 精品一区二区久久| 欧美激情在线看| www.一区二区| 亚洲国产精品一区二区www| 欧美日韩电影在线播放| 秋霞av亚洲一区二区三| 日韩视频在线永久播放| 国产精品一区二区视频| 国产精品午夜久久| 91麻豆国产福利在线观看| 亚洲高清免费视频| 日韩精品影音先锋| 国产精品系列在线观看| 亚洲天堂a在线| 欧美三级资源在线| 蜜桃av一区二区在线观看| 亚洲精品在线观| 99视频精品全部免费在线| 亚洲国产综合人成综合网站| 精品国内二区三区| av在线综合网| 亚洲福利视频三区| 久久日韩粉嫩一区二区三区| 91在线视频18| 日韩电影免费在线观看网站| 久久九九99视频| 在线视频综合导航| 黄色成人免费在线| 亚洲人被黑人高潮完整版| 欧美日韩在线免费视频| 国内久久精品视频| 一区二区三区在线视频观看58| 日韩精品中文字幕一区二区三区| 成人午夜视频福利| 日韩电影在线观看一区| 国产欧美日韩在线观看| 欧美日本一区二区| 大胆欧美人体老妇| 亚洲r级在线视频| 国产精品美女久久久久久| 在线不卡欧美精品一区二区三区| 国产麻豆精品在线| 亚洲大片免费看| 国产精品卡一卡二卡三| 日韩一级高清毛片| 91丨porny丨蝌蚪视频| 美女看a上一区| 亚洲欧美一区二区三区极速播放 | 欧美一区二区三区在线观看视频| 国产成人在线网站| 日本麻豆一区二区三区视频| ...av二区三区久久精品| 日韩精品一区二区三区在线播放| 色综合天天综合网国产成人综合天 | 欧美哺乳videos| 欧洲中文字幕精品| 成人精品亚洲人成在线| 精品中文av资源站在线观看| 亚洲大片免费看|