Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/make/unit-tests make(1): explain the mod-subst-dolla...
details: https://anonhg.NetBSD.org/src/rev/82759bfacf6b
branches: trunk
changeset: 936933:82759bfacf6b
user: rillig <rillig%NetBSD.org@localhost>
date: Sun Aug 09 07:41:14 2020 +0000
description:
make(1): explain the mod-subst-dollar test
diffstat:
usr.bin/make/unit-tests/modmisc.exp | 1 +
usr.bin/make/unit-tests/modmisc.mk | 15 ++++++++++++++-
2 files changed, 15 insertions(+), 1 deletions(-)
diffs (47 lines):
diff -r 844c2d6d1253 -r 82759bfacf6b usr.bin/make/unit-tests/modmisc.exp
--- a/usr.bin/make/unit-tests/modmisc.exp Sun Aug 09 07:26:20 2020 +0000
+++ b/usr.bin/make/unit-tests/modmisc.exp Sun Aug 09 07:41:14 2020 +0000
@@ -57,6 +57,7 @@
mod-subst-dollar:$40:
mod-subst-dollar:U8:
mod-subst-dollar:$$$$:
+mod-subst-dollar:$$$good3
mod-loop-dollar:1:
mod-loop-dollar:${word}$:
mod-loop-dollar:$3$:
diff -r 844c2d6d1253 -r 82759bfacf6b usr.bin/make/unit-tests/modmisc.mk
--- a/usr.bin/make/unit-tests/modmisc.mk Sun Aug 09 07:26:20 2020 +0000
+++ b/usr.bin/make/unit-tests/modmisc.mk Sun Aug 09 07:41:14 2020 +0000
@@ -1,4 +1,4 @@
-# $Id: modmisc.mk,v 1.37 2020/08/09 07:18:03 rillig Exp $
+# $Id: modmisc.mk,v 1.38 2020/08/09 07:41:14 rillig Exp $
#
# miscellaneous modifier tests
@@ -207,6 +207,16 @@
# No matter how many dollar characters there are, they all get merged
# into a single dollar by the :S modifier.
+#
+# As of 2020-08-09, this is because ParseModifierPart sees a '$' and
+# calls Var_Parse to expand the variable. In all other places, the "$$"
+# is handled outside of Var_Parse. Var_Parse therefore considers "$$"
+# one of the "really stupid names", skips the first dollar, and parsing
+# continues with the next character. This repeats for the other dollar
+# signs, except the one before the delimiter. That one is handled by
+# the code that optionally interprets the '$' as the end-anchor in the
+# first part of the :S modifier. That code doesn't call Var_Parse but
+# simply copies the dollar to the result.
mod-subst-dollar:
@echo $@:${:U1:S,^,$,:Q}:
@echo $@:${:U2:S,^,$$,:Q}:
@@ -222,6 +232,9 @@
# Here is an alternative way to generate dollar characters.
# It's unexpectedly complicated though.
@echo $@:${:U:range=5:ts\x24:C,[0-9],,g:Q}:
+# In modifiers, dollars are escaped using the backslash, not using another
+# dollar sign. Therefore, creating a dollar sign is pretty simple:
+ @echo $@:${:Ugood3:S,^,\$\$\$,:Q}
# Demonstrate that it is possible to generate dollar characters using the
# :@ modifier.
Home |
Main Index |
Thread Index |
Old Index