Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [bug] {fd}<<EOF
- X-seq: zsh-workers 44446
- From: Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: Re: [bug] {fd}<<EOF
- Date: Mon, 24 Jun 2019 20:02:09 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ntlworld.com;	s=meg.feb2017; t=1561402929;	bh=xjUoKEU3QgkXZT4X6JbvNwwnxXt/3WZz896WVfcKtZE=;	h=Subject:From:To:Date:In-Reply-To:References;	b=bsw5EbqKaiL/snO7MaFEL9cnndsEkb6nqIWbIE+dBO0/ezz/dGFPYq1DNXZ/X/1tv	 f56omhK38/ncAlkt4H4EdrYX/5XX6tdlko0CLKLqwOpy5tf/ArbMJmjA/r9EMic7dd	 hucL+ogT9pCKYfunRT3aKcG+YFevb0h3ryuYY4zXCa8EpztIB0zojACyfaxKHQEe9g	 SgJxVY8UtOQMyib+785YiiV6gnqpmOQB7mFpAfufll7NokNBQLR6g3LU7aZSXY0Mk0	 wSHULnVp7a8oB8d15dZ3VOV03lzdBhLPPddkP9OEgQIen6k8eDYRCkv/SQiGpxZYfj	 6Wygz8Yn5k8RQ==
- In-reply-to: <20190620050214.iex364omy7kfxqng@chaz.gmail.com>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- List-unsubscribe: <mailto:zsh-workers-unsubscribe@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <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.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author