Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/make make(1): remove duplicate code for job output
details: https://anonhg.NetBSD.org/src/rev/7bdb7086d00f
branches: trunk
changeset: 978935:7bdb7086d00f
user: rillig <rillig%NetBSD.org@localhost>
date: Mon Dec 07 22:55:01 2020 +0000
description:
make(1): remove duplicate code for job output
diffstat:
usr.bin/make/job.c | 49 ++++++++++++++++++-------------------------------
1 files changed, 18 insertions(+), 31 deletions(-)
diffs (124 lines):
diff -r 7b7f22936d0c -r 7bdb7086d00f usr.bin/make/job.c
--- a/usr.bin/make/job.c Mon Dec 07 22:47:03 2020 +0000
+++ b/usr.bin/make/job.c Mon Dec 07 22:55:01 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: job.c,v 1.339 2020/12/07 22:47:03 rillig Exp $ */
+/* $NetBSD: job.c,v 1.340 2020/12/07 22:55:01 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.339 2020/12/07 22:47:03 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.340 2020/12/07 22:55:01 rillig Exp $");
/* A shell defines how the commands are run. All commands for a target are
* written into a single file, which is then given to the shell to execute
@@ -389,8 +389,6 @@
static void clearfd(Job *);
static int readyfd(Job *);
-static GNode *lastNode; /* The node for which output was most recently
- * produced. */
static char *targPrefix = NULL; /* To identify a job change in the output. */
static Job tokenWaitJob; /* token wait pseudo-job */
@@ -408,8 +406,15 @@
static void JobSigReset(void);
static void
-Message(GNode *gn)
+SwitchOutputTo(GNode *gn)
{
+ /* The node for which output was most recently produced. */
+ static GNode *lastNode = NULL;
+
+ if (gn == lastNode)
+ return;
+ lastNode = gn;
+
if (opts.maxJobs != 1 && targPrefix != NULL && targPrefix[0] != '\0')
(void)fprintf(stdout, "%s %s ---\n", targPrefix, gn->name);
}
@@ -1004,10 +1009,7 @@
DEBUG2(JOB, "Process %d [%s] exited.\n",
job->pid, job->node->name);
if (WEXITSTATUS(status) != 0) {
- if (job->node != lastNode) {
- Message(job->node);
- lastNode = job->node;
- }
+ SwitchOutputTo(job->node);
#ifdef USE_META
if (useMeta) {
meta_job_error(job, job->node, job->flags, WEXITSTATUS(status));
@@ -1027,18 +1029,12 @@
PrintOnError(job->node, NULL);
}
} else if (DEBUG(JOB)) {
- if (job->node != lastNode) {
- Message(job->node);
- lastNode = job->node;
- }
+ SwitchOutputTo(job->node);
(void)printf("*** [%s] Completed successfully\n",
job->node->name);
}
} else {
- if (job->node != lastNode) {
- Message(job->node);
- lastNode = job->node;
- }
+ SwitchOutputTo(job->node);
(void)printf("*** [%s] Signal %d\n",
job->node->name, WTERMSIG(status));
if (deleteOnError) {
@@ -1264,10 +1260,8 @@
* banner with their name in it never appears). This is an attempt to
* provide that feedback, even if nothing follows it.
*/
- if ((lastNode != job->node) && !(job->flags & JOB_SILENT)) {
- Message(job->node);
- lastNode = job->node;
- }
+ if (!(job->flags & JOB_SILENT))
+ SwitchOutputTo(job->node);
/* No interruptions until this job is on the `jobs' list */
JobSigLock(&mask);
@@ -1559,10 +1553,7 @@
* Not executing anything -- just print all the commands to stdout
* in one fell swoop. This will still set up job->tailCmds correctly.
*/
- if (lastNode != gn) {
- Message(gn);
- lastNode = gn;
- }
+ SwitchOutputTo(gn);
job->cmdFILE = stdout;
/*
* Only print the commands if they're ok, but don't die if they're
@@ -1778,10 +1769,8 @@
* our own free will.
*/
if (*cp != '\0') {
- if (!opts.beSilent && job->node != lastNode) {
- Message(job->node);
- lastNode = job->node;
- }
+ if (!opts.beSilent)
+ SwitchOutputTo(job->node);
#ifdef USE_META
if (useMeta) {
meta_job_output(job, cp, gotNL ? "\n" : "");
@@ -2080,8 +2069,6 @@
aborting = ABORT_NONE;
job_errors = 0;
- lastNode = NULL;
-
/*
* There is a non-zero chance that we already have children.
* eg after 'make -f- <<EOF'
Home |
Main Index |
Thread Index |
Old Index