PERFORCE change 143638 for review

Gabor Kovesdan gabor at FreeBSD.org
Tue Jun 17 12:02:41 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=143638

Change 143638 by gabor at gabor_server on 2008/06/17 12:02:09

	- Make -A compatible with GNU grep

Affected files ...

.. //depot/projects/soc2008/gabor_textproc/grep/grep.c#19 edit
.. //depot/projects/soc2008/gabor_textproc/grep/grep.h#15 edit
.. //depot/projects/soc2008/gabor_textproc/grep/util.c#20 edit

Differences ...

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

@@ -110,7 +110,8 @@
 };
 
 /* Housekeeping */
-int	 first;		/* flag whether or not this is our first match */
+int	 first = 1;	/* flag whether we are processing the first match */
+int	 prev;		/* flag whether or not the previous line matched */
 int	 tail;		/* lines left to print */
 
 struct patfile {

==== //depot/projects/soc2008/gabor_textproc/grep/grep.h#15 (text+ko) ====

@@ -68,7 +68,7 @@
 extern char	*color, *label;
 extern int	 binbehave;
 
-extern int	 first, matchall, patterns, tail;
+extern int	 first, prev, matchall, patterns, tail;
 extern char    **pattern;
 extern struct fastgrep *fg_pattern;
 extern regex_t	*r_pattern;

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

@@ -276,22 +276,27 @@
 	if (c && binbehave == BIN_FILE_BIN && nottext)
 		return (c); /* Binary file */
 
-	if ((tail > 0 || c) && !cflag && !qflag) {
+	if ((tail || c) && !cflag && !qflag) {
 		if (c) {
-			if (first > 0 && tail == 0 && (Bflag < linesqueued) &&
-			    (Aflag || Bflag))
+			if (!first && !prev && !tail && (Aflag || Bflag))
 				printf("--\n");
-			first = 1;
 			tail = Aflag;
 			if (Bflag > 0)
 				printqueue();
 			linesqueued = 0;
 			printline(l, ':');
 		} else {
+			prev = 0;
 			printline(l, '-');
 			tail--;
 		}
 	}
+
+	if (c) {
+		prev++;
+		first = 0;
+	}
+
 	return (c);
 }
 


More information about the p4-projects mailing list