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

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

?? pcre_get.c

?? SDL文件。SDL_ERROwenjian.....
?? C
字號:
/**************************************************      Perl-Compatible Regular Expressions       **************************************************//* PCRE is a library of functions to support regular expressions whose syntaxand semantics are as close as possible to those of the Perl 5 language.                       Written by Philip Hazel           Copyright (c) 1997-2007 University of Cambridge-----------------------------------------------------------------------------Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions are met:    * Redistributions of source code must retain the above copyright notice,      this list of conditions and the following disclaimer.    * Redistributions in binary form must reproduce the above copyright      notice, this list of conditions and the following disclaimer in the      documentation and/or other materials provided with the distribution.    * Neither the name of the University of Cambridge nor the names of its      contributors may be used to endorse or promote products derived from      this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THEIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSEARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BELIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, ORCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OFSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF SUCH DAMAGE.-----------------------------------------------------------------------------*//* This module contains some convenience functions for extracting substringsfrom the subject string after a regex match has succeeded. The original ideafor these functions came from Scott Wimer. */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "pcre_internal.h"/**************************************************           Find number for named string         **************************************************//* This function is used by the get_first_set() function below, as wellas being generally available. It assumes that names are unique.Arguments:  code        the compiled regex  stringname  the name whose number is requiredReturns:      the number of the named parentheses, or a negative number                (PCRE_ERROR_NOSUBSTRING) if not found*/intpcre_get_stringnumber(const pcre *code, const char *stringname){int rc;int entrysize;int top, bot;uschar *nametable;if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)  return rc;if (top <= 0) return PCRE_ERROR_NOSUBSTRING;if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)  return rc;if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)  return rc;bot = 0;while (top > bot)  {  int mid = (top + bot) / 2;  uschar *entry = nametable + entrysize*mid;  int c = strcmp(stringname, (char *)(entry + 2));  if (c == 0) return (entry[0] << 8) + entry[1];  if (c > 0) bot = mid + 1; else top = mid;  }return PCRE_ERROR_NOSUBSTRING;}/**************************************************     Find (multiple) entries for named string   **************************************************//* This is used by the get_first_set() function below, as well as beinggenerally available. It is used when duplicated names are permitted.Arguments:  code        the compiled regex  stringname  the name whose entries required  firstptr    where to put the pointer to the first entry  lastptr     where to put the pointer to the last entryReturns:      the length of each entry, or a negative number                (PCRE_ERROR_NOSUBSTRING) if not found*/intpcre_get_stringtable_entries(const pcre *code, const char *stringname,  char **firstptr, char **lastptr){int rc;int entrysize;int top, bot;uschar *nametable, *lastentry;if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)  return rc;if (top <= 0) return PCRE_ERROR_NOSUBSTRING;if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)  return rc;if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)  return rc;lastentry = nametable + entrysize * (top - 1);bot = 0;while (top > bot)  {  int mid = (top + bot) / 2;  uschar *entry = nametable + entrysize*mid;  int c = strcmp(stringname, (char *)(entry + 2));  if (c == 0)    {    uschar *first = entry;    uschar *last = entry;    while (first > nametable)      {      if (strcmp(stringname, (char *)(first - entrysize + 2)) != 0) break;      first -= entrysize;      }    while (last < lastentry)      {      if (strcmp(stringname, (char *)(last + entrysize + 2)) != 0) break;      last += entrysize;      }    *firstptr = (char *)first;    *lastptr = (char *)last;    return entrysize;    }  if (c > 0) bot = mid + 1; else top = mid;  }return PCRE_ERROR_NOSUBSTRING;}/**************************************************    Find first set of multiple named strings    **************************************************//* This function allows for duplicate names in the table of named substrings.It returns the number of the first one that was set in a pattern match.Arguments:  code         the compiled regex  stringname   the name of the capturing substring  ovector      the vector of matched substringsReturns:       the number of the first that is set,               or the number of the last one if none are set,               or a negative number on error*/static intget_first_set(const pcre *code, const char *stringname, int *ovector){const real_pcre *re = (const real_pcre *)code;int entrysize;char *first, *last;uschar *entry;if ((re->options & PCRE_DUPNAMES) == 0 && (re->flags & PCRE_JCHANGED) == 0)  return pcre_get_stringnumber(code, stringname);entrysize = pcre_get_stringtable_entries(code, stringname, &first, &last);if (entrysize <= 0) return entrysize;for (entry = (uschar *)first; entry <= (uschar *)last; entry += entrysize)  {  int n = (entry[0] << 8) + entry[1];  if (ovector[n*2] >= 0) return n;  }return (first[0] << 8) + first[1];}/**************************************************      Copy captured string to given buffer      **************************************************//* This function copies a single captured substring into a given buffer.Note that we use memcpy() rather than strncpy() in case there are binary zerosin the string.Arguments:  subject        the subject string that was matched  ovector        pointer to the offsets table  stringcount    the number of substrings that were captured                   (i.e. the yield of the pcre_exec call, unless                   that was zero, in which case it should be 1/3                   of the offset table size)  stringnumber   the number of the required substring  buffer         where to put the substring  size           the size of the bufferReturns:         if successful:                   the length of the copied string, not including the zero                   that is put on the end; can be zero                 if not successful:                   PCRE_ERROR_NOMEMORY (-6) buffer too small                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring*/intpcre_copy_substring(const char *subject, int *ovector, int stringcount,  int stringnumber, char *buffer, int size){int yield;if (stringnumber < 0 || stringnumber >= stringcount)  return PCRE_ERROR_NOSUBSTRING;stringnumber *= 2;yield = ovector[stringnumber+1] - ovector[stringnumber];if (size < yield + 1) return PCRE_ERROR_NOMEMORY;memcpy(buffer, subject + ovector[stringnumber], yield);buffer[yield] = 0;return yield;}/**************************************************   Copy named captured string to given buffer   **************************************************//* This function copies a single captured substring into a given buffer,identifying it by name. If the regex permits duplicate names, the firstsubstring that is set is chosen.Arguments:  code           the compiled regex  subject        the subject string that was matched  ovector        pointer to the offsets table  stringcount    the number of substrings that were captured                   (i.e. the yield of the pcre_exec call, unless                   that was zero, in which case it should be 1/3                   of the offset table size)  stringname     the name of the required substring  buffer         where to put the substring  size           the size of the bufferReturns:         if successful:                   the length of the copied string, not including the zero                   that is put on the end; can be zero                 if not successful:                   PCRE_ERROR_NOMEMORY (-6) buffer too small                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring*/intpcre_copy_named_substring(const pcre *code, const char *subject, int *ovector,  int stringcount, const char *stringname, char *buffer, int size){int n = get_first_set(code, stringname, ovector);if (n <= 0) return n;return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size);}/**************************************************      Copy all captured strings to new store    **************************************************//* This function gets one chunk of store and builds a list of pointers and allof the captured substrings in it. A NULL pointer is put on the end of the list.Arguments:  subject        the subject string that was matched  ovector        pointer to the offsets table  stringcount    the number of substrings that were captured                   (i.e. the yield of the pcre_exec call, unless                   that was zero, in which case it should be 1/3                   of the offset table size)  listptr        set to point to the list of pointersReturns:         if successful: 0                 if not successful:                   PCRE_ERROR_NOMEMORY (-6) failed to get store*/intpcre_get_substring_list(const char *subject, int *ovector, int stringcount,  const char ***listptr){int i;int size = sizeof(char *);int double_count = stringcount * 2;char **stringlist;char *p;for (i = 0; i < double_count; i += 2)  size += sizeof(char *) + ovector[i+1] - ovector[i] + 1;stringlist = (char **)(pcre_malloc)(size);if (stringlist == NULL) return PCRE_ERROR_NOMEMORY;*listptr = (const char **)stringlist;p = (char *)(stringlist + stringcount + 1);for (i = 0; i < double_count; i += 2)  {  int len = ovector[i+1] - ovector[i];  memcpy(p, subject + ovector[i], len);  *stringlist++ = p;  p += len;  *p++ = 0;  }*stringlist = NULL;return 0;}/**************************************************   Free store obtained by get_substring_list    **************************************************//* This function exists for the benefit of people calling PCRE from non-Cprograms that can call its functions, but not free() or (pcre_free)() directly.Argument:   the result of a previous pcre_get_substring_list()Returns:    nothing*/voidpcre_free_substring_list(const char **pointer){(pcre_free)((void *)pointer);}/**************************************************      Copy captured string to new store         **************************************************//* This function copies a single captured substring into a piece of newstoreArguments:  subject        the subject string that was matched  ovector        pointer to the offsets table  stringcount    the number of substrings that were captured                   (i.e. the yield of the pcre_exec call, unless                   that was zero, in which case it should be 1/3                   of the offset table size)  stringnumber   the number of the required substring  stringptr      where to put a pointer to the substringReturns:         if successful:                   the length of the string, not including the zero that                   is put on the end; can be zero                 if not successful:                   PCRE_ERROR_NOMEMORY (-6) failed to get store                   PCRE_ERROR_NOSUBSTRING (-7) substring not present*/intpcre_get_substring(const char *subject, int *ovector, int stringcount,  int stringnumber, const char **stringptr){int yield;char *substring;if (stringnumber < 0 || stringnumber >= stringcount)  return PCRE_ERROR_NOSUBSTRING;stringnumber *= 2;yield = ovector[stringnumber+1] - ovector[stringnumber];substring = (char *)(pcre_malloc)(yield + 1);if (substring == NULL) return PCRE_ERROR_NOMEMORY;memcpy(substring, subject + ovector[stringnumber], yield);substring[yield] = 0;*stringptr = substring;return yield;}/**************************************************   Copy named captured string to new store      **************************************************//* This function copies a single captured substring, identified by name, intonew store. If the regex permits duplicate names, the first substring that isset is chosen.Arguments:  code           the compiled regex  subject        the subject string that was matched  ovector        pointer to the offsets table  stringcount    the number of substrings that were captured                   (i.e. the yield of the pcre_exec call, unless                   that was zero, in which case it should be 1/3                   of the offset table size)  stringname     the name of the required substring  stringptr      where to put the pointerReturns:         if successful:                   the length of the copied string, not including the zero                   that is put on the end; can be zero                 if not successful:                   PCRE_ERROR_NOMEMORY (-6) couldn't get memory                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring*/intpcre_get_named_substring(const pcre *code, const char *subject, int *ovector,  int stringcount, const char *stringname, const char **stringptr){int n = get_first_set(code, stringname, ovector);if (n <= 0) return n;return pcre_get_substring(subject, ovector, stringcount, n, stringptr);}/**************************************************       Free store obtained by get_substring     **************************************************//* This function exists for the benefit of people calling PCRE from non-Cprograms that can call its functions, but not free() or (pcre_free)() directly.Argument:   the result of a previous pcre_get_substring()Returns:    nothing*/voidpcre_free_substring(const char *pointer){(pcre_free)((void *)pointer);}/* End of pcre_get.c */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久国产综合精品麻豆| 9色porny自拍视频一区二区| 国产精品毛片无遮挡高清| 欧美性色综合网| 成人午夜精品一区二区三区| 亚洲123区在线观看| 成人欧美一区二区三区白人| 日韩色视频在线观看| 色偷偷久久人人79超碰人人澡| 免费在线观看精品| 久久综合资源网| 色女孩综合影院| 日本最新不卡在线| 最新热久久免费视频| 日韩欧美自拍偷拍| 91亚洲精品久久久蜜桃| 精品一区二区三区香蕉蜜桃| 亚洲精选免费视频| 亚洲精品在线观看视频| 欧美在线播放高清精品| 国产91高潮流白浆在线麻豆| 亚洲成人三级小说| 国产精品护士白丝一区av| 8x8x8国产精品| 91国产成人在线| 成人午夜伦理影院| 精品一区二区三区欧美| 婷婷综合另类小说色区| 18涩涩午夜精品.www| 久久影院视频免费| 91精品午夜视频| 欧美日韩五月天| 9人人澡人人爽人人精品| 韩国v欧美v日本v亚洲v| 日本视频一区二区| 午夜精品福利一区二区三区av| 亚洲国产精品精华液ab| 欧美成人精品3d动漫h| 精品污污网站免费看| 99re热视频这里只精品| 国产精品99久久久久久有的能看| 亚洲成av人影院| 亚洲乱码中文字幕| 亚洲欧美怡红院| 国产精品第一页第二页第三页| 2023国产精品自拍| 2023国产精品视频| 精品国产乱码久久久久久闺蜜| 欧美嫩在线观看| 欧美福利电影网| 欧美日韩中文另类| 欧美久久久久免费| 欧美人狂配大交3d怪物一区| 欧美日韩中文国产| 欧美日韩国产美女| 欧美日韩一本到| 91精品国产综合久久婷婷香蕉 | 国产精品久久久久三级| 欧美日韩一区二区三区不卡| 91精品福利在线| 欧美午夜宅男影院| 色88888久久久久久影院野外| av一区二区不卡| 精品一区二区久久| 日韩国产欧美视频| 亚洲一区二区三区四区中文字幕| 国产精品嫩草99a| 亚洲欧美日韩中文字幕一区二区三区| 久久九九久精品国产免费直播| 久久一区二区三区四区| 日韩欧美美女一区二区三区| 亚洲国产美女搞黄色| 欧美肥妇bbw| 99久久精品国产麻豆演员表| 99久久亚洲一区二区三区青草| 99国产精品久久久久| 欧美中文字幕一区| 欧美二区三区的天堂| 欧美一区二区视频在线观看2022| 精品久久久久久久久久久久包黑料| 精品三级在线观看| 中文字幕一区av| 一区二区三区中文字幕在线观看| 亚洲国产精品一区二区www| 日日欢夜夜爽一区| 国产一区二区精品久久91| 9l国产精品久久久久麻豆| 欧美综合一区二区| 日韩欧美一级在线播放| 亚洲国产激情av| 亚洲风情在线资源站| 国内外精品视频| 丁香网亚洲国际| 91免费观看视频在线| 欧美午夜电影在线播放| 欧美一区二区精品在线| 欧美精品一区二区蜜臀亚洲| 久久久蜜桃精品| 亚洲欧美自拍偷拍色图| 亚洲国产aⅴ天堂久久| 久久国产麻豆精品| 成人高清视频在线| 在线亚洲人成电影网站色www| 91精品国产品国语在线不卡| 日韩美女一区二区三区四区| 亚洲色图19p| 国产在线一区二区综合免费视频| 99久久精品免费| 日韩免费电影一区| 一区二区三区精品在线| 国产一区二区在线观看免费| 一本一道久久a久久精品综合蜜臀| 日韩一区二区麻豆国产| 国产精品国产精品国产专区不蜜| 国产激情视频一区二区在线观看 | 天堂蜜桃91精品| 成人丝袜18视频在线观看| 制服丝袜成人动漫| 亚洲人成网站影音先锋播放| 国产精品一线二线三线| 92精品国产成人观看免费| 精品福利一二区| 亚洲在线视频免费观看| 久久99精品久久只有精品| 色哟哟日韩精品| 精品国产精品一区二区夜夜嗨| 亚洲免费视频中文字幕| 高清国产一区二区三区| 日韩视频免费观看高清完整版| 一区二区三区精品在线| 成人精品视频.| 久久午夜老司机| 麻豆国产精品官网| 制服丝袜激情欧洲亚洲| 亚洲一二三四区| 国产白丝网站精品污在线入口| 精品国产乱码久久久久久久| 日本不卡在线视频| 欧美日韩国产一二三| 一区二区三区中文字幕电影| jiyouzz国产精品久久| 国产女人18水真多18精品一级做| 久久精品国产一区二区三| 91精品综合久久久久久| 亚洲福中文字幕伊人影院| 91精品福利视频| 亚洲免费在线观看视频| 91日韩在线专区| 国产精品久久久久久久久免费桃花 | 国产老肥熟一区二区三区| 精品美女一区二区三区| 蜜桃视频第一区免费观看| 日韩欧美中文一区| 麻豆专区一区二区三区四区五区| 欧美麻豆精品久久久久久| 亚洲福利一区二区三区| 欧美日韩国产一二三| 婷婷综合五月天| 日韩三级.com| 国产成人精品综合在线观看| 久久久久国产一区二区三区四区| 国产综合一区二区| 国产欧美一区二区三区鸳鸯浴 | 久久综合色播五月| 国产精品一区二区在线看| 国产午夜精品一区二区| 成熟亚洲日本毛茸茸凸凹| 国产精品久久久久一区二区三区共| 成人av电影在线| 一个色妞综合视频在线观看| 91精彩视频在线| 日日欢夜夜爽一区| 日韩免费性生活视频播放| 精品在线播放免费| 一色桃子久久精品亚洲| 日本黄色一区二区| 日韩成人一级大片| 2023国产精品| 91免费国产在线| 三级久久三级久久| 久久久777精品电影网影网| 91麻豆福利精品推荐| 图片区日韩欧美亚洲| 精品少妇一区二区三区在线视频| 成人一二三区视频| 国产精品成人一区二区三区夜夜夜 | 亚洲高清中文字幕| 精品国产91洋老外米糕| 暴力调教一区二区三区| 亚洲福利视频一区| 26uuu亚洲综合色欧美| 精品国产污网站| 成人综合激情网| 国产午夜精品福利| 欧美日韩色一区| 成人免费福利片| 奇米影视一区二区三区| 中文字幕高清不卡| 91精品国产麻豆| 99国产精品99久久久久久|