Module Name:    src
Committed By:   rillig
Date:           Sat Dec 12 12:54:58 UTC 2020

Modified Files:
        src/usr.bin/make: job.c

Log Message:
make(1): extract ShellWriter_ErrOn from JobPrintCommand

It had been conceptually wrong to modify cmdFlags.echo just to suppress
echoing while enabling error checking.

Now the code in JobPrintCommand speaks for itself and no longer needs
any comments.  The few lines at the end have the sole purpose of
restoring the default state (echo + errChk) in the shell file.


To generate a diff of this commit:
cvs rdiff -u -r1.381 -r1.382 src/usr.bin/make/job.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/job.c
diff -u src/usr.bin/make/job.c:1.381 src/usr.bin/make/job.c:1.382
--- src/usr.bin/make/job.c:1.381	Sat Dec 12 12:28:06 2020
+++ src/usr.bin/make/job.c	Sat Dec 12 12:54:58 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.381 2020/12/12 12:28:06 rillig Exp $	*/
+/*	$NetBSD: job.c,v 1.382 2020/12/12 12:54:58 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -143,7 +143,7 @@
 #include "trace.h"
 
 /*	"@(#)job.c	8.2 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: job.c,v 1.381 2020/12/12 12:28:06 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.382 2020/12/12 12:54:58 rillig Exp $");
 
 /*
  * A shell defines how the commands are run.  All commands for a target are
@@ -798,22 +798,24 @@ ShellWriter_TraceOn(ShellWriter *wr)
 	}
 }
 
-/*
- * We don't want the error-control commands showing up either, so we turn
- * off echoing while executing them. We could put another field in the shell
- * structure to tell JobDoOutput to look for this string too, but why make
- * it any more complex than it already is?
- */
 static void
 ShellWriter_ErrOff(ShellWriter *wr, Boolean echo)
 {
-	if (echo && shell->hasEchoCtl) {
+	if (echo)
 		ShellWriter_EchoOff(wr);
-		ShellWriter_Println(wr, shell->errOff);
+	ShellWriter_Println(wr, shell->errOff);
+	if (echo)
+		ShellWriter_EchoOn(wr);
+}
+
+static void
+ShellWriter_ErrOn(ShellWriter *wr, Boolean echo)
+{
+	if (echo)
+		ShellWriter_EchoOff(wr);
+	ShellWriter_Println(wr, shell->errOn);
+	if (echo)
 		ShellWriter_EchoOn(wr);
-	} else {
-		ShellWriter_Println(wr, shell->errOff);
-	}
 }
 
 /*
@@ -962,18 +964,10 @@ JobPrintCommand(Job *job, ShellWriter *w
 	ShellWriter_PrintFmt(wr, cmdTemplate, xcmd);
 	free(xcmdStart);
 	free(escCmd);
-	if (cmdFlags.ignerr) {
-		/*
-		 * If echoing is already off, there's no point in issuing the
-		 * echoOff command. Otherwise we issue it and pretend it was on
-		 * for the whole command...
-		 */
-		if (cmdFlags.echo && job->echo && shell->hasEchoCtl) {
-			ShellWriter_EchoOff(wr);
-			cmdFlags.echo = FALSE;
-		}
-		ShellWriter_Println(wr, shell->errOn);
-	}
+
+	if (cmdFlags.ignerr)
+		ShellWriter_ErrOn(wr, cmdFlags.echo && job->echo);
+
 	if (!cmdFlags.echo)
 		ShellWriter_EchoOn(wr);
 }

Reply via email to