Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-dev] [PATCH v2] java-ant-2.eclass: Replace unnecessary evals with arrays
Date: Wed, 22 Feb 2017 21:54:40
Message-Id: 20170222215422.7062-1-mgorny@gentoo.org
In Reply to: [gentoo-dev] [PATCH] java-ant-2.eclass: Replace unnecessary evals with arrays by "Michał Górny"
1 Replace the horrifying use of evals along with quoting to pass multiple
2 filenames whitespace-safe with much simpler bash arrays. While at it,
3 also simplify the find-read loop.
4
5 // v2: fixed find-read loop as pointed out by Arfrever
6 ---
7 eclass/java-ant-2.eclass | 40 ++++++++++++++++++----------------------
8 1 file changed, 18 insertions(+), 22 deletions(-)
9
10 diff --git a/eclass/java-ant-2.eclass b/eclass/java-ant-2.eclass
11 index 4cbce40b1aac..855a86de6119 100644
12 --- a/eclass/java-ant-2.eclass
13 +++ b/eclass/java-ant-2.eclass
14 @@ -161,16 +161,12 @@ java-ant_bsfix() {
15
16 find_args="${find_args} -type f ( -name ${JAVA_PKG_BSFIX_NAME// / -o -name } )"
17
18 - # This voodoo is done for paths with spaces
19 - local bsfix_these
20 - while read line; do
21 - [[ -z ${line} ]] && continue
22 - bsfix_these="${bsfix_these} '${line}'"
23 - done <<-EOF
24 - $(find . ${find_args})
25 - EOF
26 + local bsfix_these=() line
27 + while IFS= read -r -d $'\0' line; do
28 + bsfix_these+=( "${line}" )
29 + done < <(find . ${find_args} -print0)
30
31 - [[ "${bsfix_these// /}" ]] && eval java-ant_bsfix_files ${bsfix_these}
32 + [[ "${bsfix_these[@]}" ]] && java-ant_bsfix_files "${bsfix_these[@]}"
33
34 popd > /dev/null || die
35 }
36 @@ -228,7 +224,7 @@ java-ant_bsfix_files() {
37 eerror "Please file a bug about this on bugs.gentoo.org"
38 die "Could not find valid -source/-target values"
39 else
40 - local files
41 + local files=()
42
43 for file in "${@}"; do
44 debug-print "${FUNCNAME}: ${file}"
45 @@ -241,7 +237,7 @@ java-ant_bsfix_files() {
46 chmod u+w "${file}" || die "chmod u+w ${file} failed"
47 fi
48
49 - files="${files} -f '${file}'"
50 + files+=( -f "${file}" )
51 done
52
53 # for javadoc target and all in one pass, we need the new rewriter.
54 @@ -255,7 +251,7 @@ java-ant_bsfix_files() {
55 if [[ -x ${rewriter4} && ${JAVA_ANT_ENCODING} ]]; then
56 [[ ${JAVA_ANT_REWRITE_CLASSPATH} ]] && local gcp="-g"
57 [[ ${JAVA_ANT_ENCODING} ]] && local enc="-e ${JAVA_ANT_ENCODING}"
58 - eval echo "cElementTree rewriter"
59 + echo "cElementTree rewriter"
60 debug-print "${rewriter4} extra args: ${gcp} ${enc}"
61 ${rewriter4} ${gcp} ${enc} \
62 -c "${JAVA_PKG_BSFIX_SOURCE_TAGS}" source ${want_source} \
63 @@ -263,31 +259,31 @@ java-ant_bsfix_files() {
64 "${@}" || die "build-xml-rewrite failed"
65 elif [[ ! -f ${rewriter3} ]]; then
66 debug-print "Using second generation rewriter"
67 - eval echo "Rewriting source attributes"
68 - eval xml-rewrite-2.py ${files} \
69 + echo "Rewriting source attributes"
70 + xml-rewrite-2.py "${files[@]}" \
71 -c -e ${JAVA_PKG_BSFIX_SOURCE_TAGS// / -e } \
72 -a source -v ${want_source} || _bsfix_die "xml-rewrite2 failed: ${file}"
73
74 - eval echo "Rewriting target attributes"
75 - eval xml-rewrite-2.py ${files} \
76 + echo "Rewriting target attributes"
77 + xml-rewrite-2.py "${files[@]}" \
78 -c -e ${JAVA_PKG_BSFIX_TARGET_TAGS// / -e } \
79 -a target -v ${want_target} || _bsfix_die "xml-rewrite2 failed: ${file}"
80
81 - eval echo "Rewriting nowarn attributes"
82 - eval xml-rewrite-2.py ${files} \
83 + echo "Rewriting nowarn attributes"
84 + xml-rewrite-2.py "${files[@]}" \
85 -c -e ${JAVA_PKG_BSFIX_TARGET_TAGS// / -e } \
86 -a nowarn -v yes || _bsfix_die "xml-rewrite2 failed: ${file}"
87
88 if [[ ${JAVA_ANT_REWRITE_CLASSPATH} ]]; then
89 - eval echo "Adding gentoo.classpath to javac tasks"
90 - eval xml-rewrite-2.py ${files} \
91 + echo "Adding gentoo.classpath to javac tasks"
92 + xml-rewrite-2.py "${files[@]}" \
93 -c -e javac -e xjavac -a classpath -v \
94 '\${gentoo.classpath}' \
95 || _bsfix_die "xml-rewrite2 failed"
96 fi
97 else
98 debug-print "Using third generation rewriter"
99 - eval echo "Rewriting attributes"
100 + echo "Rewriting attributes"
101 local bsfix_extra_args=""
102 # WARNING KEEP THE ORDER, ESPECIALLY FOR CHANGED ATTRIBUTES!
103 if [[ -n ${JAVA_ANT_REWRITE_CLASSPATH} ]]; then
104 @@ -334,7 +330,7 @@ java-ant_bsfix_files() {
105
106 debug-print "bsfix_extra_args: ${bsfix_extra_args}"
107
108 - eval ${rewriter3} ${files} \
109 + ${rewriter3} "${files[@]}" \
110 -c --source-element ${JAVA_PKG_BSFIX_SOURCE_TAGS// / --source-element } \
111 --source-attribute source --source-value ${want_source} \
112 --target-element ${JAVA_PKG_BSFIX_TARGET_TAGS// / --target-element } \
113 --
114 2.11.1

Replies