Subject: Re: bug#8846: coreutils-8.12 on HP-UX 11.31: 3 of 365 tests failed

From: Jim Meyering <[email-masked]>
Date: Mon, 13 Jun 2011 12:46:41 +0200

Stefano Lattarini wrote:
> Hello Jim.
...
> Wouldn't it be simpler, and potentially more correct, to use simply:
>
>  warn_ () { eval 'echo "$@" 1>&'"$stderr_fileno_"; }
>
> With your new implementation, I see this on Debian with bash and dash:
>
>  $ stderr_fileno_=2; warn_ () { eval 'echo "'"$@"'" 1>&'"$stderr_fileno_"; }
>  $ $ warn_ '$HOME'
>  /home/stefano
>
> which is not intended behaviour IMHO.

Thanks again.  Here's what I've just pushed.
I'll do the same for gnulib shortly.

>From 6fb9aeedd1b858a61d5cbf7f15782adf29ff733a Mon Sep 17 00:00:00 2001
From: Jim Meyering <[email-masked]>
Date: Mon, 13 Jun 2011 12:07:14 +0200
Subject: [PATCH] init.sh: accommodate shells for which 1>&$stderr_fileno_
 fails

* tests/init.sh (warn_): Use eval to work around a bug in some shells,
like those of Solaris 10 and HP-UX 11.11.
Improved by Stefano Lattarini.
---
 tests/init.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/tests/init.sh b/tests/init.sh
index 14f2e26..25850af 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -74,7 +74,7 @@ Exit () { set +e; (exit $1); exit $1; }
 # the reason for skip/failure to console, rather than to the .log files.
 : ${stderr_fileno_=2}

-warn_ () { echo "$@" 1>&$stderr_fileno_; }
+warn_ () { eval 'echo "$@" 1>&'"$stderr_fileno_"; }
 fail_ () { warn_ "$ME_: failed test: $@"; Exit 1; }
 skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; }
 framework_failure_ () { warn_ "$ME_: set-up failure: $@"; Exit 99; }
--
1.7.6.rc0.293.g40857