Daniel Richard G. wrote: > this is not a documented return value for errno in the > mkfifo(3) man page.
Clearly a bug in HP-UX 11.11, but I doubt whether anybody cares about this bug, so I was lazy and pushed this patch. I hope it fixes several of the test failures for you, and we can turn our attention to one of the remaining test failures. >From 22d8c960f5765140fa587c091c2e607bc0b2404a Mon Sep 17 00:00:00 2001 From: Paul Eggert <egg...@cs.ucla.edu> Date: Wed, 16 Oct 2013 07:47:53 -0700 Subject: [PATCH] mkfifo-tests, etc.: allow HP-UX 11.11 bug Problem reported by Daniel Richard G. in <http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00068.html>. * doc/posix-functions/mkfifo.texi (mkfifo): * doc/posix-functions/mkfifoat.texi (mkfifoat): * doc/posix-functions/mknod.texi (mknod): * doc/posix-functions/mknodat.texi (mknodat): Document the HP-UX 11.11 bug. * tests/test-mkfifo.h (test_mkfifo): Allow the HP-UX 11.11 bug. --- ChangeLog | 13 +++++++++++++ doc/posix-functions/mkfifo.texi | 4 ++++ doc/posix-functions/mkfifoat.texi | 7 +++++-- doc/posix-functions/mknod.texi | 4 ++++ doc/posix-functions/mknodat.texi | 4 ++++ tests/test-mkfifo.h | 5 ++++- 6 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c70f1fe..2916f97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2013-10-16 Paul Eggert <egg...@cs.ucla.edu> + + mkfifo-tests, etc.: allow HP-UX 11.11 bug + Problem reported by Daniel Richard G. in + <http://lists.gnu.org/archive/html/bug-gnulib/2013-10/msg00068.html>. + * doc/posix-functions/mkfifo.texi (mkfifo): + * doc/posix-functions/mkfifoat.texi (mkfifoat): + * doc/posix-functions/mknod.texi (mknod): + * doc/posix-functions/mknodat.texi (mknodat): + Document the HP-UX 11.11 bug. + * tests/test-mkfifo.h (test_mkfifo): + Allow the HP-UX 11.11 bug. + 2013-10-14 Paul Eggert <egg...@cs.ucla.edu> acl: allow cross-compilation to Gentoo diff --git a/doc/posix-functions/mkfifo.texi b/doc/posix-functions/mkfifo.texi index 53a17bc..6fc49f7 100644 --- a/doc/posix-functions/mkfifo.texi +++ b/doc/posix-functions/mkfifo.texi @@ -19,4 +19,8 @@ mingw, MSVC 9. Portability problems not fixed by Gnulib: @itemize +@item +If the argument exists and is a directory, this function fails with +@code{EISDIR} instead of the correct @code{EEXIST}: +HP-UX 11.11. @end itemize diff --git a/doc/posix-functions/mkfifoat.texi b/doc/posix-functions/mkfifoat.texi index fbe6c04..6476175 100644 --- a/doc/posix-functions/mkfifoat.texi +++ b/doc/posix-functions/mkfifoat.texi @@ -20,6 +20,9 @@ Portability problems not fixed by Gnulib: @itemize @item The gnulib replacement function always fails with @samp{ENOSYS} on -some platforms: -mingw, MSVC 9. +some platforms: mingw, MSVC 9. +@item +If the argument exists and is a directory, the gnulib replacement +function fails with @code{EISDIR} instead of the correct +@code{EEXIST}: HP-UX 11.11. @end itemize diff --git a/doc/posix-functions/mknod.texi b/doc/posix-functions/mknod.texi index e7dd13c..6618694 100644 --- a/doc/posix-functions/mknod.texi +++ b/doc/posix-functions/mknod.texi @@ -26,4 +26,8 @@ Portability problems not fixed by Gnulib: Use of this function for anything except fifos is not portable, generally requiring super-user privileges and knowledge of supported device numbers. +@item +If the argument exists and is a directory, this function fails with +@code{EISDIR} instead of the correct @code{EEXIST}: +HP-UX 11.11. @end itemize diff --git a/doc/posix-functions/mknodat.texi b/doc/posix-functions/mknodat.texi index 8db9313..10175d0 100644 --- a/doc/posix-functions/mknodat.texi +++ b/doc/posix-functions/mknodat.texi @@ -22,4 +22,8 @@ Portability problems not fixed by Gnulib: The gnulib replacement function always fails with @samp{ENOSYS} on some platforms: mingw, MSVC 9. +@item +If the argument exists and is a directory, the gnulib replacement +function fails with @code{EISDIR} instead of the correct +@code{EEXIST}: HP-UX 11.11. @end itemize diff --git a/tests/test-mkfifo.h b/tests/test-mkfifo.h index 5adbf08..834d39f 100644 --- a/tests/test-mkfifo.h +++ b/tests/test-mkfifo.h @@ -43,7 +43,10 @@ test_mkfifo (int (*func) (char const *, mode_t), bool print) ASSERT (errno == ENOENT); errno = 0; ASSERT (func (".", 0600) == -1); - ASSERT (errno == EEXIST || errno == EINVAL); + /* Allow HP-UX 11.11's EISDIR, even though POSIX says it's wrong, + since it doesn't really hurt anything and we lack the energy to + fix it. */ + ASSERT (errno == EEXIST || errno == EINVAL || errno == EISDIR); errno = 0; ASSERT (func (BASE "fifo", 0600) == -1); ASSERT (errno == EEXIST); -- 1.8.3.1