libc: regex: factor out ISBOW/ISEOW macros
These will be reused for \b (word boundary, which matches both sides). No functional change.
This commit is contained in:
parent
7c2f310f6d
commit
7518fb346f
@ -589,6 +589,17 @@ dissect(struct match *m,
|
||||
return(sp);
|
||||
}
|
||||
|
||||
#define ISBOW(m, sp) \
|
||||
(sp < m->endp && ISWORD(*sp) && \
|
||||
((sp == m->beginp && !(m->eflags®_NOTBOL)) || \
|
||||
(sp > m->offp && !ISWORD(*(sp-1)))))
|
||||
#define ISEOW(m, sp) \
|
||||
(((sp == m->endp && !(m->eflags®_NOTEOL)) || \
|
||||
(sp < m->endp && *sp == '\n' && \
|
||||
(m->g->cflags®_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®_NOTBOL)) ||
|
||||
(sp > m->offp && !ISWORD(*(sp-1)))))
|
||||
if (ISBOW(m, sp))
|
||||
{ /* yes */ }
|
||||
else
|
||||
return(NULL);
|
||||
break;
|
||||
case OEOW:
|
||||
if (( (sp == m->endp && !(m->eflags®_NOTEOL)) ||
|
||||
(sp < m->endp && *sp == '\n' &&
|
||||
(m->g->cflags®_NEWLINE)) ||
|
||||
(sp < m->endp && !ISWORD(*sp)) ) &&
|
||||
(sp > m->beginp && ISWORD(*(sp-1))) )
|
||||
if (ISEOW(m, sp))
|
||||
{ /* yes */ }
|
||||
else
|
||||
return(NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user