[Top][All Lists]
[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