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

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

?? pcre_compile.c

?? SDL文件。SDL_ERROwenjian.....
?? C
?? 第 1 頁 / 共 5 頁
字號:
/**************************************************          Check POSIX class name                **************************************************//* This function is called to check the name given in a POSIX-style class entrysuch as [:alnum:].Arguments:  ptr        points to the first letter  len        the length of the nameReturns:     a value representing the name, or -1 if unknown*/static intcheck_posix_name(const uschar *ptr, int len){const char *pn = posix_names;register int yield = 0;while (posix_name_lengths[yield] != 0)  {  if (len == posix_name_lengths[yield] &&    strncmp((const char *)ptr, pn, len) == 0) return yield;  pn += posix_name_lengths[yield] + 1;  yield++;  }return -1;}/**************************************************    Adjust OP_RECURSE items in repeated group   **************************************************//* OP_RECURSE items contain an offset from the start of the regex to the groupthat is referenced. This means that groups can be replicated for fixedrepetition simply by copying (because the recursion is allowed to refer toearlier groups that are outside the current group). However, when a group isoptional (i.e. the minimum quantifier is zero), OP_BRAZERO is inserted beforeit, after it has been compiled. This means that any OP_RECURSE items within itthat refer to the group itself or any contained groups have to have theiroffsets adjusted. That one of the jobs of this function. Before it is called,the partially compiled regex must be temporarily terminated with OP_END.This function has been extended with the possibility of forward references forrecursions and subroutine calls. It must also check the list of such referencesfor the group we are dealing with. If it finds that one of the recursions inthe current group is on this list, it adjusts the offset in the list, not thevalue in the reference (which is a group number).Arguments:  group      points to the start of the group  adjust     the amount by which the group is to be moved  utf8       TRUE in UTF-8 mode  cd         contains pointers to tables etc.  save_hwm   the hwm forward reference pointer at the start of the groupReturns:     nothing*/static voidadjust_recurse(uschar *group, int adjust, BOOL utf8, compile_data *cd,  uschar *save_hwm){uschar *ptr = group;while ((ptr = (uschar *)find_recurse(ptr, utf8)) != NULL)  {  int offset;  uschar *hc;  /* See if this recursion is on the forward reference list. If so, adjust the  reference. */  for (hc = save_hwm; hc < cd->hwm; hc += LINK_SIZE)    {    offset = GET(hc, 0);    if (cd->start_code + offset == ptr + 1)      {      PUT(hc, 0, offset + adjust);      break;      }    }  /* Otherwise, adjust the recursion offset if it's after the start of this  group. */  if (hc >= cd->hwm)    {    offset = GET(ptr, 1);    if (cd->start_code + offset >= group) PUT(ptr, 1, offset + adjust);    }  ptr += 1 + LINK_SIZE;  }}/**************************************************        Insert an automatic callout point       **************************************************//* This function is called when the PCRE_AUTO_CALLOUT option is set, to insertcallout points before each pattern item.Arguments:  code           current code pointer  ptr            current pattern pointer  cd             pointers to tables etcReturns:         new code pointer*/static uschar *auto_callout(uschar *code, const uschar *ptr, compile_data *cd){*code++ = OP_CALLOUT;*code++ = 255;PUT(code, 0, ptr - cd->start_pattern);  /* Pattern offset */PUT(code, LINK_SIZE, 0);                /* Default length */return code + 2*LINK_SIZE;}/**************************************************         Complete a callout item                **************************************************//* A callout item contains the length of the next item in the pattern, whichwe can't fill in till after we have reached the relevant point. This is usedfor both automatic and manual callouts.Arguments:  previous_callout   points to previous callout item  ptr                current pattern pointer  cd                 pointers to tables etcReturns:             nothing*/static voidcomplete_callout(uschar *previous_callout, const uschar *ptr, compile_data *cd){int length = ptr - cd->start_pattern - GET(previous_callout, 2);PUT(previous_callout, 2 + LINK_SIZE, length);}#ifdef SUPPORT_UCP/**************************************************           Get othercase range                  **************************************************//* This function is passed the start and end of a class range, in UTF-8 modewith UCP support. It searches up the characters, looking for internal ranges ofcharacters in the "other" case. Each call returns the next one, updating thestart address.Arguments:  cptr        points to starting character value; updated  d           end value  ocptr       where to put start of othercase range  odptr       where to put end of othercase rangeYield:        TRUE when range returned; FALSE when no more*/static BOOLget_othercase_range(unsigned int *cptr, unsigned int d, unsigned int *ocptr,  unsigned int *odptr){unsigned int c, othercase, next;for (c = *cptr; c <= d; c++)  { if ((othercase = _pcre_ucp_othercase(c)) != NOTACHAR) break; }if (c > d) return FALSE;*ocptr = othercase;next = othercase + 1;for (++c; c <= d; c++)  {  if (_pcre_ucp_othercase(c) != next) break;  next++;  }*odptr = next - 1;*cptr = c;return TRUE;}#endif  /* SUPPORT_UCP *//**************************************************     Check if auto-possessifying is possible    **************************************************//* This function is called for unlimited repeats of certain items, to seewhether the next thing could possibly match the repeated item. If not, it makessense to automatically possessify the repeated item.Arguments:  op_code       the repeated op code  this          data for this item, depends on the opcode  utf8          TRUE in UTF-8 mode  utf8_char     used for utf8 character bytes, NULL if not relevant  ptr           next character in pattern  options       options bits  cd            contains pointers to tables etc.Returns:        TRUE if possessifying is wanted*/static BOOLcheck_auto_possessive(int op_code, int item, BOOL utf8, uschar *utf8_char,  const uschar *ptr, int options, compile_data *cd){int next;/* Skip whitespace and comments in extended mode */if ((options & PCRE_EXTENDED) != 0)  {  for (;;)    {    while ((cd->ctypes[*ptr] & ctype_space) != 0) ptr++;    if (*ptr == '#')      {      while (*(++ptr) != 0)        if (IS_NEWLINE(ptr)) { ptr += cd->nllen; break; }      }    else break;    }  }/* If the next item is one that we can handle, get its value. A non-negativevalue is a character, a negative value is an escape value. */if (*ptr == '\\')  {  int temperrorcode = 0;  next = check_escape(&ptr, &temperrorcode, cd->bracount, options, FALSE);  if (temperrorcode != 0) return FALSE;  ptr++;    /* Point after the escape sequence */  }else if ((cd->ctypes[*ptr] & ctype_meta) == 0)  {#ifdef SUPPORT_UTF8  if (utf8) { GETCHARINC(next, ptr); } else#endif  next = *ptr++;  }else return FALSE;/* Skip whitespace and comments in extended mode */if ((options & PCRE_EXTENDED) != 0)  {  for (;;)    {    while ((cd->ctypes[*ptr] & ctype_space) != 0) ptr++;    if (*ptr == '#')      {      while (*(++ptr) != 0)        if (IS_NEWLINE(ptr)) { ptr += cd->nllen; break; }      }    else break;    }  }/* If the next thing is itself optional, we have to give up. */if (*ptr == '*' || *ptr == '?' || strncmp((char *)ptr, "{0,", 3) == 0)  return FALSE;/* Now compare the next item with the previous opcode. If the previous is apositive single character match, "item" either contains the character or, if"item" is greater than 127 in utf8 mode, the character's bytes are inutf8_char. *//* Handle cases when the next item is a character. */if (next >= 0) switch(op_code)  {  case OP_CHAR:#ifdef SUPPORT_UTF8  if (utf8 && item > 127) { GETCHAR(item, utf8_char); }#endif  return item != next;  /* For CHARNC (caseless character) we must check the other case. If we have  Unicode property support, we can use it to test the other case of  high-valued characters. */  case OP_CHARNC:#ifdef SUPPORT_UTF8  if (utf8 && item > 127) { GETCHAR(item, utf8_char); }#endif  if (item == next) return FALSE;#ifdef SUPPORT_UTF8  if (utf8)    {    unsigned int othercase;    if (next < 128) othercase = cd->fcc[next]; else#ifdef SUPPORT_UCP    othercase = _pcre_ucp_othercase((unsigned int)next);#else    othercase = NOTACHAR;#endif    return (unsigned int)item != othercase;    }  else#endif  /* SUPPORT_UTF8 */  return (item != cd->fcc[next]);  /* Non-UTF-8 mode */  /* For OP_NOT, "item" must be a single-byte character. */  case OP_NOT:  if (next < 0) return FALSE;  /* Not a character */  if (item == next) return TRUE;  if ((options & PCRE_CASELESS) == 0) return FALSE;#ifdef SUPPORT_UTF8  if (utf8)    {    unsigned int othercase;    if (next < 128) othercase = cd->fcc[next]; else#ifdef SUPPORT_UCP    othercase = _pcre_ucp_othercase(next);#else    othercase = NOTACHAR;#endif    return (unsigned int)item == othercase;    }  else#endif  /* SUPPORT_UTF8 */  return (item == cd->fcc[next]);  /* Non-UTF-8 mode */  case OP_DIGIT:  return next > 127 || (cd->ctypes[next] & ctype_digit) == 0;  case OP_NOT_DIGIT:  return next <= 127 && (cd->ctypes[next] & ctype_digit) != 0;  case OP_WHITESPACE:  return next > 127 || (cd->ctypes[next] & ctype_space) == 0;  case OP_NOT_WHITESPACE:  return next <= 127 && (cd->ctypes[next] & ctype_space) != 0;  case OP_WORDCHAR:  return next > 127 || (cd->ctypes[next] & ctype_word) == 0;  case OP_NOT_WORDCHAR:  return next <= 127 && (cd->ctypes[next] & ctype_word) != 0;  case OP_HSPACE:  case OP_NOT_HSPACE:  switch(next)    {    case 0x09:    case 0x20:    case 0xa0:    case 0x1680:    case 0x180e:    case 0x2000:    case 0x2001:    case 0x2002:    case 0x2003:    case 0x2004:    case 0x2005:    case 0x2006:    case 0x2007:    case 0x2008:    case 0x2009:    case 0x200A:    case 0x202f:    case 0x205f:    case 0x3000:    return op_code != OP_HSPACE;    default:    return op_code == OP_HSPACE;    }  case OP_VSPACE:  case OP_NOT_VSPACE:  switch(next)    {    case 0x0a:    case 0x0b:    case 0x0c:    case 0x0d:    case 0x85:    case 0x2028:    case 0x2029:    return op_code != OP_VSPACE;    default:    return op_code == OP_VSPACE;    }  default:  return FALSE;  }/* Handle the case when the next item is \d, \s, etc. */switch(op_code)  {  case OP_CHAR:  case OP_CHARNC:#ifdef SUPPORT_UTF8  if (utf8 && item > 127) { GETCHAR(item, utf8_char); }#endif  switch(-next)    {    case ESC_d:    return item > 127 || (cd->ctypes[item] & ctype_digit) == 0;    case ESC_D:    return item <= 127 && (cd->ctypes[item] & ctype_digit) != 0;    case ESC_s:    return item > 127 || (cd->ctypes[item] & ctype_space) == 0;    case ESC_S:    return item <= 127 && (cd->ctypes[item] & cty

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍av一区二区三区| 成人av高清在线| 欧美色图激情小说| 一区二区三区中文在线| 色久综合一二码| 亚洲成a天堂v人片| 91精品国产综合久久久久久漫画 | 国产精品久久久久aaaa樱花| 成人一级视频在线观看| 亚洲色图第一区| 欧美日韩高清在线| 捆绑调教一区二区三区| 久久精品人人爽人人爽| 91久久人澡人人添人人爽欧美| 一区二区三区小说| 欧美一区二区播放| 国产大陆精品国产| 亚洲午夜久久久久| 精品日韩欧美在线| 99久久国产综合精品色伊| 亚洲高清不卡在线观看| 久久久国产精品麻豆| 99re热视频精品| 日韩成人一区二区三区在线观看| 2024国产精品| 色婷婷久久综合| 麻豆久久久久久| 中文字幕欧美一| 日韩手机在线导航| 99久久精品国产麻豆演员表| 日韩av电影天堂| 日韩理论片一区二区| 欧美zozo另类异族| 91高清在线观看| 国产电影一区二区三区| 丝袜诱惑亚洲看片| 日韩美女视频19| 欧美大片在线观看一区| 欧美在线一二三| 国产激情91久久精品导航| 婷婷开心激情综合| 亚洲欧美另类小说视频| 久久先锋影音av| 欧美日韩一级黄| 成人一级片在线观看| 人人狠狠综合久久亚洲| 亚洲精品网站在线观看| 国产色91在线| 日韩欧美国产成人一区二区| 欧美三级视频在线| a亚洲天堂av| 国产成人亚洲精品狼色在线| 日本免费在线视频不卡一不卡二| 亚洲日本青草视频在线怡红院| 久久精品一区八戒影视| 日韩美女一区二区三区四区| 欧美综合亚洲图片综合区| 99久久免费国产| 国产999精品久久| 精品一区二区精品| 麻豆精品视频在线观看视频| 亚洲国产日韩精品| 一区二区在线观看av| 中文字幕亚洲视频| 中文欧美字幕免费| 国产欧美日韩中文久久| 久久精品一二三| 久久蜜桃av一区精品变态类天堂 | 久久免费看少妇高潮| 欧美一区二区视频在线观看2020| 欧美综合一区二区| 欧美视频一区二区在线观看| 在线看国产一区二区| 色综合久久综合网| 欧美在线一二三| 欧美群妇大交群的观看方式| 欧美理论片在线| 91麻豆精品91久久久久同性| 在线不卡a资源高清| 在线播放欧美女士性生活| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 色婷婷一区二区| 色av成人天堂桃色av| 欧美日韩午夜在线视频| 欧美久久久影院| 日韩视频不卡中文| 精品国产乱码久久久久久牛牛 | 国产精品国产自产拍高清av | 91精品国产综合久久精品app| 在线不卡欧美精品一区二区三区| 91精品国产高清一区二区三区蜜臀| 欧美日韩另类国产亚洲欧美一级| 91精品国产品国语在线不卡| 精品捆绑美女sm三区| 国产三级精品三级| 亚洲免费观看高清完整版在线观看 | kk眼镜猥琐国模调教系列一区二区| 成人黄色a**站在线观看| 91免费视频大全| 欧美中文字幕一区二区三区亚洲| 91精品国产色综合久久久蜜香臀| 26uuu色噜噜精品一区| 国产精品青草久久| 亚洲伊人色欲综合网| 免费观看久久久4p| 国产精一区二区三区| 91女人视频在线观看| 欧美一级日韩免费不卡| 国产欧美日韩亚州综合| 亚洲综合免费观看高清完整版| 秋霞成人午夜伦在线观看| 成人午夜激情片| 欧美日韩精品欧美日韩精品一 | 正在播放亚洲一区| 国产午夜亚洲精品理论片色戒| 亚洲另类在线视频| 狠狠色2019综合网| 91传媒视频在线播放| 欧美大胆人体bbbb| 亚洲精品日韩专区silk| 激情综合色丁香一区二区| 成人精品国产一区二区4080| 在线成人高清不卡| 亚洲啪啪综合av一区二区三区| 日本中文字幕一区二区有限公司| www.66久久| 精品国产乱码久久久久久牛牛| 亚洲综合无码一区二区| 国产精品中文字幕日韩精品| 欧美性色aⅴ视频一区日韩精品| 久久精品视频在线免费观看| 丝袜亚洲另类丝袜在线| 色八戒一区二区三区| 久久精品夜色噜噜亚洲a∨| 日韩黄色免费电影| 色婷婷狠狠综合| 国产欧美日韩精品a在线观看| 日韩电影免费在线观看网站| 色屁屁一区二区| 国产精品污网站| 韩国精品久久久| 日韩精品一区二区三区在线| 亚洲国产精品一区二区www在线| www.欧美色图| 欧美激情综合五月色丁香小说| 久久66热偷产精品| 91麻豆精品国产91久久久使用方法 | 国产精品久久久爽爽爽麻豆色哟哟| 日韩激情一二三区| 欧美日韩一区高清| 一区二区三区波多野结衣在线观看| 福利一区二区在线| 国产亚洲一区字幕| 韩国av一区二区三区四区| 6080午夜不卡| 日韩高清国产一区在线| 欧美日韩免费视频| 亚洲福利国产精品| 色婷婷精品大在线视频| 亚洲色图制服诱惑| 99国产麻豆精品| 亚洲精品中文在线观看| 色综合久久久久久久| 亚洲免费av在线| 91浏览器打开| 亚洲视频网在线直播| 色哟哟一区二区| 日韩视频免费观看高清完整版| 日本精品一级二级| 久久久高清一区二区三区| 激情小说欧美图片| 久久精品免视看| 成人涩涩免费视频| 国产精品传媒视频| 色噜噜狠狠成人网p站| 亚洲午夜久久久久久久久久久| 欧美色倩网站大全免费| 亚洲国产精品欧美一二99| 欧美日韩大陆在线| 麻豆国产精品视频| 欧美国产日韩亚洲一区| 一本到一区二区三区| 亚洲一区二区三区四区五区中文| 欧美区在线观看| 狠狠色丁香婷婷综合| 国产精品国产a| 欧美日韩在线播放三区| 日本成人在线看| 国产色婷婷亚洲99精品小说| 91麻豆产精品久久久久久 | 久久久午夜精品| heyzo一本久久综合| 亚洲一区二区精品视频| 欧美一区二区啪啪| 国产成人一级电影| 亚洲午夜久久久久久久久电影院 | 高清成人免费视频| 亚洲精品乱码久久久久久黑人 | 国产成人啪免费观看软件| 亚洲视频在线一区观看|