Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Bug#255788: $'' does not work after <<<
- X-seq: zsh-workers 20107
- From: Peter Stephenson <pws@xxxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: Bug#255788: $'' does not work after <<<
- Date: Sun, 27 Jun 2004 01:07:47 +0100
- Cc: 255788-forwarded@xxxxxxxxxxxxxxx
- In-reply-to: "Bart Schaefer"'s message of "Sat, 26 Jun 2004 11:34:29 PDT." <Pine.LNX.4.60.0406261112340.19831@xxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
Bart Schaefer wrote:
> On Fri, 25 Jun 2004, Peter Stephenson wrote:
> > I don't know the history of this, but it looks like someone got their
> > wires crossed since the remnulargs() in the parsing code is obviously
> > incompatible with the singsub() in the exec code (er, for certain values
> > of `obviously').
>
> Um, except that the singsub() wasn't present in the exec code until you
> added it just now? So the remnulargs() was needed to, well, remove the
> Nulargs formerly inserted by the loop that you also modified.
No, the singsub() *was* already in that function (for here strings).
The bit where I added singsub() was in here documents, not here strings.
> Before this patch:
>
> schaefer<501> bar=baz
> schaefer<502> cat <<$bar
> heredoc> foo
> heredoc> baz
> heredoc> $bar
> foo
> baz
> schaefer<503>
>
> After this patch:
>
> schaefer<502> cat <<$bar
> heredoc> foo
> heredoc> baz
> foo
> schaefer<503>
I guess the print-like behaviour of $'...' is the only thing we do
want, right? '...' has no special effect, and "..." does $-style and
`-style expansions which we don't want. The two approaches seem to be
either an option to untokenize() to remove the bits we don't want
expanded, or dig deeper into singsub() to bring out the bit we want. (By
the way, I think this compromise sucks, but it does look like we're
stuck with it.)
Hmm, we also need to decide whether this applies to here strings. My
view would be that they get the full expansion treatment, since they are
essentially a command argument, not a glorified end marker. But I'm
sure you'll let me know if I'm wrong. (I'll make this clear in the
documentation either way.)
> > I haven't dared remove the dupstring() but I suspect
> > it must be redundant, somehow.
>
> The reason for the dupstring() is that remnulargs() modifies its argument
> in place. If you take out remnulargs() you can take out the dupstring().
That's what I assumed. But I didn't really understand how the memory
allocation for the bits of the here-document structures worked.
--
Peter Stephenson <pws@xxxxxxxxxxxxxxxxxxxxxxxx>
Work: pws@xxxxxxx
Web: http://www.pwstephenson.fsnet.co.uk
Messages sorted by:
Reverse Date,
Date,
Thread,
Author