2010-08-30 Eric Blake <eblake@redhat.com>
+ docs: mention Solaris here-docs vs. ${a-"b c"}
+ * doc/autoconf.texi (Shell Substitutions) <${var:=value}>:
+ Document problem of "" within here-docs.
+ Reported by Ralf Wildenhues.
+
fortran: always avoid AC_LANG_CONFTEST warning
* lib/autoconf/lang.m4 (AC_LANG_CONFTEST()): Make the default
match the fact that the default AC_LANG_SOURCE does not inline
@cindex $@{@var{var}+@var{value}@}
When using @samp{$@{@var{var}-@var{value}@}} or
@samp{$@{@var{var}-@var{value}@}} for providing alternate substitutions,
-@var{value} must either be a single shell word or be quoted. Solaris
+@var{value} must either be a single shell word, quoted, or in the
+context of an unquoted here-document. Solaris
@command{/bin/sh} complains otherwise.
@example
b c
$ @kbd{/bin/sh -c 'echo "$@{a-b c@}"'}
b c
+$ @kbd{/bin/sh -c 'cat <<EOF
+$@{a-b c@}
+EOF}
+b c
@end example
According to Posix, if an expansion occurs inside double quotes, then
the use of unquoted double quotes within @var{value} is unspecified, and
any single quotes become literal characters; in that case, escaping must
-be done with backslash.
+be done with backslash. Likewise, the use of unquoted here-documents is
+a case where double quotes have unspecified results:
@example
$ @kbd{/bin/sh -c 'echo "$@{a-"b c"@}"'}
"b c"
$ @kbd{/bin/sh -c 'a=; echo "$@{a+b c@}"'}
b c
+$ @kbd{/bin/sh -c 'cat <<EOF
+$@{a-"b c"@}
+EOF'}
+"b c"
+$ @kbd{/bin/sh -c 'cat <<EOF
+$@{a-'b c'@}
+EOF'}
+'b c'
+$ @kbd{bash -c 'cat <<EOF
+$@{a-"b c"@}
+EOF'}
+b c
+$ @kbd{bash -c 'cat <<EOF
+$@{a-'b c'@}
+EOF'}
+'b c'
@end example
Perhaps the easiest way to work around quoting issues in a manner