| 184 |
#error Cannot determine a type for 32-bit unsigned integers |
#error Cannot determine a type for 32-bit unsigned integers |
| 185 |
#endif |
#endif |
| 186 |
|
|
| 187 |
/* When checking for integer overflow in pcre_compile(), we need to handle |
/* When checking for integer overflow in pcre_compile(), we need to handle |
| 188 |
large integers. If a 64-bit integer type is available, we can use that. |
large integers. If a 64-bit integer type is available, we can use that. |
| 189 |
Otherwise we have to cast to double, which of course requires floating point |
Otherwise we have to cast to double, which of course requires floating point |
| 190 |
arithmetic. Handle this by defining a macro for the appropriate type. If |
arithmetic. Handle this by defining a macro for the appropriate type. If |
| 191 |
stdint.h is available, include it; it may define INT64_MAX. The macro int64_t |
stdint.h is available, include it; it may define INT64_MAX. Systems that do not |
| 192 |
may be set by "configure". */ |
have stdint.h (e.g. Solaris) may have inttypes.h. The macro int64_t may be set |
| 193 |
|
by "configure". */ |
| 194 |
|
|
| 195 |
#if HAVE_STDINT_H |
#if HAVE_STDINT_H |
| 196 |
#include <stdint.h> |
#include <stdint.h> |
| 197 |
|
#elif HAVE_INTTYPES_H |
| 198 |
|
#include <inttypes.h> |
| 199 |
#endif |
#endif |
| 200 |
|
|
| 201 |
#if defined INT64_MAX || defined int64_t |
#if defined INT64_MAX || defined int64_t |
| 475 |
} \ |
} \ |
| 476 |
} |
} |
| 477 |
|
|
| 478 |
/* Get the next character, testing for UTF-8 mode, and advancing the pointer */ |
/* Get the next character, testing for UTF-8 mode, and advancing the pointer. |
| 479 |
|
This is called when we don't know if we are in UTF-8 mode. */ |
| 480 |
|
|
| 481 |
#define GETCHARINCTEST(c, eptr) \ |
#define GETCHARINCTEST(c, eptr) \ |
| 482 |
c = *eptr++; \ |
c = *eptr++; \ |
| 513 |
|
|
| 514 |
/* Get the next UTF-8 character, testing for UTF-8 mode, not advancing the |
/* Get the next UTF-8 character, testing for UTF-8 mode, not advancing the |
| 515 |
pointer, incrementing length if there are extra bytes. This is called when we |
pointer, incrementing length if there are extra bytes. This is called when we |
| 516 |
know we are in UTF-8 mode. */ |
do not know if we are in UTF-8 mode. */ |
| 517 |
|
|
| 518 |
#define GETCHARLENTEST(c, eptr, len) \ |
#define GETCHARLENTEST(c, eptr, len) \ |
| 519 |
c = *eptr; \ |
c = *eptr; \ |
| 581 |
PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \ |
PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \ |
| 582 |
PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \ |
PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE| \ |
| 583 |
PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \ |
PCRE_DUPNAMES|PCRE_NEWLINE_BITS|PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE| \ |
| 584 |
PCRE_JAVASCRIPT_COMPAT) |
PCRE_JAVASCRIPT_COMPAT|PCRE_UCP) |
| 585 |
|
|
| 586 |
#define PUBLIC_EXEC_OPTIONS \ |
#define PUBLIC_EXEC_OPTIONS \ |
| 587 |
(PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NOTEMPTY_ATSTART| \ |
(PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NOTEMPTY_ATSTART| \ |
| 876 |
#define STRING_COMMIT0 "COMMIT\0" |
#define STRING_COMMIT0 "COMMIT\0" |
| 877 |
#define STRING_F0 "F\0" |
#define STRING_F0 "F\0" |
| 878 |
#define STRING_FAIL0 "FAIL\0" |
#define STRING_FAIL0 "FAIL\0" |
| 879 |
|
#define STRING_MARK0 "MARK\0" |
| 880 |
#define STRING_PRUNE0 "PRUNE\0" |
#define STRING_PRUNE0 "PRUNE\0" |
| 881 |
#define STRING_SKIP0 "SKIP\0" |
#define STRING_SKIP0 "SKIP\0" |
| 882 |
#define STRING_THEN "THEN" |
#define STRING_THEN "THEN" |
| 906 |
#define STRING_BSR_ANYCRLF_RIGHTPAR "BSR_ANYCRLF)" |
#define STRING_BSR_ANYCRLF_RIGHTPAR "BSR_ANYCRLF)" |
| 907 |
#define STRING_BSR_UNICODE_RIGHTPAR "BSR_UNICODE)" |
#define STRING_BSR_UNICODE_RIGHTPAR "BSR_UNICODE)" |
| 908 |
#define STRING_UTF8_RIGHTPAR "UTF8)" |
#define STRING_UTF8_RIGHTPAR "UTF8)" |
| 909 |
|
#define STRING_UCP_RIGHTPAR "UCP)" |
| 910 |
|
|
| 911 |
#else /* SUPPORT_UTF8 */ |
#else /* SUPPORT_UTF8 */ |
| 912 |
|
|
| 1130 |
#define STRING_COMMIT0 STR_C STR_O STR_M STR_M STR_I STR_T "\0" |
#define STRING_COMMIT0 STR_C STR_O STR_M STR_M STR_I STR_T "\0" |
| 1131 |
#define STRING_F0 STR_F "\0" |
#define STRING_F0 STR_F "\0" |
| 1132 |
#define STRING_FAIL0 STR_F STR_A STR_I STR_L "\0" |
#define STRING_FAIL0 STR_F STR_A STR_I STR_L "\0" |
| 1133 |
|
#define STRING_MARK0 STR_M STR_A STR_R STR_K "\0" |
| 1134 |
#define STRING_PRUNE0 STR_P STR_R STR_U STR_N STR_E "\0" |
#define STRING_PRUNE0 STR_P STR_R STR_U STR_N STR_E "\0" |
| 1135 |
#define STRING_SKIP0 STR_S STR_K STR_I STR_P "\0" |
#define STRING_SKIP0 STR_S STR_K STR_I STR_P "\0" |
| 1136 |
#define STRING_THEN STR_T STR_H STR_E STR_N |
#define STRING_THEN STR_T STR_H STR_E STR_N |
| 1160 |
#define STRING_BSR_ANYCRLF_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS |
#define STRING_BSR_ANYCRLF_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_A STR_N STR_Y STR_C STR_R STR_L STR_F STR_RIGHT_PARENTHESIS |
| 1161 |
#define STRING_BSR_UNICODE_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_U STR_N STR_I STR_C STR_O STR_D STR_E STR_RIGHT_PARENTHESIS |
#define STRING_BSR_UNICODE_RIGHTPAR STR_B STR_S STR_R STR_UNDERSCORE STR_U STR_N STR_I STR_C STR_O STR_D STR_E STR_RIGHT_PARENTHESIS |
| 1162 |
#define STRING_UTF8_RIGHTPAR STR_U STR_T STR_F STR_8 STR_RIGHT_PARENTHESIS |
#define STRING_UTF8_RIGHTPAR STR_U STR_T STR_F STR_8 STR_RIGHT_PARENTHESIS |
| 1163 |
|
#define STRING_UCP_RIGHTPAR STR_U STR_C STR_P STR_RIGHT_PARENTHESIS |
| 1164 |
|
|
| 1165 |
#endif /* SUPPORT_UTF8 */ |
#endif /* SUPPORT_UTF8 */ |
| 1166 |
|
|
| 1193 |
|
|
| 1194 |
#define PT_ANY 0 /* Any property - matches all chars */ |
#define PT_ANY 0 /* Any property - matches all chars */ |
| 1195 |
#define PT_LAMP 1 /* L& - the union of Lu, Ll, Lt */ |
#define PT_LAMP 1 /* L& - the union of Lu, Ll, Lt */ |
| 1196 |
#define PT_GC 2 /* General characteristic (e.g. L) */ |
#define PT_GC 2 /* Specified general characteristic (e.g. L) */ |
| 1197 |
#define PT_PC 3 /* Particular characteristic (e.g. Lu) */ |
#define PT_PC 3 /* Specified particular characteristic (e.g. Lu) */ |
| 1198 |
#define PT_SC 4 /* Script (e.g. Han) */ |
#define PT_SC 4 /* Script (e.g. Han) */ |
| 1199 |
|
#define PT_ALNUM 5 /* Alphanumeric - the union of L and N */ |
| 1200 |
|
#define PT_SPACE 6 /* Perl space - Z plus 9,10,12,13 */ |
| 1201 |
|
#define PT_PXSPACE 7 /* POSIX space - Z plus 9,10,11,12,13 */ |
| 1202 |
|
#define PT_WORD 8 /* Word - L plus N plus underscore */ |
| 1203 |
|
|
| 1204 |
/* Flag bits and data types for the extended class (OP_XCLASS) for classes that |
/* Flag bits and data types for the extended class (OP_XCLASS) for classes that |
| 1205 |
contain UTF-8 characters with values greater than 255. */ |
contain UTF-8 characters with values greater than 255. */ |
| 1216 |
/* These are escaped items that aren't just an encoding of a particular data |
/* These are escaped items that aren't just an encoding of a particular data |
| 1217 |
value such as \n. They must have non-zero values, as check_escape() returns |
value such as \n. They must have non-zero values, as check_escape() returns |
| 1218 |
their negation. Also, they must appear in the same order as in the opcode |
their negation. Also, they must appear in the same order as in the opcode |
| 1219 |
definitions below, up to ESC_z. There's a dummy for OP_ANY because it |
definitions below, up to ESC_z. There's a dummy for OP_ALLANY because it |
| 1220 |
corresponds to "." rather than an escape sequence, and another for OP_ALLANY |
corresponds to "." in DOTALL mode rather than an escape sequence. It is also |
| 1221 |
(which is used for [^] in JavaScript compatibility mode). |
used for [^] in JavaScript compatibility mode. In non-DOTALL mode, "." behaves |
| 1222 |
|
like \N. |
| 1223 |
|
|
| 1224 |
|
The special values ESC_DU, ESC_du, etc. are used instead of ESC_D, ESC_d, etc. |
| 1225 |
|
when PCRE_UCP is set, when replacement of \d etc by \p sequences is required. |
| 1226 |
|
They must be contiguous, and remain in order so that the replacements can be |
| 1227 |
|
looked up from a table. |
| 1228 |
|
|
| 1229 |
The final escape must be ESC_REF as subsequent values are used for |
The final escape must be ESC_REF as subsequent values are used for |
| 1230 |
backreferences (\1, \2, \3, etc). There are two tests in the code for an escape |
backreferences (\1, \2, \3, etc). There are two tests in the code for an escape |
| 1234 |
*/ |
*/ |
| 1235 |
|
|
| 1236 |
enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, |
enum { ESC_A = 1, ESC_G, ESC_K, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, |
| 1237 |
ESC_W, ESC_w, ESC_dum1, ESC_dum2, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H, |
ESC_W, ESC_w, ESC_N, ESC_dum, ESC_C, ESC_P, ESC_p, ESC_R, ESC_H, |
| 1238 |
ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, ESC_E, ESC_Q, ESC_g, ESC_k, |
ESC_h, ESC_V, ESC_v, ESC_X, ESC_Z, ESC_z, |
| 1239 |
|
ESC_E, ESC_Q, ESC_g, ESC_k, |
| 1240 |
|
ESC_DU, ESC_du, ESC_SU, ESC_su, ESC_WU, ESC_wu, |
| 1241 |
ESC_REF }; |
ESC_REF }; |
| 1242 |
|
|
|
|
|
| 1243 |
/* Opcode table: Starting from 1 (i.e. after OP_END), the values up to |
/* Opcode table: Starting from 1 (i.e. after OP_END), the values up to |
| 1244 |
OP_EOD must correspond in order to the list of escapes immediately above. |
OP_EOD must correspond in order to the list of escapes immediately above. |
| 1245 |
|
|
| 1263 |
OP_WHITESPACE, /* 9 \s */ |
OP_WHITESPACE, /* 9 \s */ |
| 1264 |
OP_NOT_WORDCHAR, /* 10 \W */ |
OP_NOT_WORDCHAR, /* 10 \W */ |
| 1265 |
OP_WORDCHAR, /* 11 \w */ |
OP_WORDCHAR, /* 11 \w */ |
| 1266 |
OP_ANY, /* 12 Match any character (subject to DOTALL) */ |
OP_ANY, /* 12 Match any character except newline */ |
| 1267 |
OP_ALLANY, /* 13 Match any character (not subject to DOTALL) */ |
OP_ALLANY, /* 13 Match any character */ |
| 1268 |
OP_ANYBYTE, /* 14 Match any byte (\C); different to OP_ANY for UTF-8 */ |
OP_ANYBYTE, /* 14 Match any byte (\C); different to OP_ANY for UTF-8 */ |
| 1269 |
OP_NOTPROP, /* 15 \P (not Unicode property) */ |
OP_NOTPROP, /* 15 \P (not Unicode property) */ |
| 1270 |
OP_PROP, /* 16 \p (Unicode property) */ |
OP_PROP, /* 16 \p (Unicode property) */ |
| 1394 |
|
|
| 1395 |
/* These are backtracking control verbs */ |
/* These are backtracking control verbs */ |
| 1396 |
|
|
| 1397 |
OP_PRUNE, /* 107 */ |
OP_MARK, /* 107 always has an argument */ |
| 1398 |
OP_SKIP, /* 108 */ |
OP_PRUNE, /* 108 */ |
| 1399 |
OP_THEN, /* 109 */ |
OP_PRUNE_ARG, /* 109 same, but with argument */ |
| 1400 |
OP_COMMIT, /* 110 */ |
OP_SKIP, /* 110 */ |
| 1401 |
|
OP_SKIP_ARG, /* 111 same, but with argument */ |
| 1402 |
|
OP_THEN, /* 112 */ |
| 1403 |
|
OP_THEN_ARG, /* 113 same, but with argument */ |
| 1404 |
|
OP_COMMIT, /* 114 */ |
| 1405 |
|
|
| 1406 |
/* These are forced failure and success verbs */ |
/* These are forced failure and success verbs */ |
| 1407 |
|
|
| 1408 |
OP_FAIL, /* 111 */ |
OP_FAIL, /* 115 */ |
| 1409 |
OP_ACCEPT, /* 112 */ |
OP_ACCEPT, /* 116 */ |
| 1410 |
OP_CLOSE, /* 113 Used before OP_ACCEPT to close open captures */ |
OP_CLOSE, /* 117 Used before OP_ACCEPT to close open captures */ |
| 1411 |
|
|
| 1412 |
/* This is used to skip a subpattern with a {0} quantifier */ |
/* This is used to skip a subpattern with a {0} quantifier */ |
| 1413 |
|
|
| 1414 |
OP_SKIPZERO /* 114 */ |
OP_SKIPZERO, /* 118 */ |
| 1415 |
|
|
| 1416 |
|
/* This is not an opcode, but is used to check that tables indexed by opcode |
| 1417 |
|
are the correct length, in order to catch updating errors - there have been |
| 1418 |
|
some in the past. */ |
| 1419 |
|
|
| 1420 |
|
OP_TABLE_LENGTH |
| 1421 |
}; |
}; |
| 1422 |
|
|
| 1423 |
/* *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro |
/* *** NOTE NOTE NOTE *** Whenever the list above is updated, the two macro |
| 1424 |
definitions that follow must also be updated to match. There are also tables |
definitions that follow must also be updated to match. There are also tables |
| 1425 |
called "coptable" cna "poptable" in pcre_dfa_exec.c that must be updated. */ |
called "coptable" and "poptable" in pcre_dfa_exec.c that must be updated. */ |
| 1426 |
|
|
| 1427 |
|
|
| 1428 |
/* This macro defines textual names for all the opcodes. These are used only |
/* This macro defines textual names for all the opcodes. These are used only |
| 1447 |
"Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \ |
"Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \ |
| 1448 |
"Cond ref", "Cond nref", "Cond rec", "Cond nrec", "Cond def", \ |
"Cond ref", "Cond nref", "Cond rec", "Cond nrec", "Cond def", \ |
| 1449 |
"Brazero", "Braminzero", \ |
"Brazero", "Braminzero", \ |
| 1450 |
"*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \ |
"*MARK", "*PRUNE", "*PRUNE", "*SKIP", "*SKIP", \ |
| 1451 |
|
"*THEN", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \ |
| 1452 |
"Close", "Skip zero" |
"Close", "Skip zero" |
| 1453 |
|
|
| 1454 |
|
|
| 1466 |
1, 1, 1, 1, 1, /* \A, \G, \K, \B, \b */ \ |
1, 1, 1, 1, 1, /* \A, \G, \K, \B, \b */ \ |
| 1467 |
1, 1, 1, 1, 1, 1, /* \D, \d, \S, \s, \W, \w */ \ |
1, 1, 1, 1, 1, 1, /* \D, \d, \S, \s, \W, \w */ \ |
| 1468 |
1, 1, 1, /* Any, AllAny, Anybyte */ \ |
1, 1, 1, /* Any, AllAny, Anybyte */ \ |
| 1469 |
3, 3, 1, /* NOTPROP, PROP, EXTUNI */ \ |
3, 3, /* \P, \p */ \ |
| 1470 |
1, 1, 1, 1, 1, /* \R, \H, \h, \V, \v */ \ |
1, 1, 1, 1, 1, /* \R, \H, \h, \V, \v */ \ |
| 1471 |
|
1, /* \X */ \ |
| 1472 |
1, 1, 2, 1, 1, /* \Z, \z, Opt, ^, $ */ \ |
1, 1, 2, 1, 1, /* \Z, \z, Opt, ^, $ */ \ |
| 1473 |
2, /* Char - the minimum length */ \ |
2, /* Char - the minimum length */ \ |
| 1474 |
2, /* Charnc - the minimum length */ \ |
2, /* Charnc - the minimum length */ \ |
| 1514 |
3, 3, /* RREF, NRREF */ \ |
3, 3, /* RREF, NRREF */ \ |
| 1515 |
1, /* DEF */ \ |
1, /* DEF */ \ |
| 1516 |
1, 1, /* BRAZERO, BRAMINZERO */ \ |
1, 1, /* BRAZERO, BRAMINZERO */ \ |
| 1517 |
1, 1, 1, 1, /* PRUNE, SKIP, THEN, COMMIT, */ \ |
3, 1, 3, /* MARK, PRUNE, PRUNE_ARG */ \ |
| 1518 |
1, 1, 3, 1 /* FAIL, ACCEPT, CLOSE, SKIPZERO */ |
1, 3, /* SKIP, SKIP_ARG */ \ |
| 1519 |
|
1+LINK_SIZE, 3+LINK_SIZE, /* THEN, THEN_ARG */ \ |
| 1520 |
|
1, 1, 1, 3, 1 /* COMMIT, FAIL, ACCEPT, CLOSE, SKIPZERO */ |
| 1521 |
|
|
| 1522 |
|
|
| 1523 |
/* A magic value for OP_RREF and OP_NRREF to indicate the "any recursion" |
/* A magic value for OP_RREF and OP_NRREF to indicate the "any recursion" |
| 1525 |
|
|
| 1526 |
#define RREF_ANY 0xffff |
#define RREF_ANY 0xffff |
| 1527 |
|
|
| 1528 |
/* Error code numbers. They are given names so that they can more easily be |
/* Compile time error code numbers. They are given names so that they can more |
| 1529 |
tracked. */ |
easily be tracked. When a new number is added, the table called eint in |
| 1530 |
|
pcreposix.c must be updated. */ |
| 1531 |
|
|
| 1532 |
enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, |
enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, |
| 1533 |
ERR10, ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19, |
ERR10, ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19, |
| 1535 |
ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39, |
ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39, |
| 1536 |
ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49, |
ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49, |
| 1537 |
ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59, |
ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59, |
| 1538 |
ERR60, ERR61, ERR62, ERR63, ERR64, ERR65 }; |
ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERRCOUNT }; |
| 1539 |
|
|
| 1540 |
/* The real format of the start of the pcre block; the index of names and the |
/* The real format of the start of the pcre block; the index of names and the |
| 1541 |
code vector run on as long as necessary after the end. We store an explicit |
code vector run on as long as necessary after the end. We store an explicit |
| 1585 |
|
|
| 1586 |
/* Structure for building a chain of open capturing subpatterns during |
/* Structure for building a chain of open capturing subpatterns during |
| 1587 |
compiling, so that instructions to close them can be compiled when (*ACCEPT) is |
compiling, so that instructions to close them can be compiled when (*ACCEPT) is |
| 1588 |
encountered. */ |
encountered. This is also used to identify subpatterns that contain recursive |
| 1589 |
|
back references to themselves, so that they can be made atomic. */ |
| 1590 |
|
|
| 1591 |
typedef struct open_capitem { |
typedef struct open_capitem { |
| 1592 |
struct open_capitem *next; /* Chain link */ |
struct open_capitem *next; /* Chain link */ |
| 1593 |
pcre_uint16 number; /* Capture number */ |
pcre_uint16 number; /* Capture number */ |
| 1594 |
|
pcre_uint16 flag; /* Set TRUE if recursive back ref */ |
| 1595 |
} open_capitem; |
} open_capitem; |
| 1596 |
|
|
| 1597 |
/* Structure for passing "static" information around between the functions |
/* Structure for passing "static" information around between the functions |
| 1640 |
struct recursion_info *prevrec; /* Previous recursion record (or NULL) */ |
struct recursion_info *prevrec; /* Previous recursion record (or NULL) */ |
| 1641 |
int group_num; /* Number of group that was called */ |
int group_num; /* Number of group that was called */ |
| 1642 |
const uschar *after_call; /* "Return value": points after the call in the expr */ |
const uschar *after_call; /* "Return value": points after the call in the expr */ |
|
USPTR save_start; /* Old value of mstart */ |
|
| 1643 |
int *offset_save; /* Pointer to start of saved offsets */ |
int *offset_save; /* Pointer to start of saved offsets */ |
| 1644 |
int saved_max; /* Number of saved offsets */ |
int saved_max; /* Number of saved offsets */ |
| 1645 |
int save_offset_top; /* Current value of offset_top */ |
int save_offset_top; /* Current value of offset_top */ |
| 1678 |
BOOL noteol; /* NOTEOL flag */ |
BOOL noteol; /* NOTEOL flag */ |
| 1679 |
BOOL utf8; /* UTF8 flag */ |
BOOL utf8; /* UTF8 flag */ |
| 1680 |
BOOL jscript_compat; /* JAVASCRIPT_COMPAT flag */ |
BOOL jscript_compat; /* JAVASCRIPT_COMPAT flag */ |
| 1681 |
|
BOOL use_ucp; /* PCRE_UCP flag */ |
| 1682 |
BOOL endonly; /* Dollar not before final \n */ |
BOOL endonly; /* Dollar not before final \n */ |
| 1683 |
BOOL notempty; /* Empty string match not wanted */ |
BOOL notempty; /* Empty string match not wanted */ |
| 1684 |
BOOL notempty_atstart; /* Empty string match at start not wanted */ |
BOOL notempty_atstart; /* Empty string match at start not wanted */ |
| 1698 |
int eptrn; /* Next free eptrblock */ |
int eptrn; /* Next free eptrblock */ |
| 1699 |
recursion_info *recursive; /* Linked list of recursion data */ |
recursion_info *recursive; /* Linked list of recursion data */ |
| 1700 |
void *callout_data; /* To pass back to callouts */ |
void *callout_data; /* To pass back to callouts */ |
| 1701 |
|
const uschar *mark; /* Mark pointer to pass back */ |
| 1702 |
} match_data; |
} match_data; |
| 1703 |
|
|
| 1704 |
/* A similar structure is used for the same purpose by the DFA matching |
/* A similar structure is used for the same purpose by the DFA matching |
| 1790 |
sense, but are not part of the PCRE public API. */ |
sense, but are not part of the PCRE public API. */ |
| 1791 |
|
|
| 1792 |
extern const uschar *_pcre_find_bracket(const uschar *, BOOL, int); |
extern const uschar *_pcre_find_bracket(const uschar *, BOOL, int); |
| 1793 |
extern BOOL _pcre_is_newline(const uschar *, int, const uschar *, |
extern BOOL _pcre_is_newline(USPTR, int, USPTR, int *, BOOL); |
|
int *, BOOL); |
|
| 1794 |
extern int _pcre_ord2utf8(int, uschar *); |
extern int _pcre_ord2utf8(int, uschar *); |
| 1795 |
extern real_pcre *_pcre_try_flipped(const real_pcre *, real_pcre *, |
extern real_pcre *_pcre_try_flipped(const real_pcre *, real_pcre *, |
| 1796 |
const pcre_study_data *, pcre_study_data *); |
const pcre_study_data *, pcre_study_data *); |
| 1797 |
extern int _pcre_valid_utf8(const uschar *, int); |
extern int _pcre_valid_utf8(USPTR, int); |
| 1798 |
extern BOOL _pcre_was_newline(const uschar *, int, const uschar *, |
extern BOOL _pcre_was_newline(USPTR, int, USPTR, int *, BOOL); |
|
int *, BOOL); |
|
| 1799 |
extern BOOL _pcre_xclass(int, const uschar *); |
extern BOOL _pcre_xclass(int, const uschar *); |
| 1800 |
|
|
| 1801 |
|
|