On Mon, Sep 29, 2014 at 10:55:07PM +0800, Herbert Xu wrote: > On Tue, Aug 26, 2014 at 12:34:42PM +0000, Eric Blake wrote: > [snip] > > So the fact that dash is treating the elided backslash-newline as a > > token separator, and parsing your input as if ${EDIT}OR instead of > > ${EDITOR} is a bug in dash. > I agree. The following patch should fix this: > commit ef91d3d6a4c39421fd3a391e02cd82f9f3aee4a8 > Author: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Date: Mon Sep 29 22:52:41 2014 +0800 > [PARSER] Handle backslash newlines properly after dollar sign > [snip] > diff --git a/ChangeLog b/ChangeLog > index 0fbc514..398bd15 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,6 +1,7 @@ > 2014-09-29 Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > > * Kill pgetc_macro. > + * Handle backslash newlines properly after dollar sign. > > 2014-09-28 Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > > diff --git a/src/parser.c b/src/parser.c > index c4eaae2..2b07437 100644 > --- a/src/parser.c > +++ b/src/parser.c > @@ -827,6 +827,24 @@ breakloop: > #undef RETURN > } > > +static int pgetc_eatbnl(void) > +{ > + int c; > + > + while ((c = pgetc()) == '\\') { > + if (pgetc() != '\n') { > + pungetc(); > + break; > + } > + > + plinno++; > + if (doprompt) > + setprompt(2); > + } > + > + return c; > +} > + > > > /* This implementation of pgetc_eatbnl() does not allow pushing back a backslash, since that would call pungetc() twice without an intervening pgetc(). However, some places do attempt to push back a backslash. As a result, a script file containing many repeated ${w#\#} will not be parsed correctly. There is a similar bug with repeated $\# but this is not specified by POSIX. -- Jilles Tjoelker -- 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