From: Peter Stephenson <p.w.stephenson@ntlworld.com>
To: zsh-workers@zsh.org
Subject: Re: [bug] {fd}<<EOF
Date: Mon, 24 Jun 2019 20:02:09 +0100 [thread overview]
Message-ID: <16fed15234db4cd724a977063f425d105600250c.camel@ntlworld.com> (raw)
In-Reply-To: <20190620050214.iex364omy7kfxqng@chaz.gmail.com>
On Thu, 2019-06-20 at 06:02 +0100, Stephane Chazelas wrote:
> $ zsh -xc $': {fd}<< EOF\nEOF'
> +zsh:1> [[ - $'\C-D'zsh:1: bad cond code
> ]]
>
> On the more complicated code I first ran into the problem, it
> was crashing with "out of memory".
>
> exec {fd}<<EOF
> EOF
>
> is a bash-compatible way to get a temp file that automatically
> cleans up on exit. Needs Linux or Cygwin to manipulate it with
> /dev/fd/$fd
diff --git a/Src/parse.c b/Src/parse.c
index 27234497b..53709ac00 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -2279,7 +2279,8 @@ par_redir(int *rp, char *idstring)
void
setheredoc(int pc, int type, char *str, char *termstr, char *munged_termstr)
{
- ecbuf[pc] = WCB_REDIR(type | REDIR_FROM_HEREDOC_MASK);
+ int varid = WC_REDIR_VARID(ecbuf[pc]) ? REDIR_VARID_MASK : 0;
+ ecbuf[pc] = WCB_REDIR(type | REDIR_FROM_HEREDOC_MASK | varid);
ecbuf[pc + 2] = ecstrcode(str);
ecbuf[pc + 3] = ecstrcode(termstr);
ecbuf[pc + 4] = ecstrcode(munged_termstr);
diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst
index 1e17dddd4..d60519064 100644
--- a/Test/A04redirect.ztst
+++ b/Test/A04redirect.ztst
@@ -692,11 +692,19 @@
>b
>d
- umask 0777
+ (umask 0777
cat <<' HERE'
look ma, no permissions
HERE
cat <<<"it's a miracle"
+ )
0:Here-{string,document}s succeed with restrictive umask
> look ma, no permissions
>it's a miracle
+
+ exec {testfd}<<' HERE'
+ This is, in some sense, a here document.
+ HERE
+ cat <&$testfd
+0:Regression test for here document with fd declarator
+> This is, in some sense, a here document.
prev parent reply other threads:[~2019-06-24 19:02 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-20 5:02 Stephane Chazelas
2019-06-24 19:02 ` Peter Stephenson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=16fed15234db4cd724a977063f425d105600250c.camel@ntlworld.com \
--to=p.w.stephenson@ntlworld.com \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).