From 4384fdc7f0b5a1de78af344446fcbb90b7182c9e Mon Sep 17 00:00:00 2001
From: Peter Stephenson
Date: Mon, 24 Jun 2019 20:19:19 +0100
Subject: 44446: Fix here document with file descriptor declarator.
Add unit test.
---
ChangeLog | 5 +++++
Src/parse.c | 3 ++-
Test/A04redirect.ztst | 10 +++++++++-
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 14aadf2e0..7c1d327d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2019-06-24 Peter Stephenson
+
+ * 44446: Src/parse.c, Test/A04redirect.ztst: fix here document
+ with file descriptor declarator.
+
2019-06-23 Peter Stephenson
* Martijn: 44443: Src/builtin.c: POSIX allows exporting readonly
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.
--
cgit 1.4.1