summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Maydell2022-07-20 17:26:29 +0200
committerPeter Maydell2022-07-26 14:42:04 +0200
commit65842b03d112070bbc3216841eb879c1fc42523a (patch)
treef08cd857a512e529e5008cb138255b7d439b046e
parentconfigure: Add braces to clarify intent of $emu[[:space:]] (diff)
downloadqemu-65842b03d112070bbc3216841eb879c1fc42523a.tar.gz
qemu-65842b03d112070bbc3216841eb879c1fc42523a.tar.xz
qemu-65842b03d112070bbc3216841eb879c1fc42523a.zip
configure: Don't use bash-specific string-replacement syntax
The variable string-replacement syntax ${var/old/new} is a bashism (though it is also supported by some other shells), and for instance does not work with the NetBSD /bin/sh, which complains: ../src/configure: 687: Syntax error: Bad substitution Replace it with a more portable sed-based approach, similar to what we already do in quote_sh(). Note that shellcheck also diagnoses this: In ./configure line 687: e=${e/'\'/'\\'} ^-----------^ SC2039: In POSIX sh, string replacement is undefined. ^-- SC1003: Want to escape a single quote? echo 'This is how it'\''s done'. ^-- SC1003: Want to escape a single quote? echo 'This is how it'\''s done'. In ./configure line 688: e=${e/\"/'\"'} ^----------^ SC2039: In POSIX sh, string replacement is undefined. Fixes: 8154f5e64b0cf ("meson: Prefix each element of firmware path") Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Thomas Huth <thuth@redhat.com> Message-id: 20220720152631.450903-4-peter.maydell@linaro.org
-rwxr-xr-xconfigure7
1 files changed, 4 insertions, 3 deletions
diff --git a/configure b/configure
index a56c3d921b..c05205b608 100755
--- a/configure
+++ b/configure
@@ -684,9 +684,10 @@ meson_option_build_array() {
IFS=:
fi
for e in $1; do
- e=${e/'\'/'\\'}
- e=${e/\"/'\"'}
- printf '"""%s""",' "$e"
+ printf '"""'
+ # backslash escape any '\' and '"' characters
+ printf "%s" "$e" | sed -e 's/\([\"]\)/\\\1/g'
+ printf '""",'
done)
printf ']\n'
}