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

Replies