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

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

?? pcre_compile.c

?? SDL文件。SDL_ERROwenjian.....
?? C
?? 第 1 頁 / 共 5 頁
字號:
so the syntax is guaranteed to be correct, but we need to check the values.Arguments:  p              pointer to first char after '{'  minp           pointer to int for min  maxp           pointer to int for max                 returned as -1 if no max  errorcodeptr   points to error code variableReturns:         pointer to '}' on success;                 current ptr on error, with errorcodeptr set non-zero*/static const uschar *read_repeat_counts(const uschar *p, int *minp, int *maxp, int *errorcodeptr){int min = 0;int max = -1;/* Read the minimum value and do a paranoid check: a negative value indicatesan integer overflow. */while ((digitab[*p] & ctype_digit) != 0) min = min * 10 + *p++ - '0';if (min < 0 || min > 65535)  {  *errorcodeptr = ERR5;  return p;  }/* Read the maximum value if there is one, and again do a paranoid on its size.Also, max must not be less than min. */if (*p == '}') max = min; else  {  if (*(++p) != '}')    {    max = 0;    while((digitab[*p] & ctype_digit) != 0) max = max * 10 + *p++ - '0';    if (max < 0 || max > 65535)      {      *errorcodeptr = ERR5;      return p;      }    if (max < min)      {      *errorcodeptr = ERR4;      return p;      }    }  }/* Fill in the required variables, and pass back the pointer to the terminating'}'. */*minp = min;*maxp = max;return p;}/**************************************************       Find forward referenced subpattern       **************************************************//* This function scans along a pattern's text looking for capturingsubpatterns, and counting them. If it finds a named pattern that matches thename it is given, it returns its number. Alternatively, if the name is NULL, itreturns when it reaches a given numbered subpattern. This is used for forwardreferences to subpatterns. We know that if (?P< is encountered, the name willbe terminated by '>' because that is checked in the first pass.Arguments:  ptr          current position in the pattern  count        current count of capturing parens so far encountered  name         name to seek, or NULL if seeking a numbered subpattern  lorn         name length, or subpattern number if name is NULL  xmode        TRUE if we are in /x modeReturns:       the number of the named subpattern, or -1 if not found*/static intfind_parens(const uschar *ptr, int count, const uschar *name, int lorn,  BOOL xmode){const uschar *thisname;for (; *ptr != 0; ptr++)  {  int term;  /* Skip over backslashed characters and also entire \Q...\E */  if (*ptr == '\\')    {    if (*(++ptr) == 0) return -1;    if (*ptr == 'Q') for (;;)      {      while (*(++ptr) != 0 && *ptr != '\\');      if (*ptr == 0) return -1;      if (*(++ptr) == 'E') break;      }    continue;    }  /* Skip over character classes */  if (*ptr == '[')    {    while (*(++ptr) != ']')      {      if (*ptr == 0) return -1;      if (*ptr == '\\')        {        if (*(++ptr) == 0) return -1;        if (*ptr == 'Q') for (;;)          {          while (*(++ptr) != 0 && *ptr != '\\');          if (*ptr == 0) return -1;          if (*(++ptr) == 'E') break;          }        continue;        }      }    continue;    }  /* Skip comments in /x mode */  if (xmode && *ptr == '#')    {    while (*(++ptr) != 0 && *ptr != '\n');    if (*ptr == 0) return -1;    continue;    }  /* An opening parens must now be a real metacharacter */  if (*ptr != '(') continue;  if (ptr[1] != '?' && ptr[1] != '*')    {    count++;    if (name == NULL && count == lorn) return count;    continue;    }  ptr += 2;  if (*ptr == 'P') ptr++;                      /* Allow optional P */  /* We have to disambiguate (?<! and (?<= from (?<name> */  if ((*ptr != '<' || ptr[1] == '!' || ptr[1] == '=') &&       *ptr != '\'')    continue;  count++;  if (name == NULL && count == lorn) return count;  term = *ptr++;  if (term == '<') term = '>';  thisname = ptr;  while (*ptr != term) ptr++;  if (name != NULL && lorn == ptr - thisname &&      strncmp((const char *)name, (const char *)thisname, lorn) == 0)    return count;  }return -1;}/**************************************************      Find first significant op code            **************************************************//* This is called by several functions that scan a compiled expression lookingfor a fixed first character, or an anchoring op code etc. It skips over thingsthat do not influence this. For some calls, a change of option is important.For some calls, it makes sense to skip negative forward and all backwardassertions, and also the \b assertion; for others it does not.Arguments:  code         pointer to the start of the group  options      pointer to external options  optbit       the option bit whose changing is significant, or                 zero if none are  skipassert   TRUE if certain assertions are to be skippedReturns:       pointer to the first significant opcode*/static const uschar*first_significant_code(const uschar *code, int *options, int optbit,  BOOL skipassert){for (;;)  {  switch ((int)*code)    {    case OP_OPT:    if (optbit > 0 && ((int)code[1] & optbit) != (*options & optbit))      *options = (int)code[1];    code += 2;    break;    case OP_ASSERT_NOT:    case OP_ASSERTBACK:    case OP_ASSERTBACK_NOT:    if (!skipassert) return code;    do code += GET(code, 1); while (*code == OP_ALT);    code += _pcre_OP_lengths[*code];    break;    case OP_WORD_BOUNDARY:    case OP_NOT_WORD_BOUNDARY:    if (!skipassert) return code;    /* Fall through */    case OP_CALLOUT:    case OP_CREF:    case OP_RREF:    case OP_DEF:    code += _pcre_OP_lengths[*code];    break;    default:    return code;    }  }/* Control never reaches here */}/**************************************************        Find the fixed length of a pattern      **************************************************//* Scan a pattern and compute the fixed length of subject that will match it,if the length is fixed. This is needed for dealing with backward assertions.In UTF8 mode, the result is in characters rather than bytes.Arguments:  code     points to the start of the pattern (the bracket)  options  the compiling optionsReturns:   the fixed length, or -1 if there is no fixed length,             or -2 if \C was encountered*/static intfind_fixedlength(uschar *code, int options){int length = -1;register int branchlength = 0;register uschar *cc = code + 1 + LINK_SIZE;/* Scan along the opcodes for this branch. If we get to the end of thebranch, check the length against that of the other branches. */for (;;)  {  int d;  register int op = *cc;  switch (op)    {    case OP_CBRA:    case OP_BRA:    case OP_ONCE:    case OP_COND:    d = find_fixedlength(cc + ((op == OP_CBRA)? 2:0), options);    if (d < 0) return d;    branchlength += d;    do cc += GET(cc, 1); while (*cc == OP_ALT);    cc += 1 + LINK_SIZE;    break;    /* Reached end of a branch; if it's a ket it is the end of a nested    call. If it's ALT it is an alternation in a nested call. If it is    END it's the end of the outer call. All can be handled by the same code. */    case OP_ALT:    case OP_KET:    case OP_KETRMAX:    case OP_KETRMIN:    case OP_END:    if (length < 0) length = branchlength;      else if (length != branchlength) return -1;    if (*cc != OP_ALT) return length;    cc += 1 + LINK_SIZE;    branchlength = 0;    break;    /* Skip over assertive subpatterns */    case OP_ASSERT:    case OP_ASSERT_NOT:    case OP_ASSERTBACK:    case OP_ASSERTBACK_NOT:    do cc += GET(cc, 1); while (*cc == OP_ALT);    /* Fall through */    /* Skip over things that don't match chars */    case OP_REVERSE:    case OP_CREF:    case OP_RREF:    case OP_DEF:    case OP_OPT:    case OP_CALLOUT:    case OP_SOD:    case OP_SOM:    case OP_EOD:    case OP_EODN:    case OP_CIRC:    case OP_DOLL:    case OP_NOT_WORD_BOUNDARY:    case OP_WORD_BOUNDARY:    cc += _pcre_OP_lengths[*cc];    break;    /* Handle literal characters */    case OP_CHAR:    case OP_CHARNC:    case OP_NOT:    branchlength++;    cc += 2;#ifdef SUPPORT_UTF8    if ((options & PCRE_UTF8) != 0)      {      while ((*cc & 0xc0) == 0x80) cc++;      }#endif    break;    /* Handle exact repetitions. The count is already in characters, but we    need to skip over a multibyte character in UTF8 mode.  */    case OP_EXACT:    branchlength += GET2(cc,1);    cc += 4;#ifdef SUPPORT_UTF8    if ((options & PCRE_UTF8) != 0)      {      while((*cc & 0x80) == 0x80) cc++;      }#endif    break;    case OP_TYPEEXACT:    branchlength += GET2(cc,1);    if (cc[3] == OP_PROP || cc[3] == OP_NOTPROP) cc += 2;    cc += 4;    break;    /* Handle single-char matchers */    case OP_PROP:    case OP_NOTPROP:    cc += 2;    /* Fall through */    case OP_NOT_DIGIT:    case OP_DIGIT:    case OP_NOT_WHITESPACE:    case OP_WHITESPACE:    case OP_NOT_WORDCHAR:    case OP_WORDCHAR:    case OP_ANY:    branchlength++;    cc++;    break;    /* The single-byte matcher isn't allowed */    case OP_ANYBYTE:    return -2;    /* Check a class for variable quantification */#ifdef SUPPORT_UTF8    case OP_XCLASS:    cc += GET(cc, 1) - 33;    /* Fall through */#endif    case OP_CLASS:    case OP_NCLASS:    cc += 33;    switch (*cc)      {      case OP_CRSTAR:      case OP_CRMINSTAR:      case OP_CRQUERY:      case OP_CRMINQUERY:      return -1;      case OP_CRRANGE:      case OP_CRMINRANGE:      if (GET2(cc,1) != GET2(cc,3)) return -1;      branchlength += GET2(cc,1);      cc += 5;      break;      default:      branchlength++;      }    break;    /* Anything else is variable length */    default:    return -1;    }  }/* Control never gets here */}/**************************************************    Scan compiled regex for numbered bracket    **************************************************//* This little function scans through a compiled pattern until it finds acapturing bracket with the given number.Arguments:  code        points to start of expression  utf8        TRUE in UTF-8 mode  number      the required bracket number

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕精品一区二区精品绿巨人| 欧美一二三区在线观看| 日一区二区三区| 精品sm在线观看| 日本电影欧美片| 精品一区二区三区免费毛片爱| 亚洲男人电影天堂| 国产清纯白嫩初高生在线观看91| 欧美日本在线播放| 91免费观看国产| 国产成人免费在线观看不卡| 美日韩一区二区| 国产在线看一区| 亚洲欧美另类小说视频| 亚洲男人天堂av网| 日本一区二区三区高清不卡| 日韩一区二区三区视频在线观看 | 欧美激情综合网| 精品久久久久久综合日本欧美| 在线观看日韩一区| av欧美精品.com| 9l国产精品久久久久麻豆| 国产成人精品影院| 国产成人高清视频| 国产露脸91国语对白| 精品亚洲国产成人av制服丝袜| 久久不见久久见免费视频1| 日韩激情一区二区| 综合电影一区二区三区| 国产精品国产精品国产专区不片| 中文字幕中文在线不卡住| 国产人成一区二区三区影院| 中文成人综合网| 国产精品久久久久桃色tv| 最新日韩av在线| 一区二区三区精品| 午夜精品福利一区二区三区蜜桃| 日韩电影在线一区二区三区| 奇米四色…亚洲| 国产精品亚洲综合一区在线观看| 成人一区二区三区视频在线观看 | 自拍视频在线观看一区二区| 亚洲欧美另类图片小说| 亚洲mv在线观看| 极品尤物av久久免费看| caoporn国产精品| 欧美日韩专区在线| 日韩成人精品在线观看| 欧美国产亚洲另类动漫| 成人欧美一区二区三区在线播放| 亚洲精品视频在线| 丝袜诱惑亚洲看片| 激情偷乱视频一区二区三区| 成人黄动漫网站免费app| 色老汉av一区二区三区| 日韩一卡二卡三卡国产欧美| 中文字幕欧美三区| 亚洲电影视频在线| 国产在线精品一区二区不卡了| 国产成a人亚洲| 欧美日韩国产高清一区二区 | 夫妻av一区二区| 91欧美激情一区二区三区成人| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 日本中文字幕一区二区视频| 欧美日韩一级黄| 欧美精品一区二| 亚洲男人的天堂在线观看| 韩国欧美国产1区| 欧美另类一区二区三区| 亚洲精品第一国产综合野| 久久国产剧场电影| 777欧美精品| 亚洲自拍偷拍网站| 91在线一区二区| 久久久久免费观看| 久久国产综合精品| 欧美精品一级二级| 亚洲一区在线观看免费 | 91视频免费播放| 国产拍揄自揄精品视频麻豆| 精品一区二区三区的国产在线播放| 91传媒视频在线播放| 欧美激情资源网| 日韩激情在线观看| 欧美日韩国产首页在线观看| 一区二区三区日韩欧美| 成人99免费视频| 日本一区二区三区高清不卡| 国产精品一区二区男女羞羞无遮挡| 日韩视频一区二区在线观看| 亚洲成人自拍一区| 欧美伊人精品成人久久综合97 | 亚洲电影一级黄| 91久久香蕉国产日韩欧美9色| 国产精品久久久久久久久图文区| 国产精品18久久久久久久网站| 久久久一区二区三区捆绑**| 黄网站免费久久| 日本一区二区三区高清不卡| av在线这里只有精品| 自拍偷拍国产亚洲| 日韩美女视频一区二区在线观看| 欧美精品vⅰdeose4hd| 天天综合天天综合色| 欧美高清视频在线高清观看mv色露露十八| 午夜精品视频一区| 日韩精品一区二区三区视频 | 国产丝袜在线精品| 成av人片一区二区| 亚洲午夜私人影院| 日韩一区二区免费电影| 美腿丝袜亚洲综合| 欧美激情一二三区| 欧美日本一道本| 黑人巨大精品欧美黑白配亚洲| 中日韩免费视频中文字幕| 在线视频国内一区二区| 久久精品国产网站| 亚洲精品免费播放| 久久网站最新地址| 91成人免费网站| 国产精品影视网| 亚洲综合清纯丝袜自拍| 26uuu国产电影一区二区| 99国产欧美久久久精品| 久久精品国产精品亚洲红杏 | 国产精品无遮挡| 欧美一区二区三区男人的天堂| 国产a级毛片一区| 亚洲综合视频在线观看| 国产欧美日韩另类视频免费观看| 欧美日韩一级片网站| 成人性生交大片| 久久99国产精品免费网站| 中文字幕中文字幕一区| 久久女同精品一区二区| 欧美性感一类影片在线播放| 成人综合在线观看| 国产精品一二一区| 日本色综合中文字幕| 亚洲一区二区三区四区五区黄| 久久精品一区二区三区四区| 制服丝袜亚洲播放| 91黄色在线观看| jlzzjlzz亚洲日本少妇| 成人免费av在线| 黄网站免费久久| 久久国产剧场电影| 麻豆精品国产传媒mv男同| 日韩激情视频网站| 五月天久久比比资源色| 亚洲狠狠丁香婷婷综合久久久| 中文在线一区二区| 国产精品天美传媒沈樵| 国产日韩欧美制服另类| 国产日韩精品久久久| 欧美激情一区二区| 国产亚洲精品福利| 国产精品嫩草影院com| 亚洲免费av在线| 亚洲欧美日韩国产综合在线| 亚洲欧美视频在线观看| 亚洲欧美在线观看| 亚洲日本va午夜在线影院| 国产精品欧美久久久久无广告 | 日韩欧美电影在线| 久久这里只有精品6| 中文字幕中文字幕在线一区 | 国产a久久麻豆| 91日韩在线专区| 欧美二区在线观看| 欧美va亚洲va香蕉在线| 国产调教视频一区| 日韩毛片在线免费观看| 日韩在线a电影| 高清不卡一区二区| 欧美性极品少妇| 久久先锋影音av鲁色资源网| 日韩毛片视频在线看| 婷婷综合久久一区二区三区| 久久黄色级2电影| 久久综合色之久久综合| 国产精品毛片久久久久久久| 亚洲五月六月丁香激情| 精品一区二区影视| 91一区二区三区在线播放| 欧美一二三区精品| 亚洲欧美一区二区三区国产精品 | 欧美精三区欧美精三区| 久久亚区不卡日本| 性做久久久久久久免费看| 国产大陆a不卡| 欧美日韩一区二区三区免费看| 久久久久久久网| 香蕉影视欧美成人| 91久久精品网| 亚洲欧洲av一区二区三区久久| 看电影不卡的网站| 欧美三级乱人伦电影|