On Monday 13 June 2011, Jim Meyering wrote:
> 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 <meyer...@redhat.com>
> 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
> 
Thanks.  I'll port this to automake tests/defs soonish; I assume you are
ok to be credited as lead author in ChangeLog and git commit, right?

Regards,
   Stefano



Reply via email to