regerror.c - Oniguruma (regular expression library)\r
**********************************************************************/\r
/*-\r
- * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
* All rights reserved.\r
*\r
- * (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
- *\r
* Redistribution and use in source and binary forms, with or without\r
* modification, are permitted provided that the following conditions\r
* are met:\r
* SUCH DAMAGE.\r
*/\r
\r
-#define HAVE_STDARG_PROTOTYPES\r
-\r
#include "regint.h"\r
-\r
+#define HAVE_STDARG_PROTOTYPES\r
#if 0\r
#include <stdio.h> /* for vsnprintf() */\r
\r
{\r
char *p;\r
\r
- if (code >= 0) return (UChar* )0;\r
-\r
switch (code) {\r
case ONIG_MISMATCH:\r
p = "mismatch"; break;\r
case ONIG_NO_SUPPORT_CONFIG:\r
p = "no support in this configuration"; break;\r
+ case ONIG_ABORT:\r
+ p = "abort"; break;\r
case ONIGERR_MEMORY:\r
p = "fail to memory allocation"; break;\r
case ONIGERR_MATCH_STACK_LIMIT_OVER:\r
p = "match-stack limit over"; break;\r
+ case ONIGERR_PARSE_DEPTH_LIMIT_OVER:\r
+ p = "parse depth limit over"; break;\r
+ case ONIGERR_RETRY_LIMIT_IN_MATCH_OVER:\r
+ p = "retry-limit-in-match over"; break;\r
case ONIGERR_TYPE_BUG:\r
p = "undefined type (bug)"; break;\r
case ONIGERR_PARSER_BUG:\r
p = "default multibyte-encoding is not setted"; break;\r
case ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR:\r
p = "can't convert to wide-char on specified multibyte-encoding"; break;\r
+ case ONIGERR_FAIL_TO_INITIALIZE:\r
+ p = "fail to initialize"; break;\r
case ONIGERR_INVALID_ARGUMENT:\r
p = "invalid argument"; break;\r
case ONIGERR_END_PATTERN_AT_LEFT_BRACE:\r
case ONIGERR_TOO_BIG_BACKREF_NUMBER:\r
p = "too big backref number"; break;\r
case ONIGERR_INVALID_BACKREF:\r
-#ifdef USE_NAMED_GROUP\r
p = "invalid backref number/name"; break;\r
-#else\r
- p = "invalid backref number"; break;\r
-#endif\r
case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED:\r
p = "numbered backref/call is not allowed. (use name)"; break;\r
+ case ONIGERR_TOO_MANY_CAPTURES:\r
+ p = "too many captures"; break;\r
case ONIGERR_TOO_BIG_WIDE_CHAR_VALUE:\r
p = "too big wide-char value"; break;\r
case ONIGERR_TOO_LONG_WIDE_CHAR_VALUE:\r
case ONIGERR_INVALID_GROUP_NAME:\r
p = "invalid group name <%n>"; break;\r
case ONIGERR_INVALID_CHAR_IN_GROUP_NAME:\r
-#ifdef USE_NAMED_GROUP\r
p = "invalid char in group name <%n>"; break;\r
-#else\r
- p = "invalid char in group number <%n>"; break;\r
-#endif\r
case ONIGERR_UNDEFINED_NAME_REFERENCE:\r
p = "undefined name <%n> reference"; break;\r
case ONIGERR_UNDEFINED_GROUP_REFERENCE:\r
p = "group number is too big for capture history"; break;\r
case ONIGERR_INVALID_CHAR_PROPERTY_NAME:\r
p = "invalid character property name {%n}"; break;\r
+ case ONIGERR_INVALID_IF_ELSE_SYNTAX:\r
+ p = "invalid if-else syntax"; break;\r
+ case ONIGERR_INVALID_ABSENT_GROUP_PATTERN:\r
+ p = "invalid absent group pattern"; break;\r
+ case ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN:\r
+ p = "invalid absent group generator pattern"; break;\r
+ case ONIGERR_INVALID_CALLOUT_PATTERN:\r
+ p = "invalid callout pattern"; break;\r
+ case ONIGERR_INVALID_CALLOUT_NAME:\r
+ p = "invalid callout name"; break;\r
+ case ONIGERR_UNDEFINED_CALLOUT_NAME:\r
+ p = "undefined callout name"; break;\r
+ case ONIGERR_INVALID_CALLOUT_BODY:\r
+ p = "invalid callout body"; break;\r
+ case ONIGERR_INVALID_CALLOUT_TAG_NAME:\r
+ p = "invalid callout tag name"; break;\r
+ case ONIGERR_INVALID_CALLOUT_ARG:\r
+ p = "invalid callout arg"; break;\r
case ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION:\r
p = "not supported encoding combination"; break;\r
case ONIGERR_INVALID_COMBINATION_OF_OPTIONS:\r
p = "invalid combination of options"; break;\r
- case ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT:\r
- p = "over thread pass limit count"; break;\r
+ case ONIGERR_LIBRARY_IS_NOT_INITIALIZED:\r
+ p = "library is not initialized"; break;\r
\r
default:\r
p = "undefined error code"; break;\r
while (p < end) {\r
code = ONIGENC_MBC_TO_CODE(enc, p, end);\r
if (code >= 0x80) {\r
- if (code > 0xffff && len + 10 <= buf_size) {\r
- sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24));\r
- sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16));\r
- sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8));\r
- sprint_byte((char*)(&(buf[len+8])), (unsigned int)code);\r
- len += 10;\r
- }\r
- else if (len + 6 <= buf_size) {\r
- sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8));\r
- sprint_byte((char*)(&(buf[len+4])), (unsigned int)code);\r
- len += 6;\r
- }\r
- else {\r
- break;\r
- }\r
+ if (code > 0xffff && len + 10 <= buf_size) {\r
+ sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24));\r
+ sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16));\r
+ sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8));\r
+ sprint_byte((char*)(&(buf[len+8])), (unsigned int)code);\r
+ len += 10;\r
+ }\r
+ else if (len + 6 <= buf_size) {\r
+ sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8));\r
+ sprint_byte((char*)(&(buf[len+4])), (unsigned int)code);\r
+ len += 6;\r
+ }\r
+ else {\r
+ break;\r
+ }\r
}\r
else {\r
- buf[len++] = (UChar )code;\r
+ buf[len++] = (UChar )code;\r
}\r
\r
p += enclen(enc, p);\r
*is_over = ((p < end) ? 1 : 0);\r
}\r
else {\r
- len = MIN((int)(end - s), buf_size);\r
+ len = MIN((int )(end - s), buf_size);\r
xmemcpy(buf, s, (size_t )len);\r
*is_over = ((buf_size < (end - s)) ? 1 : 0);\r
}\r
case ONIGERR_INVALID_CHAR_PROPERTY_NAME:\r
einfo = va_arg(vargs, OnigErrorInfo*);\r
len = to_ascii(einfo->enc, einfo->par, einfo->par_end,\r
- parbuf, MAX_ERROR_PAR_LEN - 3, &is_over);\r
+ parbuf, MAX_ERROR_PAR_LEN - 3, &is_over);\r
q = onig_error_code_to_format(code);\r
p = s;\r
while (*q != '\0') {\r
if (*q == '%') {\r
- q++;\r
- if (*q == 'n') { /* '%n': name */\r
- xmemcpy(p, parbuf, len);\r
- p += len;\r
- if (is_over != 0) {\r
- xmemcpy(p, "...", 3);\r
- p += 3;\r
- }\r
- q++;\r
- }\r
- else\r
- goto normal_char;\r
+ q++;\r
+ if (*q == 'n') { /* '%n': name */\r
+ xmemcpy(p, parbuf, len);\r
+ p += len;\r
+ if (is_over != 0) {\r
+ xmemcpy(p, "...", 3);\r
+ p += 3;\r
+ }\r
+ q++;\r
+ }\r
+ else\r
+ goto normal_char;\r
}\r
else {\r
normal_char:\r
- *p++ = *q++;\r
+ *p++ = *q++;\r
}\r
}\r
*p = '\0';\r
- len = (int)(p - s);\r
+ len = (int )(p - s);\r
break;\r
\r
default:\r
q = onig_error_code_to_format(code);\r
- if (q == NULL) {\r
- len = 0;\r
- break;\r
- }\r
len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, q);\r
xmemcpy(s, q, len);\r
s[len] = '\0';\r
n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args);\r
va_end(args);\r
\r
- need = (int)(pat_end - pat) * 4 + 4;\r
+ need = (int )(pat_end - pat) * 4 + 4;\r
\r
if (n + need < bufsize) {\r
strcat_s((char* )buf, bufsize, ": /");\r
\r
p = pat;\r
while (p < pat_end) {\r
- if (*p == '\\') {\r
- *s++ = *p++;\r
- len = enclen(enc, p);\r
- while (len-- > 0) *s++ = *p++;\r
- }\r
- else if (*p == '/') {\r
- *s++ = (unsigned char )'\\';\r
- *s++ = *p++;\r
- }\r
- else if (ONIGENC_IS_MBC_HEAD(enc, p)) {\r
+ if (ONIGENC_IS_MBC_HEAD(enc, p)) {\r
len = enclen(enc, p);\r
if (ONIGENC_MBC_MINLEN(enc) == 1) {\r
while (len-- > 0) *s++ = *p++;\r
}\r
- else { /* for UTF16 */\r
+ else { /* for UTF16/32 */\r
int blen;\r
\r
while (len-- > 0) {\r
- sprint_byte_with_x((char* )bs, (unsigned int )(*p++));\r
+ sprint_byte_with_x((char* )bs, (unsigned int )(*p++));\r
blen = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs);\r
bp = bs;\r
while (blen-- > 0) *s++ = *bp++;\r
}\r
}\r
}\r
+ else if (*p == '\\') {\r
+ *s++ = *p++;\r
+ len = enclen(enc, p);\r
+ while (len-- > 0) *s++ = *p++;\r
+ }\r
+ else if (*p == '/') {\r
+ *s++ = (unsigned char )'\\';\r
+ *s++ = *p++;\r
+ }\r
else if (!ONIGENC_IS_CODE_PRINT(enc, *p) &&\r
- !ONIGENC_IS_CODE_SPACE(enc, *p)) {\r
- sprint_byte_with_x((char* )bs, (unsigned int )(*p++));\r
- len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs);\r
+ !ONIGENC_IS_CODE_SPACE(enc, *p)) {\r
+ sprint_byte_with_x((char* )bs, (unsigned int )(*p++));\r
+ len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs);\r
bp = bs;\r
- while (len-- > 0) *s++ = *bp++;\r
+ while (len-- > 0) *s++ = *bp++;\r
}\r
else {\r
- *s++ = *p++;\r
+ *s++ = *p++;\r
}\r
}\r
\r