* doc/autoconf.texi (Parenthesis): Update documentation to reflect
what Posix 1003.1-2008 says about "((".
---
ChangeLog | 6 ++++++
doc/autoconf.texi | 9 ++++++---
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 34b3be4..6f9e4c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-10-26 Paul Eggert <[email protected]>
+
+ docs: Posix now says "((cat))" isn't portable
+ * doc/autoconf.texi (Parenthesis): Update documentation to reflect
+ what Posix 1003.1-2008 says about "((".
+
2010-10-20 Eric Blake <[email protected]>
docs: document dash bug in <>
diff --git a/doc/autoconf.texi b/doc/autoconf.texi
index adbdded..4af8663 100644
--- a/doc/autoconf.texi
+++ b/doc/autoconf.texi
@@ -16046,12 +16046,15 @@ for the rationale.
@cindex Shell parentheses
Beware of two opening parentheses in a row, as many shell
-implementations treat them specially. Posix requires that the command
-...@samp{((cat))} must behave like @samp{(cat)}, but many shells, including
+implementations treat them specially, and Posix says that a portable
+script cannot use @samp{((} outside the @samp{$((} form used for shell
+arithmetic. In traditional shells, @samp{((cat))} behaves like
+...@samp{(cat)}; but many shells, including
Bash and the Korn shell, treat @samp{((cat))} as an arithmetic
expression equivalent to @samp{let "cat"}, and may or may not report an
error when they detect that @samp{cat} is not a number. As another
-example, @samp{pdksh} 5.2.14 misparses the following code:
+example, @samp{pdksh} 5.2.14 does not treat the following code
+as a traditional shell would:
@example
if ((true) || false); then
--
1.7.2