|
version 1.1, 2012/02/21 23:05:51
|
version 1.1.1.4, 2013/07/22 08:25:55
|
|
Line 6
|
Line 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. |
| |
|
| Written by Philip Hazel |
Written by Philip Hazel |
| Copyright (c) 1997-2010 University of Cambridge | Copyright (c) 1997-2012 University of Cambridge |
| |
|
| ----------------------------------------------------------------------------- |
----------------------------------------------------------------------------- |
| Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
|
Line 157 static const int eint[] = {
|
Line 157 static const int eint[] = {
|
| REG_BADPAT, /* internal error: unknown opcode in find_fixedlength() */ |
REG_BADPAT, /* internal error: unknown opcode in find_fixedlength() */ |
| REG_BADPAT, /* \N is not supported in a class */ |
REG_BADPAT, /* \N is not supported in a class */ |
| REG_BADPAT, /* too many forward references */ |
REG_BADPAT, /* too many forward references */ |
| |
REG_BADPAT, /* disallowed UTF-8/16/32 code point (>= 0xd800 && <= 0xdfff) */ |
| |
REG_BADPAT, /* invalid UTF-16 string (should not occur) */ |
| |
/* 75 */ |
| |
REG_BADPAT, /* overlong MARK name */ |
| |
REG_BADPAT, /* character value in \u.... sequence is too large */ |
| |
REG_BADPAT, /* invalid UTF-32 string (should not occur) */ |
| |
REG_BADPAT /* setting UTF is disabled by the application */ |
| }; |
}; |
| |
|
| /* Table of texts corresponding to POSIX error codes */ |
/* Table of texts corresponding to POSIX error codes */ |
|
Line 227 return length + addlength;
|
Line 234 return length + addlength;
|
| PCREPOSIX_EXP_DEFN void PCRE_CALL_CONVENTION |
PCREPOSIX_EXP_DEFN void PCRE_CALL_CONVENTION |
| regfree(regex_t *preg) |
regfree(regex_t *preg) |
| { |
{ |
| (pcre_free)(preg->re_pcre); | (PUBL(free))(preg->re_pcre); |
| } |
} |
| |
|
| |
|
|
Line 254 const char *errorptr;
|
Line 261 const char *errorptr;
|
| int erroffset; |
int erroffset; |
| int errorcode; |
int errorcode; |
| int options = 0; |
int options = 0; |
| |
int re_nsub = 0; |
| |
|
| if ((cflags & REG_ICASE) != 0) options |= PCRE_CASELESS; |
if ((cflags & REG_ICASE) != 0) options |= PCRE_CASELESS; |
| if ((cflags & REG_NEWLINE) != 0) options |= PCRE_MULTILINE; |
if ((cflags & REG_NEWLINE) != 0) options |= PCRE_MULTILINE; |
|
Line 272 should not happen, but we all make mistakes), return R
|
Line 280 should not happen, but we all make mistakes), return R
|
| |
|
| if (preg->re_pcre == NULL) |
if (preg->re_pcre == NULL) |
| { |
{ |
| return (errorcode < sizeof(eint)/sizeof(const int))? | return (errorcode < (int)(sizeof(eint)/sizeof(const int)))? |
| eint[errorcode] : REG_BADPAT; |
eint[errorcode] : REG_BADPAT; |
| } |
} |
| |
|
| preg->re_nsub = pcre_info((const pcre *)preg->re_pcre, NULL, NULL); | (void)pcre_fullinfo((const pcre *)preg->re_pcre, NULL, PCRE_INFO_CAPTURECOUNT, |
| | &re_nsub); |
| | preg->re_nsub = (size_t)re_nsub; |
| return 0; |
return 0; |
| } |
} |
| |
|
|
Line 308 int *ovector = NULL;
|
Line 318 int *ovector = NULL;
|
| int small_ovector[POSIX_MALLOC_THRESHOLD * 3]; |
int small_ovector[POSIX_MALLOC_THRESHOLD * 3]; |
| BOOL allocated_ovector = FALSE; |
BOOL allocated_ovector = FALSE; |
| BOOL nosub = |
BOOL nosub = |
| (((const pcre *)preg->re_pcre)->options & PCRE_NO_AUTO_CAPTURE) != 0; | (REAL_PCRE_OPTIONS((const pcre *)preg->re_pcre) & PCRE_NO_AUTO_CAPTURE) != 0; |
| |
|
| if ((eflags & REG_NOTBOL) != 0) options |= PCRE_NOTBOL; |
if ((eflags & REG_NOTBOL) != 0) options |= PCRE_NOTBOL; |
| if ((eflags & REG_NOTEOL) != 0) options |= PCRE_NOTEOL; |
if ((eflags & REG_NOTEOL) != 0) options |= PCRE_NOTEOL; |
|
Line 402 switch(rc)
|
Line 412 switch(rc)
|
| case PCRE_ERROR_MATCHLIMIT: return REG_ESPACE; |
case PCRE_ERROR_MATCHLIMIT: return REG_ESPACE; |
| case PCRE_ERROR_BADUTF8: return REG_INVARG; |
case PCRE_ERROR_BADUTF8: return REG_INVARG; |
| case PCRE_ERROR_BADUTF8_OFFSET: return REG_INVARG; |
case PCRE_ERROR_BADUTF8_OFFSET: return REG_INVARG; |
| |
case PCRE_ERROR_BADMODE: return REG_INVARG; |
| default: return REG_ASSERT; |
default: return REG_ASSERT; |
| } |
} |
| } |
} |