summary refs log tree commit diff
path: root/src/var.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2008-07-13 19:20:10 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2008-07-13 19:20:10 +0800
commit4df1e776cd079357f877f0d491a80a234f670452 (patch)
tree43ffff6e67db84fd7759dc3908fb34cce2507612 /src/var.c
parent[EXPAND] Fixed non-leading slash treatment in expmeta (diff)
downloaddash-4df1e776cd079357f877f0d491a80a234f670452.tar.gz
dash-4df1e776cd079357f877f0d491a80a234f670452.zip
[BUILTIN] Fixed 3,4-argument cases for test per POSIX
----- Forwarded message from Gerrit Pape <pape@smarden.org> -----

Subject: Bug#455828: dash: 4-argument test "test \( ! -e \)" yields an error
Date: Fri, 28 Dec 2007 08:53:29 +0000
From: Gerrit Pape <pape@smarden.org>
To: Vincent Lefevre <vincent@vinc17.org>, 455828@bugs.debian.org

On Thu, Dec 27, 2007 at 06:23:20PM +0100, Vincent Lefevre wrote:
> On 2007-12-27 16:00:06 +0000, Gerrit Pape wrote:
> > On Wed, Dec 12, 2007 at 02:18:47AM +0100, Vincent Lefevre wrote:
> > > According to POSIX[*], "test \( ! -e \)" is a 4-argument test and is
> > > here equivalent to "test ! -e". But dash (like ksh93 and bash) yields
> > > an error:
> > >
> > > $ test \( ! -e \) || echo $?
> > > test: 1: closing paren expected
> > > 2
> > > $ test ! -e || echo $?
> > > 1
> >
> > Hi Vincent,
> >
> > the -e switch to test takes an argument, a pathname.
>
> According to POSIX, in both above examples, "-e" is *not* a switch,
> just a string.
>
>   test \( ! -e \)
>
> means: return true if the string "-e" is empty, otherwhise return false.
> The error in dash is that it incorrectly thinks that "-e" is a switch in
> this context.

I see, you're right.  Thanks, Gerrit.

----- End forwarded message -----

This patch hard-codes the 3,4-argument cases in the way required by
POSIX.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'src/var.c')
0 files changed, 0 insertions, 0 deletions