From d8a46b5b6befc72bb7142850fc4f4c1fd7fb1c1b Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 30 Jul 2019 09:56:28 -0700 Subject: Move the empty regex workaround into xregcomp. No current caller except grep needs this, but consistency seems like a good idea. Also change the xregcomp error message to be a bit more human-readable, rather than mention an implementation detail. --- lib/xwrap.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'lib/xwrap.c') diff --git a/lib/xwrap.c b/lib/xwrap.c index 1e39c1bc..be57097d 100644 --- a/lib/xwrap.c +++ b/lib/xwrap.c @@ -922,11 +922,18 @@ long long xparsemillitime(char *arg) // Compile a regular expression into a regex_t void xregcomp(regex_t *preg, char *regex, int cflags) { - int rc = regcomp(preg, regex, cflags); + int rc; + + // BSD regex implementations don't support the empty regex (which isn't + // allowed in the POSIX grammar), but glibc does. Fake it for BSD. + if (!*regex) { + regex = "()"; + cflags |= REG_EXTENDED; + } - if (rc) { + if ((rc = regcomp(preg, regex, cflags))) { regerror(rc, preg, libbuf, sizeof(libbuf)); - error_exit("xregcomp: %s", libbuf); + error_exit("bad regex: %s", libbuf); } } -- cgit v1.2.3