2004-12-28 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+ * config/general.m4sh: New variable quote_scanset..
+ (func_quote_for_eval, func_quote_for_expand) ..use it to work around
+ SunOS ksh `case' backslash-escaping bug: protect character class by
+ variable expansion. Reported by Alexander Kurz <alexander.kurz@qsc.de>.
+
* tests/quote.test: Restart under the correct shell (the one
$ECHO was computed for).
# Same as above, but do not quote variable references.
double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+# Protect character class for func_quote_* by variable expansion.
+quote_scanset='[[@<:@~#^*{};<>?'"'"' ]]'
+
# Re-`\' parameter expansions in output of double_quote_subst that were
# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
# in input to double_quote_subst, that '$' was protected from expansion.
# word splitting, command substitution and and variable
# expansion for a subsequent eval.
# Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[[\@<:@\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]]*|*@:>@*|"")
+ # in scan sets, and some SunOS ksh mistreat backslash-escaping
+ # in scan sets (worked around with variable expansion),
+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+ # at all, so we specify them separately.
+ *$quote_scanset* | *@:>@* | *\|* | *\&* | *\(* | *\)* | "")
my_arg="\"$my_arg\""
;;
esac
# Double-quote args containing shell metacharacters to delay
# word splitting and command substitution for a subsequent eval.
# Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[[\@<:@\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]]*|*@:>@*|"")
+ # in scan sets, and some SunOS ksh mistreat backslash-escaping
+ # in scan sets (worked around with variable expansion),
+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+ # at all, so we specify them separately.
+ *$quote_scanset* | *@:>@* | *\|* | *\&* | *\(* | *\)* | "")
my_arg="\"$my_arg\""
;;
esac