diff options
author | Peter Maydell | 2022-07-20 17:26:29 +0200 |
---|---|---|
committer | Peter Maydell | 2022-07-26 14:42:04 +0200 |
commit | 65842b03d112070bbc3216841eb879c1fc42523a (patch) | |
tree | f08cd857a512e529e5008cb138255b7d439b046e | |
parent | configure: Add braces to clarify intent of $emu[[:space:]] (diff) | |
download | qemu-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-x | configure | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -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' } |