Module Name: src
Committed By: rillig
Date: Sun Dec 6 20:07:26 UTC 2020
Modified Files:
src/usr.bin/make/unit-tests: opt-file.mk
Log Message:
make(1): document how make behaved for null bytes in the makefile
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/usr.bin/make/unit-tests/opt-file.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/unit-tests/opt-file.mk
diff -u src/usr.bin/make/unit-tests/opt-file.mk:1.4 src/usr.bin/make/unit-tests/opt-file.mk:1.5
--- src/usr.bin/make/unit-tests/opt-file.mk:1.4 Sun Dec 6 19:18:26 2020
+++ src/usr.bin/make/unit-tests/opt-file.mk Sun Dec 6 20:07:25 2020
@@ -1,4 +1,4 @@
-# $NetBSD: opt-file.mk,v 1.4 2020/12/06 19:18:26 rillig Exp $
+# $NetBSD: opt-file.mk,v 1.5 2020/12/06 20:07:25 rillig Exp $
#
# Tests for the -f command line option.
@@ -17,7 +17,41 @@ file-ending-in-backslash: .PHONY
| ${MAKE} -r -f - -v VAR
# If a file contains null bytes, the rest of the line is skipped, and parsing
-# continues in the next line.
+# continues in the next line. Throughout the history of make, the behavior
+# has changed several times, sometimes knowingly, sometimes by accident.
+#
+# echo 'VAR=value' | tr 'l' '\0' > zero-byte.in
+# printf '%s\n' 'all:' ': VAR=${VAR:Q}' >> zero-byte.in
+#
+# for year in $(seq 2003 2020); do
+# echo $year:
+# make-$year.01.01.00.00.00 -r -f zero-byte.in
+# echo "exit status $?"
+# echo
+# done 2>&1 \
+# | sed "s,$PWD/,.,"
+#
+# This program generated the following output:
+#
+# 2003 to 2007:
+# exit status 0
+#
+# 2008 to 2010:
+# make: "zero-byte.in" line 1: Zero byte read from file
+# make: Fatal errors encountered -- cannot continue
+#
+# make: stopped in .
+# exit status 1
+#
+# 2011 to 2013:
+# make: no target to make.
+#
+# make: stopped in .
+# exit status 2
+#
+# 2014:
+# make: "zero-byte.in" line 1: warning: Zero byte read from file, skipping rest of line.
+# exit status 0
#
# XXX: It would be safer to just quit parsing in such a situation.
file-containing-null-byte: .PHONY