commit:     57f836431666db3fd058e6f4e93f7231fcac748c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Feb 23 19:08:24 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Mar  8 07:35:35 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=57f83643

ruby-ng.eclass: Replace unnecessary 'eval ls' with array fnexp

Replace the unnecessary use of 'eval ls -d ...' with much simpler
and safer filename expansion via bash array. The 'eval' was completely
unnecessary in the original code; however, the late addition of quoting
would have broken it if eval did not implicitly discard the quotes.
The 'ls -d' was unnecessary as well since bash performs filename
expansion before passing the parameter to 'ls'.

Furthermore, a check for accidental multiple expansion has been added.
A complementary check for failed expansion can not be added since
the function is called in src_unpack() as well and the expansion fails
then.

 eclass/ruby-ng.eclass | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/eclass/ruby-ng.eclass b/eclass/ruby-ng.eclass
index 6bdc210e4fa..13b00553c0b 100644
--- a/eclass/ruby-ng.eclass
+++ b/eclass/ruby-ng.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2016 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: ruby-ng.eclass
@@ -325,7 +325,14 @@ _ruby_invoke_environment() {
                                ;;
                esac
                pushd "${WORKDIR}"/all &>/dev/null || die
-               sub_S=$(eval ls -d "${sub_S}" 2>/dev/null)
+               # use an array to trigger filename expansion
+               # fun fact: this expansion fails in src_unpack() but the 
original
+               # code did not have any checks for failed expansion, so we can't
+               # really add one now without redesigning stuff hard.
+               sub_S=( ${sub_S} )
+               if [[ ${#sub_S[@]} -gt 1 ]]; then
+                       die "sub_S did expand to multiple paths: ${sub_S[*]}"
+               fi
                popd &>/dev/null || die
        fi
 

Reply via email to