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); }