[pacman-dev] [PATCH 2/3] makepkg: avoid nested quoting in string replacement

Dave Reisner dreisner at archlinux.org
Fri Jan 9 20:52:24 UTC 2015

I suspect this is just wrong -- you never need to quote the replacement
side of a PE. In bash 4.3, this is essentially a no-op, but because of
a bug in bash 4.2, we get embedded quotes as a result of this
replacement. The relevant changelog item in bash is:

  Fixed a bug that caused single quotes that resulted from $'...' quoting
  in the replacement portion of a double-quoted ${word/pat/rep} expansion
  to be treated as quote characters.

But this doesn't apply to us. Let's just drop the excessive quoting...
 scripts/makepkg.sh.in | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 880e778..e032e26 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -362,11 +362,11 @@ download_file() {
 	# replace %o by the temporary dlfile if it exists
 	if [[ ${cmdline[*]} = *%o* ]]; then
-		cmdline=("${cmdline[@]//%o/"$dlfile"}")
+		cmdline=("${cmdline[@]//%o/$dlfile}")
 	# add the URL, either in place of %u or at the end
 	if [[ ${cmdline[*]} = *%u* ]]; then
-		cmdline=("${cmdline[@]//%u/"$url"}")
+		cmdline=("${cmdline[@]//%u/$url}")

More information about the pacman-dev mailing list