| 157 |
|
|
| 158 |
case OP_REF: |
case OP_REF: |
| 159 |
printf(" \\%d", *(++code)); |
printf(" \\%d", *(++code)); |
| 160 |
break; |
code++; |
| 161 |
|
goto CLASS_REF_REPEAT; |
| 162 |
|
|
| 163 |
case OP_CLASS: |
case OP_CLASS: |
| 164 |
{ |
{ |
| 188 |
printf("]"); |
printf("]"); |
| 189 |
code += 32; |
code += 32; |
| 190 |
|
|
| 191 |
|
CLASS_REF_REPEAT: |
| 192 |
|
|
| 193 |
switch(*code) |
switch(*code) |
| 194 |
{ |
{ |
| 195 |
case OP_CRSTAR: |
case OP_CRSTAR: |
| 584 |
|
|
| 585 |
for (;;) |
for (;;) |
| 586 |
{ |
{ |
| 587 |
unsigned char *pp; |
unsigned char *q; |
| 588 |
int count, c; |
int count, c; |
| 589 |
int offsets[30]; |
int offsets[30]; |
| 590 |
int size_offsets = sizeof(offsets)/sizeof(int); |
int size_offsets = sizeof(offsets)/sizeof(int); |
| 603 |
p = buffer; |
p = buffer; |
| 604 |
while (isspace(*p)) p++; |
while (isspace(*p)) p++; |
| 605 |
|
|
| 606 |
pp = dbuffer; |
q = dbuffer; |
| 607 |
while ((c = *p++) != 0) |
while ((c = *p++) != 0) |
| 608 |
{ |
{ |
| 609 |
int i = 0; |
int i = 0; |
| 665 |
|
|
| 666 |
case 'O': |
case 'O': |
| 667 |
while(isdigit(*p)) n = n * 10 + *p++ - '0'; |
while(isdigit(*p)) n = n * 10 + *p++ - '0'; |
| 668 |
if (n <= (int)sizeof(offsets)/sizeof(int)) size_offsets = n; |
if (n <= (int)(sizeof(offsets)/sizeof(int))) size_offsets = n; |
| 669 |
continue; |
continue; |
| 670 |
|
|
| 671 |
case 'Z': |
case 'Z': |
| 672 |
options |= PCRE_NOTEOL; |
options |= PCRE_NOTEOL; |
| 673 |
continue; |
continue; |
| 674 |
} |
} |
| 675 |
*pp++ = c; |
*q++ = c; |
| 676 |
} |
} |
| 677 |
*pp = 0; |
*q = 0; |
| 678 |
len = pp - dbuffer; |
len = q - dbuffer; |
| 679 |
|
|
| 680 |
/* Handle matching via the POSIX interface, which does not |
/* Handle matching via the POSIX interface, which does not |
| 681 |
support timing. */ |
support timing. */ |