svn commit: r332806 - head/usr.bin/grep

Kyle Evans kevans at FreeBSD.org
Fri Apr 20 03:11:52 UTC 2018


Author: kevans
Date: Fri Apr 20 03:11:51 2018
New Revision: 332806
URL: https://svnweb.freebsd.org/changeset/base/332806

Log:
  bsdgrep: Clean up procmatches a little bit

Modified:
  head/usr.bin/grep/util.c

Modified: head/usr.bin/grep/util.c
==============================================================================
--- head/usr.bin/grep/util.c	Fri Apr 20 03:08:46 2018	(r332805)
+++ head/usr.bin/grep/util.c	Fri Apr 20 03:11:51 2018	(r332806)
@@ -218,32 +218,41 @@ procmatches(struct mprintc *mc, struct parsec *pc, boo
 {
 
 	/* Deal with any -B context or context separators */
-	if (matched && mc->doctx) {
-		if (!first_match && (!mc->same_file || mc->last_outed > 0))
-			printf("--\n");
-		if (Bflag > 0)
-			printqueue();
-		mc->tail = Aflag;
-	}
+	if (matched) {
+		if (mc->doctx) {
+			if (!first_match &&
+			    (!mc->same_file || mc->last_outed > 0))
+				printf("--\n");
+			if (Bflag > 0)
+				printqueue();
+			mc->tail = Aflag;
+		}
 
-	/* Print the matching line, but only if not quiet/binary */
-	if (matched && mc->printmatch) {
-		printline(pc, ':');
-		while (pc->matchidx >= MAX_MATCHES) {
-			/* Reset matchidx and try again */
-			pc->matchidx = 0;
-			if (procline(pc) == 0)
-				printline(pc, ':');
-			else
-				break;
+		/* Print the matching line, but only if not quiet/binary */
+		if (mc->printmatch) {
+			printline(pc, ':');
+			while (pc->matchidx >= MAX_MATCHES) {
+				/* Reset matchidx and try again */
+				pc->matchidx = 0;
+				if (procline(pc) == 0)
+					printline(pc, ':');
+				else
+					break;
+			}
+			first_match = false;
+			mc->same_file = true;
+			mc->last_outed = 0;
 		}
-		first_match = false;
-		mc->same_file = true;
-		mc->last_outed = 0;
-	}
 
-	if (!matched && mc->doctx) {
-		/* Deal with any -A context */
+		/* Count the matches if we have a match limit */
+		if (mflag) {
+			/* XXX TODO: Decrement by number of matched lines */
+			mcount -= 1;
+			if (mflag && mcount <= 0)
+				return (false);
+		}
+	} else if (mc->doctx) {
+		/* Not matching, deal with any -A context as needed */
 		if (mc->tail > 0) {
 			grep_printline(&pc->ln, '-');
 			mc->tail--;
@@ -260,14 +269,6 @@ procmatches(struct mprintc *mc, struct parsec *pc, boo
 			if (Bflag == 0 || (Bflag > 0 && enqueue(&pc->ln)))
 				++mc->last_outed;
 		}
-	}
-
-	/* Count the matches if we have a match limit */
-	if (matched && mflag) {
-		/* XXX TODO: Decrement by number of matched lines */
-		mcount -= 1;
-		if (mflag && mcount <= 0)
-			return (false);
 	}
 
 	return (true);


More information about the svn-src-head mailing list