m4-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] build: avoid test failure on HPUX


From: Gary V . Vaughan
Subject: Re: [PATCH] build: avoid test failure on HPUX
Date: Thu, 14 Mar 2013 09:47:09 +0700

Hi Eric,

Thanks for working on this.

On 13 Mar 2013, at 06:30, Eric Blake <address@hidden> wrote:

> POSIX permits implementations to open fd 0, 1, and 2 on exec(), even
> when the user tried to close them.  HPUX-11.21 is one of the
> implementations that does not allow closed standard descriptors,
> leading to a failure of test 005.command_li.  But a test that makes
> sure we behave gracefully in the face of closed standard descriptors
> makes no sense on a platform where we can never have them closed, so
> add some code to skip the test on "helpful" platforms.
> 
> * doc/m4.texi (Command line files): Skip tests on systems where it
> is impossible to start with stdin/out closed.
> Reported by Gary V. Vaughan.
> 
> Signed-off-by: Eric Blake <address@hidden>
> ---
> 
> Gary, I think this will fix the issue you saw, but would like some
> confirmation before I push it.

Not quite, the test is not skipped with your patch applied as is:

  hppa11.31% /bin/cat <&- 2>/dev/null
  hppa11.31% echo $?
  2
  hppa11.11% /bin/cat <&- 2>/dev/null
  hppa11.11% echo $?
  0

And yet, per my original report:

  hppa11.31% echo | /bin/cat >&- 2>/dev/null
  hppa11.31% echo $?
  0
  hppa11.11% echo | /bin/cat >&- 2>/dev/null
  hppa11.11% echo
  1

> @@ -993,6 +993,9 @@ Command line files
> ifdef(`__unix__', ,
>       `errprint(` skipping: syscmd does not have unix semantics
> ')m4exit(`77')')dnl
> +syscmd(`cat <&- 2>/dev/null')ifelse(sysval, `0',
> +       `errprint(` skipping: system does not allow closing stdin
> +')m4exit(`77')')dnl

Taking into account the bizzare difference between stdin and stdout behaviour,
this works for me:

syscmd(`echo|cat >&- 2>/dev/null')ifelse(sysval, `0',
       `errprint(` skipping: system does not allow closing stdout
')m4exit(`77')')dnl

> changequote(`[', `]')dnl
> syscmd([echo | ']__program__[' >&-])dnl
> @error{}m4: write error: Bad file descriptor
> @@ -1004,6 +1007,9 @@ Command line files
> ifdef(`__unix__', ,
>       `errprint(` skipping: syscmd does not have unix semantics
> ')m4exit(`77')')dnl
> +syscmd(`cat <&- 2>/dev/null')ifelse(sysval, `0',
> +       `errprint(` skipping: system does not allow closing stdin
> +')m4exit(`77')')dnl

And similarly, above.

Of course this reveals some more gnulib testsuite failures on ia64*-hpux*, but
that's another story... ;)

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]