summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2020-12-05 02:23:11 +0000
committerKyle Evans <kevans@FreeBSD.org>2020-12-05 02:23:11 +0000
commit7518fb346fe9603f99d2406a073b30fb8e4a270c (patch)
tree798d087873b271bac2ba5ab8d624f752b4d22f20 /lib
parent7c2f310f6dd8cf0ed249933eea7c643f2c311745 (diff)
downloadsrc-test2-7518fb346fe9603f99d2406a073b30fb8e4a270c.tar.gz
src-test2-7518fb346fe9603f99d2406a073b30fb8e4a270c.zip
libc: regex: factor out ISBOW/ISEOW macros
These will be reused for \b (word boundary, which matches both sides). No functional change.
Notes
Notes: svn path=/head/; revision=368356
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/regex/engine.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/libc/regex/engine.c b/lib/libc/regex/engine.c
index e7da4cbc2a5d..68e480c32e4c 100644
--- a/lib/libc/regex/engine.c
+++ b/lib/libc/regex/engine.c
@@ -589,6 +589,17 @@ dissect(struct match *m,
return(sp);
}
+#define ISBOW(m, sp) \
+ (sp < m->endp && ISWORD(*sp) && \
+ ((sp == m->beginp && !(m->eflags&REG_NOTBOL)) || \
+ (sp > m->offp && !ISWORD(*(sp-1)))))
+#define ISEOW(m, sp) \
+ (((sp == m->endp && !(m->eflags&REG_NOTEOL)) || \
+ (sp < m->endp && *sp == '\n' && \
+ (m->g->cflags&REG_NEWLINE)) || \
+ (sp < m->endp && !ISWORD(*sp)) ) && \
+ (sp > m->beginp && ISWORD(*(sp-1)))) \
+
/*
- backref - figure out what matched what, figuring in back references
== static const char *backref(struct match *m, const char *start, \
@@ -663,19 +674,13 @@ backref(struct match *m,
return(NULL);
break;
case OBOW:
- if (sp < m->endp && ISWORD(*sp) &&
- ((sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
- (sp > m->offp && !ISWORD(*(sp-1)))))
+ if (ISBOW(m, sp))
{ /* yes */ }
else
return(NULL);
break;
case OEOW:
- if (( (sp == m->endp && !(m->eflags&REG_NOTEOL)) ||
- (sp < m->endp && *sp == '\n' &&
- (m->g->cflags&REG_NEWLINE)) ||
- (sp < m->endp && !ISWORD(*sp)) ) &&
- (sp > m->beginp && ISWORD(*(sp-1))) )
+ if (ISEOW(m, sp))
{ /* yes */ }
else
return(NULL);