1347 |
OP_SCBRA, /* 98 Start of capturing bracket, check empty */ |
OP_SCBRA, /* 98 Start of capturing bracket, check empty */ |
1348 |
OP_SCOND, /* 99 Conditional group, check empty */ |
OP_SCOND, /* 99 Conditional group, check empty */ |
1349 |
|
|
1350 |
|
/* The next two pairs must (respectively) be kept together. */ |
1351 |
|
|
1352 |
OP_CREF, /* 100 Used to hold a capture number as condition */ |
OP_CREF, /* 100 Used to hold a capture number as condition */ |
1353 |
OP_RREF, /* 101 Used to hold a recursion number as condition */ |
OP_NCREF, /* 101 Same, but generaged by a name reference*/ |
1354 |
OP_DEF, /* 102 The DEFINE condition */ |
OP_RREF, /* 102 Used to hold a recursion number as condition */ |
1355 |
|
OP_NRREF, /* 103 Same, but generaged by a name reference*/ |
1356 |
|
OP_DEF, /* 104 The DEFINE condition */ |
1357 |
|
|
1358 |
OP_BRAZERO, /* 103 These two must remain together and in this */ |
OP_BRAZERO, /* 105 These two must remain together and in this */ |
1359 |
OP_BRAMINZERO, /* 104 order. */ |
OP_BRAMINZERO, /* 106 order. */ |
1360 |
|
|
1361 |
/* These are backtracking control verbs */ |
/* These are backtracking control verbs */ |
1362 |
|
|
1363 |
OP_PRUNE, /* 105 */ |
OP_PRUNE, /* 107 */ |
1364 |
OP_SKIP, /* 106 */ |
OP_SKIP, /* 108 */ |
1365 |
OP_THEN, /* 107 */ |
OP_THEN, /* 109 */ |
1366 |
OP_COMMIT, /* 108 */ |
OP_COMMIT, /* 110 */ |
1367 |
|
|
1368 |
/* These are forced failure and success verbs */ |
/* These are forced failure and success verbs */ |
1369 |
|
|
1370 |
OP_FAIL, /* 109 */ |
OP_FAIL, /* 111 */ |
1371 |
OP_ACCEPT, /* 110 */ |
OP_ACCEPT, /* 112 */ |
1372 |
OP_CLOSE, /* 111 Used before OP_ACCEPT to close open captures */ |
OP_CLOSE, /* 113 Used before OP_ACCEPT to close open captures */ |
1373 |
|
|
1374 |
/* This is used to skip a subpattern with a {0} quantifier */ |
/* This is used to skip a subpattern with a {0} quantifier */ |
1375 |
|
|
1376 |
OP_SKIPZERO /* 112 */ |
OP_SKIPZERO /* 114 */ |
1377 |
}; |
}; |
1378 |
|
|
1379 |
|
|
1397 |
"Alt", "Ket", "KetRmax", "KetRmin", "Assert", "Assert not", \ |
"Alt", "Ket", "KetRmax", "KetRmin", "Assert", "Assert not", \ |
1398 |
"AssertB", "AssertB not", "Reverse", \ |
"AssertB", "AssertB not", "Reverse", \ |
1399 |
"Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \ |
"Once", "Bra", "CBra", "Cond", "SBra", "SCBra", "SCond", \ |
1400 |
"Cond ref", "Cond rec", "Cond def", "Brazero", "Braminzero", \ |
"Cond ref", "Cond nref", "Cond rec", "Cond nrec", "Cond def", \ |
1401 |
|
"Brazero", "Braminzero", \ |
1402 |
"*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \ |
"*PRUNE", "*SKIP", "*THEN", "*COMMIT", "*FAIL", "*ACCEPT", \ |
1403 |
"Close", "Skip zero" |
"Close", "Skip zero" |
1404 |
|
|
1460 |
1+LINK_SIZE, /* SBRA */ \ |
1+LINK_SIZE, /* SBRA */ \ |
1461 |
3+LINK_SIZE, /* SCBRA */ \ |
3+LINK_SIZE, /* SCBRA */ \ |
1462 |
1+LINK_SIZE, /* SCOND */ \ |
1+LINK_SIZE, /* SCOND */ \ |
1463 |
3, /* CREF */ \ |
3, 3, /* CREF, NCREF */ \ |
1464 |
3, /* RREF */ \ |
3, 3, /* RREF, NRREF */ \ |
1465 |
1, /* DEF */ \ |
1, /* DEF */ \ |
1466 |
1, 1, /* BRAZERO, BRAMINZERO */ \ |
1, 1, /* BRAZERO, BRAMINZERO */ \ |
1467 |
1, 1, 1, 1, /* PRUNE, SKIP, THEN, COMMIT, */ \ |
1, 1, 1, 1, /* PRUNE, SKIP, THEN, COMMIT, */ \ |
1468 |
1, 1, 3, 1 /* FAIL, ACCEPT, CLOSE, SKIPZERO */ |
1, 1, 3, 1 /* FAIL, ACCEPT, CLOSE, SKIPZERO */ |
1469 |
|
|
1470 |
|
|
1471 |
/* A magic value for OP_RREF to indicate the "any recursion" condition. */ |
/* A magic value for OP_RREF and OP_NRREF to indicate the "any recursion" |
1472 |
|
condition. */ |
1473 |
|
|
1474 |
#define RREF_ANY 0xffff |
#define RREF_ANY 0xffff |
1475 |
|
|
1527 |
pcre_uint32 size; /* Total that was malloced */ |
pcre_uint32 size; /* Total that was malloced */ |
1528 |
pcre_uint32 flags; /* Private flags */ |
pcre_uint32 flags; /* Private flags */ |
1529 |
uschar start_bits[32]; /* Starting char bits */ |
uschar start_bits[32]; /* Starting char bits */ |
1530 |
pcre_uint32 minlength; /* Minimum subject length */ |
pcre_uint32 minlength; /* Minimum subject length */ |
1531 |
} pcre_study_data; |
} pcre_study_data; |
1532 |
|
|
1533 |
/* Structure for building a chain of open capturing subpatterns during |
/* Structure for building a chain of open capturing subpatterns during |
1534 |
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 |
1535 |
encountered. */ |
encountered. */ |
1536 |
|
|
1537 |
typedef struct open_capitem { |
typedef struct open_capitem { |
1538 |
struct open_capitem *next; /* Chain link */ |
struct open_capitem *next; /* Chain link */ |
1539 |
pcre_uint16 number; /* Capture number */ |
pcre_uint16 number; /* Capture number */ |
1540 |
} open_capitem; |
} open_capitem; |
1541 |
|
|
1542 |
/* Structure for passing "static" information around between the functions |
/* Structure for passing "static" information around between the functions |
1543 |
doing the compiling, so that they are thread-safe. */ |
doing the compiling, so that they are thread-safe. */ |
1551 |
const uschar *start_code; /* The start of the compiled code */ |
const uschar *start_code; /* The start of the compiled code */ |
1552 |
const uschar *start_pattern; /* The start of the pattern */ |
const uschar *start_pattern; /* The start of the pattern */ |
1553 |
const uschar *end_pattern; /* The end of the pattern */ |
const uschar *end_pattern; /* The end of the pattern */ |
1554 |
open_capitem *open_caps; /* Chain of open capture items */ |
open_capitem *open_caps; /* Chain of open capture items */ |
1555 |
uschar *hwm; /* High watermark of workspace */ |
uschar *hwm; /* High watermark of workspace */ |
1556 |
uschar *name_table; /* The name/number table */ |
uschar *name_table; /* The name/number table */ |
1557 |
int names_found; /* Number of entries so far */ |
int names_found; /* Number of entries so far */ |
1564 |
int external_flags; /* External flag bits to be set */ |
int external_flags; /* External flag bits to be set */ |
1565 |
int req_varyopt; /* "After variable item" flag for reqbyte */ |
int req_varyopt; /* "After variable item" flag for reqbyte */ |
1566 |
BOOL had_accept; /* (*ACCEPT) encountered */ |
BOOL had_accept; /* (*ACCEPT) encountered */ |
1567 |
BOOL check_lookbehind; /* Lookbehinds need later checking */ |
BOOL check_lookbehind; /* Lookbehinds need later checking */ |
1568 |
int nltype; /* Newline type */ |
int nltype; /* Newline type */ |
1569 |
int nllen; /* Newline string length */ |
int nllen; /* Newline string length */ |
1570 |
uschar nl[4]; /* Newline string when fixed length */ |
uschar nl[4]; /* Newline string when fixed length */ |
1588 |
USPTR save_start; /* Old value of mstart */ |
USPTR save_start; /* Old value of mstart */ |
1589 |
int *offset_save; /* Pointer to start of saved offsets */ |
int *offset_save; /* Pointer to start of saved offsets */ |
1590 |
int saved_max; /* Number of saved offsets */ |
int saved_max; /* Number of saved offsets */ |
1591 |
int offset_top; /* Current value of offset_top */ |
int offset_top; /* Current value of offset_top */ |
1592 |
} recursion_info; |
} recursion_info; |
1593 |
|
|
1594 |
/* Structure for building a chain of data for holding the values of the subject |
/* Structure for building a chain of data for holding the values of the subject |
1613 |
int offset_max; /* The maximum usable for return data */ |
int offset_max; /* The maximum usable for return data */ |
1614 |
int nltype; /* Newline type */ |
int nltype; /* Newline type */ |
1615 |
int nllen; /* Newline string length */ |
int nllen; /* Newline string length */ |
1616 |
|
int name_count; /* Number of names in name table */ |
1617 |
|
int name_entry_size; /* Size of entry in names table */ |
1618 |
|
uschar *name_table; /* Table of names */ |
1619 |
uschar nl[4]; /* Newline string when fixed */ |
uschar nl[4]; /* Newline string when fixed */ |
1620 |
const uschar *lcc; /* Points to lower casing table */ |
const uschar *lcc; /* Points to lower casing table */ |
1621 |
const uschar *ctypes; /* Points to table of type maps */ |
const uschar *ctypes; /* Points to table of type maps */ |