test-perror: relax test to ignore cygwin bug
authorEric Blake <eblake@redhat.com>
Tue, 7 Jun 2011 21:41:20 +0000 (15:41 -0600)
committerEric Blake <eblake@redhat.com>
Tue, 7 Jun 2011 22:48:54 +0000 (16:48 -0600)
glibc was not the only platform where fprintf(fopen(,"r"))
fails to detect errors; cygwin 1.7.9 is another culprit
(although it will be fixed for 1.7.10), and I suspect that
several other platforms were failing perror2 for the same
reason.

At this point, there are so many functions affected, and
the way to avoid the bug is easy enough (don't pass bogus
streams to output-producing functions), that I'm not worried
about fixing things other than to document them.

* tests/test-perror2.c (main): Relax test on requiring detection
of stream errors, and use unbuffered stream.
* doc/posix-functions/dprintf.texi (dprintf): Document bug.
* doc/posix-functions/fprintf.texi (fprintf): Likewise.
* doc/posix-functions/fputc.texi (fputc): Likewise.
* doc/posix-functions/fputs.texi (fputs): Likewise.
* doc/posix-functions/fputws.texi (fputws): Likewise.
* doc/posix-functions/fwprintf.texi (fwprintf): Likewise.
* doc/posix-functions/fwrite.texi (fwrite): Likewise.
* doc/posix-functions/getopt.texi (getopt): Likewise.
* doc/posix-functions/perror.texi (perror): Likewise.
* doc/posix-functions/printf.texi (printf): Likewise.
* doc/posix-functions/psiginfo.texi (psiginfo): Likewise.
* doc/posix-functions/psignal.texi (psignal): Likewise.
* doc/posix-functions/putc.texi (putc): Likewise.
* doc/posix-functions/putc_unlocked.texi (putc_unlocked):
Likewise.
* doc/posix-functions/putchar.texi (putchar): Likewise.
* doc/posix-functions/putchar_unlocked.texi (putchar_unlocked):
Likewise.
* doc/posix-functions/puts.texi (puts): Likewise.
* doc/posix-functions/putwc.texi (putwc): Likewise.
* doc/posix-functions/putwchar.texi (putwchar): Likewise.
* doc/posix-functions/vdprintf.texi (vdprintf): Likewise.
* doc/posix-functions/vfprintf.texi (vfprintf): Likewise.
* doc/posix-functions/vfwprintf.texi (vfwprintf): Likewise.
* doc/posix-functions/vprintf.texi (vprintf): Likewise.
* doc/posix-functions/vwprintf.texi (vwprintf): Likewise.
* doc/posix-functions/wordexp.texi (wordexp): Likewise.
* doc/posix-functions/wprintf.texi (wprintf): Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
28 files changed:
ChangeLog
doc/posix-functions/dprintf.texi
doc/posix-functions/fprintf.texi
doc/posix-functions/fputc.texi
doc/posix-functions/fputs.texi
doc/posix-functions/fputws.texi
doc/posix-functions/fwprintf.texi
doc/posix-functions/fwrite.texi
doc/posix-functions/getopt.texi
doc/posix-functions/perror.texi
doc/posix-functions/printf.texi
doc/posix-functions/psiginfo.texi
doc/posix-functions/psignal.texi
doc/posix-functions/putc.texi
doc/posix-functions/putc_unlocked.texi
doc/posix-functions/putchar.texi
doc/posix-functions/putchar_unlocked.texi
doc/posix-functions/puts.texi
doc/posix-functions/putwc.texi
doc/posix-functions/putwchar.texi
doc/posix-functions/vdprintf.texi
doc/posix-functions/vfprintf.texi
doc/posix-functions/vfwprintf.texi
doc/posix-functions/vprintf.texi
doc/posix-functions/vwprintf.texi
doc/posix-functions/wordexp.texi
doc/posix-functions/wprintf.texi
tests/test-perror2.c

index 59c64ae10d4aad8b5b43191591597f03e8322a18..870ec7333e200b8f6bd57c9147ab503c5518042d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+2011-06-07  Eric Blake  <eblake@redhat.com>
+
+       test-perror: relax test to ignore cygwin bug
+       * tests/test-perror2.c (main): Relax test on requiring detection
+       of stream errors, and use unbuffered stream.
+       * doc/posix-functions/dprintf.texi (dprintf): Document bug.
+       * doc/posix-functions/fprintf.texi (fprintf): Likewise.
+       * doc/posix-functions/fputc.texi (fputc): Likewise.
+       * doc/posix-functions/fputs.texi (fputs): Likewise.
+       * doc/posix-functions/fputws.texi (fputws): Likewise.
+       * doc/posix-functions/fwprintf.texi (fwprintf): Likewise.
+       * doc/posix-functions/fwrite.texi (fwrite): Likewise.
+       * doc/posix-functions/getopt.texi (getopt): Likewise.
+       * doc/posix-functions/perror.texi (perror): Likewise.
+       * doc/posix-functions/printf.texi (printf): Likewise.
+       * doc/posix-functions/psiginfo.texi (psiginfo): Likewise.
+       * doc/posix-functions/psignal.texi (psignal): Likewise.
+       * doc/posix-functions/putc.texi (putc): Likewise.
+       * doc/posix-functions/putc_unlocked.texi (putc_unlocked):
+       Likewise.
+       * doc/posix-functions/putchar.texi (putchar): Likewise.
+       * doc/posix-functions/putchar_unlocked.texi (putchar_unlocked):
+       Likewise.
+       * doc/posix-functions/puts.texi (puts): Likewise.
+       * doc/posix-functions/putwc.texi (putwc): Likewise.
+       * doc/posix-functions/putwchar.texi (putwchar): Likewise.
+       * doc/posix-functions/vdprintf.texi (vdprintf): Likewise.
+       * doc/posix-functions/vfprintf.texi (vfprintf): Likewise.
+       * doc/posix-functions/vfwprintf.texi (vfwprintf): Likewise.
+       * doc/posix-functions/vprintf.texi (vprintf): Likewise.
+       * doc/posix-functions/vwprintf.texi (vwprintf): Likewise.
+       * doc/posix-functions/wordexp.texi (wordexp): Likewise.
+       * doc/posix-functions/wprintf.texi (wprintf): Likewise.
+
 2011-05-22  Bruno Haible  <bruno@clisp.org>
 
        strerror: Move AC_LIBOBJ invocations to module description.
index dc39022926097cbb2c4816b50c1632ef4927d189..e267cda4614091c05ab2bce77f9aa4eb1bdf35f1 100644 (file)
@@ -24,4 +24,8 @@ glibc-2.3.6.
 
 Portability problems not fixed by Gnulib:
 @itemize
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 44bcca3768c1f5d9935ed487ed1cef5743a72c8a..3948018b6cc0ee1513a687592c50b239607db10b 100644 (file)
@@ -86,5 +86,5 @@ Portability problems not fixed by Gnulib:
 @item
 Attempting to write to a read-only stream fails with @code{EOF} but
 does not set the error flag for @code{ferror} on some platforms:
-glibc 2.13.
+glibc 2.13, cygwin 1.7.9.
 @end itemize
index 9d6c9fd29cae78ba7fa9d3d3b4c22d57f61ceda6..1b5ba7c2b56f771add52c0f59cfface72ba07a89 100644 (file)
@@ -28,4 +28,8 @@ Portability problems not fixed by Gnulib:
 @item
 On Windows platforms (excluding Cygwin), this function does not set @code{errno}
 upon failure.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 7fc4bf5311540a9989ad1223750827002d84ca55..a7e79d48621d109296c8f836eca89297141b917d 100644 (file)
@@ -28,4 +28,8 @@ Portability problems not fixed by Gnulib:
 @item
 On Windows platforms (excluding Cygwin), this function does not set @code{errno}
 upon failure.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index f3b2b4e4b135adea6f41a77bbcc46148a0409a7a..c842488d0af1be10c1dcae33101121c9822d2859 100644 (file)
@@ -18,4 +18,8 @@ IRIX 5.3, Solaris 2.5.1, Cygwin 1.5.x, BeOS.
 @item
 On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
 accommodate all Unicode characters.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 79ffc25ad590cb9bbe521bd424829d6a576406ab..d245890eadc40d47ab4932b75889ff08cc1f1ec2 100644 (file)
@@ -18,4 +18,8 @@ NetBSD 3.0, OpenBSD 3.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Inter
 @item
 On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
 accommodate all Unicode characters.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 20f7fb8100f25bbafeb631557f511e8b42eb06ef..c03a70ccab362fcc0ba34a88f81da93e11b98156 100644 (file)
@@ -28,4 +28,8 @@ Portability problems not fixed by Gnulib:
 @item
 On Windows platforms (excluding Cygwin), this function does not set @code{errno}
 upon failure.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 4067295ca1720c4dc0b7aa181f04ad4cf72185e8..bab4922e191543227bda1983852e1257b077d364 100644 (file)
@@ -67,4 +67,8 @@ causing a reset by setting it non-zero, although it does not
 necessarily re-read @env{POSIXLY_CORRECT}.  Solaris @code{getopt} does
 not support either reset method, but does not maintain state that
 needs the extra level of reset.
+@item
+On some platforms, this function does not set the stream error
+indicator on attempts to write to a read-only stream:
+glibc 2.13, Cygwin 1.7.9.
 @end itemize
index 167cf39aea9dbe311f2517531d174d9ca665b3de..13231e95ea74eba09ef5f46ea0b22a8ca3d5f3fc 100644 (file)
@@ -23,7 +23,7 @@ Portability problems not fixed by Gnulib:
 @item
 POSIX requires that this function set the stream error bit (detected
 by @code{ferror}) on write failure, but not all platforms do this:
-glibc 2.13.
+glibc 2.13, cygwin 1.7.9.
 @item
 POSIX requires that this function not alter stream orientation, but
 the gnulib replacement locks in byte orientation and fails on wide
index 8fc8cb092204e8ead12c0b379f9bf6be292ad0d2..db7218b40115931b9ad91140fd908531a78da779 100644 (file)
@@ -86,5 +86,5 @@ Portability problems not fixed by Gnulib:
 @item
 Attempting to write to a read-only stream fails with @code{EOF} but
 does not set the error flag for @code{ferror} on some platforms:
-glibc 2.13.
+glibc 2.13, cygwin 1.7.9.
 @end itemize
index 2e940c0d8a23110160338962d42c0745464c59db..a0f530bcc5fa5bb4c6c8221be4cb9a7736a6bc6f 100644 (file)
@@ -14,5 +14,6 @@ Portability problems not fixed by Gnulib:
 @itemize
 @item
 This function is missing on some platforms:
-glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
+glibc 2.3.6, MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX
+5.1, HP-UX 11, OSF/1 5.1, Cygwin 1.7.9, mingw, Interix 3.5, BeOS.
 @end itemize
index 167794946ce1ff3b35866b41516610082a89e148..75e6ed882f61d5360d5f43aa0a1b5f369d9584f1 100644 (file)
@@ -14,5 +14,5 @@ Portability problems not fixed by Gnulib:
 @itemize
 @item
 This function is missing on some platforms:
-HP-UX 11, Cygwin, mingw, Interix 3.5, BeOS.
+HP-UX 11, Cygwin 1.7.9, mingw, Interix 3.5, BeOS.
 @end itemize
index d156461aced551ff73e690e746e85e796626b55d..c6a815e3eeb9631a8681022f87ddb9335104f87e 100644 (file)
@@ -28,4 +28,8 @@ Portability problems not fixed by Gnulib:
 @item
 On Windows platforms (excluding Cygwin), this function does not set @code{errno}
 upon failure.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 0c3381e20aad49610378e0add86b2fdb420ab53c..4fbf3c4cf8a20bfae2e95f483d8fe67b162ffe43 100644 (file)
@@ -15,4 +15,8 @@ Portability problems not fixed by Gnulib:
 @item
 This function is missing on some platforms:
 mingw.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index aeb6b4307ccda8f1527d53968b35ebbbde4f3faa..2ded45a2aed46b23f8bf51faf7a136054c08c999 100644 (file)
@@ -28,4 +28,8 @@ Portability problems not fixed by Gnulib:
 @item
 On Windows platforms (excluding Cygwin), this function does not set @code{errno}
 upon failure.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 5bf55b383859721e93319f7044d946ddd21f3011..bc9c3b03dec5b128989ee13ac031876a9a5e70d6 100644 (file)
@@ -15,4 +15,8 @@ Portability problems not fixed by Gnulib:
 @item
 This function is missing on some platforms:
 mingw.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index ef350ac1b1a67f9c3934aabd41002b731c9cfef2..31e3f0e4109148e23721a62544972729627b4e8f 100644 (file)
@@ -28,4 +28,8 @@ Portability problems not fixed by Gnulib:
 @item
 On Windows platforms (excluding Cygwin), this function does not set @code{errno}
 upon failure.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 82a8a962d5a5650116c3ddbd8a225e9270c5be74..b624b251e583686c4e990fb5527dd6d6112d20d2 100644 (file)
@@ -18,4 +18,8 @@ IRIX 5.3, Solaris 2.5.1, Cygwin 1.5.x, BeOS.
 @item
 On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
 accommodate all Unicode characters.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 985759acd2f56a109fc2a6becc0c10268ada1b01..28930c47ae77b7a55ded676093e6b75d5b87774e 100644 (file)
@@ -18,4 +18,8 @@ IRIX 5.3, Solaris 2.5.1, Cygwin 1.5.x, BeOS.
 @item
 On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
 accommodate all Unicode characters.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 20a6ef75c550101be89f2f682c26cfa54e7aa559..8b06c3e3ab2729ae48ba47f998b513001f38e744 100644 (file)
@@ -42,4 +42,8 @@ BeOS.
 
 Portability problems not fixed by Gnulib:
 @itemize
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index c6fab25ed74f29c63fffae7d227771d32426d5ab..4999fb5b233219529be54834b45854849ffeeb18 100644 (file)
@@ -86,5 +86,5 @@ Portability problems not fixed by Gnulib:
 @item
 Attempting to write to a read-only stream fails with @code{EOF} but
 does not set the error flag for @code{ferror} on some platforms:
-glibc 2.13.
+glibc 2.13, cygwin 1.7.9.
 @end itemize
index e018cf5901c690fb1f075c42381c8cf41cbc317a..143704b4b426b7d3b201ef2501cfeacb2b63be25 100644 (file)
@@ -18,4 +18,8 @@ NetBSD 3.0, OpenBSD 3.8, HP-UX 11.00, IRIX 6.5, Solaris 2.6, Cygwin 1.5.x, Inter
 @item
 On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
 accommodate all Unicode characters.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 21d4bc60f10c444dcd0cda2c20fa04b61697a7b5..7534e01c0ee208675ee229a5f5080784d9dbbe50 100644 (file)
@@ -86,5 +86,5 @@ Portability problems not fixed by Gnulib:
 @item
 Attempting to write to a read-only stream fails with @code{EOF} but
 does not set the error flag for @code{ferror} on some platforms:
-glibc 2.13.
+glibc 2.13, cygwin 1.7.9.
 @end itemize
index e82834a5651964ca8fe99a0affd03ba7dd552fa5..9f3e3b88de5d0d8707df9a51f8e86ad7d1d17680 100644 (file)
@@ -22,4 +22,8 @@ platforms: Cygwin 1.5.x.
 @item
 On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
 accommodate all Unicode characters.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index f5d9eafdb93c742c09749569b38e95303afc098c..67872001279c4c1dfb9c524497e81e37316b612a 100644 (file)
@@ -15,4 +15,8 @@ Portability problems not fixed by Gnulib:
 @item
 This function is missing on some platforms:
 MacOS X 10.3, OpenBSD 3.8, IRIX 5.3, Cygwin 1.5.x, mingw, Interix 3.5, BeOS.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 885dd8b0155058c5d37d8b60fb3365452fb9499b..330ca23b19c5c6ffea92853cd8b39be171c94af8 100644 (file)
@@ -22,4 +22,8 @@ platforms: Cygwin 1.5.x.
 @item
 On AIX and Windows platforms, @code{wchar_t} is a 16-bit type and therefore cannot
 accommodate all Unicode characters.
+@item
+On some platforms, this function does not set @code{errno} or the
+stream error indicator on attempts to write to a read-only stream:
+Cygwin 1.7.9.
 @end itemize
index 3aab640a4841d4e252c101e26c75f396e9e52fcf..e230f923204cf19e80d6cf688e8f39c435d38b23 100644 (file)
@@ -116,12 +116,14 @@ main (void)
   /* Test that perror reports write failure.  */
   {
     ASSERT (freopen (BASE ".tmp", "r", stderr) == stderr);
-    ASSERT (setvbuf (stderr, NULL, _IOLBF, BUFSIZ) == 0);
+    ASSERT (setvbuf (stderr, NULL, _IONBF, BUFSIZ) == 0);
     errno = -1;
     ASSERT (!ferror (stderr));
     perror (NULL);
-    ASSERT (errno > 0);
 #if 0
+    /* Commented out until cygwin behaves:
+       http://sourceware.org/ml/newlib/2011/msg00228.html */
+    ASSERT (errno > 0);
     /* Commented out until glibc behaves:
        http://sourceware.org/bugzilla/show_bug.cgi?id=12792 */
     ASSERT (ferror (stderr));