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