Re: dash tested against ash testsuite: 17 failures

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

 



On Wed, Mar 07, 2018 at 01:36:08AM +0100, Harald van Dijk wrote:
>
> Oh, indeed, thanks.
> 
> There's another problem: when there is no following command (as in the above
> example), things break. A shorter reproducer that has failed for years is
> 
>   $ dash -c 'alias x=
>   x'
>   dash: 2: Syntax error: end of file unexpected
> 
> This breaks because the part where list() checks for NL/EOF, checkkwd==0, so
> aliases aren't expanded. Immediately after that, checkkwd is set and the
> next call to readtoken() would return TEOF, but by that point, dash has
> already committed to parsing a command.
> 
> Since this is actually a long-standing problem, not something introduced by
> the patch, I think it's okay to ignore for now. Do you agree?

Sure.

> >I'm fine with the concept.  However, your patch also breaks here-
> >document parsing when the delimiter is a single backslash.
> >
> >	cat << "\"
> >	\
> >
> >If you can fix these two problems it should be good to go.
> 
> As Martijn Dekker wrote, this should work when the backslash is escaped or
> single-quoted, and in my testing does. But what you have is a nice start of
> another corner case:

I made mistake with the quotes but it's a real problem:

cat << '\'
\

The issue is that your pgetc_eatbnl executes before we check for the
end of here-documents.  It has to be moved after it.  IOW I think
you should leave the pgetc's before CHECKEND as is, which also means
keeping some of the CBACK processing as is.

Thanks,
-- 
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux