[PATCH] configure: disallow whitespace in paths, extend checks to $PWD

Subject: [PATCH] configure: disallow whitespace in paths, extend checks to $PWD

Date: Sun, 1 Sep 2019 23:09:46 +0300

To: notmuch@notmuchmail.org

Cc: tomi.ollila@iki.fi

From: Tomi Ollila

Whitespace in $NOTMUCH_SRCDIR (and $PWD) may work in builds,
but definitely will not work in tests. It would be difficult
to make tests support whitespace in test filename paths -- and
fragile to maintain if done.

So it is just easier and safer to disallow whitespace there.

In case of out of tree build $NOTMUCH_SRCDIR differs from $PWD
(current directory). Extend this whitespace, and also previously
made unsafe characters check to $PWD too.

Tried to make test work w/ $IFS characters in paths. Not trivial
since there are variables like $NOTMUCH_TESTS which split to separate
filenames on SPC. Got an idea to set IFS=$'\n' and use newline as
separator -- but then many other places where arg splitting on SPC
is used would fail. There would be ways but making it work would
just make developers' work harder...

 configure | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/configure b/configure
index ef81e71b..3c148e12 100755
--- a/configure
+++ b/configure
@@ -31,6 +31,22 @@ case $NOTMUCH_SRCDIR in ( *\'* | *['\"`$']* )
 	exit 1
+case $PWD in ( *\'* | *['\"`$']* )
+	echo "Definitely unsafe characters in current directory '$PWD'".
+	exit 1
+# In case of whitespace, builds may work, tests definitely will not.
+case $NOTMUCH_SRCDIR in ( *["$IFS"]* )
+	echo "Whitespace in source path '$NOTMUCH_SRCDIR' not supported".
+	exit 1
+case $PWD in ( *["$IFS"]* )
+	echo "Whitespace in current directory '$PWD' not supported".
+	exit 1
 subdirs="util compat lib parse-time-string completion doc emacs"
 subdirs="${subdirs} performance-test test test/test-databases"
 subdirs="${subdirs} bindings"

notmuch mailing list