diff --git a/ChangeLog b/ChangeLog index 6f49920..e273b83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2014-01-20 Paul Eggert + fdopen-tests: port to Tru64 + * tests/test-fdopen.c (main): Don't invoke fdopen on a file + descriptor that is not open, as POSIX doesn't specify the + resulting behavior and the test does not work on Tru64. + Problem reported by Steven M. Schweda in: + http://lists.gnu.org/archive/html/bug-gnulib/2014-01/msg00079.html + stdalign: port to HP-UX compilers * lib/stdalign.in.h (_Alignas): Use __attribute__ (__aligned__ (x)) if __HP_cc or __HP_aCC are nonzero. diff --git a/tests/test-fdopen.c b/tests/test-fdopen.c index 96a887f..743511e 100644 --- a/tests/test-fdopen.c +++ b/tests/test-fdopen.c @@ -29,28 +29,21 @@ SIGNATURE_CHECK (fdopen, FILE *, (int, const char *)); int main (void) { - /* Test behaviour for invalid file descriptors. */ - { - FILE *fp; - - errno = 0; - fp = fdopen (-1, "r"); - if (fp == NULL) - ASSERT (errno == EBADF); - else - fclose (fp); - } - { - FILE *fp; - - close (99); - errno = 0; - fp = fdopen (99, "r"); - if (fp == NULL) - ASSERT (errno == EBADF); - else - fclose (fp); - } + /* Test behavior on failure. POSIX makes it hard to check for + failure, since the behavior is not well-defined on invalid file + descriptors, so try fdopen 1000 times and if that's not enough to + fail due to EMFILE, so be it. */ + + int i; + for (i = 0; i < 1000; i++) + { + errno = 0; + if (! fdopen (STDOUT_FILENO, "w")) + { + ASSERT (errno != 0); + break; + } + } return 0; }