Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Jun 2008 12:36:11 GMT
From:      Gabor Kovesdan <gabor@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 144267 for review
Message-ID:  <200806291236.m5TCaBoe035509@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=144267

Change 144267 by gabor@gabor_server on 2008/06/29 12:35:28

	- Drop the GNU compatibility pre-editing workarounds. They don't work
	  entirely and it is very weird to apply hacks in grep for our regex
	  library. If we want better compatibility, the problem should be
	  addressed there. A different behaviour in BSD grep than the behaviour
	  of the base system regex library is clearly unwanted and I'm getting
	  very frustrated of dealing with these weird workarounds. When I can
	  make something compatible, compatibility breaks at another place.
	  It wouldn't lead to anywhere.

Affected files ...

.. //depot/projects/soc2008/gabor_textproc/grep/Makefile#10 edit
.. //depot/projects/soc2008/gabor_textproc/grep/grep.c#53 edit

Differences ...

==== //depot/projects/soc2008/gabor_textproc/grep/Makefile#10 (text+ko) ====

@@ -31,8 +31,4 @@
 CFLAGS+=	-DWITHOUT_NLS
 .endif
 
-.if defined(WITHOUT_GNU_COMPAT)
-CFLAGS+=	-DWITHOUT_GNU_COMPAT
-.endif
-
 .include <bsd.prog.mk>

==== //depot/projects/soc2008/gabor_textproc/grep/grep.c#53 (text+ko) ====

@@ -202,92 +202,6 @@
 static void
 add_pattern(char *pat, size_t len)
 {
-#ifndef WITHOUT_GNU_COMPAT
-	char	*ptr, *st;
-	int	 lbr, rbr;
-
-/* Workaround for our libc-regex library for better GNU compatibility.
-   Our library rejects some non-standard regular expressions, for example
-   '|' cannot stand with empty subexpressions.  In these cases the
-   non-standard regex will be pre-edited,
-   e.g. "(|a|b||c|)" will be "(a|b|c)" */
-	st = pat;
-	while (((ptr = strstr(st, "|)"))) != NULL) {
-		if (strstr(st, "\\|)") != (ptr - 1))
-			strlcpy(ptr, &(ptr[1]), strlen(ptr));
-		st = ptr;
-	}
-	st = pat;
-	while ((ptr = strstr(st, "(|")) != NULL) {
-		if ((strstr(st, "(\\|") != ptr) && (strstr(st, "\\(|") != (ptr - 1)))
-			strlcpy(&(ptr[1]), &(ptr[2]), strlen(ptr));
-		st = ptr + 1;
-	}
-	st = pat;
-	while ((ptr = strstr(st, "||")) != NULL) {
-		if (strstr(st, "\\||") != (ptr - 1))
-			strlcpy(&(ptr[1]), &(ptr[2]), strlen(ptr));
-		st = ptr + 1;
-	}
-	st = pat;
-	while ((ptr = strstr(st, "*?")) != NULL) {
-		if (strstr(st, "\\*?") != (ptr - 1))
-			strlcpy(&(ptr[1]), &(ptr[2]), strlen(ptr));
-		st = ptr + 1;
-	}
-	st = pat;
-	while ((ptr = strstr(st, "?*")) != NULL) {
-		if (strstr(st, "\\?*") != (ptr - 1))
-			strlcpy(&(ptr[1]), &(ptr[2]), strlen(ptr));
-		st = ptr + 1;
-	}
-	st = pat;
-	while ((ptr = strstr(st, "**")) != NULL) {
-		if ((strstr(st, "\\**") != (ptr - 1)) && (strstr(st, "\\(**") != (ptr - 2)))
-			strlcpy(&(ptr[1]), &(ptr[2]), strlen(ptr));
-		st = ptr + 1;
-	}
-	st = pat;
-	while ((ptr = strstr(st, "??")) != NULL) {
-		if (strstr(st, "\\??") != (ptr - 1))
-			strlcpy(&(ptr[1]), &(ptr[2]), strlen(ptr));
-		st = ptr + 1;
-	}
-	st = pat;
-	while ((ptr = strstr(st, "^*")) != NULL) {
-		strlcpy(&(ptr[1]), &(ptr[2]), strlen(ptr));
-		st = ptr + 1;
-	}
-	st = pat;
-	while ((ptr = strstr(st, "(*")) != NULL) {
-		if (strstr(st, "\\(*") != (ptr - 1))
-			strlcpy(&(ptr[1]), &(ptr[2]), strlen(ptr));
-		st = ptr + 1;
-	}
-	st = pat;
-	if (Eflag) {
-		st = pat;
-		lbr = 0;
-		while ((ptr = strstr(st, "(")) != NULL) {
-			if (strstr(st, "\\(") != (ptr - 1))
-				lbr++;
-			st = ptr + 1;
-		}
-		st = pat;
-		rbr = 0;
-		while ((ptr = strstr(st, ")")) != NULL) {
-			if (strstr(st, "\\)") != (ptr - 1))
-				rbr++;
-			st = ptr + 1;
-		}
-		if (lbr != rbr) {
-			errx(2, getstr(8));
-		}
-	}
-	while (pat[0] == '*')
-		pat++;
-#endif
-
 	if (len == 0 || matchall) {
 		matchall = 1;
 		return;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200806291236.m5TCaBoe035509>