]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c
MdeModulePkg RegularExpressionDxe: Update Oniguruma from v6.9.0 to v6.9.3
[mirror_edk2.git] / MdeModulePkg / Universal / RegularExpressionDxe / Oniguruma / regposix.c
index 299b88c6cc20f1d2c63ef2b25afe6b56ab86de3e..2bfe073ad094d180757a2cd87cec987e8ad5ef44 100644 (file)
@@ -2,11 +2,9 @@
   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
@@ -32,6 +30,7 @@
 #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
@@ -42,7 +41,7 @@
   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
@@ -60,8 +59,10 @@ onig2posix_error_code(int code)
   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
@@ -69,6 +70,7 @@ onig2posix_error_code(int code)
     { 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
@@ -115,9 +117,17 @@ onig2posix_error_code(int code)
     { 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
@@ -139,6 +149,8 @@ regcomp(regex_t* reg, const char* pattern, int posix_options)
   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
@@ -154,8 +166,8 @@ regcomp(regex_t* reg, const char* pattern, int posix_options)
 \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
@@ -166,7 +178,7 @@ regcomp(regex_t* reg, const char* pattern, int posix_options)
 \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
@@ -194,7 +206,7 @@ regexec(regex_t* reg, const char* str, size_t nmatch,
   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
@@ -226,6 +238,7 @@ extern void
 regfree(regex_t* reg)\r
 {\r
   onig_free(ONIG_C(reg));\r
+  reg->onig = (void* )0;\r
 }\r
 \r
 \r
@@ -241,11 +254,10 @@ reg_set_encoding(int mb_code)
   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
@@ -264,7 +276,7 @@ typedef struct {
 \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