Module Name:    src
Committed By:   rillig
Date:           Tue Jul 28 16:42:22 UTC 2020

Modified Files:
        src/usr.bin/make: arch.c compat.c for.c job.c main.c make.c meta.c
            nonints.h parse.c suff.c var.c

Log Message:
make(1): remove dead code from Var_Subst

The first parameter from Var_Subst had been a literal NULL in all cases.
These have been fixed using this command:

sed -i 's|Var_Subst(NULL, |Var_Subst(|' *.c

The one remaining case was not found because the "NULL," was followed by
a line break instead of a space.

The removed code probably wouldn't have worked as expected anyway.
Expanding a single variable to a literal string would have led to
unexpected behavior for cases like ${VAR:M${pattern}}, in case pattern
would contain an unescaped ':' itself.


To generate a diff of this commit:
cvs rdiff -u -r1.76 -r1.77 src/usr.bin/make/arch.c
cvs rdiff -u -r1.114 -r1.115 src/usr.bin/make/compat.c
cvs rdiff -u -r1.55 -r1.56 src/usr.bin/make/for.c
cvs rdiff -u -r1.202 -r1.203 src/usr.bin/make/job.c
cvs rdiff -u -r1.283 -r1.284 src/usr.bin/make/main.c
cvs rdiff -u -r1.100 -r1.101 src/usr.bin/make/make.c
cvs rdiff -u -r1.88 -r1.89 src/usr.bin/make/meta.c
cvs rdiff -u -r1.86 -r1.87 src/usr.bin/make/nonints.h
cvs rdiff -u -r1.238 -r1.239 src/usr.bin/make/parse.c
cvs rdiff -u -r1.90 -r1.91 src/usr.bin/make/suff.c
cvs rdiff -u -r1.351 -r1.352 src/usr.bin/make/var.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/arch.c
diff -u src/usr.bin/make/arch.c:1.76 src/usr.bin/make/arch.c:1.77
--- src/usr.bin/make/arch.c:1.76	Mon Jul 27 19:06:45 2020
+++ src/usr.bin/make/arch.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: arch.c,v 1.76 2020/07/27 19:06:45 rillig Exp $	*/
+/*	$NetBSD: arch.c,v 1.77 2020/07/28 16:42:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: arch.c,v 1.76 2020/07/27 19:06:45 rillig Exp $";
+static char rcsid[] = "$NetBSD: arch.c,v 1.77 2020/07/28 16:42:22 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)arch.c	8.2 (Berkeley) 1/2/94";
 #else
-__RCSID("$NetBSD: arch.c,v 1.76 2020/07/27 19:06:45 rillig Exp $");
+__RCSID("$NetBSD: arch.c,v 1.77 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -276,7 +276,7 @@ Arch_ParseArchive(char **linePtr, Lst no
 
     *cp++ = '\0';
     if (subLibName) {
-	libName = Var_Subst(NULL, libName, ctxt, VARE_UNDEFERR|VARE_WANTRES);
+	libName = Var_Subst(libName, ctxt, VARE_UNDEFERR|VARE_WANTRES);
     }
 
 
@@ -356,8 +356,7 @@ Arch_ParseArchive(char **linePtr, Lst no
 	    char    *oldMemName = memName;
 	    size_t   sz;
 
-	    memName = Var_Subst(NULL, memName, ctxt,
-				VARE_UNDEFERR|VARE_WANTRES);
+	    memName = Var_Subst(memName, ctxt, VARE_UNDEFERR | VARE_WANTRES);
 
 	    /*
 	     * Now form an archive spec and recurse to deal with nested

Index: src/usr.bin/make/compat.c
diff -u src/usr.bin/make/compat.c:1.114 src/usr.bin/make/compat.c:1.115
--- src/usr.bin/make/compat.c:1.114	Sun Jul 19 12:26:17 2020
+++ src/usr.bin/make/compat.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat.c,v 1.114 2020/07/19 12:26:17 rillig Exp $	*/
+/*	$NetBSD: compat.c,v 1.115 2020/07/28 16:42:22 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.114 2020/07/19 12:26:17 rillig Exp $";
+static char rcsid[] = "$NetBSD: compat.c,v 1.115 2020/07/28 16:42:22 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.114 2020/07/19 12:26:17 rillig Exp $");
+__RCSID("$NetBSD: compat.c,v 1.115 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -235,7 +235,7 @@ CompatRunCommand(void *cmdp, void *gnp)
     doIt = FALSE;
 
     cmdNode = Lst_Member(gn->commands, cmd);
-    cmdStart = Var_Subst(NULL, cmd, gn, VARE_WANTRES);
+    cmdStart = Var_Subst(cmd, gn, VARE_WANTRES);
 
     /*
      * brk_string will return an argv with a NULL in av[0], thus causing

Index: src/usr.bin/make/for.c
diff -u src/usr.bin/make/for.c:1.55 src/usr.bin/make/for.c:1.56
--- src/usr.bin/make/for.c:1.55	Sun Jul 19 12:26:17 2020
+++ src/usr.bin/make/for.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: for.c,v 1.55 2020/07/19 12:26:17 rillig Exp $	*/
+/*	$NetBSD: for.c,v 1.56 2020/07/28 16:42:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1992, The Regents of the University of California.
@@ -30,14 +30,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: for.c,v 1.55 2020/07/19 12:26:17 rillig Exp $";
+static char rcsid[] = "$NetBSD: for.c,v 1.56 2020/07/28 16:42:22 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)for.c	8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: for.c,v 1.55 2020/07/19 12:26:17 rillig Exp $");
+__RCSID("$NetBSD: for.c,v 1.56 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -216,7 +216,7 @@ For_Eval(char *line)
      * We can't do the escapes here - because we don't know whether
      * we are substuting into ${...} or $(...).
      */
-    sub = Var_Subst(NULL, ptr, VAR_GLOBAL, VARE_WANTRES);
+    sub = Var_Subst(ptr, VAR_GLOBAL, VARE_WANTRES);
 
     /*
      * Split into words allowing for quoted strings.

Index: src/usr.bin/make/job.c
diff -u src/usr.bin/make/job.c:1.202 src/usr.bin/make/job.c:1.203
--- src/usr.bin/make/job.c:1.202	Sun Jul 19 12:26:17 2020
+++ src/usr.bin/make/job.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: job.c,v 1.202 2020/07/19 12:26:17 rillig Exp $	*/
+/*	$NetBSD: job.c,v 1.203 2020/07/28 16:42:22 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.202 2020/07/19 12:26:17 rillig Exp $";
+static char rcsid[] = "$NetBSD: job.c,v 1.203 2020/07/28 16:42:22 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.202 2020/07/19 12:26:17 rillig Exp $");
+__RCSID("$NetBSD: job.c,v 1.203 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -729,7 +729,7 @@ JobPrintCommand(void *cmdp, void *jobp)
 
     numCommands += 1;
 
-    cmdStart = cmd = Var_Subst(NULL, cmd, job->node, VARE_WANTRES);
+    cmdStart = cmd = Var_Subst(cmd, job->node, VARE_WANTRES);
 
     cmdTemplate = "%s\n";
 
@@ -917,7 +917,7 @@ JobPrintCommand(void *cmdp, void *jobp)
 static int
 JobSaveCommand(void *cmd, void *gn)
 {
-    cmd = Var_Subst(NULL, (char *)cmd, (GNode *)gn, VARE_WANTRES);
+    cmd = Var_Subst((char *)cmd, (GNode *)gn, VARE_WANTRES);
     (void)Lst_AtEnd(postCommands->commands, cmd);
     return 0;
 }
@@ -2248,7 +2248,7 @@ Job_SetPrefix(void)
 	Var_Set(MAKE_JOB_PREFIX, "---", VAR_GLOBAL);
     }
 
-    targPrefix = Var_Subst(NULL, "${" MAKE_JOB_PREFIX "}",
+    targPrefix = Var_Subst("${" MAKE_JOB_PREFIX "}",
 			   VAR_GLOBAL, VARE_WANTRES);
 }
 

Index: src/usr.bin/make/main.c
diff -u src/usr.bin/make/main.c:1.283 src/usr.bin/make/main.c:1.284
--- src/usr.bin/make/main.c:1.283	Mon Jul 20 18:12:48 2020
+++ src/usr.bin/make/main.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: main.c,v 1.283 2020/07/20 18:12:48 sjg Exp $	*/
+/*	$NetBSD: main.c,v 1.284 2020/07/28 16:42:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,7 +69,7 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: main.c,v 1.283 2020/07/20 18:12:48 sjg Exp $";
+static char rcsid[] = "$NetBSD: main.c,v 1.284 2020/07/28 16:42:22 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.283 2020/07/20 18:12:48 sjg Exp $");
+__RCSID("$NetBSD: main.c,v 1.284 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -772,7 +772,7 @@ Main_SetVarObjdir(const char *var, const
 
 	/* expand variable substitutions */
 	if (strchr(path, '$') != 0)
-		xpath = Var_Subst(NULL, path, VAR_GLOBAL, VARE_WANTRES);
+		xpath = Var_Subst(path, VAR_GLOBAL, VARE_WANTRES);
 	else
 		xpath = path;
 
@@ -838,7 +838,7 @@ MakeMode(const char *mode)
     char *mp = NULL;
 
     if (!mode)
-	mode = mp = Var_Subst(NULL, "${" MAKE_MODE ":tl}",
+	mode = mp = Var_Subst("${" MAKE_MODE ":tl}",
 			      VAR_GLOBAL, VARE_WANTRES);
 
     if (mode && *mode) {
@@ -875,8 +875,7 @@ doPrintVars(void)
 		char *p1;
 
 		if (strchr(var, '$')) {
-			value = p1 = Var_Subst(NULL, var, VAR_GLOBAL,
-			    VARE_WANTRES);
+			value = p1 = Var_Subst(var, VAR_GLOBAL, VARE_WANTRES);
 		} else if (expandVars) {
 			char tmp[128];
 			int len = snprintf(tmp, sizeof(tmp), "${%s}", var);
@@ -884,8 +883,7 @@ doPrintVars(void)
 			if (len >= (int)sizeof(tmp))
 				Fatal("%s: variable name too big: %s",
 				    progname, var);
-			value = p1 = Var_Subst(NULL, tmp, VAR_GLOBAL,
-			    VARE_WANTRES);
+			value = p1 = Var_Subst(tmp, VAR_GLOBAL, VARE_WANTRES);
 		} else {
 			value = Var_Value(var, VAR_GLOBAL, &p1);
 		}
@@ -1348,7 +1346,7 @@ main(int argc, char **argv)
 			Fatal("%s: cannot open %s.", progname,
 			    (char *)Lst_Datum(ln));
 	} else {
-	    p1 = Var_Subst(NULL, "${" MAKEFILE_PREFERENCE "}",
+	    p1 = Var_Subst("${" MAKEFILE_PREFERENCE "}",
 		VAR_CMD, VARE_WANTRES);
 	    if (p1) {
 		(void)str2Lst_Append(makefiles, p1, NULL);
@@ -1359,7 +1357,7 @@ main(int argc, char **argv)
 
 	/* In particular suppress .depend for '-r -V .OBJDIR -f /dev/null' */
 	if (!noBuiltins || !printVars) {
-	    makeDependfile = Var_Subst(NULL, "${.MAKE.DEPENDFILE:T}",
+	    makeDependfile = Var_Subst("${.MAKE.DEPENDFILE:T}",
 		VAR_CMD, VARE_WANTRES);
 	    doing_depend = TRUE;
 	    (void)ReadMakefile(makeDependfile, NULL);
@@ -1379,7 +1377,7 @@ main(int argc, char **argv)
 	    char *value;
 	    int n;
 
-	    value = Var_Subst(NULL, "${.MAKE.JOBS}", VAR_GLOBAL, VARE_WANTRES);
+	    value = Var_Subst("${.MAKE.JOBS}", VAR_GLOBAL, VARE_WANTRES);
 	    n = strtol(value, NULL, 0);
 	    if (n < 1) {
 		(void)fprintf(stderr, "%s: illegal value for .MAKE.JOBS -- must be positive integer!\n",
@@ -1429,7 +1427,7 @@ main(int argc, char **argv)
 		 */
 		static char VPATH[] = "${VPATH}";
 
-		vpath = Var_Subst(NULL, VPATH, VAR_CMD, VARE_WANTRES);
+		vpath = Var_Subst(VPATH, VAR_CMD, VARE_WANTRES);
 		path = vpath;
 		do {
 			/* skip to end of directory */
@@ -2065,7 +2063,7 @@ PrintOnError(GNode *gn, const char *s)
 	Lst_ForEach(gn->commands, addErrorCMD, gn);
     }
     const char *expr = "${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'\n@}";
-    char *cp = Var_Subst(NULL, expr, VAR_GLOBAL, VARE_WANTRES);
+    char *cp = Var_Subst(expr, VAR_GLOBAL, VARE_WANTRES);
     if (cp) {
 	if (*cp)
 	    printf("%s", cp);
@@ -2093,7 +2091,7 @@ Main_ExportMAKEFLAGS(Boolean first)
     once = 0;
 
     const char *expr = "${.MAKEFLAGS} ${.MAKEOVERRIDES:O:u:@v@$v=${$v:Q}@}";
-    char *s = Var_Subst(NULL, expr, VAR_CMD, VARE_WANTRES);
+    char *s = Var_Subst(expr, VAR_CMD, VARE_WANTRES);
     if (s != NULL && s[0] != '\0') {
 #ifdef POSIX
 	setenv("MAKEFLAGS", s, 1);
@@ -2115,7 +2113,7 @@ getTmpdir(void)
 	 * Honor $TMPDIR but only if it is valid.
 	 * Ensure it ends with /.
 	 */
-	tmpdir = Var_Subst(NULL, "${TMPDIR:tA:U" _PATH_TMP "}/", VAR_GLOBAL,
+	tmpdir = Var_Subst("${TMPDIR:tA:U" _PATH_TMP "}/", VAR_GLOBAL,
 			   VARE_WANTRES);
 	if (stat(tmpdir, &st) < 0 || !S_ISDIR(st.st_mode)) {
 	    free(tmpdir);
@@ -2209,7 +2207,7 @@ getBoolean(const char *name, Boolean bf)
     char *cp;
 
     if (snprintf(tmp, sizeof(tmp), "${%s:U:tl}", name) < (int)(sizeof(tmp))) {
-	cp = Var_Subst(NULL, tmp, VAR_GLOBAL, VARE_WANTRES);
+	cp = Var_Subst(tmp, VAR_GLOBAL, VARE_WANTRES);
 
 	if (cp) {
 	    bf = s2Boolean(cp, bf);

Index: src/usr.bin/make/make.c
diff -u src/usr.bin/make/make.c:1.100 src/usr.bin/make/make.c:1.101
--- src/usr.bin/make/make.c:1.100	Sun Jul 19 12:26:17 2020
+++ src/usr.bin/make/make.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: make.c,v 1.100 2020/07/19 12:26:17 rillig Exp $	*/
+/*	$NetBSD: make.c,v 1.101 2020/07/28 16:42:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: make.c,v 1.100 2020/07/19 12:26:17 rillig Exp $";
+static char rcsid[] = "$NetBSD: make.c,v 1.101 2020/07/28 16:42:22 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.100 2020/07/19 12:26:17 rillig Exp $");
+__RCSID("$NetBSD: make.c,v 1.101 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -484,7 +484,7 @@ Make_HandleUse(GNode *cgn, GNode *pgn)
 	    } else {
 		free(gn->name);
 	    }
-	    gn->name = Var_Subst(NULL, gn->uname, pgn, VARE_WANTRES);
+	    gn->name = Var_Subst(gn->uname, pgn, VARE_WANTRES);
 	    if (gn->name && gn->uname && strcmp(gn->name, gn->uname) != 0) {
 		/* See if we have a target for this node. */
 		tgn = Targ_FindNode(gn->name, TARG_NOCREATE);

Index: src/usr.bin/make/meta.c
diff -u src/usr.bin/make/meta.c:1.88 src/usr.bin/make/meta.c:1.89
--- src/usr.bin/make/meta.c:1.88	Sun Jul 19 12:35:30 2020
+++ src/usr.bin/make/meta.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*      $NetBSD: meta.c,v 1.88 2020/07/19 12:35:30 rillig Exp $ */
+/*      $NetBSD: meta.c,v 1.89 2020/07/28 16:42:22 rillig Exp $ */
 
 /*
  * Implement 'meta' mode.
@@ -329,7 +329,7 @@ is_submake(void *cmdp, void *gnp)
     }
     cp = strchr(cmd, '$');
     if ((cp)) {
-	mp = Var_Subst(NULL, cmd, gn, VARE_WANTRES);
+	mp = Var_Subst(cmd, gn, VARE_WANTRES);
 	cmd = mp;
     }
     cp2 = strstr(cmd, p_make);
@@ -371,7 +371,7 @@ printCMD(void *cmdp, void *mfpp)
     char *cp = NULL;
 
     if (strchr(cmd, '$')) {
-	cmd = cp = Var_Subst(NULL, cmd, mfp->gn, VARE_WANTRES);
+	cmd = cp = Var_Subst(cmd, mfp->gn, VARE_WANTRES);
     }
     fprintf(mfp->fp, "CMD %s\n", cmd);
     free(cp);
@@ -484,7 +484,7 @@ meta_create(BuildMon *pbm, GNode *gn)
 	char *mp;
 
 	/* Describe the target we are building */
-	mp = Var_Subst(NULL, "${" MAKE_META_PREFIX "}", gn, VARE_WANTRES);
+	mp = Var_Subst("${" MAKE_META_PREFIX "}", gn, VARE_WANTRES);
 	if (*mp)
 	    fprintf(stdout, "%s\n", mp);
 	free(mp);
@@ -626,7 +626,7 @@ meta_mode_init(const char *make_mode)
      * We consider ourselves master of all within ${.MAKE.META.BAILIWICK}
      */
     metaBailiwick = Lst_Init(FALSE);
-    metaBailiwickStr = Var_Subst(NULL, "${.MAKE.META.BAILIWICK:O:u:tA}",
+    metaBailiwickStr = Var_Subst("${.MAKE.META.BAILIWICK:O:u:tA}",
 	VAR_GLOBAL, VARE_WANTRES);
     if (metaBailiwickStr) {
 	str2Lst_Append(metaBailiwick, metaBailiwickStr, NULL);
@@ -637,9 +637,8 @@ meta_mode_init(const char *make_mode)
     metaIgnorePaths = Lst_Init(FALSE);
     Var_Append(MAKE_META_IGNORE_PATHS,
 	       "/dev /etc /proc /tmp /var/run /var/tmp ${TMPDIR}", VAR_GLOBAL);
-    metaIgnorePathsStr = Var_Subst(NULL,
-		   "${" MAKE_META_IGNORE_PATHS ":O:u:tA}", VAR_GLOBAL,
-		   VARE_WANTRES);
+    metaIgnorePathsStr = Var_Subst("${" MAKE_META_IGNORE_PATHS ":O:u:tA}",
+				   VAR_GLOBAL, VARE_WANTRES);
     if (metaIgnorePathsStr) {
 	str2Lst_Append(metaIgnorePaths, metaIgnorePathsStr, NULL);
     }
@@ -818,7 +817,7 @@ meta_job_output(Job *job, char *cp, cons
 	    if (!meta_prefix) {
 		char *cp2;
 
-		meta_prefix = Var_Subst(NULL, "${" MAKE_META_PREFIX "}",
+		meta_prefix = Var_Subst("${" MAKE_META_PREFIX "}",
 					VAR_GLOBAL, VARE_WANTRES);
 		if ((cp2 = strchr(meta_prefix, '$')))
 		    meta_prefix_len = cp2 - meta_prefix;
@@ -1013,7 +1012,7 @@ meta_ignore(GNode *gn, const char *p)
     if (metaIgnorePatterns) {
 	Var_Set(".p.", p, gn);
 	const char *expr = "${" MAKE_META_IGNORE_PATTERNS ":@m@${.p.:M$m}@}";
-	char *pm = Var_Subst(NULL, expr, gn, VARE_WANTRES);
+	char *pm = Var_Subst(expr, gn, VARE_WANTRES);
 	if (*pm) {
 #ifdef DEBUG_META_MODE
 	    if (DEBUG(META))
@@ -1033,7 +1032,7 @@ meta_ignore(GNode *gn, const char *p)
 	snprintf(fname, sizeof(fname),
 		 "${%s:L:${%s:ts:}}",
 		 p, MAKE_META_IGNORE_FILTER);
-	fm = Var_Subst(NULL, fname, gn, VARE_WANTRES);
+	fm = Var_Subst(fname, gn, VARE_WANTRES);
 	if (*fm == '\0') {
 #ifdef DEBUG_META_MODE
 	    if (DEBUG(META))
@@ -1532,7 +1531,7 @@ meta_oodate(GNode *gn, Boolean oodate)
 			if (DEBUG(META))
 			    fprintf(debug_file, "%s: %d: cannot compare command using .OODATE\n", fname, lineno);
 		    }
-		    cmd = Var_Subst(NULL, cmd, gn, VARE_WANTRES|VARE_UNDEFERR);
+		    cmd = Var_Subst(cmd, gn, VARE_WANTRES|VARE_UNDEFERR);
 
 		    if ((cp = strchr(cmd, '\n'))) {
 			int n;

Index: src/usr.bin/make/nonints.h
diff -u src/usr.bin/make/nonints.h:1.86 src/usr.bin/make/nonints.h:1.87
--- src/usr.bin/make/nonints.h:1.86	Sun Jul 26 20:21:31 2020
+++ src/usr.bin/make/nonints.h	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: nonints.h,v 1.86 2020/07/26 20:21:31 rillig Exp $	*/
+/*	$NetBSD: nonints.h,v 1.87 2020/07/28 16:42:22 rillig Exp $	*/
 
 /*-
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -192,7 +192,7 @@ void Var_Append(const char *, const char
 Boolean Var_Exists(const char *, GNode *);
 char *Var_Value(const char *, GNode *, char **);
 const char *Var_Parse(const char *, GNode *, VarEvalFlags, int *, void **);
-char *Var_Subst(const char *, const char *, GNode *, VarEvalFlags);
+char *Var_Subst(const char *, GNode *, VarEvalFlags);
 char *Var_GetTail(const char *);
 char *Var_GetHead(const char *);
 void Var_Init(void);

Index: src/usr.bin/make/parse.c
diff -u src/usr.bin/make/parse.c:1.238 src/usr.bin/make/parse.c:1.239
--- src/usr.bin/make/parse.c:1.238	Mon Jul 20 14:50:41 2020
+++ src/usr.bin/make/parse.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: parse.c,v 1.238 2020/07/20 14:50:41 rillig Exp $	*/
+/*	$NetBSD: parse.c,v 1.239 2020/07/28 16:42:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: parse.c,v 1.238 2020/07/20 14:50:41 rillig Exp $";
+static char rcsid[] = "$NetBSD: parse.c,v 1.239 2020/07/28 16:42:22 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.238 2020/07/20 14:50:41 rillig Exp $");
+__RCSID("$NetBSD: parse.c,v 1.239 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -825,7 +825,7 @@ ParseMessage(char *line)
     while (isspace((unsigned char)*line))
 	line++;
 
-    line = Var_Subst(NULL, line, VAR_CMD, VARE_WANTRES);
+    line = Var_Subst(line, VAR_CMD, VARE_WANTRES);
     Parse_Error(mtype, "%s", line);
     free(line);
 
@@ -1966,7 +1966,7 @@ Parse_DoVar(char *line, GNode *ctxt)
 	if (!Var_Exists(line, ctxt))
 	    Var_Set(line, "", ctxt);
 
-	cp = Var_Subst(NULL, cp, ctxt, VARE_WANTRES|VARE_ASSIGN);
+	cp = Var_Subst(cp, ctxt, VARE_WANTRES|VARE_ASSIGN);
 	oldVars = oldOldVars;
 	freeCp = TRUE;
 
@@ -1981,7 +1981,7 @@ Parse_DoVar(char *line, GNode *ctxt)
 	     * expansion on the whole thing. The resulting string will need
 	     * freeing when we're done.
 	     */
-	    cp = Var_Subst(NULL, cp, VAR_CMD, VARE_UNDEFERR|VARE_WANTRES);
+	    cp = Var_Subst(cp, VAR_CMD, VARE_UNDEFERR|VARE_WANTRES);
 	    freeCp = TRUE;
 	}
 
@@ -2322,7 +2322,7 @@ ParseDoInclude(char *line)
      * Substitute for any variables in the file name before trying to
      * find the thing.
      */
-    file = Var_Subst(NULL, file, VAR_CMD, VARE_WANTRES);
+    file = Var_Subst(file, VAR_CMD, VARE_WANTRES);
 
     Parse_include_file(file, endc == '>', (*line == 'd'), silent);
     free(file);
@@ -2616,7 +2616,7 @@ ParseTraditionalInclude(char *line)
      * Substitute for any variables in the file name before trying to
      * find the thing.
      */
-    all_files = Var_Subst(NULL, file, VAR_CMD, VARE_WANTRES);
+    all_files = Var_Subst(file, VAR_CMD, VARE_WANTRES);
 
     if (*file == '\0') {
 	Parse_Error(PARSE_FATAL,
@@ -2685,7 +2685,7 @@ ParseGmakeExport(char *line)
     /*
      * Expand the value before putting it in the environment.
      */
-    value = Var_Subst(NULL, value, VAR_CMD, VARE_WANTRES);
+    value = Var_Subst(value, VAR_CMD, VARE_WANTRES);
     setenv(variable, value, 1);
     free(value);
 }
@@ -3229,7 +3229,7 @@ Parse_File(const char *name, int fd)
 	     * variables expanded before being parsed. Tell the variable
 	     * module to complain if some variable is undefined...
 	     */
-	    line = Var_Subst(NULL, line, VAR_CMD, VARE_UNDEFERR|VARE_WANTRES);
+	    line = Var_Subst(line, VAR_CMD, VARE_UNDEFERR|VARE_WANTRES);
 
 	    /*
 	     * Need a non-circular list for the target nodes

Index: src/usr.bin/make/suff.c
diff -u src/usr.bin/make/suff.c:1.90 src/usr.bin/make/suff.c:1.91
--- src/usr.bin/make/suff.c:1.90	Sun Jul 26 20:21:31 2020
+++ src/usr.bin/make/suff.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: suff.c,v 1.90 2020/07/26 20:21:31 rillig Exp $	*/
+/*	$NetBSD: suff.c,v 1.91 2020/07/28 16:42:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: suff.c,v 1.90 2020/07/26 20:21:31 rillig Exp $";
+static char rcsid[] = "$NetBSD: suff.c,v 1.91 2020/07/28 16:42:22 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.90 2020/07/26 20:21:31 rillig Exp $");
+__RCSID("$NetBSD: suff.c,v 1.91 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -1557,7 +1557,7 @@ SuffExpandChildren(LstNode cln, GNode *p
     if (DEBUG(SUFF)) {
 	fprintf(debug_file, "Expanding \"%s\"...", cgn->name);
     }
-    cp = Var_Subst(NULL, cgn->name, pgn, VARE_UNDEFERR|VARE_WANTRES);
+    cp = Var_Subst(cgn->name, pgn, VARE_UNDEFERR|VARE_WANTRES);
 
     if (cp != NULL) {
 	Lst	    members = Lst_Init(FALSE);

Index: src/usr.bin/make/var.c
diff -u src/usr.bin/make/var.c:1.351 src/usr.bin/make/var.c:1.352
--- src/usr.bin/make/var.c:1.351	Tue Jul 28 00:01:13 2020
+++ src/usr.bin/make/var.c	Tue Jul 28 16:42:22 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.351 2020/07/28 00:01:13 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.352 2020/07/28 16:42:22 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.351 2020/07/28 00:01:13 rillig Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.352 2020/07/28 16:42:22 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)var.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: var.c,v 1.351 2020/07/28 00:01:13 rillig Exp $");
+__RCSID("$NetBSD: var.c,v 1.352 2020/07/28 16:42:22 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -461,7 +461,7 @@ Var_Delete(const char *name, GNode *ctxt
     char *cp;
 
     if (strchr(name, '$') != NULL) {
-	cp = Var_Subst(NULL, name, VAR_GLOBAL, VARE_WANTRES);
+	cp = Var_Subst(name, VAR_GLOBAL, VARE_WANTRES);
     } else {
 	cp = UNCONST(name);
     }
@@ -547,7 +547,7 @@ Var_Export1(const char *name, VarExportF
 	}
 	n = snprintf(tmp, sizeof(tmp), "${%s}", name);
 	if (n < (int)sizeof(tmp)) {
-	    val = Var_Subst(NULL, tmp, VAR_GLOBAL, VARE_WANTRES);
+	    val = Var_Subst(tmp, VAR_GLOBAL, VARE_WANTRES);
 	    setenv(name, val, 1);
 	    free(val);
 	}
@@ -610,7 +610,7 @@ Var_ExportVars(void)
 	int ac;
 	int i;
 
-	val = Var_Subst(NULL, tmp, VAR_GLOBAL, VARE_WANTRES);
+	val = Var_Subst(tmp, VAR_GLOBAL, VARE_WANTRES);
 	if (*val) {
 	    av = brk_string(val, &ac, FALSE, &as);
 	    for (i = 0; i < ac; i++)
@@ -651,7 +651,7 @@ Var_Export(char *str, int isExport)
 	flags |= VAR_EXPORT_PARENT;
     }
 
-    char *val = Var_Subst(NULL, str, VAR_GLOBAL, VARE_WANTRES);
+    char *val = Var_Subst(str, VAR_GLOBAL, VARE_WANTRES);
     if (*val) {
 	av = brk_string(val, &ac, FALSE, &as);
 	for (i = 0; i < ac; i++) {
@@ -738,7 +738,7 @@ Var_UnExport(char *str)
 
     if (!vlist) {
 	/* Using .MAKE.EXPORTED */
-	vlist = Var_Subst(NULL, "${" MAKE_EXPORTED ":O:u}", VAR_GLOBAL,
+	vlist = Var_Subst("${" MAKE_EXPORTED ":O:u}", VAR_GLOBAL,
 			  VARE_WANTRES);
     }
     if (vlist) {
@@ -767,7 +767,7 @@ Var_UnExport(char *str)
 		n = snprintf(tmp, sizeof(tmp),
 			     "${" MAKE_EXPORTED ":N%s}", v->name);
 		if (n < (int)sizeof(tmp)) {
-		    cp = Var_Subst(NULL, tmp, VAR_GLOBAL, VARE_WANTRES);
+		    cp = Var_Subst(tmp, VAR_GLOBAL, VARE_WANTRES);
 		    Var_Set(MAKE_EXPORTED, cp, VAR_GLOBAL);
 		    free(cp);
 		}
@@ -795,7 +795,7 @@ Var_Set_with_flags(const char *name, con
      * point in searching them all just to save a bit of memory...
      */
     if (strchr(name, '$') != NULL) {
-	expanded_name = Var_Subst(NULL, name, ctxt, VARE_WANTRES);
+	expanded_name = Var_Subst(name, ctxt, VARE_WANTRES);
 	if (expanded_name[0] == '\0') {
 	    if (DEBUG(VAR)) {
 		fprintf(debug_file, "Var_Set(\"%s\", \"%s\", ...) "
@@ -936,7 +936,7 @@ Var_Append(const char *name, const char 
     char *expanded_name = NULL;
 
     if (strchr(name, '$') != NULL) {
-	expanded_name = Var_Subst(NULL, name, ctxt, VARE_WANTRES);
+	expanded_name = Var_Subst(name, ctxt, VARE_WANTRES);
 	if (expanded_name[0] == '\0') {
 	    if (DEBUG(VAR)) {
 		fprintf(debug_file, "Var_Append(\"%s\", \"%s\", ...) "
@@ -1001,7 +1001,7 @@ Var_Exists(const char *name, GNode *ctxt
     char          *cp;
 
     if ((cp = strchr(name, '$')) != NULL)
-	cp = Var_Subst(NULL, name, ctxt, VARE_WANTRES);
+	cp = Var_Subst(name, ctxt, VARE_WANTRES);
     v = VarFind(cp ? cp : name, ctxt, FIND_CMD | FIND_GLOBAL | FIND_ENV);
     free(cp);
     if (v == NULL)
@@ -1278,7 +1278,7 @@ ModifyWord_SYSVSubst(const char *word, S
     Boolean hasPercent;
     const char *ptr = Str_SYSVMatch(word, args->lhs, &len, &hasPercent);
     if (ptr != NULL) {
-	char *varexp = Var_Subst(NULL, args->rhs, args->ctx, VARE_WANTRES);
+	char *varexp = Var_Subst(args->rhs, args->ctx, VARE_WANTRES);
 	Str_SYSVSubst(buf, varexp, ptr, len, hasPercent);
 	free(varexp);
     } else {
@@ -1486,7 +1486,7 @@ ModifyWord_Loop(const char *word, SepBuf
 
     const ModifyWord_LoopArgs *args = data;
     Var_Set_with_flags(args->tvar, word, args->ctx, VAR_NO_EXPORT);
-    char *s = Var_Subst(NULL, args->str, args->ctx, args->eflags);
+    char *s = Var_Subst(args->str, args->ctx, args->eflags);
     if (DEBUG(VAR)) {
 	fprintf(debug_file,
 		"ModifyWord_Loop: in \"%s\", replace \"%s\" with \"%s\" "
@@ -2368,7 +2368,7 @@ ApplyModifier_Match(const char *mod, App
     if (needSubst) {
 	/* pattern contains embedded '$', so use Var_Subst to expand it. */
 	char *old_pattern = pattern;
-	pattern = Var_Subst(NULL, pattern, st->ctxt, st->eflags);
+	pattern = Var_Subst(pattern, st->ctxt, st->eflags);
 	free(old_pattern);
     }
 
@@ -3603,7 +3603,7 @@ Var_Parse(const char * const str, GNode 
      */
     nstr = Buf_GetAll(&v->val, NULL);
     if (strchr(nstr, '$') != NULL && (eflags & VARE_WANTRES) != 0) {
-	nstr = Var_Subst(NULL, nstr, ctxt, eflags);
+	nstr = Var_Subst(nstr, ctxt, eflags);
 	*freePtr = nstr;
     }
 
@@ -3695,7 +3695,7 @@ Var_Parse(const char * const str, GNode 
  *-----------------------------------------------------------------------
  */
 char *
-Var_Subst(const char *var, const char *str, GNode *ctxt, VarEvalFlags eflags)
+Var_Subst(const char *str, GNode *ctxt, VarEvalFlags eflags)
 {
     Buffer	buf;		/* Buffer for forming things */
     const char	*val;		/* Value to substitute for a variable */
@@ -3713,7 +3713,7 @@ Var_Subst(const char *var, const char *s
     while (*str) {
 	if (*str == '\n' && trailingBslash)
 	    Buf_AddByte(&buf, ' ');
-	if (var == NULL && (*str == '$') && (str[1] == '$')) {
+	if ((*str == '$') && (str[1] == '$')) {
 	    /*
 	     * A dollar sign may be escaped either with another dollar sign.
 	     * In such a case, we skip over the escape character and store the
@@ -3735,61 +3735,6 @@ Var_Subst(const char *var, const char *s
 		continue;
 	    Buf_AddBytesBetween(&buf, cp, str);
 	} else {
-	    if (var != NULL) {
-		int expand;
-		for (;;) {
-		    if (str[1] == '\0') {
-			/* A trailing $ is kind of a special case */
-			Buf_AddByte(&buf, str[0]);
-			str++;
-			expand = FALSE;
-		    } else if (str[1] != PROPEN && str[1] != BROPEN) {
-			if (str[1] != *var || strlen(var) > 1) {
-			    Buf_AddBytes(&buf, 2, str);
-			    str += 2;
-			    expand = FALSE;
-			} else
-			    expand = TRUE;
-			break;
-		    } else {
-			const char *p;
-
-			/* Scan up to the end of the variable name. */
-			for (p = &str[2]; *p &&
-			     *p != ':' && *p != PRCLOSE && *p != BRCLOSE; p++)
-			    if (*p == '$')
-				break;
-			/*
-			 * A variable inside the variable. We cannot expand
-			 * the external variable yet, so we try again with
-			 * the nested one
-			 */
-			if (*p == '$') {
-			    Buf_AddBytesBetween(&buf, str, p);
-			    str = p;
-			    continue;
-			}
-
-			if (strncmp(var, str + 2, p - str - 2) != 0 ||
-			    var[p - str - 2] != '\0') {
-			    /*
-			     * Not the variable we want to expand, scan
-			     * until the next variable
-			     */
-			    for (; *p != '$' && *p != '\0'; p++)
-				continue;
-			    Buf_AddBytesBetween(&buf, str, p);
-			    str = p;
-			    expand = FALSE;
-			} else
-			    expand = TRUE;
-			break;
-		    }
-		}
-		if (!expand)
-		    continue;
-	    }
-
 	    val = Var_Parse(str, ctxt, eflags, &length, &freeIt);
 
 	    /*

Reply via email to