support/check-bin-arch: fix for filenames with spaces
authorYann E. MORIN <yann.morin.1998@free.fr>
Tue, 21 Mar 2017 19:01:25 +0000 (20:01 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Tue, 21 Mar 2017 21:14:17 +0000 (22:14 +0100)
Filenames with spaces will break the current for loop.

Fix that by using a while-read loop, fed with the list of files on
stdin, using process substitution.

Reported-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Peter Korsgaard <peter@korsgaard.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
support/scripts/check-bin-arch

index 2c619ad6741719451f6c66399f22dafc91d535a0..b3e20246177647ecd8d491068f0fdfe91e13e17b 100755 (executable)
@@ -18,9 +18,11 @@ fi
 
 exitcode=0
 
-pkg_files=$(sed -r -e "/^${package},(.+)$/!d; s//\1/;" ${pkg_list})
+# Only split on new lines, for filenames-with-spaces
+IFS="
+"
 
-for f in ${pkg_files} ; do
+while read f; do
        # Skip firmware files, they could be ELF files for other
        # architectures
        if [[ "${f}" =~ ^\./(usr/)?lib/firmware/.* ]]; then
@@ -43,10 +45,10 @@ for f in ${pkg_files} ; do
                continue
        fi
 
-       printf 'ERROR: architecture for %s is %s, should be %s\n' \
+       printf 'ERROR: architecture for "%s" is "%s", should be "%s"\n' \
               "${f}" "${arch}" "${arch_name}"
 
        exitcode=1
-done
+done < <( sed -r -e "/^${package},\.(.+)$/!d; s//\1/;" ${pkg_list} )
 
 exit ${exitcode}