Module Name:    src
Committed By:   rillig
Date:           Sun Dec 13 18:57:44 UTC 2020

Modified Files:
        src/usr.bin/make: compat.c

Log Message:
make(1): document variable expansion in the .END node


To generate a diff of this commit:
cvs rdiff -u -r1.213 -r1.214 src/usr.bin/make/compat.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.213 src/usr.bin/make/compat.c:1.214
--- src/usr.bin/make/compat.c:1.213	Sun Dec 13 18:12:29 2020
+++ src/usr.bin/make/compat.c	Sun Dec 13 18:57:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat.c,v 1.213 2020/12/13 18:12:29 christos Exp $	*/
+/*	$NetBSD: compat.c,v 1.214 2020/12/13 18:57:44 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -96,7 +96,7 @@
 #include "pathnames.h"
 
 /*	"@(#)compat.c	8.2 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: compat.c,v 1.213 2020/12/13 18:12:29 christos Exp $");
+MAKE_RCSID("$NetBSD: compat.c,v 1.214 2020/12/13 18:57:44 rillig Exp $");
 
 static GNode *curTarg = NULL;
 static pid_t compatChild;
@@ -258,6 +258,17 @@ Compat_RunCommand(const char *cmdp, GNod
 	if (gn->type & OP_SAVE_CMDS) {
 		GNode *endNode = Targ_GetEndNode();
 		if (gn != endNode) {
+			/*
+			 * Append the expanded command, to prevent the
+			 * local variables from being interpreted in the
+			 * context of the .END node.
+			 *
+			 * A probably unintended side effect of this is that
+			 * the expanded command will be expanded again in the
+			 * .END node.  Therefore, a literal '$' in these
+			 * commands must be written as '$$$$' instead of the
+			 * usual '$$'.
+			 */
 			Lst_Append(&endNode->commands, cmdStart);
 			return 0;
 		}

Reply via email to