]> granicus.if.org Git - onig/commitdiff
add onig_initialize_callout()
authorK.Kosako <kosako@sofnec.co.jp>
Thu, 8 Feb 2018 05:56:41 +0000 (14:56 +0900)
committerK.Kosako <kosako@sofnec.co.jp>
Thu, 8 Feb 2018 05:56:41 +0000 (14:56 +0900)
src/regcomp.c
src/regexec.c
src/regint.h

index cb4d0f531ca4d33fc1822de62baae791fb044a4f..d12ac5447909df9fc82d9a412971099b4a6e639b 100644 (file)
@@ -6274,7 +6274,8 @@ onig_initialize(OnigEncoding encodings[], int n)
       return r;
   }
 
-  return 0;
+  r = onig_initialize_callout();
+  return r;
 }
 
 typedef struct EndCallListItem {
index ade4fdae3f259d231c05c2caba15f4aaadb22470..b3826999e1887f3abf6074549a7e3ed1d0c54c5c 100644 (file)
@@ -4857,3 +4857,25 @@ onig_get_used_stack_size_in_callout(OnigCalloutArgs* args, int* used_num, int* u
 
   return ONIG_NORMAL;
 }
+
+extern int
+onig_builtin_fail(OnigCalloutArgs* args, void* user_data)
+{
+  return ONIG_CALLOUT_FAIL;
+}
+
+extern int
+onig_initialize_callout(void)
+{
+#define B1(name, func)  do {\
+  r = onig_set_callout_of_name(0, (UChar* )#name, (UChar* )(#name + strlen(#name)),\
+                               onig_builtin_ ## func, 0);\
+  if (r != ONIG_NORMAL) return r;\
+} while(0)
+
+  int r;
+
+  B1(FAIL, fail);
+
+  return ONIG_NORMAL;
+}
index 4dd4ee5519c7e065015919ca3ce829d7c509fc8d..d0a285de4bcc177e541198d2c0d955f9baaf4b17 100644 (file)
@@ -780,6 +780,7 @@ extern int    onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UCh
 
 extern OnigCalloutFunc onig_get_callout_func_from_id(int id);
 extern OnigCalloutFunc onig_get_retraction_callout_func_from_id(int id);
+extern int onig_initialize_callout(void);
 
 /* strend hash */
 typedef void hash_table_type;