Module Name:    src
Committed By:   rillig
Date:           Thu Aug 27 06:53:57 UTC 2020

Modified Files:
        src/usr.bin/make: compat.c dir.c job.c lst.c lst.h main.c make.c meta.c
            parse.c suff.c targ.c

Log Message:
make(1): migrate Lst_ForEach to Lst_ForEachS

Most lists are always valid.  Only the "targets" variable may be null in
some cases, probably.


To generate a diff of this commit:
cvs rdiff -u -r1.129 -r1.130 src/usr.bin/make/compat.c
cvs rdiff -u -r1.112 -r1.113 src/usr.bin/make/dir.c
cvs rdiff -u -r1.216 -r1.217 src/usr.bin/make/job.c
cvs rdiff -u -r1.43 -r1.44 src/usr.bin/make/lst.c
cvs rdiff -u -r1.46 -r1.47 src/usr.bin/make/lst.h
cvs rdiff -u -r1.314 -r1.315 src/usr.bin/make/main.c
cvs rdiff -u -r1.125 -r1.126 src/usr.bin/make/make.c
cvs rdiff -u -r1.100 -r1.101 src/usr.bin/make/meta.c
cvs rdiff -u -r1.264 -r1.265 src/usr.bin/make/parse.c
cvs rdiff -u -r1.117 -r1.118 src/usr.bin/make/suff.c
cvs rdiff -u -r1.73 -r1.74 src/usr.bin/make/targ.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/compat.c
diff -u src/usr.bin/make/compat.c:1.129 src/usr.bin/make/compat.c:1.130
--- src/usr.bin/make/compat.c:1.129	Sun Aug 23 19:00:19 2020
+++ src/usr.bin/make/compat.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat.c,v 1.129 2020/08/23 19:00:19 rillig Exp $	*/
+/*	$NetBSD: compat.c,v 1.130 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: compat.c,v 1.129 2020/08/23 19:00:19 rillig Exp $";
+static char rcsid[] = "$NetBSD: compat.c,v 1.130 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)compat.c	8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: compat.c,v 1.129 2020/08/23 19:00:19 rillig Exp $");
+__RCSID("$NetBSD: compat.c,v 1.130 2020/08/27 06:53:57 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -532,7 +532,7 @@ Compat_Make(void *gnp, void *pgnp)
 	gn->made = BEINGMADE;
 	if ((gn->type & OP_MADE) == 0)
 	    Suff_FindDeps(gn);
-	Lst_ForEach(gn->children, Compat_Make, gn);
+	Lst_ForEachS(gn->children, Compat_Make, gn);
 	if ((gn->flags & REMAKE) == 0) {
 	    gn->made = ABORTED;
 	    pgn->flags &= ~(unsigned)REMAKE;
@@ -602,7 +602,7 @@ Compat_Make(void *gnp, void *pgnp)
 		    meta_job_start(NULL, gn);
 		}
 #endif
-		Lst_ForEach(gn->commands, CompatRunCommand, gn);
+		Lst_ForEachS(gn->commands, CompatRunCommand, gn);
 		curTarg = NULL;
 	    } else {
 		Job_Touch(gn, gn->type & OP_SILENT);
@@ -671,7 +671,7 @@ Compat_Make(void *gnp, void *pgnp)
     }
 
 cohorts:
-    Lst_ForEach(gn->cohorts, Compat_Make, pgnp);
+    Lst_ForEachS(gn->cohorts, Compat_Make, pgnp);
     return 0;
 }
 

Index: src/usr.bin/make/dir.c
diff -u src/usr.bin/make/dir.c:1.112 src/usr.bin/make/dir.c:1.113
--- src/usr.bin/make/dir.c:1.112	Thu Aug 27 06:28:44 2020
+++ src/usr.bin/make/dir.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: dir.c,v 1.112 2020/08/27 06:28:44 rillig Exp $	*/
+/*	$NetBSD: dir.c,v 1.113 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: dir.c,v 1.112 2020/08/27 06:28:44 rillig Exp $";
+static char rcsid[] = "$NetBSD: dir.c,v 1.113 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)dir.c	8.2 (Berkeley) 1/2/94";
 #else
-__RCSID("$NetBSD: dir.c,v 1.112 2020/08/27 06:28:44 rillig Exp $");
+__RCSID("$NetBSD: dir.c,v 1.113 2020/08/27 06:53:57 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -924,7 +924,7 @@ Dir_Expand(const char *word, Lst path, L
 	}
     }
     if (DEBUG(DIR)) {
-	Lst_ForEach(expansions, DirPrintWord, NULL);
+	Lst_ForEachS(expansions, DirPrintWord, NULL);
 	fprintf(debug_file, "\n");
     }
 }
@@ -1811,5 +1811,5 @@ DirPrintDir(void *p, void *dummy MAKE_AT
 void
 Dir_PrintPath(Lst path)
 {
-    Lst_ForEach(path, DirPrintDir, NULL);
+    Lst_ForEachS(path, DirPrintDir, NULL);
 }

Index: src/usr.bin/make/job.c
diff -u src/usr.bin/make/job.c:1.216 src/usr.bin/make/job.c:1.217
--- src/usr.bin/make/job.c:1.216	Thu Aug 27 06:31:46 2020
+++ src/usr.bin/make/job.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.216 2020/08/27 06:31:46 rillig Exp $	*/
+/*	$NetBSD: job.c,v 1.217 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: job.c,v 1.216 2020/08/27 06:31:46 rillig Exp $";
+static char rcsid[] = "$NetBSD: job.c,v 1.217 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)job.c	8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: job.c,v 1.216 2020/08/27 06:31:46 rillig Exp $");
+__RCSID("$NetBSD: job.c,v 1.217 2020/08/27 06:53:57 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1655,7 +1655,7 @@ JobStart(GNode *gn, int flags)
 	 * We can do all the commands at once. hooray for sanity
 	 */
 	numCommands = 0;
-	Lst_ForEach(gn->commands, JobPrintCommand, job);
+	Lst_ForEachS(gn->commands, JobPrintCommand, job);
 
 	/*
 	 * If we didn't print out any commands to the shell script,
@@ -1682,7 +1682,7 @@ JobStart(GNode *gn, int flags)
 	 * doesn't do any harm in this case and may do some good.
 	 */
 	if (cmdsOK) {
-	    Lst_ForEach(gn->commands, JobPrintCommand, job);
+	    Lst_ForEachS(gn->commands, JobPrintCommand, job);
 	}
 	/*
 	 * Don't execute the shell, thank you.

Index: src/usr.bin/make/lst.c
diff -u src/usr.bin/make/lst.c:1.43 src/usr.bin/make/lst.c:1.44
--- src/usr.bin/make/lst.c:1.43	Thu Aug 27 06:28:44 2020
+++ src/usr.bin/make/lst.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: lst.c,v 1.43 2020/08/27 06:28:44 rillig Exp $ */
+/* $NetBSD: lst.c,v 1.44 2020/08/27 06:53:57 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -37,11 +37,11 @@
 #include "make.h"
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: lst.c,v 1.43 2020/08/27 06:28:44 rillig Exp $";
+static char rcsid[] = "$NetBSD: lst.c,v 1.44 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: lst.c,v 1.43 2020/08/27 06:28:44 rillig Exp $");
+__RCSID("$NetBSD: lst.c,v 1.44 2020/08/27 06:53:57 rillig Exp $");
 #endif /* not lint */
 #endif
 
@@ -502,15 +502,6 @@ Lst_MemberS(Lst list, void *datum)
  * should return 0 if traversal should continue and non-zero if it should
  * abort. */
 int
-Lst_ForEach(Lst list, LstActionProc proc, void *procData)
-{
-    return Lst_ForEachFrom(list, Lst_First(list), proc, procData);
-}
-
-/* Apply the given function to each element of the given list. The function
- * should return 0 if traversal should continue and non-zero if it should
- * abort. */
-int
 Lst_ForEachS(Lst list, LstActionProc proc, void *procData)
 {
     if (LstIsEmpty(list))
@@ -522,20 +513,6 @@ Lst_ForEachS(Lst list, LstActionProc pro
  * the given node. The function should return 0 if traversal should continue,
  * and non-zero if it should abort. */
 int
-Lst_ForEachFrom(Lst list, LstNode node,
-		LstActionProc proc, void *procData)
-{
-    if (!LstIsValid(list) || LstIsEmpty(list)) {
-	return 0;
-    }
-
-    return Lst_ForEachFromS(list, node, proc, procData);
-}
-
-/* Apply the given function to each element of the given list, starting from
- * the given node. The function should return 0 if traversal should continue,
- * and non-zero if it should abort. */
-int
 Lst_ForEachFromS(Lst list, LstNode node,
 		 LstActionProc proc, void *procData)
 {

Index: src/usr.bin/make/lst.h
diff -u src/usr.bin/make/lst.h:1.46 src/usr.bin/make/lst.h:1.47
--- src/usr.bin/make/lst.h:1.46	Thu Aug 27 06:28:44 2020
+++ src/usr.bin/make/lst.h	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: lst.h,v 1.46 2020/08/27 06:28:44 rillig Exp $	*/
+/*	$NetBSD: lst.h,v 1.47 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -160,10 +160,8 @@ LstNode		Lst_FindFromS(Lst, LstNode, Lst
  */
 LstNode		Lst_MemberS(Lst, void *);
 /* Apply a function to all elements of a lst */
-int		Lst_ForEach(Lst, LstActionProc, void *);
 int		Lst_ForEachS(Lst, LstActionProc, void *);
 /* Apply a function to all elements of a lst starting from a certain point. */
-int		Lst_ForEachFrom(Lst, LstNode, LstActionProc, void *);
 int		Lst_ForEachFromS(Lst, LstNode, LstActionProc, void *);
 /*
  * these functions are for dealing with a list as a table, of sorts.

Index: src/usr.bin/make/main.c
diff -u src/usr.bin/make/main.c:1.314 src/usr.bin/make/main.c:1.315
--- src/usr.bin/make/main.c:1.314	Wed Aug 26 22:55:46 2020
+++ src/usr.bin/make/main.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.314 2020/08/26 22:55:46 rillig Exp $	*/
+/*	$NetBSD: main.c,v 1.315 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,7 +69,7 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: main.c,v 1.314 2020/08/26 22:55:46 rillig Exp $";
+static char rcsid[] = "$NetBSD: main.c,v 1.315 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
@@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19
 #if 0
 static char sccsid[] = "@(#)main.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: main.c,v 1.314 2020/08/26 22:55:46 rillig Exp $");
+__RCSID("$NetBSD: main.c,v 1.315 2020/08/27 06:53:57 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -2041,7 +2041,7 @@ PrintOnError(GNode *gn, const char *s)
 	 */
 	Var_Set(".ERROR_TARGET", gn->name, VAR_GLOBAL);
 	Var_Delete(".ERROR_CMD", VAR_GLOBAL);
-	Lst_ForEach(gn->commands, addErrorCMD, gn);
+	Lst_ForEachS(gn->commands, addErrorCMD, gn);
     }
     expr = "${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'\n@}";
     cp = Var_Subst(expr, VAR_GLOBAL, VARE_WANTRES);

Index: src/usr.bin/make/make.c
diff -u src/usr.bin/make/make.c:1.125 src/usr.bin/make/make.c:1.126
--- src/usr.bin/make/make.c:1.125	Thu Aug 27 06:31:46 2020
+++ src/usr.bin/make/make.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: make.c,v 1.125 2020/08/27 06:31:46 rillig Exp $	*/
+/*	$NetBSD: make.c,v 1.126 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: make.c,v 1.125 2020/08/27 06:31:46 rillig Exp $";
+static char rcsid[] = "$NetBSD: make.c,v 1.126 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)make.c	8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: make.c,v 1.125 2020/08/27 06:31:46 rillig Exp $");
+__RCSID("$NetBSD: make.c,v 1.126 2020/08/27 06:53:57 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -146,7 +146,7 @@ make_abort(GNode *gn, int line)
 
     fprintf(debug_file, "make_abort from line %d\n", line);
     Targ_PrintNode(gn, &two);
-    Lst_ForEach(toBeMade, Targ_PrintNode, &two);
+    Lst_ForEachS(toBeMade, Targ_PrintNode, &two);
     Targ_PrintGraph(3);
     abort();
 }
@@ -382,7 +382,7 @@ Make_OODate(GNode *gn)
      * thinking they're out-of-date.
      */
     if (!oodate) {
-	Lst_ForEach(gn->parents, MakeTimeStamp, gn);
+	Lst_ForEachS(gn->parents, MakeTimeStamp, gn);
     }
 
     return oodate;
@@ -735,7 +735,7 @@ Make_Update(GNode *cgn)
     parents = centurion->parents;
 
     /* If this was a .ORDER node, schedule the RHS */
-    Lst_ForEach(centurion->order_succ, MakeBuildParent, Lst_First(toBeMade));
+    Lst_ForEachS(centurion->order_succ, MakeBuildParent, Lst_First(toBeMade));
 
     /* Now mark all the parents as having one less unmade child */
     Lst_OpenS(parents);
@@ -816,8 +816,8 @@ Make_Update(GNode *cgn)
 		fprintf(debug_file, "- not deferred\n");
 	    continue;
 	}
-	if (pgn->order_pred
-		&& Lst_ForEach(pgn->order_pred, MakeCheckOrder, 0)) {
+	assert(pgn->order_pred != NULL);
+	if (Lst_ForEachS(pgn->order_pred, MakeCheckOrder, 0)) {
 	    /* A .ORDER rule stops us building this */
 	    continue;
 	}
@@ -977,8 +977,8 @@ Make_DoAllVar(GNode *gn)
     if (gn->flags & DONE_ALLSRC)
 	return;
 
-    Lst_ForEach(gn->children, MakeUnmark, gn);
-    Lst_ForEach(gn->children, MakeAddAllSrc, gn);
+    Lst_ForEachS(gn->children, MakeUnmark, gn);
+    Lst_ForEachS(gn->children, MakeAddAllSrc, gn);
 
     if (!Var_Exists (OODATE, gn)) {
 	Var_Set(OODATE, "", gn);
@@ -1037,7 +1037,8 @@ MakeBuildChild(void *v_cn, void *toBeMad
 	return 0;
 
     /* If this node is on the RHS of a .ORDER, check LHSs. */
-    if (cn->order_pred && Lst_ForEach(cn->order_pred, MakeCheckOrder, 0)) {
+    assert(cn->order_pred);
+    if (Lst_ForEachS(cn->order_pred, MakeCheckOrder, 0)) {
 	/* Can't build this (or anything else in this child list) yet */
 	cn->made = DEFERRED;
 	return 0;			/* but keep looking */
@@ -1054,7 +1055,7 @@ MakeBuildChild(void *v_cn, void *toBeMad
 	Lst_InsertBeforeS(toBeMade, toBeMade_next, cn);
 
     if (cn->unmade_cohorts != 0)
-	Lst_ForEach(cn->cohorts, MakeBuildChild, toBeMade_next);
+	Lst_ForEachS(cn->cohorts, MakeBuildChild, toBeMade_next);
 
     /*
      * If this node is a .WAIT node with unmade chlidren
@@ -1120,7 +1121,7 @@ MakeStartJobs(void)
 	     * just before the current first element.
 	     */
 	    gn->made = DEFERRED;
-	    Lst_ForEach(gn->children, MakeBuildChild, Lst_First(toBeMade));
+	    Lst_ForEachS(gn->children, MakeBuildChild, Lst_First(toBeMade));
 	    /* and drop this node on the floor */
 	    if (DEBUG(MAKE))
 		fprintf(debug_file, "dropped %s%s\n", gn->name, gn->cohort_num);
@@ -1236,7 +1237,7 @@ MakePrintStatus(void *gnp, void *v_error
 		GNode_FprintDetails(debug_file, " (", gn, ")!\n");
 	    }
 	    /* Most likely problem is actually caused by .ORDER */
-	    Lst_ForEach(gn->order_pred, MakePrintStatusOrder, gn);
+	    Lst_ForEachS(gn->order_pred, MakePrintStatusOrder, gn);
 	    break;
 	default:
 	    /* Errors - already counted */
@@ -1260,7 +1261,7 @@ MakePrintStatus(void *gnp, void *v_error
     if (!(gn->flags & CYCLE)) {
 	/* Fist time we've seen this node, check all children */
 	gn->flags |= CYCLE;
-	Lst_ForEach(gn->children, MakePrintStatus, errors);
+	Lst_ForEachS(gn->children, MakePrintStatus, errors);
 	/* Mark that this node needn't be processed again */
 	gn->flags |= DONECYCLE;
 	return 0;
@@ -1274,7 +1275,7 @@ MakePrintStatus(void *gnp, void *v_error
 	return 1;
 
     /* Reporting for our children will give the rest of the loop */
-    Lst_ForEach(gn->children, MakePrintStatus, errors);
+    Lst_ForEachS(gn->children, MakePrintStatus, errors);
     return 0;
 }
 
@@ -1342,21 +1343,21 @@ Make_ExpandUse(Lst targs)
 
 	(void)Dir_MTime(gn, 0);
 	Var_Set(TARGET, gn->path ? gn->path : gn->name, gn);
-	Lst_ForEach(gn->children, MakeUnmark, gn);
-	Lst_ForEach(gn->children, MakeHandleUse, gn);
+	Lst_ForEachS(gn->children, MakeUnmark, gn);
+	Lst_ForEachS(gn->children, MakeHandleUse, gn);
 
 	if ((gn->type & OP_MADE) == 0)
 	    Suff_FindDeps(gn);
 	else {
 	    /* Pretend we made all this node's children */
-	    Lst_ForEach(gn->children, MakeFindChild, gn);
+	    Lst_ForEachS(gn->children, MakeFindChild, gn);
 	    if (gn->unmade != 0)
 		    printf("Warning: %s%s still has %d unmade children\n",
 			    gn->name, gn->cohort_num, gn->unmade);
 	}
 
 	if (gn->unmade != 0)
-	    Lst_ForEach(gn->children, MakeAddChild, examine);
+	    Lst_ForEachS(gn->children, MakeAddChild, examine);
     }
 
     Lst_FreeS(examine);
@@ -1429,7 +1430,7 @@ Make_ProcessWait(Lst targs)
     /* Get it displayed in the diag dumps */
     Lst_PrependS(Targ_List(), pgn);
 
-    Lst_ForEach(targs, link_parent, pgn);
+    Lst_ForEachS(targs, link_parent, pgn);
 
     /* Start building with the 'dummy' .MAIN' node */
     MakeBuildChild(pgn, NULL);
@@ -1549,7 +1550,7 @@ Make_Run(Lst targs)
     if (DEBUG(MAKE))
 	 fprintf(debug_file, "done: errors %d\n", errors);
     if (errors == 0) {
-	Lst_ForEach(targs, MakePrintStatus, &errors);
+	Lst_ForEachS(targs, MakePrintStatus, &errors);
 	if (DEBUG(MAKE)) {
 	    fprintf(debug_file, "done: errors %d\n", errors);
 	    if (errors)

Index: src/usr.bin/make/meta.c
diff -u src/usr.bin/make/meta.c:1.100 src/usr.bin/make/meta.c:1.101
--- src/usr.bin/make/meta.c:1.100	Wed Aug 26 22:55:46 2020
+++ src/usr.bin/make/meta.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.c,v 1.100 2020/08/26 22:55:46 rillig Exp $ */
+/*      $NetBSD: meta.c,v 1.101 2020/08/27 06:53:57 rillig Exp $ */
 
 /*
  * Implement 'meta' mode.
@@ -424,7 +424,7 @@ meta_needed(GNode *gn, const char *dname
     }
     if ((gn->type & (OP_META|OP_SUBMAKE)) == OP_SUBMAKE) {
 	/* OP_SUBMAKE is a bit too aggressive */
-	if (Lst_ForEach(gn->commands, is_submake, gn)) {
+	if (Lst_ForEachS(gn->commands, is_submake, gn)) {
 	    if (DEBUG(META))
 		fprintf(debug_file, "Skipping meta for %s: .SUBMAKE\n",
 			gn->name);
@@ -517,7 +517,7 @@ meta_create(BuildMon *pbm, GNode *gn)
 
     mf.gn = gn;
 
-    Lst_ForEach(gn->commands, printCMD, &mf);
+    Lst_ForEachS(gn->commands, printCMD, &mf);
 
     fprintf(mf.fp, "CWD %s\n", getcwd(buf, sizeof(buf)));
     fprintf(mf.fp, "TARGET %s\n", tname);
@@ -1001,7 +1001,7 @@ meta_ignore(GNode *gn, const char *p)
 
     if (*p == '/') {
 	cached_realpath(p, fname); /* clean it up */
-	if (Lst_ForEach(metaIgnorePaths, prefix_match, fname)) {
+	if (Lst_ForEachS(metaIgnorePaths, prefix_match, fname)) {
 #ifdef DEBUG_META_MODE
 	    if (DEBUG(META))
 		fprintf(debug_file, "meta_oodate: ignoring path: %s\n",
@@ -1397,7 +1397,7 @@ meta_oodate(GNode *gn, Boolean oodate)
 		    if (strncmp(p, cwd, cwdlen) == 0)
 			break;
 
-		    if (!Lst_ForEach(metaBailiwick, prefix_match, p))
+		    if (!Lst_ForEachS(metaBailiwick, prefix_match, p))
 			break;
 
 		    /* tmpdir might be within */

Index: src/usr.bin/make/parse.c
diff -u src/usr.bin/make/parse.c:1.264 src/usr.bin/make/parse.c:1.265
--- src/usr.bin/make/parse.c:1.264	Thu Aug 27 06:13:53 2020
+++ src/usr.bin/make/parse.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: parse.c,v 1.264 2020/08/27 06:13:53 rillig Exp $	*/
+/*	$NetBSD: parse.c,v 1.265 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: parse.c,v 1.264 2020/08/27 06:13:53 rillig Exp $";
+static char rcsid[] = "$NetBSD: parse.c,v 1.265 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)parse.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: parse.c,v 1.264 2020/08/27 06:13:53 rillig Exp $");
+__RCSID("$NetBSD: parse.c,v 1.265 2020/08/27 06:53:57 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -981,7 +981,8 @@ ParseDoSrc(int tOp, const char *src)
 	if (keywd != -1) {
 	    int op = parseKeywords[keywd].op;
 	    if (op != 0) {
-		Lst_ForEach(targets, ParseDoOp, &op);
+		if (targets != NULL)
+		    Lst_ForEachS(targets, ParseDoOp, &op);
 		return;
 	    }
 	    if (parseKeywords[keywd].spec == Wait) {
@@ -999,7 +1000,8 @@ ParseDoSrc(int tOp, const char *src)
 		if (doing_depend)
 		    ParseMark(gn);
 		gn->type = OP_WAIT | OP_PHONY | OP_DEPENDS | OP_NOTMAIN;
-		Lst_ForEach(targets, ParseLinkSrc, gn);
+		if (targets != NULL)
+		    Lst_ForEachS(targets, ParseLinkSrc, gn);
 		return;
 	    }
 	}
@@ -1067,7 +1069,8 @@ ParseDoSrc(int tOp, const char *src)
 	if (tOp) {
 	    gn->type |= tOp;
 	} else {
-	    Lst_ForEach(targets, ParseLinkSrc, gn);
+	    if (targets != NULL)
+		Lst_ForEachS(targets, ParseLinkSrc, gn);
 	}
 	break;
     }
@@ -1547,7 +1550,8 @@ ParseDoDependency(char *line)
      * operator a target was defined with. It fails if the operator
      * used isn't consistent across all references.
      */
-    Lst_ForEach(targets, ParseDoOp, &op);
+    if (targets != NULL)
+	Lst_ForEachS(targets, ParseDoOp, &op);
 
     /*
      * Onward to the sources.
@@ -1584,7 +1588,8 @@ ParseDoDependency(char *line)
 		beSilent = TRUE;
 		break;
 	    case ExPath:
-		Lst_ForEach(paths, ParseClearPath, NULL);
+		if (paths != NULL)
+		    Lst_ForEachS(paths, ParseClearPath, NULL);
 		Dir_SetPATH();
 		break;
 #ifdef POSIX
@@ -1659,7 +1664,8 @@ ParseDoDependency(char *line)
 		    Suff_AddSuffix(line, &mainNode);
 		    break;
 		case ExPath:
-		    Lst_ForEach(paths, ParseAddDir, line);
+		    if (paths != NULL)
+			Lst_ForEachS(paths, ParseAddDir, line);
 		    break;
 		case Includes:
 		    Suff_AddInclude(line);
@@ -1740,14 +1746,14 @@ ParseDoDependency(char *line)
 	}
     }
 
-    if (mainNode == NULL) {
+    if (mainNode == NULL && targets != NULL) {
 	/*
 	 * If we have yet to decide on a main target to make, in the
 	 * absence of any user input, we want the first target on
 	 * the first dependency line that is actually a real target
 	 * (i.e. isn't a .USE or .EXEC rule) to be made.
 	 */
-	Lst_ForEach(targets, ParseFindMain, NULL);
+	Lst_ForEachS(targets, ParseFindMain, NULL);
     }
 
 out:
@@ -3019,7 +3025,7 @@ ParseFinishLine(void)
 {
     if (inLine) {
         if (targets != NULL) {
-	    Lst_ForEach(targets, Suff_EndTransform, NULL);
+	    Lst_ForEachS(targets, Suff_EndTransform, NULL);
 	    Lst_DestroyS(targets, ParseHasCommands);
 	}
 	targets = NULL;
@@ -3133,7 +3139,7 @@ Parse_File(const char *name, int fd)
 		     */
 		    if (targets) {
 			cp = bmake_strdup(cp);
-			Lst_ForEach(targets, ParseAddCmd, cp);
+			Lst_ForEachS(targets, ParseAddCmd, cp);
 #ifdef CLEANUP
 			Lst_AppendS(targCmds, cp);
 #endif

Index: src/usr.bin/make/suff.c
diff -u src/usr.bin/make/suff.c:1.117 src/usr.bin/make/suff.c:1.118
--- src/usr.bin/make/suff.c:1.117	Wed Aug 26 23:08:26 2020
+++ src/usr.bin/make/suff.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: suff.c,v 1.117 2020/08/26 23:08:26 rillig Exp $	*/
+/*	$NetBSD: suff.c,v 1.118 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: suff.c,v 1.117 2020/08/26 23:08:26 rillig Exp $";
+static char rcsid[] = "$NetBSD: suff.c,v 1.118 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)suff.c	8.4 (Berkeley) 3/21/94";
 #else
-__RCSID("$NetBSD: suff.c,v 1.117 2020/08/26 23:08:26 rillig Exp $");
+__RCSID("$NetBSD: suff.c,v 1.118 2020/08/27 06:53:57 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1000,12 +1000,12 @@ Suff_AddSuffix(char *str, GNode **gn)
 	gs.gn = gn;
 	gs.s  = s;
 	gs.r  = FALSE;
-	Lst_ForEach(Targ_List(), SuffScanTargets, &gs);
+	Lst_ForEachS(Targ_List(), SuffScanTargets, &gs);
 	/*
 	 * Look for any existing transformations from or to this suffix.
 	 * XXX: Only do this after a Suff_ClearSuffixes?
 	 */
-	Lst_ForEach(transforms, SuffRebuildGraph, s);
+	Lst_ForEachS(transforms, SuffRebuildGraph, s);
     }
 }
 
@@ -1212,7 +1212,7 @@ SuffAddSrc(void *sp, void *lsp)
 	s2->cp = Lst_Init();
 	Lst_AppendS(targ->cp, s2);
 	fprintf(debug_file, "1 add %p %p to %p:", targ, s2, ls->l);
-	Lst_ForEach(ls->l, PrintAddr, NULL);
+	Lst_ForEachS(ls->l, PrintAddr, NULL);
 	fprintf(debug_file, "\n");
 #endif
     }
@@ -1230,7 +1230,7 @@ SuffAddSrc(void *sp, void *lsp)
     s2->cp = Lst_Init();
     Lst_AppendS(targ->cp, s2);
     fprintf(debug_file, "2 add %p %p to %p:", targ, s2, ls->l);
-    Lst_ForEach(ls->l, PrintAddr, NULL);
+    Lst_ForEachS(ls->l, PrintAddr, NULL);
     fprintf(debug_file, "\n");
 #endif
 
@@ -1261,7 +1261,7 @@ SuffAddLevel(Lst l, Src *targ)
     ls.s = targ;
     ls.l = l;
 
-    Lst_ForEach(targ->suff->children, SuffAddSrc, &ls);
+    Lst_ForEachS(targ->suff->children, SuffAddSrc, &ls);
 }
 
 /*-
@@ -1287,7 +1287,7 @@ SuffRemoveSrc(Lst l)
 
 #ifdef DEBUG_SRC
     fprintf(debug_file, "cleaning %lx: ", (unsigned long) l);
-    Lst_ForEach(l, PrintAddr, NULL);
+    Lst_ForEachS(l, PrintAddr, NULL);
     fprintf(debug_file, "\n");
 #endif
 
@@ -1319,7 +1319,7 @@ SuffRemoveSrc(Lst l)
 #ifdef DEBUG_SRC
 	else {
 	    fprintf(debug_file, "keep: [l=%p] p=%p %d: ", l, s, s->children);
-	    Lst_ForEach(s->cp, PrintAddr, NULL);
+	    Lst_ForEachS(s->cp, PrintAddr, NULL);
 	    fprintf(debug_file, "\n");
 	}
 #endif
@@ -2649,7 +2649,7 @@ SuffPrintTrans(void *tp, void *dummy MAK
     fprintf(debug_file, "%-16s: ", t->name);
     Targ_PrintType(t->type);
     fputc('\n', debug_file);
-    Lst_ForEach(t->commands, Targ_PrintCmd, NULL);
+    Lst_ForEachS(t->commands, Targ_PrintCmd, NULL);
     fputc('\n', debug_file);
     return 0;
 }
@@ -2658,8 +2658,8 @@ void
 Suff_PrintAll(void)
 {
     fprintf(debug_file, "#*** Suffixes:\n");
-    Lst_ForEach(sufflist, SuffPrintSuff, NULL);
+    Lst_ForEachS(sufflist, SuffPrintSuff, NULL);
 
     fprintf(debug_file, "#*** Transformations:\n");
-    Lst_ForEach(transforms, SuffPrintTrans, NULL);
+    Lst_ForEachS(transforms, SuffPrintTrans, NULL);
 }

Index: src/usr.bin/make/targ.c
diff -u src/usr.bin/make/targ.c:1.73 src/usr.bin/make/targ.c:1.74
--- src/usr.bin/make/targ.c:1.73	Wed Aug 26 22:55:46 2020
+++ src/usr.bin/make/targ.c	Thu Aug 27 06:53:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: targ.c,v 1.73 2020/08/26 22:55:46 rillig Exp $	*/
+/*	$NetBSD: targ.c,v 1.74 2020/08/27 06:53:57 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: targ.c,v 1.73 2020/08/26 22:55:46 rillig Exp $";
+static char rcsid[] = "$NetBSD: targ.c,v 1.74 2020/08/27 06:53:57 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)targ.c	8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: targ.c,v 1.73 2020/08/26 22:55:46 rillig Exp $");
+__RCSID("$NetBSD: targ.c,v 1.74 2020/08/27 06:53:57 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -662,7 +662,7 @@ Targ_PrintNode(void *gnp, void *passp)
 	    }
 	    if (!Lst_IsEmpty (gn->iParents)) {
 		fprintf(debug_file, "# implicit parents: ");
-		Lst_ForEach(gn->iParents, TargPrintName, NULL);
+		Lst_ForEachS(gn->iParents, TargPrintName, NULL);
 		fprintf(debug_file, "\n");
 	    }
 	} else {
@@ -671,17 +671,17 @@ Targ_PrintNode(void *gnp, void *passp)
 	}
 	if (!Lst_IsEmpty (gn->parents)) {
 	    fprintf(debug_file, "# parents: ");
-	    Lst_ForEach(gn->parents, TargPrintName, NULL);
+	    Lst_ForEachS(gn->parents, TargPrintName, NULL);
 	    fprintf(debug_file, "\n");
 	}
 	if (!Lst_IsEmpty (gn->order_pred)) {
 	    fprintf(debug_file, "# order_pred: ");
-	    Lst_ForEach(gn->order_pred, TargPrintName, NULL);
+	    Lst_ForEachS(gn->order_pred, TargPrintName, NULL);
 	    fprintf(debug_file, "\n");
 	}
 	if (!Lst_IsEmpty (gn->order_succ)) {
 	    fprintf(debug_file, "# order_succ: ");
-	    Lst_ForEach(gn->order_succ, TargPrintName, NULL);
+	    Lst_ForEachS(gn->order_succ, TargPrintName, NULL);
 	    fprintf(debug_file, "\n");
 	}
 
@@ -695,12 +695,12 @@ Targ_PrintNode(void *gnp, void *passp)
 		fprintf(debug_file, ":: "); break;
 	}
 	Targ_PrintType(gn->type);
-	Lst_ForEach(gn->children, TargPrintName, NULL);
+	Lst_ForEachS(gn->children, TargPrintName, NULL);
 	fprintf(debug_file, "\n");
-	Lst_ForEach(gn->commands, Targ_PrintCmd, NULL);
+	Lst_ForEachS(gn->commands, Targ_PrintCmd, NULL);
 	fprintf(debug_file, "\n\n");
 	if (gn->type & OP_DOUBLEDEP) {
-	    Lst_ForEach(gn->cohorts, Targ_PrintNode, &pass);
+	    Lst_ForEachS(gn->cohorts, Targ_PrintNode, &pass);
 	}
     }
     return 0;
@@ -754,10 +754,10 @@ void
 Targ_PrintGraph(int pass)
 {
     fprintf(debug_file, "#*** Input graph:\n");
-    Lst_ForEach(allTargets, Targ_PrintNode, &pass);
+    Lst_ForEachS(allTargets, Targ_PrintNode, &pass);
     fprintf(debug_file, "\n\n");
     fprintf(debug_file, "#\n#   Files that are only sources:\n");
-    Lst_ForEach(allTargets, TargPrintOnlySrc, NULL);
+    Lst_ForEachS(allTargets, TargPrintOnlySrc, NULL);
     fprintf(debug_file, "#*** Global Variables:\n");
     Var_Dump(VAR_GLOBAL);
     fprintf(debug_file, "#*** Command-line Variables:\n");
@@ -798,7 +798,7 @@ TargPropagateNode(void *gnp, void *junk 
     GNode	  *gn = (GNode *)gnp;
 
     if (gn->type & OP_DOUBLEDEP)
-	Lst_ForEach(gn->cohorts, TargPropagateCohort, gnp);
+	Lst_ForEachS(gn->cohorts, TargPropagateCohort, gnp);
     return 0;
 }
 
@@ -847,5 +847,5 @@ TargPropagateCohort(void *cgnp, void *pg
 void
 Targ_Propagate(void)
 {
-    Lst_ForEach(allTargets, TargPropagateNode, NULL);
+    Lst_ForEachS(allTargets, TargPropagateNode, NULL);
 }

Reply via email to