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): document where the variable name is ex...
details: https://anonhg.NetBSD.org/src/rev/c5f0559a19f0
branches: trunk
changeset: 977674:c5f0559a19f0
user: rillig <rillig%NetBSD.org@localhost>
date: Fri Oct 30 22:30:42 2020 +0000
description:
make(1): document where the variable name is expanded
diffstat:
usr.bin/make/var.c | 21 +++++++++++++--------
1 files changed, 13 insertions(+), 8 deletions(-)
diffs (105 lines):
diff -r 50a3804af84f -r c5f0559a19f0 usr.bin/make/var.c
--- a/usr.bin/make/var.c Fri Oct 30 22:29:30 2020 +0000
+++ b/usr.bin/make/var.c Fri Oct 30 22:30:42 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: var.c,v 1.606 2020/10/30 20:30:44 rillig Exp $ */
+/* $NetBSD: var.c,v 1.607 2020/10/30 22:30:42 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -129,7 +129,7 @@
#include "metachar.h"
/* "@(#)var.c 8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.606 2020/10/30 20:30:44 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.607 2020/10/30 22:30:42 rillig Exp $");
#define VAR_DEBUG1(fmt, arg1) DEBUG1(VAR, fmt, arg1)
#define VAR_DEBUG2(fmt, arg1, arg2) DEBUG2(VAR, fmt, arg1, arg2)
@@ -351,7 +351,7 @@
/* Find the variable in the context, and maybe in other contexts as well.
*
* Input:
- * name name to find
+ * name name to find, is not expanded any further
* ctxt context in which to look first
* elsewhere TRUE to look in other contexts as well
*
@@ -449,7 +449,8 @@
}
}
-/* Remove a variable from a context, freeing all related memory as well. */
+/* Remove a variable from a context, freeing all related memory as well.
+ * The variable name is expanded once. */
void
Var_Delete(const char *name, GNode *ctxt)
{
@@ -549,6 +550,7 @@
return FALSE;
}
+ /* XXX: name is injected without escaping it */
expr = str_concat3("${", name, "}");
(void)Var_Subst(expr, VAR_GLOBAL, VARE_WANTRES, &val);
/* TODO: handle errors */
@@ -749,6 +751,7 @@
* just delete .MAKE.EXPORTED below.
*/
if (varnames == str) {
+ /* XXX: v->name is injected without escaping it */
char *expr = str_concat3("${" MAKE_EXPORTED ":N", v->name, "}");
char *cp;
(void)Var_Subst(expr, VAR_GLOBAL, VARE_WANTRES, &cp);
@@ -815,6 +818,7 @@
* to VAR_GLOBAL, so delete it from there if needed.
* Otherwise -V name may show the wrong value.
*/
+ /* XXX: name is expanded for the second time */
Var_Delete(name, VAR_GLOBAL);
}
VarAdd(name, val, ctxt, flags);
@@ -874,7 +878,7 @@
* Otherwise the new value overwrites and replaces the old value.
*
* Input:
- * name name of variable to set
+ * name name of the variable to set, is expanded once
* val value to give to the variable
* ctxt context in which to set it
*
@@ -905,7 +909,7 @@
* are concatenated, with a space in between.
*
* Input:
- * name name of variable to modify
+ * name name of the variable to modify, is expanded once
* val string to append to it
* ctxt context in which this should occur
*
@@ -943,6 +947,7 @@
v = VarFind(name, ctxt, ctxt == VAR_GLOBAL);
if (v == NULL) {
+ /* XXX: name is expanded for the second time */
Var_Set(name, val, ctxt);
} else if (v->flags & VAR_READONLY) {
VAR_DEBUG1("Ignoring append to %s since it is read-only\n", name);
@@ -974,7 +979,7 @@
* fallback contexts.
*
* Input:
- * name Variable to find
+ * name Variable to find, is expanded once
* ctxt Context in which to start search
*/
Boolean
@@ -1005,7 +1010,7 @@
* context, or the usual contexts.
*
* Input:
- * name name to find
+ * name name to find, is not expanded any further
* ctxt context in which to search for it
*
* Results:
Home |
Main Index |
Thread Index |
Old Index