regposix.c - Oniguruma (regular expression library)\r
**********************************************************************/\r
/*-\r
- * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
+ * Copyright (c) 2002-2019 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
#define regex_t onig_regex_t\r
#include "regint.h"\r
#undef regex_t\r
+\r
#include "onigposix.h"\r
\r
#define ONIG_C(reg) ((onig_regex_t* )((reg)->onig))\r
if (ONIGENC_MBC_MINLEN(enc) == 1) { \\r
UChar* tmps = (UChar* )(s); \\r
while (*tmps != 0) tmps++; \\r
- len = (int)(tmps - (UChar* )(s)); \\r
+ len = (int )(tmps - (UChar* )(s));\\r
} \\r
else { \\r
len = onigenc_str_bytelen_null(enc, (UChar* )s); \\r
static const O2PERR o2p[] = {\r
{ ONIG_MISMATCH, REG_NOMATCH },\r
{ ONIG_NO_SUPPORT_CONFIG, REG_EONIG_INTERNAL },\r
+ { ONIG_ABORT, REG_EONIG_INTERNAL },\r
{ ONIGERR_MEMORY, REG_ESPACE },\r
{ ONIGERR_MATCH_STACK_LIMIT_OVER, REG_EONIG_INTERNAL },\r
+ { ONIGERR_RETRY_LIMIT_IN_MATCH_OVER, REG_EONIG_INTERNAL },\r
{ ONIGERR_TYPE_BUG, REG_EONIG_INTERNAL },\r
{ ONIGERR_PARSER_BUG, REG_EONIG_INTERNAL },\r
{ ONIGERR_STACK_BUG, REG_EONIG_INTERNAL },\r
{ ONIGERR_UNEXPECTED_BYTECODE, REG_EONIG_INTERNAL },\r
{ ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED, REG_EONIG_BADARG },\r
{ ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR, REG_EONIG_BADARG },\r
+ { ONIGERR_FAIL_TO_INITIALIZE, REG_EONIG_INTERNAL },\r
{ ONIGERR_INVALID_ARGUMENT, REG_EONIG_BADARG },\r
{ ONIGERR_END_PATTERN_AT_LEFT_BRACE, REG_EBRACE },\r
{ ONIGERR_END_PATTERN_AT_LEFT_BRACKET, REG_EBRACK },\r
{ ONIGERR_NEVER_ENDING_RECURSION, REG_BADPAT },\r
{ ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY, REG_BADPAT },\r
{ ONIGERR_INVALID_CHAR_PROPERTY_NAME, REG_BADPAT },\r
+ { ONIGERR_INVALID_IF_ELSE_SYNTAX, REG_BADPAT },\r
+ { ONIGERR_INVALID_ABSENT_GROUP_PATTERN, REG_BADPAT },\r
+ { ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN, REG_BADPAT },\r
+ { ONIGERR_INVALID_CALLOUT_PATTERN, REG_BADPAT },\r
+ { ONIGERR_INVALID_CALLOUT_NAME, REG_BADPAT },\r
+ { ONIGERR_UNDEFINED_CALLOUT_NAME, REG_BADPAT },\r
+ { ONIGERR_INVALID_CALLOUT_BODY, REG_BADPAT },\r
+ { ONIGERR_INVALID_CALLOUT_TAG_NAME, REG_BADPAT },\r
+ { ONIGERR_INVALID_CALLOUT_ARG, REG_BADPAT },\r
{ ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION, REG_EONIG_BADARG },\r
- { ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT, REG_EONIG_THREAD }\r
-\r
+ { ONIGERR_LIBRARY_IS_NOT_INITIALIZED, REG_EONIG_INTERNAL }\r
};\r
\r
int i;\r
OnigSyntaxType* syntax = OnigDefaultSyntax;\r
OnigOptionType options;\r
\r
+ reg->onig = (void* )0;\r
+\r
if ((posix_options & REG_EXTENDED) == 0)\r
syntax = ONIG_SYNTAX_POSIX_BASIC;\r
\r
\r
ENC_STRING_LEN(OnigEncDefaultCharEncoding, pattern, len);\r
r = onig_new(PONIG_C(reg), (UChar* )pattern, (UChar* )(pattern + len),\r
- options, OnigEncDefaultCharEncoding, syntax,\r
- (OnigErrorInfo* )NULL);\r
+ options, OnigEncDefaultCharEncoding, syntax,\r
+ (OnigErrorInfo* )NULL);\r
if (r != ONIG_NORMAL) {\r
return onig2posix_error_code(r);\r
}\r
\r
extern int\r
regexec(regex_t* reg, const char* str, size_t nmatch,\r
- regmatch_t pmatch[], int posix_options)\r
+ regmatch_t pmatch[], int posix_options)\r
{\r
int r, i, len;\r
UChar* end;\r
ENC_STRING_LEN(ONIG_C(reg)->enc, str, len);\r
end = (UChar* )(str + len);\r
r = onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end,\r
- (OnigRegion* )pm, options);\r
+ (OnigRegion* )pm, options);\r
\r
if (r >= 0) {\r
r = 0; /* Match */\r
regfree(regex_t* reg)\r
{\r
onig_free(ONIG_C(reg));\r
+ reg->onig = (void* )0;\r
}\r
\r
\r
case REG_POSIX_ENCODING_UTF16_LE:\r
enc = ONIG_ENCODING_UTF16_LE;\r
break;\r
-\r
- default:\r
- return;\r
}\r
\r
+ onig_initialize(&enc, 1);\r
+\r
onigenc_set_default_encoding(enc);\r
}\r
\r
\r
static int\r
i_wrapper(const UChar* name, const UChar* name_end, int ng, int* gs,\r
- onig_regex_t* reg ARG_UNUSED, void* arg)\r
+ onig_regex_t* reg ARG_UNUSED, void* arg)\r
{\r
i_wrap* warg = (i_wrap* )arg;\r
\r