On 09/26/2011 10:22 PM, Dave Reisner wrote:
If we encounter a BOOT_IMAGE var taken from grub2, the first character could be a '(' which will throw off busybox's parser and error out. Reverse the comparison so that the LHS is always a constant, which can be compared to anything (including nothing at all).
Fixes FS#26119.
Signed-off-by: Dave Reisner<dreisner@archlinux.org> --- init_functions | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/init_functions b/init_functions index fe29961..edaf87c 100644 --- a/init_functions +++ b/init_functions @@ -45,8 +45,8 @@ parse_cmdline() { # only export stuff that does work with ash :) *=*) rhs="$(echo "${w}" | cut -d= -f2-)" lhs="$(echo "${w}" | cut -d= -f1 | sed 's|\.|_|g;s|-|_|g;')" - if [ "${rhs:0:1}" = "\"" ]; then - if [ "${rhs:$((${#rhs}-1))}" = "\"" ]; then + if [ "\"" = "${rhs:0:1}" = ]; then + if [ "\"" = "${rhs:$((${#rhs}-1))}" ]; then rhs="${rhs:1:$((${#rhs}-2))}" else rhs="${rhs:1}" @@ -61,7 +61,7 @@ parse_cmdline() { ;; esac else - if [ "${w:$((${#w}-1))}" = "\"" ]; then + if [ "\"" = "${w:$((${#w}-1))}" ]; then rhs="${rhs} ${w:0:$((${#w}-1))}" in_quotes=0 (echo "${lhs}" | grep -qe '^[0-9]' -e '[^a-zA-Z0-9_]') || eval ${lhs}=\${rhs}
I testing the whole branch with archiso. But this patch introduced a regression: "ash: =: unknown operand" :: Starting udevd... tracing shows: + echo archisobasedir=arch + lhs=archisobasedir + [ " = a = ] ash: =: unknown operand + echo archisolabel=ARCH_201109 + lhs=archisolabel + [ " = A = ] ash: =: unknown operand + echo initrd=/arch/boot/i686/archiso.img + lhs=initrd + [ " = / = ] ash: =: unknown operand etc -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1