| 6 |
and semantics are as close as possible to those of the Perl 5 language. |
and semantics are as close as possible to those of the Perl 5 language. |
| 7 |
|
|
| 8 |
Written by Philip Hazel |
Written by Philip Hazel |
| 9 |
Copyright (c) 1997-2009 University of Cambridge |
Copyright (c) 1997-2010 University of Cambridge |
| 10 |
|
|
| 11 |
----------------------------------------------------------------------------- |
----------------------------------------------------------------------------- |
| 12 |
Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
| 444 |
*/ |
*/ |
| 445 |
|
|
| 446 |
static void |
static void |
| 447 |
set_bit(uschar *start_bits, unsigned int c, BOOL caseless, compile_data *cd) |
set_table_bit(uschar *start_bits, unsigned int c, BOOL caseless, |
| 448 |
|
compile_data *cd) |
| 449 |
{ |
{ |
| 450 |
start_bits[c/8] |= (1 << (c&7)); |
start_bits[c/8] |= (1 << (c&7)); |
| 451 |
if (caseless && (cd->ctypes[c] & ctype_letter) != 0) |
if (caseless && (cd->ctypes[c] & ctype_letter) != 0) |
| 607 |
case OP_QUERY: |
case OP_QUERY: |
| 608 |
case OP_MINQUERY: |
case OP_MINQUERY: |
| 609 |
case OP_POSQUERY: |
case OP_POSQUERY: |
| 610 |
set_bit(start_bits, tcode[1], caseless, cd); |
set_table_bit(start_bits, tcode[1], caseless, cd); |
| 611 |
tcode += 2; |
tcode += 2; |
| 612 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 613 |
if (utf8 && tcode[-1] >= 0xc0) |
if (utf8 && tcode[-1] >= 0xc0) |
| 620 |
case OP_UPTO: |
case OP_UPTO: |
| 621 |
case OP_MINUPTO: |
case OP_MINUPTO: |
| 622 |
case OP_POSUPTO: |
case OP_POSUPTO: |
| 623 |
set_bit(start_bits, tcode[3], caseless, cd); |
set_table_bit(start_bits, tcode[3], caseless, cd); |
| 624 |
tcode += 4; |
tcode += 4; |
| 625 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
| 626 |
if (utf8 && tcode[-1] >= 0xc0) |
if (utf8 && tcode[-1] >= 0xc0) |
| 638 |
case OP_PLUS: |
case OP_PLUS: |
| 639 |
case OP_MINPLUS: |
case OP_MINPLUS: |
| 640 |
case OP_POSPLUS: |
case OP_POSPLUS: |
| 641 |
set_bit(start_bits, tcode[1], caseless, cd); |
set_table_bit(start_bits, tcode[1], caseless, cd); |
| 642 |
try_next = FALSE; |
try_next = FALSE; |
| 643 |
break; |
break; |
| 644 |
|
|