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): merge duplicate code for delayed commands
details: https://anonhg.NetBSD.org/src/rev/b5f371088ae6
branches: trunk
changeset: 976417:b5f371088ae6
user: rillig <rillig%NetBSD.org@localhost>
date: Wed Sep 23 07:30:12 2020 +0000
description:
make(1): merge duplicate code for delayed commands
diffstat:
usr.bin/make/job.c | 56 +++++++++++++++++++----------------------------------
1 files changed, 20 insertions(+), 36 deletions(-)
diffs (100 lines):
diff -r b3dc571bacba -r b5f371088ae6 usr.bin/make/job.c
--- a/usr.bin/make/job.c Wed Sep 23 06:18:20 2020 +0000
+++ b/usr.bin/make/job.c Wed Sep 23 07:30:12 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: job.c,v 1.235 2020/09/23 03:06:38 rillig Exp $ */
+/* $NetBSD: job.c,v 1.236 2020/09/23 07:30:12 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -140,7 +140,7 @@
#include "trace.h"
/* "@(#)job.c 8.2 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: job.c,v 1.235 2020/09/23 03:06:38 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.236 2020/09/23 07:30:12 rillig Exp $");
# define STATIC static
@@ -320,7 +320,6 @@
static void JobContinueSig(int);
static Job *JobFindPid(int, int, Boolean);
static int JobPrintCommand(void *, void *);
-static int JobSaveCommand(void *, void *);
static void JobClose(Job *);
static void JobExec(Job *, char **);
static void JobMakeArgv(Job *, char **);
@@ -879,28 +878,22 @@
return 0;
}
-/*-
- *-----------------------------------------------------------------------
- * JobSaveCommand --
- * Save a command to be executed when everything else is done.
- * Callback function for JobFinish...
- *
- * Results:
- * Always returns 0
- *
- * Side Effects:
- * The command is tacked onto the end of postCommands' commands list.
- *
- *-----------------------------------------------------------------------
- */
-static int
-JobSaveCommand(void *cmd, void *gn)
+/* Save the delayed commands, to be executed when everything else is done. */
+static void
+JobSaveCommands(Job *job)
{
- char *expanded_cmd;
- (void)Var_Subst(cmd, (GNode *)gn, VARE_WANTRES, &expanded_cmd);
- /* TODO: handle errors */
- Lst_Append(Targ_GetEndNode()->commands, expanded_cmd);
- return 0;
+ StringListNode *node;
+
+ for (node = job->tailCmds; node != NULL; node = LstNode_Next(node)) {
+ char *cmd = LstNode_Datum(node);
+ char *expanded_cmd;
+ /* XXX: This Var_Subst is only intended to expand the dynamic
+ * variables such as .TARGET, .IMPSRC. It is not intended to
+ * expand the other variables as well; see deptgt-end.mk. */
+ (void)Var_Subst(cmd, job->node, VARE_WANTRES, &expanded_cmd);
+ /* TODO: handle errors */
+ Lst_Append(Targ_GetEndNode()->commands, expanded_cmd);
+ }
}
@@ -1082,14 +1075,9 @@
/*
* As long as we aren't aborting and the job didn't return a non-zero
* status that we shouldn't ignore, we call Make_Update to update
- * the parents. In addition, any saved commands for the node are placed
- * on the .END target.
+ * the parents.
*/
- if (job->tailCmds != NULL) {
- Lst_ForEachFrom(job->node->commands, job->tailCmds,
- JobSaveCommand,
- job->node);
- }
+ JobSaveCommands(job);
job->node->made = MADE;
if (!(job->flags & JOB_SPECIAL))
return_job_token = TRUE;
@@ -1685,11 +1673,7 @@
* the commands for the job were no good.
*/
if (cmdsOK && aborting == 0) {
- if (job->tailCmds != NULL) {
- Lst_ForEachFrom(job->node->commands, job->tailCmds,
- JobSaveCommand,
- job->node);
- }
+ JobSaveCommands(job);
job->node->made = MADE;
Make_Update(job->node);
}
Home |
Main Index |
Thread Index |
Old Index