Fix hang in ext/POSIX/t/sysconf.t on GNU/Hurd
authorPino Toscano <pino@debian.org>
Mon, 31 Oct 2011 21:37:04 +0000 (21:37 +0000)
committerRicardo Signes <rjbs@cpan.org>
Thu, 9 Aug 2012 20:04:11 +0000 (16:04 -0400)
commit3a0aaea7bf1b7839074362f176cf34b30f313a19
tree0c7986a95032828296de3ab7c506efbc915e156f
parente15fdbc5407d0db6fd61546e55babb7210202362
Fix hang in ext/POSIX/t/sysconf.t on GNU/Hurd

while compiling perl 5.14.2 on GNU/Hurd, I ran into what it seems a
undefined POSIX behaviour in ext/POSIX/t/sysconf.t.

      my $fd = POSIX::open($fifo, O_RDWR)
      or skip("could not open $fifo ($!)", 3 * @path_consts_fifo);

according to the POSIX open()[1] about O_RDWR,
  The result is undefined if this flag is applied to a FIFO.
.... which is actually our case.
Apparently Linux and *FreeBSD (and maybe also OSes) accept this
behaviour, but on GNU/Hurd this causes the open() call to block
undefinitely. Given there's nothing done with the FIFO if not querying
{,f}pathconf() values, the proposed solution I attached is to change
the opening mode to "O_RDONLY | O_NONBLOCK".

[1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html
ext/POSIX/t/sysconf.t