From 9754c1ab7ceebd41ffda5f8004e562f18006dc6c Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 21 Feb 2022 15:25:27 -0500 Subject: regex: Wrap the POSIX API in a facade --- eval.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index f7de940..e812dc6 100644 --- a/eval.c +++ b/eval.c @@ -827,20 +827,10 @@ bool eval_quit(const struct expr *expr, struct eval_state *state) { */ bool eval_regex(const struct expr *expr, struct eval_state *state) { const char *path = state->ftwbuf->path; - size_t len = strlen(path); - regmatch_t match = { - .rm_so = 0, - .rm_eo = len, - }; - int flags = 0; -#ifdef REG_STARTEND - flags |= REG_STARTEND; -#endif - int err = regexec(expr->regex, path, 1, &match, flags); - if (err == 0) { - return match.rm_so == 0 && (size_t)match.rm_eo == len; - } else if (err != REG_NOMATCH) { + int err; + bool ret = bfs_regexec(expr->regex, path, BFS_REGEX_ANCHOR, &err); + if (err) { char *str = bfs_regerror(err, expr->regex); if (str) { eval_error(state, "%s.\n", str); @@ -848,11 +838,9 @@ bool eval_regex(const struct expr *expr, struct eval_state *state) { } else { eval_error(state, "bfs_regerror(): %m.\n"); } - - *state->ret = EXIT_FAILURE; } - return false; + return ret; } /** -- cgit v1.2.3