]> granicus.if.org Git - onig/commitdiff
add builtin callout (*ERROR:n)
authorK.Kosako <kkosako0@gmail.com>
Sun, 11 Feb 2018 09:58:50 +0000 (18:58 +0900)
committerK.Kosako <kkosako0@gmail.com>
Sun, 11 Feb 2018 09:58:50 +0000 (18:58 +0900)
sample/callout.c
src/regexec.c

index 0ec6d6945e6ed826423c1ea43da6495f23938b08..caca62c68c05d508d4b9159b554c8db768971236 100644 (file)
@@ -169,6 +169,7 @@ extern int main(int argc, char* argv[])
   test("abc(?:(*FAIL)|$)", "abcabc");
   test("abc(?:(*ABORT)|$)", "abcabc");
   test("ab(*foo+:will be fail.)(*FAIL)", "abc");
+  test("abc(d|(*ERROR:-999))", "abc");
 
   onig_end();
   return 0;
index b50d299d9648ad71bfd70be3ed1a7288a579ba6f..4ab9e9f7cbe404e1e91b37b1b6cf35e9c1aa321e 100644 (file)
@@ -4900,6 +4900,21 @@ onig_builtin_success(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSE
   return ONIG_CALLOUT_SUCCESS;
 }
 
+extern int
+onig_builtin_error(OnigCalloutArgs* args, void* user_data ARG_UNUSED)
+{
+  long n;
+
+  if (args->content != 0 && args->content_end > args->content) {
+    n = strtol((char* )args->content, 0, 10);
+  }
+  else {
+    n = ONIG_CALLOUT_FAIL;
+  }
+
+  return (int )n;
+}
+
 #endif /* USE_CALLOUT */
 
 extern int
@@ -4920,6 +4935,7 @@ onig_initialize_builtin_callouts(void)
   B1(FAIL,    fail);
   B1(SUCCESS, success);
   B1(ABORT,   abort);
+  B1(ERROR,   error);
 
   return ONIG_NORMAL;
 #endif /* USE_CALLOUT */