55 #if defined(_WIN32) && !defined(PCRE_STATIC)
56 # define PCREPOSIX_EXP_DECL extern __declspec(dllexport)
57 # define PCREPOSIX_EXP_DEFN __declspec(dllexport)
72 static const int eint[] = {
185 "invalid repeat counts in {}",
190 "collation error - not relevant",
192 "bad escape sequence",
195 "bad range inside []",
196 "expression too big",
197 "failed to get memory",
198 "bad back reference",
213 const char *message, *addmessage;
214 size_t length, addlength;
216 message = (errcode >= (
int)(
sizeof(
pstring)/
sizeof(
char *)))?
217 "unknown error code" :
pstring[errcode];
218 length = strlen(message) + 1;
220 addmessage =
" at offset ";
222 strlen(addmessage) + 6 : 0;
226 if (addlength > 0 && errbuf_size >= length + addlength)
227 sprintf(errbuf,
"%s%s%-6d", message, addmessage, (
int)preg->
re_erroffset);
230 strncpy(errbuf, message, errbuf_size - 1);
231 errbuf[errbuf_size-1] = 0;
235 return length + addlength;
271 const char *errorptr;
294 return (errorcode < (
int)(
sizeof(
eint)/
sizeof(
const int)))?
300 preg->
re_nsub = (size_t)re_nsub;
338 ((
regex_t *)preg)->re_erroffset = (size_t)(-1);
344 if (nosub || pmatch ==
NULL) nmatch = 0;
350 ovector = &(small_ovector[0]);
354 if (nmatch > INT_MAX/(
sizeof(
int) * 3))
return REG_ESPACE;
355 ovector = (
int *)
malloc(
sizeof(
int) * nmatch * 3);
357 allocated_ovector =
TRUE;
369 so = pmatch[0].
rm_so;
370 eo = pmatch[0].
rm_eo;
375 eo = (
int)strlen(
string);
379 0, options, ovector, (
int)(nmatch * 3));
381 if (rc == 0) rc = (
int)nmatch;
390 for (
i = 0;
i < (size_t)rc;
i++)
392 pmatch[
i].
rm_so = (ovector[
i*2] < 0)? -1 : ovector[
i*2] + so;
393 pmatch[
i].
rm_eo = (ovector[
i*2+1] < 0)? -1: ovector[
i*2+1] + so;
395 if (allocated_ovector)
free(ovector);
396 for (;
i < nmatch;
i++) pmatch[
i].rm_so = pmatch[
i].rm_eo = -1;
403 if (allocated_ovector)
free(ovector);
unsigned int
A callback function used to compare two keys in a database.
#define PCRE_ERROR_BADUTF8_OFFSET
#define PCRE_ERROR_BADMODE
#define PCRE_INFO_CAPTURECOUNT
#define PCRE_ERROR_BADOPTION
#define PCRE_ERROR_BADMAGIC
#define PCRE_NO_AUTO_CAPTURE
pcre * pcre_compile2(const char *, int, int *, const char **, int *, const unsigned char *)
#define PCRE_ERROR_UNKNOWN_NODE
#define PCRE_ERROR_MATCHLIMIT
#define PCRE_ERROR_NOMEMORY
#define PCRE_ERROR_NOMATCH
int pcre_exec(const pcre *, const pcre_extra *, const char *, int, int, int, int *, int)
int pcre_fullinfo(const pcre *, const pcre_extra *, int, void *)
#define PCRE_ERROR_BADUTF8
#define PCRE_CALL_CONVENTION
#define REAL_PCRE_OPTIONS(re)
size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)
int regcomp(regex_t *preg, const char *pattern, int cflags)
int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags)
static const char *const pstring[]
void regfree(regex_t *preg)
#define POSIX_MALLOC_THRESHOLD
#define PCREPOSIX_EXP_DEFN