Subject: Re: bug#62896: [Configure] Bug with check for PERL when path has spaces (i.e. Windows)

From: Karl Berry <[email-masked]>
Date: Sat, 2 Dec 2023 15:53:28 -0700

echo "$PERL" | grep '[ \t]'

I don't think there's any portable way to use \t to insert a tab in a
shell string, besides literally. There's something like
tab=`printf '\t'`
.. "$tab" ...
but I don't see a need to go that far here. I just used a literal tab char.

    also, can we really not trust the exit status of grep ?
            if echo "$PERL" | grep -q '[\t ]'; then

Exit status yes, but at least historically, grep -q has been considered
non-portable, in favor of grep ... >/dev/null.

I committed the change as below. --thanks, karl.

--

configure: better check for the perl patch containing whitespace.

More for https://bugs.gnu.org/62896.

* configure.ac: quote "$PERL" and check directly with grep.
diff --git a/configure.ac b/configure.ac
index 23a9f97f5..946fecb67 100644
--- a/configure.ac
+++ b/configure.ac
@@ -70,8 +70,8 @@ AC_PROG_LN_S
 AC_PATH_PROG([PERL], [perl])
 if test -z "$PERL"; then
    AC_MSG_ERROR([perl not found])
-elif test x"`echo $PERL | grep ' '`" != "x"; then
-  AC_MSG_ERROR([The path to your Perl contains spaces.
+elif echo "$PERL" | grep '[ 	]' >/dev/null; then
+  AC_MSG_ERROR([The path to your Perl contains spaces or tabs.
 This would cause build failures later or unusable programs.
 Please use a path without spaces and try again.])
 fi

compile finished at Sat Dec  2 14:52:38 2023