Module Name: src Committed By: sjg Date: Sat Feb 3 00:20:23 UTC 2024
Modified Files: src/usr.bin/make: var.c src/usr.bin/make/unit-tests: varmod.exp varmod.mk Log Message: make: state of save_dollars affects what is a parse error When save_dollars is false it is not a parse error to encounter $$ rather than \$. To generate a diff of this commit: cvs rdiff -u -r1.1095 -r1.1096 src/usr.bin/make/var.c cvs rdiff -u -r1.7 -r1.8 src/usr.bin/make/unit-tests/varmod.exp cvs rdiff -u -r1.9 -r1.10 src/usr.bin/make/unit-tests/varmod.mk 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/var.c diff -u src/usr.bin/make/var.c:1.1095 src/usr.bin/make/var.c:1.1096 --- src/usr.bin/make/var.c:1.1095 Sun Jan 21 15:02:17 2024 +++ src/usr.bin/make/var.c Sat Feb 3 00:20:23 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.1095 2024/01/21 15:02:17 rillig Exp $ */ +/* $NetBSD: var.c,v 1.1096 2024/02/03 00:20:23 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -139,7 +139,7 @@ #include "metachar.h" /* "@(#)var.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: var.c,v 1.1095 2024/01/21 15:02:17 rillig Exp $"); +MAKE_RCSID("$NetBSD: var.c,v 1.1096 2024/02/03 00:20:23 sjg Exp $"); /* * Variables are defined using one of the VAR=value assignments. Their @@ -4147,12 +4147,12 @@ IsShortVarnameValid(char varname, const if (!opts.strict) return false; /* XXX: Missing error message */ - if (varname == '$') + if (varname == '$' && save_dollars) Parse_Error(PARSE_FATAL, "To escape a dollar, use \\$, not $$, at \"%s\"", start); else if (varname == '\0') Parse_Error(PARSE_FATAL, "Dollar followed by nothing"); - else + else if (save_dollars) Parse_Error(PARSE_FATAL, "Invalid variable name '%c', at \"%s\"", varname, start); Index: src/usr.bin/make/unit-tests/varmod.exp diff -u src/usr.bin/make/unit-tests/varmod.exp:1.7 src/usr.bin/make/unit-tests/varmod.exp:1.8 --- src/usr.bin/make/unit-tests/varmod.exp:1.7 Thu Jun 1 20:56:35 2023 +++ src/usr.bin/make/unit-tests/varmod.exp Sat Feb 3 00:20:23 2024 @@ -1,8 +1,8 @@ -make: "varmod.mk" line 98: To escape a dollar, use \$, not $$, at "$$:L} != """ -make: "varmod.mk" line 98: Invalid variable name ':', at "$:L} != """ -make: "varmod.mk" line 104: Dollar followed by nothing -make: "varmod.mk" line 114: Missing delimiter ':' after modifier "P" -make: "varmod.mk" line 116: Missing argument for ".error" +make: "varmod.mk" line 101: To escape a dollar, use \$, not $$, at "$$:L} != """ +make: "varmod.mk" line 101: Invalid variable name ':', at "$:L} != """ +make: "varmod.mk" line 107: Dollar followed by nothing +make: "varmod.mk" line 117: Missing delimiter ':' after modifier "P" +make: "varmod.mk" line 119: Missing argument for ".error" make: Fatal errors encountered -- cannot continue make: stopped in unit-tests exit status 1 Index: src/usr.bin/make/unit-tests/varmod.mk diff -u src/usr.bin/make/unit-tests/varmod.mk:1.9 src/usr.bin/make/unit-tests/varmod.mk:1.10 --- src/usr.bin/make/unit-tests/varmod.mk:1.9 Sun Nov 19 21:47:52 2023 +++ src/usr.bin/make/unit-tests/varmod.mk Sat Feb 3 00:20:23 2024 @@ -1,4 +1,4 @@ -# $NetBSD: varmod.mk,v 1.9 2023/11/19 21:47:52 rillig Exp $ +# $NetBSD: varmod.mk,v 1.10 2024/02/03 00:20:23 sjg Exp $ # # Tests for variable modifiers, such as :Q, :S,from,to or :Ufallback. # @@ -56,6 +56,9 @@ # | `u` | strict | | yes | # | `from=to` | greedy | SysV, fallback | N/A | +# These tests assume +.MAKE.SAVE_DOLLARS = yes + DOLLAR1= $$ DOLLAR2= ${:U\$}