bug-gnulib
[Top][All Lists]
Advanced

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

Re: [coreutils] Re: Builds of coreutils-8.6.19-1369f


From: Ralf Wildenhues
Subject: Re: [coreutils] Re: Builds of coreutils-8.6.19-1369f
Date: Sat, 6 Nov 2010 17:57:38 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

Hello,

* Jim Meyering wrote on Sat, Nov 06, 2010 at 02:55:47PM CET:
> Jim Meyering wrote:
> > Andreas Schwab wrote:
> >> Jim Meyering writes:
> >>> cat <<\EOF > init.cfg
> >>> f()
> >>> {
> >>>   case $IFS in '') exit 91;; esac
> >>>   local s=$IFS
> >>>   case $s in '') exit 97;; esac
> >>> }
> >>> f
> >>> EOF
> >>> $ /bin/sh -c '. init.cfg'
> >>> [Exit 97]
> >>
> >> Perhaps local isn't really the builtin local?

> Subject: [PATCH] init.sh: disqualify FreeBSD 8.1's /bin/sh
> 
> * tests/init.sh: Arrange not to accept FreeBSD 8.1's /bin/sh, since
> it fails this test: /bin/sh -c 'f(){ local s=$IFS; test -n "$s"; }; f'

> @@ -115,6 +118,7 @@ fi
>  #  ? - not ok
>  gl_shell_test_script_='
>  test $(echo y) = y || exit 1
> +gl_local_test_(){ local s=$IFS; test -n "$s"; }; gl_local_test_ || exit 1

There may be two issues at work here:

- there is no requirement that sh does not white-space-split the right hand
side of a 'local' assignment, 'local' isn't standardized anywhere.  At least
one version of dash is guilty here.
- Posix does not require IFS to be set upon script startup.  It only requires
that, if IFS is unset, word splitting ought to behave as if it were set to
space, tab, and newline, in that order.  That is why the startup code of all
autotools scripts explicitly sets IFS, so that saving and restoring works.

Cheers,
Ralf



reply via email to

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