(; ptr < ptrend; ptr++)
100 if(nestlevel == 0)
gotoEXIT;
104 else if(*ptr ==
CHAR_COLON&& !
last&& nestlevel == 0)
gotoEXIT;
121 if(ptr < ptrend - 1)
switch(ptr[1])
132erc =
PRIV(check_escape)(&ptr, ptrend, &ch, &errorcode,
197 #define CHECKMEMCPY(from,length) \ 199 if (!overflowed && lengthleft < length) \ 201 if ((suboptions & PCRE2_SUBSTITUTE_OVERFLOW_LENGTH) == 0) goto NOROOM; \ 203 extra_needed = length - lengthleft; \ 205 else if (overflowed) \ 207 extra_needed += length; \ 211 memcpy(buffer + buff_offset, from, CU2BYTES(length)); \ 212 buff_offset += length; \ 213 lengthleft -= length; \ 228 intforcecasereset = 0;
235 BOOLuse_existing_match;
236 BOOLreplacement_only;
237 #ifdef SUPPORT_UNICODE 245 PCRE2_SIZEbuff_offset, buff_length, lengthleft, fraglength;
253lengthleft = buff_length = *blength;
255ovecsave[0] = ovecsave[1] = ovecsave[2] =
PCRE2_UNSET;
266 if(replacement ==
NULL)
273repend = replacement + rlength;
293gcontext = (mcontext ==
NULL)?
301 else if(use_existing_match)
313internal_match_data->heapframes =
NULL;
314internal_match_data->heapframes_size = 0;
328scb.ovector = ovector;
345 #ifdef SUPPORT_UNICODE 364 if(start_offset > length)
384 if(use_existing_match)
387use_existing_match =
FALSE;
392 #ifdef SUPPORT_UNICODE 406 if(goptions == 0 || start_offset >= length)
break;
413save_start = start_offset++;
417start_offset < length &&
425 #if PCRE2_CODE_UNIT_WIDTH == 8 426 while(start_offset < length && (
subject[start_offset] & 0xc0) == 0x80)
428 #elif PCRE2_CODE_UNIT_WIDTH == 16 429 while(start_offset < length &&
430(
subject[start_offset] & 0xfc00) == 0xdc00)
438fraglength = start_offset - save_start;
447 if(ovector[1] < ovector[0] || ovector[0] < start_offset)
461 if(ovecsave[0] == ovector[0] && ovecsave[1] == ovector[1])
463 if(ovector[0] == ovector[1] && ovecsave[2] != start_offset)
466ovecsave[2] = start_offset;
486 if(rc == 0) rc = ovector_count;
487fraglength = ovector[0] - start_offset;
489scb.output_offsets[0] = buff_offset;
515 if(ptrstackptr == 0)
break;
516repend = ptrstack[--ptrstackptr];
517ptr = ptrstack[--ptrstackptr];
527escaped_literal =
FALSE;
550 if(++ptr >= repend)
goto BAD;
560 if(++ptr >= repend)
goto BAD;
567 if(++ptr >= repend)
goto BAD;
575 while(++ptr < repend)
578 if(next < CHAR_0 || next >
CHAR_9)
break;
586 if(group >
code->top_bracket)
590 while(++ptr < repend && *ptr >=
CHAR_0&& *ptr <=
CHAR_9);
607 if(
n> 32)
goto BAD;
608 if(++ptr >= repend)
break;
611 if(
n== 0)
goto BAD;
632 if(rc != 0)
gotoPTREXIT;
639 if(rc != 0)
gotoPTREXIT;
667 while(*mark != 0) mark++;
668fraglength = mark - mark_start;
694group =
code->top_bracket + 1;
698 if(rc < 0)
gotoPTREXIT;
699 for(entry =
first; entry <=
last; entry += rc)
702 if(ng < ovector_count)
704 if(group < 0) group = ng;
716 if(group < 0) group =
GET2(
first, 0);
748 if(rc == 0)
gotoLITERAL_SUBSTITUTE;
749text2_start = text1_start;
750text2_end = text1_end;
754ptrstack[ptrstackptr++] = ptr;
755ptrstack[ptrstackptr++] = repend;
773subptr =
subject+ ovector[group*2];
774subptrend =
subject+ ovector[group*2 + 1];
778 while(subptr < subptrend)
783 #ifdef SUPPORT_UNICODE 796)[ch/8] & (1u << (ch%8))) == 0)
799forcecase = forcecasereset;
802 #ifdef SUPPORT_UNICODE 803 if(
utf) chlen =
PRIV(ord2utf)(ch, temp);
else 824 if(ptr < repend - 1)
switch(ptr[1])
827forcecase = forcecasereset = -1;
838forcecase = forcecasereset = 1;
853rc =
PRIV(check_escape)(&ptr, repend, &ch, &errorcode,
855 if(errorcode != 0)
gotoBADESCAPE;
860forcecase = forcecasereset = 0;
864escaped_literal =
TRUE;
885 #ifdef SUPPORT_UNICODE 898)[ch/8] & (1u << (ch%8))) == 0)
901forcecase = forcecasereset;
904 #ifdef SUPPORT_UNICODE 905 if(
utf) chlen =
PRIV(ord2utf)(ch, temp);
else 919 if(!overflowed && mcontext !=
NULL&& mcontext->substitute_callout !=
NULL)
921scb.subscount = subs;
922scb.output_offsets[1] = buff_offset;
923rc = mcontext->substitute_callout(&scb, mcontext->substitute_callout_data);
930 PCRE2_SIZEnewlength = scb.output_offsets[1] - scb.output_offsets[0];
931 PCRE2_SIZEoldlength = ovector[1] - ovector[0];
933buff_offset -= newlength;
934lengthleft += newlength;
948ovecsave[0] = ovector[0];
949ovecsave[1] = ovector[1];
950ovecsave[2] = start_offset;
952goptions = (ovector[0] != ovector[1] || ovector[0] > start_offset)? 0 :
954start_offset = ovector[1];
960 if(!replacement_only)
962fraglength = length - start_offset;
976*blength = buff_length + extra_needed;
985*blength = buff_offset - 1;
1005*blength = (
PCRE2_SIZE)(ptr - replacement);
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
CTempString literal(const char(&str)[Size])
Templatized initialization from a string literal.
#define TRUE
bool replacment for C indicating true.
#define FALSE
bool replacment for C indicating false.
#define PCRE2_ERROR_INTERNAL_DUPMATCH
#define PCRE2_ZERO_TERMINATED
#define PCRE2_NOTEMPTY_ATSTART
#define PCRE2_SUBSTITUTE_REPLACEMENT_ONLY
#define PCRE2_ERROR_BADOPTION
#define pcre2_general_context
#define PCRE2_ERROR_NOMATCH
#define PCRE2_SUBSTITUTE_GLOBAL
#define PCRE2_ERROR_UNSET
#define PCRE2_ERROR_TOOMANYREPLACE
#define PCRE2_ERROR_BADREPESCAPE
#define PCRE2_ERROR_NOSUBSTRING
#define PCRE2_SUBSTITUTE_EXTENDED
#define PCRE2_ERROR_BADSUBSPATTERN
#define PCRE2_SUBSTITUTE_MATCHED
#define pcre2_substitute_callout_block
#define PCRE2_SUBSTITUTE_LITERAL
#define PCRE2_ERROR_BADOFFSET
#define PCRE2_PARTIAL_SOFT
#define PCRE2_SUBSTITUTE_UNSET_EMPTY
#define PCRE2_ERROR_REPMISSINGBRACE
#define PCRE2_SUBSTITUTE_UNKNOWN_UNSET
#define PCRE2_PARTIAL_HARD
#define PCRE2_ERROR_BADSUBSTITUTION
#define pcre2_match_context
#define PCRE2_CALL_CONVENTION
#define PCRE2_ERROR_BADREPLACEMENT
#define PCRE2_NO_UTF_CHECK
#define PCRE2_ERROR_NOMEMORY
#define CHAR_RIGHT_CURLY_BRACKET
#define CHAR_LEFT_CURLY_BRACKET
#define UCD_OTHERCASE(ch)
#define GETCHARINCTEST(c, eptr)
PCRE2_EXPORT int PCRE2_CALL_CONVENTION pcre2_match(const pcre2_code *code, PCRE2_SPTR subject, PCRE2_SIZE length, PCRE2_SIZE start_offset, uint32_t options, pcre2_match_data *match_data, pcre2_match_context *mcontext)
PCRE2_EXPORT pcre2_match_data *PCRE2_CALL_CONVENTION pcre2_match_data_create(uint32_t oveccount, pcre2_general_context *gcontext)
PCRE2_EXPORT pcre2_match_data *PCRE2_CALL_CONVENTION pcre2_match_data_create_from_pattern(const pcre2_code *code, pcre2_general_context *gcontext)
PCRE2_EXPORT PCRE2_SIZE *PCRE2_CALL_CONVENTION pcre2_get_ovector_pointer(pcre2_match_data *match_data)
PCRE2_EXPORT PCRE2_SPTR PCRE2_CALL_CONVENTION pcre2_get_mark(pcre2_match_data *match_data)
PCRE2_EXPORT uint32_t PCRE2_CALL_CONVENTION pcre2_get_ovector_count(pcre2_match_data *match_data)
PCRE2_EXPORT void PCRE2_CALL_CONVENTION pcre2_match_data_free(pcre2_match_data *match_data)
static int find_text_end(const pcre2_code *code, PCRE2_SPTR *ptrptr, PCRE2_SPTR ptrend, BOOL last)
#define SUBSTITUTE_OPTIONS
#define CHECKMEMCPY(from, length)
PCRE2_EXPORT int PCRE2_CALL_CONVENTION pcre2_substitute(const pcre2_code *code, PCRE2_SPTR subject, PCRE2_SIZE length, PCRE2_SIZE start_offset, uint32_t options, pcre2_match_data *match_data, pcre2_match_context *mcontext, PCRE2_SPTR replacement, PCRE2_SIZE rlength, PCRE2_UCHAR *buffer, PCRE2_SIZE *blength)
PCRE2_EXPORT int PCRE2_CALL_CONVENTION pcre2_substring_nametable_scan(const pcre2_code *code, PCRE2_SPTR stringname, PCRE2_SPTR *firstptr, PCRE2_SPTR *lastptr)
PCRE2_EXPORT int PCRE2_CALL_CONVENTION pcre2_substring_length_bynumber(pcre2_match_data *match_data, uint32_t stringnumber, PCRE2_SIZE *sizeptr)
static pcre2_match_data * match_data
int valid_utf(PCRE2_SPTR8, PCRE2_SIZE, PCRE2_SIZE *)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4