As preparation for fixing the handling of backslash-escapes used
inside a character class, refactor is_any_but() to be defined in terms
of is_any_of() so we don't have to repeat the same logic in two places.

Reviewed-by: Simon Glass <s...@chromium.org>
Signed-off-by: Rasmus Villemoes <r...@prevas.dk>
---
 lib/slre.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/lib/slre.c b/lib/slre.c
index 4f455400d3a..5cb0d3ec7fa 100644
--- a/lib/slre.c
+++ b/lib/slre.c
@@ -484,17 +484,14 @@ is_any_of(const unsigned char *p, int len, const char *s, 
int *ofs)
 static int
 is_any_but(const unsigned char *p, int len, const char *s, int *ofs)
 {
-       int     i, ch;
-
-       ch = s[*ofs];
+       int     dummy = *ofs;
 
-       for (i = 0; i < len; i++) {
-               if (p[i] == ch)
-                       return 0;
+       if (is_any_of(p, len, s, &dummy)) {
+               return 0;
+       } else {
+               (*ofs)++;
+               return 1;
        }
-
-       (*ofs)++;
-       return 1;
 }
 
 static int
-- 
2.49.0

Reply via email to