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): document how make behaved f...



details:   https://anonhg.NetBSD.org/src/rev/7dae7ffc7bd4
branches:  trunk
changeset: 946723:7dae7ffc7bd4
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Dec 06 20:07:25 2020 +0000

description:
make(1): document how make behaved for null bytes in the makefile

diffstat:

 usr.bin/make/unit-tests/opt-file.mk |  38 +++++++++++++++++++++++++++++++++++-
 1 files changed, 36 insertions(+), 2 deletions(-)

diffs (52 lines):

diff -r ba0d185aeac9 -r 7dae7ffc7bd4 usr.bin/make/unit-tests/opt-file.mk
--- a/usr.bin/make/unit-tests/opt-file.mk       Sun Dec 06 19:18:26 2020 +0000
+++ b/usr.bin/make/unit-tests/opt-file.mk       Sun Dec 06 20:07:25 2020 +0000
@@ -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 @@
        | ${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



Home | Main Index | Thread Index | Old Index