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): extract JobFinishDone from JobFinish



details:   https://anonhg.NetBSD.org/src/rev/2d3e4981c648
branches:  trunk
changeset: 957823:2d3e4981c648
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Dec 12 11:03:43 2020 +0000

description:
make(1): extract JobFinishDone from JobFinish

diffstat:

 usr.bin/make/job.c |  96 +++++++++++++++++++++++++++++------------------------
 1 files changed, 52 insertions(+), 44 deletions(-)

diffs (124 lines):

diff -r 15f176af8449 -r 2d3e4981c648 usr.bin/make/job.c
--- a/usr.bin/make/job.c        Sat Dec 12 11:02:06 2020 +0000
+++ b/usr.bin/make/job.c        Sat Dec 12 11:03:43 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: job.c,v 1.377 2020/12/12 10:58:13 rillig Exp $ */
+/*     $NetBSD: job.c,v 1.378 2020/12/12 11:03:43 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.377 2020/12/12 10:58:13 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.378 2020/12/12 11:03:43 rillig Exp $");
 
 /*
  * A shell defines how the commands are run.  All commands for a target are
@@ -1041,6 +1041,54 @@
        job->inPipe = -1;
 }
 
+static void
+JobFinishDone(Job *job, int *inout_status)
+{
+       int status = *inout_status;
+
+       if (WIFEXITED(status)) {
+               DEBUG2(JOB, "Process %d [%s] exited.\n",
+                   job->pid, job->node->name);
+               if (WEXITSTATUS(status) != 0) {
+                       SwitchOutputTo(job->node);
+#ifdef USE_META
+                       if (useMeta) {
+                               meta_job_error(job, job->node,
+                                   job->ignerr, WEXITSTATUS(status));
+                       }
+#endif
+                       if (!shouldDieQuietly(job->node, -1))
+                               (void)printf(
+                                   "*** [%s] Error code %d%s\n",
+                                   job->node->name,
+                                   WEXITSTATUS(status),
+                                   job->ignerr ? " (ignored)" : "");
+                       if (job->ignerr) {
+                               *inout_status = 0;
+                       } else {
+                               if (deleteOnError) {
+                                       JobDeleteTarget(job->node);
+                               }
+                               PrintOnError(job->node, NULL);
+                       }
+               } else if (DEBUG(JOB)) {
+                       SwitchOutputTo(job->node);
+                       (void)printf(
+                           "*** [%s] Completed successfully\n",
+                           job->node->name);
+               }
+       } else {
+               SwitchOutputTo(job->node);
+               (void)printf("*** [%s] Signal %d\n",
+                   job->node->name, WTERMSIG(status));
+               if (deleteOnError) {
+                       JobDeleteTarget(job->node);
+               }
+       }
+
+       (void)fflush(stdout);
+}
+
 /*
  * Do final processing for the given job including updating parent nodes and
  * starting new jobs as available/necessary.
@@ -1089,48 +1137,8 @@
                done = FALSE;
        }
 
-       if (done) {
-               if (WIFEXITED(status)) {
-                       DEBUG2(JOB, "Process %d [%s] exited.\n",
-                           job->pid, job->node->name);
-                       if (WEXITSTATUS(status) != 0) {
-                               SwitchOutputTo(job->node);
-#ifdef USE_META
-                               if (useMeta) {
-                                       meta_job_error(job, job->node,
-                                           job->ignerr, WEXITSTATUS(status));
-                               }
-#endif
-                               if (!shouldDieQuietly(job->node, -1))
-                                       (void)printf(
-                                           "*** [%s] Error code %d%s\n",
-                                           job->node->name,
-                                           WEXITSTATUS(status),
-                                           job->ignerr ? " (ignored)" : "");
-                               if (job->ignerr) {
-                                       status = 0;
-                               } else {
-                                       if (deleteOnError) {
-                                               JobDeleteTarget(job->node);
-                                       }
-                                       PrintOnError(job->node, NULL);
-                               }
-                       } else if (DEBUG(JOB)) {
-                               SwitchOutputTo(job->node);
-                               (void)printf(
-                                   "*** [%s] Completed successfully\n",
-                                   job->node->name);
-                       }
-               } else {
-                       SwitchOutputTo(job->node);
-                       (void)printf("*** [%s] Signal %d\n",
-                           job->node->name, WTERMSIG(status));
-                       if (deleteOnError) {
-                               JobDeleteTarget(job->node);
-                       }
-               }
-               (void)fflush(stdout);
-       }
+       if (done)
+               JobFinishDone(job, &status);
 
 #ifdef USE_META
        if (useMeta) {



Home | Main Index | Thread Index | Old Index