[PATCH v2 3/8] Always double-quote parameter expansions in shell

Rene Kita <[email protected]>
Newsgroups gmane.mail.mutt.devel
Message-ID <[email protected]>
There is no harm, it clearly marks the end of a variable name and
silences shellcheck warnings.

E.g. TMPFILE is set by mktemp which uses the user-controlled TMPDIR
variable. There might be strange people out there who use whitespace
characters in their TMPDIR name making the script break.

Add a comment and ignore the warning where we really do not want quotes.
---
 check_sec.sh                  | 12 +++++++-----
 contrib/bgedit-screen-tmux.sh |  4 ++--
 contrib/iconv/make.sh         | 11 +++++------
 doc/instdoc.sh.in             |  2 +-
 mkchangelog.sh                |  2 +-
 mkreldate.sh                  |  2 +-
 6 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/check_sec.sh b/check_sec.sh
index 03bf2188..e9c0262d 100755
--- a/check_sec.sh
+++ b/check_sec.sh
@@ -15,18 +15,20 @@ do_check_files ()
         msg="$1" ; shift
         grep -En "$pattern" "$@"        	| \
                 grep -v '^[^	 ]*:[^ 	]*#' 	| \
-                grep -Fv "$magic" > $TMPFILE
+                grep -Fv "$magic" > "$TMPFILE"
 
-        test -s $TMPFILE && {
+        test -s "$TMPFILE" && {
                 echo "$msg" ;
-                cat $TMPFILE;
-                rm -f $TMPFILE;
+                cat "$TMPFILE"
+                rm -f "$TMPFILE"
                 RV=1;
         }
 }
 
 do_check ()
 {
+        # We rely on .c files having sane filenames, ignore warning.
+        # shellcheck disable=SC2046
         do_check_files "$1" "$2" "$3" $(find . -name '*.c' -print)
 }
 
@@ -44,5 +46,5 @@ do_check '\<isspace' __SAFE_ISSPACE_CHECKED__ "You probably meant IS_ASCII_WS he
 do_check_files '\<(malloc|realloc|free|strdup)[ 	]*\(' __MEM_CHECKED__ "Alert: Use of traditional memory management calls." \
         ./*.c imap/*.c autocrypt/*.c
 
-rm -f $TMPFILE
+rm -f "$TMPFILE"
 exit $RV
diff --git a/contrib/bgedit-screen-tmux.sh b/contrib/bgedit-screen-tmux.sh
index 5124d957..2adeebc3 100644
--- a/contrib/bgedit-screen-tmux.sh
+++ b/contrib/bgedit-screen-tmux.sh
@@ -52,9 +52,9 @@ $editor "\$@"
 exitval=\$?
 END_SCRIPT
 
-if test x$STY != x; then
+if test x"$STY" != x; then
   screen -X screen /bin/sh "$tmpdir/run" "$@"
-elif test x$TMUX != x; then
+elif test x"$TMUX" != x; then
   tmux neww /bin/sh "$tmpdir/run" "$@"
 else
   echo "Not running inside a terminal emulator" >&2
diff --git a/contrib/iconv/make.sh b/contrib/iconv/make.sh
index 1382b151..0ed94162 100755
--- a/contrib/iconv/make.sh
+++ b/contrib/iconv/make.sh
@@ -9,18 +9,17 @@
 #
 
 LIBICONV=$1
-test -d $LIBICONV/libcharset/tools || {
+test -d "$LIBICONV"/libcharset/tools || {
 	echo "Sorry, I can't find libiconv's source!" >&2 ; 
 	exit 1 ;
 }
 
-# shellcheck disable=SC2231
-for f in $LIBICONV/libcharset/tools/* ; do
+for f in "$LIBICONV"/libcharset/tools/* ; do
 	rm -f tmp.rc.
-	( head -3 $f | grep -q 'locale name.*locale charmap.*locale_charset' ) && (
-		sed '1,/^$/d' $f | awk '($4 != $3) { printf ("iconv-hook %s %s\n", $4, $3); }' | \
+	( head -3 "$f" | grep -q 'locale name.*locale charmap.*locale_charset' ) && (
+		sed '1,/^$/d' "$f" | awk '($4 != $3) { printf ("iconv-hook %s %s\n", $4, $3); }' | \
 			sed -e 's/^iconv-hook SJIS /iconv-hook Shift_JIS /gi' |
 			sort -u > tmp.rc )
-	test -s tmp.rc && mv tmp.rc iconv.$(basename $f).rc
+	test -s tmp.rc && mv tmp.rc iconv."$(basename "$f")".rc
 	rm -f tmp.rc
 done
diff --git a/doc/instdoc.sh.in b/doc/instdoc.sh.in
index 09d932ce..a2fe7a51 100644
--- a/doc/instdoc.sh.in
+++ b/doc/instdoc.sh.in
@@ -21,6 +21,6 @@ rm -f "$TARGET"
 
 sed -e "s;/usr/local/bin/;$bindir/;g" 	 	\
     -e "s;/usr/local/doc/mutt/;$docdir/;g" 	\
-    "$SOURCE" > $TARGET
+    "$SOURCE" > "$TARGET"
 
 chmod 644 "$TARGET"
diff --git a/mkchangelog.sh b/mkchangelog.sh
index 9f551012..209e01f6 100755
--- a/mkchangelog.sh
+++ b/mkchangelog.sh
@@ -14,4 +14,4 @@ lrev=$(git describe --tags --match 'mutt-*-rel' --abbrev=0)
 # anymore to make it worth the effort.
 git log --name-status \
     --pretty=format:"%ai  %an  <%ae> (%h)%n%n%w(,8,8)* %s%n%+b" \
-    ${lrev}^..
+    "$lrev"^..
diff --git a/mkreldate.sh b/mkreldate.sh
index b9be6373..246c2f55 100755
--- a/mkreldate.sh
+++ b/mkreldate.sh
@@ -8,4 +8,4 @@ else
   reldate=$(head -n 1 ChangeLog | LC_ALL=C cut -d ' ' -f 1)
 fi
 
-echo $reldate
+echo "$reldate"
-- 
2.51.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.