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

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

?? pcre_compile.c

?? SDL文件。SDL_ERROwenjian.....
?? C
?? 第 1 頁 / 共 5 頁
字號:
*************************************************//* The error texts are now all in one long string, to save on relocations. Assome of the text is of unknown length, we can't use a table of offsets.Instead, just count through the strings. This is not a performance issuebecause it happens only when there has been a compilation error.Argument:   the error numberReturns:    pointer to the error string*/static const char *find_error_text(int n){const char *s = error_texts;for (; n > 0; n--) while (*s++ != 0);return s;}/**************************************************            Handle escapes                      **************************************************//* This function is called when a \ has been encountered. It either returns apositive value for a simple escape such as \n, or a negative value whichencodes one of the more complicated things such as \d. A backreference to groupn is returned as -(ESC_REF + n); ESC_REF is the highest ESC_xxx macro. WhenUTF-8 is enabled, a positive value greater than 255 may be returned. On entry,ptr is pointing at the \. On exit, it is on the final character of the escapesequence.Arguments:  ptrptr         points to the pattern position pointer  errorcodeptr   points to the errorcode variable  bracount       number of previous extracting brackets  options        the options bits  isclass        TRUE if inside a character classReturns:         zero or positive => a data character                 negative => a special escape sequence                 on error, errorcodeptr is set*/static intcheck_escape(const uschar **ptrptr, int *errorcodeptr, int bracount,  int options, BOOL isclass){BOOL utf8 = (options & PCRE_UTF8) != 0;const uschar *ptr = *ptrptr + 1;int c, i;GETCHARINCTEST(c, ptr);           /* Get character value, increment pointer */ptr--;                            /* Set pointer back to the last byte *//* If backslash is at the end of the pattern, it's an error. */if (c == 0) *errorcodeptr = ERR1;/* Non-alphamerics are literals. For digits or letters, do an initial lookup ina table. A non-zero result is something that can be returned immediately.Otherwise further processing may be required. */#ifndef EBCDIC  /* ASCII coding */else if (c < '0' || c > 'z') {}                           /* Not alphameric */else if ((i = escapes[c - '0']) != 0) c = i;#else           /* EBCDIC coding */else if (c < 'a' || (ebcdic_chartab[c] & 0x0E) == 0) {}   /* Not alphameric */else if ((i = escapes[c - 0x48]) != 0)  c = i;#endif/* Escapes that need further processing, or are illegal. */else  {  const uschar *oldptr;  BOOL braced, negated;  switch (c)    {    /* A number of Perl escapes are not handled by PCRE. We give an explicit    error. */    case 'l':    case 'L':    case 'N':    case 'u':    case 'U':    *errorcodeptr = ERR37;    break;    /* \g must be followed by a number, either plain or braced. If positive, it    is an absolute backreference. If negative, it is a relative backreference.    This is a Perl 5.10 feature. Perl 5.10 also supports \g{name} as a    reference to a named group. This is part of Perl's movement towards a    unified syntax for back references. As this is synonymous with \k{name}, we    fudge it up by pretending it really was \k. */    case 'g':    if (ptr[1] == '{')      {      const uschar *p;      for (p = ptr+2; *p != 0 && *p != '}'; p++)        if (*p != '-' && (digitab[*p] & ctype_digit) == 0) break;      if (*p != 0 && *p != '}')        {        c = -ESC_k;        break;        }      braced = TRUE;      ptr++;      }    else braced = FALSE;    if (ptr[1] == '-')      {      negated = TRUE;      ptr++;      }    else negated = FALSE;    c = 0;    while ((digitab[ptr[1]] & ctype_digit) != 0)      c = c * 10 + *(++ptr) - '0';    if (c < 0)      {      *errorcodeptr = ERR61;      break;      }    if (c == 0 || (braced && *(++ptr) != '}'))      {      *errorcodeptr = ERR57;      break;      }    if (negated)      {      if (c > bracount)        {        *errorcodeptr = ERR15;        break;        }      c = bracount - (c - 1);      }    c = -(ESC_REF + c);    break;    /* The handling of escape sequences consisting of a string of digits    starting with one that is not zero is not straightforward. By experiment,    the way Perl works seems to be as follows:    Outside a character class, the digits are read as a decimal number. If the    number is less than 10, or if there are that many previous extracting    left brackets, then it is a back reference. Otherwise, up to three octal    digits are read to form an escaped byte. Thus \123 is likely to be octal    123 (cf \0123, which is octal 012 followed by the literal 3). If the octal    value is greater than 377, the least significant 8 bits are taken. Inside a    character class, \ followed by a digit is always an octal number. */    case '1': case '2': case '3': case '4': case '5':    case '6': case '7': case '8': case '9':    if (!isclass)      {      oldptr = ptr;      c -= '0';      while ((digitab[ptr[1]] & ctype_digit) != 0)        c = c * 10 + *(++ptr) - '0';      if (c < 0)        {        *errorcodeptr = ERR61;        break;        }      if (c < 10 || c <= bracount)        {        c = -(ESC_REF + c);        break;        }      ptr = oldptr;      /* Put the pointer back and fall through */      }    /* Handle an octal number following \. If the first digit is 8 or 9, Perl    generates a binary zero byte and treats the digit as a following literal.    Thus we have to pull back the pointer by one. */    if ((c = *ptr) >= '8')      {      ptr--;      c = 0;      break;      }    /* \0 always starts an octal number, but we may drop through to here with a    larger first octal digit. The original code used just to take the least    significant 8 bits of octal numbers (I think this is what early Perls used    to do). Nowadays we allow for larger numbers in UTF-8 mode, but no more    than 3 octal digits. */    case '0':    c -= '0';    while(i++ < 2 && ptr[1] >= '0' && ptr[1] <= '7')        c = c * 8 + *(++ptr) - '0';    if (!utf8 && c > 255) *errorcodeptr = ERR51;    break;    /* \x is complicated. \x{ddd} is a character number which can be greater    than 0xff in utf8 mode, but only if the ddd are hex digits. If not, { is    treated as a data character. */    case 'x':    if (ptr[1] == '{')      {      const uschar *pt = ptr + 2;      int count = 0;      c = 0;      while ((digitab[*pt] & ctype_xdigit) != 0)        {        register int cc = *pt++;        if (c == 0 && cc == '0') continue;     /* Leading zeroes */        count++;#ifndef EBCDIC  /* ASCII coding */        if (cc >= 'a') cc -= 32;               /* Convert to upper case */        c = (c << 4) + cc - ((cc < 'A')? '0' : ('A' - 10));#else           /* EBCDIC coding */        if (cc >= 'a' && cc <= 'z') cc += 64;  /* Convert to upper case */        c = (c << 4) + cc - ((cc >= '0')? '0' : ('A' - 10));#endif        }      if (*pt == '}')        {        if (c < 0 || count > (utf8? 8 : 2)) *errorcodeptr = ERR34;        ptr = pt;        break;        }      /* If the sequence of hex digits does not end with '}', then we don't      recognize this construct; fall through to the normal \x handling. */      }    /* Read just a single-byte hex-defined char */    c = 0;    while (i++ < 2 && (digitab[ptr[1]] & ctype_xdigit) != 0)      {      int cc;                               /* Some compilers don't like ++ */      cc = *(++ptr);                        /* in initializers */#ifndef EBCDIC  /* ASCII coding */      if (cc >= 'a') cc -= 32;              /* Convert to upper case */      c = c * 16 + cc - ((cc < 'A')? '0' : ('A' - 10));#else           /* EBCDIC coding */      if (cc <= 'z') cc += 64;              /* Convert to upper case */      c = c * 16 + cc - ((cc >= '0')? '0' : ('A' - 10));#endif      }    break;    /* For \c, a following letter is upper-cased; then the 0x40 bit is flipped.    This coding is ASCII-specific, but then the whole concept of \cx is    ASCII-specific. (However, an EBCDIC equivalent has now been added.) */    case 'c':    c = *(++ptr);    if (c == 0)      {      *errorcodeptr = ERR2;      break;      }#ifndef EBCDIC  /* ASCII coding */    if (c >= 'a' && c <= 'z') c -= 32;    c ^= 0x40;#else           /* EBCDIC coding */    if (c >= 'a' && c <= 'z') c += 64;    c ^= 0xC0;#endif    break;    /* PCRE_EXTRA enables extensions to Perl in the matter of escapes. Any    other alphameric following \ is an error if PCRE_EXTRA was set; otherwise,    for Perl compatibility, it is a literal. This code looks a bit odd, but    there used to be some cases other than the default, and there may be again    in future, so I haven't "optimized" it. */    default:    if ((options & PCRE_EXTRA) != 0) switch(c)      {      default:      *errorcodeptr = ERR3;      break;      }    break;    }  }*ptrptr = ptr;return c;}#ifdef SUPPORT_UCP/**************************************************               Handle \P and \p                 **************************************************//* This function is called after \P or \p has been encountered, provided thatPCRE is compiled with support for Unicode properties. On entry, ptrptr ispointing at the P or p. On exit, it is pointing at the final character of theescape sequence.Argument:  ptrptr         points to the pattern position pointer  negptr         points to a boolean that is set TRUE for negation else FALSE  dptr           points to an int that is set to the detailed property value  errorcodeptr   points to the error code variableReturns:         type value from ucp_type_table, or -1 for an invalid type*/static intget_ucp(const uschar **ptrptr, BOOL *negptr, int *dptr, int *errorcodeptr){int c, i, bot, top;const uschar *ptr = *ptrptr;char name[32];c = *(++ptr);if (c == 0) goto ERROR_RETURN;*negptr = FALSE;/* \P or \p can be followed by a name in {}, optionally preceded by ^ fornegation. */if (c == '{')  {  if (ptr[1] == '^')    {    *negptr = TRUE;    ptr++;    }  for (i = 0; i < (int)sizeof(name) - 1; i++)    {    c = *(++ptr);    if (c == 0) goto ERROR_RETURN;    if (c == '}') break;    name[i] = c;    }  if (c !='}') goto ERROR_RETURN;  name[i] = 0;  }/* Otherwise there is just one following character */else  {  name[0] = c;  name[1] = 0;  }*ptrptr = ptr;/* Search for a recognized property name using binary chop */bot = 0;top = _pcre_utt_size;while (bot < top)  {  i = (bot + top) >> 1;  c = strcmp(name, _pcre_utt_names + _pcre_utt[i].name_offset);  if (c == 0)    {    *dptr = _pcre_utt[i].value;    return _pcre_utt[i].type;    }  if (c > 0) bot = i + 1; else top = i;  }*errorcodeptr = ERR47;*ptrptr = ptr;return -1;ERROR_RETURN:*errorcodeptr = ERR46;*ptrptr = ptr;return -1;}#endif/**************************************************            Check for counted repeat            **************************************************//* This function is called when a '{' is encountered in a place where it mightstart a quantifier. It looks ahead to see if it really is a quantifier or not.It is only a quantifier if it is one of the forms {ddd} {ddd,} or {ddd,ddd}where the ddds are digits.Arguments:  p         pointer to the first char after '{'Returns:    TRUE or FALSE*/static BOOLis_counted_repeat(const uschar *p){if ((digitab[*p++] & ctype_digit) == 0) return FALSE;while ((digitab[*p] & ctype_digit) != 0) p++;if (*p == '}') return TRUE;if (*p++ != ',') return FALSE;if (*p == '}') return TRUE;if ((digitab[*p++] & ctype_digit) == 0) return FALSE;while ((digitab[*p] & ctype_digit) != 0) p++;return (*p == '}');}/**************************************************         Read repeat counts                     **************************************************//* Read an item of the form {n,m} and return the values. This is called onlyafter is_counted_repeat() has confirmed that a repeat-count quantifier exists,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产毛片精品国产一区二区三区| kk眼镜猥琐国模调教系列一区二区| 国产精品一区不卡| 在线播放视频一区| 亚洲一线二线三线视频| 欧美精品久久99久久在免费线 | 自拍偷拍亚洲综合| 激情综合网最新| 亚洲视频在线一区观看| 欧美亚男人的天堂| 九九热在线视频观看这里只有精品| 欧美一级二级三级蜜桃| 亚洲色图丝袜美腿| 不卡av在线网| 久久久精品欧美丰满| 蜜臀久久久久久久| 欧美乱妇15p| 尤物在线观看一区| 一本到高清视频免费精品| 欧美国产一区在线| 国产福利一区在线| 国产午夜精品一区二区三区视频| 久久草av在线| 精品少妇一区二区三区| 日韩国产一二三区| 欧美日韩一区视频| 亚洲国产一区二区三区青草影视| 91麻豆免费视频| 亚洲日本va午夜在线电影| 成人av免费在线播放| 欧美极品少妇xxxxⅹ高跟鞋| 国产成人免费视频网站| 欧美激情一区三区| 99久久伊人网影院| 亚洲欧洲精品一区二区精品久久久| 成人免费电影视频| 中文字幕在线不卡一区 | 欧美日韩一卡二卡| 一区二区三区免费网站| 在线亚洲高清视频| 午夜在线成人av| 欧美一级日韩一级| 极品少妇xxxx精品少妇偷拍 | 亚洲日本在线天堂| 在线免费视频一区二区| 亚洲国产精品影院| 欧美成人福利视频| 国产成人综合自拍| 一区二区在线观看免费视频播放 | 精品嫩草影院久久| 成人动漫一区二区| 亚洲自拍偷拍九九九| 欧美一级夜夜爽| 成人自拍视频在线| 伊人色综合久久天天人手人婷| 欧美伦理电影网| 国产不卡在线播放| 亚洲午夜在线视频| 久久综合精品国产一区二区三区| 成人av电影在线观看| 天天av天天翘天天综合网| 精品国产一区二区三区久久久蜜月| 成人丝袜18视频在线观看| 一区二区理论电影在线观看| 精品国产免费人成在线观看| 99re热视频这里只精品| 日韩高清不卡一区二区| 国产精品蜜臀在线观看| 欧美日韩情趣电影| 成人黄色电影在线| 青青青伊人色综合久久| 亚洲欧洲精品天堂一级| 精品少妇一区二区三区在线播放 | 99精品偷自拍| 免费国产亚洲视频| 亚洲欧美另类图片小说| 精品日韩在线观看| 欧美日韩中字一区| av一区二区三区四区| 久久www免费人成看片高清| 最新日韩在线视频| 久久女同精品一区二区| 3atv一区二区三区| 91碰在线视频| 国产成人免费xxxxxxxx| 日本aⅴ免费视频一区二区三区 | 蜜桃视频免费观看一区| 自拍偷拍国产精品| 久久人人超碰精品| 91.麻豆视频| 色先锋资源久久综合| 国产成人在线视频播放| 毛片av一区二区| 午夜不卡av在线| 亚洲精品国产精品乱码不99| 国产精品网曝门| 久久亚洲综合色一区二区三区| 7799精品视频| 欧美日韩亚洲另类| 91麻豆国产福利在线观看| 国产成人av一区| 国产一本一道久久香蕉| 蜜桃久久久久久| 免费成人你懂的| 日本不卡1234视频| 日本在线观看不卡视频| 五月婷婷久久综合| 性做久久久久久| 午夜精品一区二区三区免费视频| 玉足女爽爽91| 一区二区免费视频| 亚洲一区二区在线免费看| 亚洲欧美另类小说| 亚洲精品国产第一综合99久久| 中文字幕在线不卡视频| 亚洲情趣在线观看| 亚洲精品欧美专区| 亚洲一区自拍偷拍| 亚洲国产欧美一区二区三区丁香婷| 洋洋成人永久网站入口| 一区二区三区波多野结衣在线观看| 亚洲色欲色欲www| 亚洲国产另类av| 三级在线观看一区二区| 久久精品国产亚洲a| 激情小说亚洲一区| 东方欧美亚洲色图在线| 91啪九色porn原创视频在线观看| 色婷婷香蕉在线一区二区| 欧美久久一二三四区| 欧美一级一级性生活免费录像| 精品处破学生在线二十三| 久久久久久久综合| 成人免费小视频| 婷婷综合在线观看| 国产精品91一区二区| av电影在线观看完整版一区二区| 在线观看日韩毛片| 精品国产一区二区三区不卡| 国产精品女同一区二区三区| 亚洲一区二区三区爽爽爽爽爽 | 成人午夜在线免费| 色婷婷国产精品| 欧美xfplay| 亚洲欧美另类小说视频| 蜜臀久久99精品久久久画质超高清 | 日韩一区二区三免费高清| xnxx国产精品| 1024亚洲合集| 激情欧美一区二区| 色悠悠亚洲一区二区| 精品粉嫩超白一线天av| 一区二区三区日韩精品视频| 久久66热偷产精品| 色婷婷综合久久久久中文一区二区 | 日韩成人dvd| 成人av在线网站| 91精品综合久久久久久| 亚洲视频你懂的| 国产综合久久久久影院| 欧美色精品天天在线观看视频| 国产亚洲欧美日韩在线一区| 丝袜亚洲另类欧美| 99视频精品全部免费在线| 26uuu亚洲| 天天综合网天天综合色| 91丨九色丨黑人外教| 精品国产成人系列| 亚洲图片欧美综合| 99国产一区二区三精品乱码| 精品99一区二区| 偷拍日韩校园综合在线| 91麻豆国产自产在线观看| 久久久91精品国产一区二区精品| 亚洲成人自拍一区| 91老师片黄在线观看| 国产欧美综合色| 韩国女主播成人在线| 欧美一区二区三区在线| 一区二区三区在线高清| 国产夫妻精品视频| 26uuu亚洲综合色| 韩国理伦片一区二区三区在线播放| 欧洲日韩一区二区三区| 自拍偷拍亚洲欧美日韩| 丰满少妇在线播放bd日韩电影| 日韩精品影音先锋| 天堂蜜桃一区二区三区| 欧美日韩一区二区三区四区 | 五月天亚洲婷婷| 在线免费观看日本欧美| 亚洲乱码一区二区三区在线观看| 成人美女视频在线观看| 久久综合狠狠综合| 国产一区二区三区免费观看| 欧美大片免费久久精品三p| 日本成人在线不卡视频| 欧美一区二区黄| 麻豆一区二区99久久久久| 欧美tk丨vk视频|