| 95 |
{ |
{ |
| 96 |
register int c; |
register int c; |
| 97 |
|
|
| 98 |
|
#if 0 |
| 99 |
|
/* ========================================================================= */ |
| 100 |
|
/* The following comment and code was inserted in January 1999. In May 2006, |
| 101 |
|
when it was observed to cause compiler warnings about unused values, I took it |
| 102 |
|
out again. If anybody is still using OS/2, they will have to put it back |
| 103 |
|
manually. */ |
| 104 |
|
|
| 105 |
/* This next statement and the later reference to dummy are here in order to |
/* This next statement and the later reference to dummy are here in order to |
| 106 |
trick the optimizer of the IBM C compiler for OS/2 into generating correct |
trick the optimizer of the IBM C compiler for OS/2 into generating correct |
| 107 |
code. Apparently IBM isn't going to fix the problem, and we would rather not |
code. Apparently IBM isn't going to fix the problem, and we would rather not |
| 109 |
the pcre module can use all the optimization it can get). */ |
the pcre module can use all the optimization it can get). */ |
| 110 |
|
|
| 111 |
volatile int dummy; |
volatile int dummy; |
| 112 |
|
/* ========================================================================= */ |
| 113 |
|
#endif |
| 114 |
|
|
| 115 |
do |
do |
| 116 |
{ |
{ |
| 168 |
case OP_BRAMINZERO: |
case OP_BRAMINZERO: |
| 169 |
if (!set_start_bits(++tcode, start_bits, caseless, utf8, cd)) |
if (!set_start_bits(++tcode, start_bits, caseless, utf8, cd)) |
| 170 |
return FALSE; |
return FALSE; |
| 171 |
|
/* ========================================================================= |
| 172 |
|
See the comment at the head of this function concerning the next line, |
| 173 |
|
which was an old fudge for the benefit of OS/2. |
| 174 |
dummy = 1; |
dummy = 1; |
| 175 |
|
========================================================================= */ |
| 176 |
do tcode += GET(tcode,1); while (*tcode == OP_ALT); |
do tcode += GET(tcode,1); while (*tcode == OP_ALT); |
| 177 |
tcode += 1+LINK_SIZE; |
tcode += 1+LINK_SIZE; |
| 178 |
break; |
break; |
| 228 |
try_next = FALSE; |
try_next = FALSE; |
| 229 |
break; |
break; |
| 230 |
|
|
| 231 |
|
/* The cbit_space table has vertical tab as whitespace; we have to |
| 232 |
|
discard it. */ |
| 233 |
|
|
| 234 |
case OP_NOT_WHITESPACE: |
case OP_NOT_WHITESPACE: |
| 235 |
for (c = 0; c < 32; c++) |
for (c = 0; c < 32; c++) |
| 236 |
start_bits[c] |= ~cd->cbits[c+cbit_space]; |
{ |
| 237 |
|
int d = cd->cbits[c+cbit_space]; |
| 238 |
|
if (c == 1) d &= ~0x08; |
| 239 |
|
start_bits[c] |= ~d; |
| 240 |
|
} |
| 241 |
try_next = FALSE; |
try_next = FALSE; |
| 242 |
break; |
break; |
| 243 |
|
|
| 244 |
|
/* The cbit_space table has vertical tab as whitespace; we have to |
| 245 |
|
discard it. */ |
| 246 |
|
|
| 247 |
case OP_WHITESPACE: |
case OP_WHITESPACE: |
| 248 |
for (c = 0; c < 32; c++) |
for (c = 0; c < 32; c++) |
| 249 |
start_bits[c] |= cd->cbits[c+cbit_space]; |
{ |
| 250 |
|
int d = cd->cbits[c+cbit_space]; |
| 251 |
|
if (c == 1) d &= ~0x08; |
| 252 |
|
start_bits[c] |= d; |
| 253 |
|
} |
| 254 |
try_next = FALSE; |
try_next = FALSE; |
| 255 |
break; |
break; |
| 256 |
|
|
| 304 |
start_bits[c] |= cd->cbits[c+cbit_digit]; |
start_bits[c] |= cd->cbits[c+cbit_digit]; |
| 305 |
break; |
break; |
| 306 |
|
|
| 307 |
|
/* The cbit_space table has vertical tab as whitespace; we have to |
| 308 |
|
discard it. */ |
| 309 |
|
|
| 310 |
case OP_NOT_WHITESPACE: |
case OP_NOT_WHITESPACE: |
| 311 |
for (c = 0; c < 32; c++) |
for (c = 0; c < 32; c++) |
| 312 |
start_bits[c] |= ~cd->cbits[c+cbit_space]; |
{ |
| 313 |
|
int d = cd->cbits[c+cbit_space]; |
| 314 |
|
if (c == 1) d &= ~0x08; |
| 315 |
|
start_bits[c] |= ~d; |
| 316 |
|
} |
| 317 |
break; |
break; |
| 318 |
|
|
| 319 |
|
/* The cbit_space table has vertical tab as whitespace; we have to |
| 320 |
|
discard it. */ |
| 321 |
|
|
| 322 |
case OP_WHITESPACE: |
case OP_WHITESPACE: |
| 323 |
for (c = 0; c < 32; c++) |
for (c = 0; c < 32; c++) |
| 324 |
start_bits[c] |= cd->cbits[c+cbit_space]; |
{ |
| 325 |
|
int d = cd->cbits[c+cbit_space]; |
| 326 |
|
if (c == 1) d &= ~0x08; |
| 327 |
|
start_bits[c] |= d; |
| 328 |
|
} |
| 329 |
break; |
break; |
| 330 |
|
|
| 331 |
case OP_NOT_WORDCHAR: |
case OP_NOT_WORDCHAR: |
| 449 |
pcre_extra *extra; |
pcre_extra *extra; |
| 450 |
pcre_study_data *study; |
pcre_study_data *study; |
| 451 |
const uschar *tables; |
const uschar *tables; |
| 452 |
const real_pcre *re = (const real_pcre *)external_re; |
uschar *code; |
|
uschar *code = (uschar *)re + re->name_table_offset + |
|
|
(re->name_count * re->name_entry_size); |
|
| 453 |
compile_data compile_block; |
compile_data compile_block; |
| 454 |
|
const real_pcre *re = (const real_pcre *)external_re; |
| 455 |
|
|
| 456 |
*errorptr = NULL; |
*errorptr = NULL; |
| 457 |
|
|
| 467 |
return NULL; |
return NULL; |
| 468 |
} |
} |
| 469 |
|
|
| 470 |
|
code = (uschar *)re + re->name_table_offset + |
| 471 |
|
(re->name_count * re->name_entry_size); |
| 472 |
|
|
| 473 |
/* For an anchored pattern, or an unanchored pattern that has a first char, or |
/* For an anchored pattern, or an unanchored pattern that has a first char, or |
| 474 |
a multiline pattern that matches only at "line starts", no further processing |
a multiline pattern that matches only at "line starts", no further processing |
| 475 |
at present. */ |
at present. */ |