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);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to