diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2024-05-27 15:51:50 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2024-05-27 17:01:51 -0400 |
commit | dfe7ff3c3fbc2f9ed66171358fafa9abb9f2b23d (patch) | |
tree | 0358a78bbe1a3988c57ffc0fe598308a982bb613 /src/xregex.c | |
parent | 136b604027389fd013c029f1d1ef33ac599bc922 (diff) | |
download | bfs-dfe7ff3c3fbc2f9ed66171358fafa9abb9f2b23d.tar.xz |
xregex: Support non-capturing groups with -regextype emacs
Link: https://savannah.gnu.org/bugs/index.php?65770
Link: https://github.com/kkos/oniguruma/issues/296
Diffstat (limited to 'src/xregex.c')
-rw-r--r-- | src/xregex.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/xregex.c b/src/xregex.c index 484f099..414c366 100644 --- a/src/xregex.c +++ b/src/xregex.c @@ -37,6 +37,8 @@ struct bfs_regex { static int bfs_onig_status; static OnigEncoding bfs_onig_enc; +static OnigSyntaxType bfs_onig_syntax_emacs; + /** pthread_once() callback. */ static void bfs_onig_once(void) { // Fall back to ASCII by default @@ -103,6 +105,10 @@ static void bfs_onig_once(void) { if (bfs_onig_status != ONIG_NORMAL) { bfs_onig_enc = NULL; } + + // https://github.com/kkos/oniguruma/issues/296 + onig_copy_syntax(&bfs_onig_syntax_emacs, ONIG_SYNTAX_EMACS); + bfs_onig_syntax_emacs.op2 |= ONIG_SYN_OP2_QMARK_GROUP_EFFECT; } /** Initialize Oniguruma. */ @@ -144,7 +150,7 @@ int bfs_regcomp(struct bfs_regex **preg, const char *pattern, enum bfs_regex_typ syntax = ONIG_SYNTAX_POSIX_EXTENDED; break; case BFS_REGEX_EMACS: - syntax = ONIG_SYNTAX_EMACS; + syntax = &bfs_onig_syntax_emacs; break; case BFS_REGEX_GREP: syntax = ONIG_SYNTAX_GREP; |