unpacker.eclass: Replace unnecessary eval with array
authorMichał Górny <mgorny@gentoo.org>
Thu, 23 Feb 2017 19:44:28 +0000 (20:44 +0100)
committerMichał Górny <mgorny@gentoo.org>
Wed, 8 Mar 2017 07:35:37 +0000 (08:35 +0100)
Replace the eval used to attempt to construct whitespace-path-safe
utility calls with much simpler bash arrays.

eclass/unpacker.eclass

index 8c55cc5319b893e67f69ac5096238cbab49f1de6..6e996120646917a1560f420874d46a4e715208af 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: unpacker.eclass
@@ -218,30 +218,30 @@ unpack_makeself() {
                debug-print "Detected Makeself version ${ver} ... using ${skip} as offset"
        fi
        case ${exe} in
-               tail)   exe="tail -n +${skip} '${src}'";;
-               dd)             exe="dd ibs=${skip} skip=1 if='${src}'";;
+               tail)   exe=( tail -n +${skip} "${src}" );;
+               dd)             exe=( dd ibs=${skip} skip=1 if="${src}" );;
                *)              die "makeself cant handle exe '${exe}'"
        esac
 
        # lets grab the first few bytes of the file to figure out what kind of archive it is
        local filetype tmpfile="${T}/${FUNCNAME}"
-       eval ${exe} 2>/dev/null | head -c 512 > "${tmpfile}"
+       "${exe[@]}" 2>/dev/null | head -c 512 > "${tmpfile}"
        filetype=$(file -b "${tmpfile}") || die
        case ${filetype} in
                *tar\ archive*)
-                       eval ${exe} | tar --no-same-owner -xf -
+                       "${exe[@]}" | tar --no-same-owner -xf -
                        ;;
                bzip2*)
-                       eval ${exe} | bzip2 -dc | tar --no-same-owner -xf -
+                       "${exe[@]}" | bzip2 -dc | tar --no-same-owner -xf -
                        ;;
                gzip*)
-                       eval ${exe} | tar --no-same-owner -xzf -
+                       "${exe[@]}" | tar --no-same-owner -xzf -
                        ;;
                compress*)
-                       eval ${exe} | gunzip | tar --no-same-owner -xf -
+                       "${exe[@]}" | gunzip | tar --no-same-owner -xf -
                        ;;
                XZ*)
-                       eval ${exe} | unxz | tar --no-same-owner -xf -
+                       "${exe[@]}" | unxz | tar --no-same-owner -xf -
                        ;;
                *)
                        eerror "Unknown filetype \"${filetype}\" ?"