diff options
author | Mikael Magnusson <mikachu@gmail.com> | 2022-03-08 19:34:20 +0100 |
---|---|---|
committer | Mikael Magnusson <mikachu@gmail.com> | 2022-03-30 08:07:39 +0200 |
commit | d7b8619396d806d390126c2abd1c3ce099fe7f59 (patch) | |
tree | 69d35674d1901f992dc33187e6ce9a010908b863 | |
parent | 3bf95b91f0cd378c1a4e9c611a51cb9fe0e2ffcd (diff) | |
download | zsh-d7b8619396d806d390126c2abd1c3ce099fe7f59.tar.gz zsh-d7b8619396d806d390126c2abd1c3ce099fe7f59.tar.xz zsh-d7b8619396d806d390126c2abd1c3ce099fe7f59.zip |
49813: <<<: Document newline behavior and fix optimization
The =(<<<foo) optimization forgot to add a newline, but =(cat<<<foo) always did, make the behavior consistent, and document it.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Doc/Zsh/redirect.yo | 3 | ||||
-rw-r--r-- | Src/exec.c | 4 |
3 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 3b7cc4921..a525d2093 100644 --- a/ChangeLog +++ b/ChangeLog @@ -15,6 +15,9 @@ * 49870: Src/glob.c: Fix NULL reference in match code more + * 49813: Doc/Zsh/redirect.yo, Src/exec.c: <<<: Document newline + behavior and fix optimization + 2022-03-29 Bart Schaefer <schaefer@zsh.org> * 49918: NEWS, README: Update for 49917 and 49911. diff --git a/Doc/Zsh/redirect.yo b/Doc/Zsh/redirect.yo index 2b48974b4..fd40ab5a4 100644 --- a/Doc/Zsh/redirect.yo +++ b/Doc/Zsh/redirect.yo @@ -86,7 +86,8 @@ item(tt(<<<) var(word))( Perform shell expansion on var(word) and pass the result to standard input. This is known as a em(here-string). Compare the use of var(word) in here-documents above, where var(word) -does not undergo shell expansion. +does not undergo shell expansion. The result will have a trailing newline +after it. ) xitem(tt(<&) var(number)) item(tt(>&) var(number))( diff --git a/Src/exec.c b/Src/exec.c index f67074846..70cbfc97f 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -4836,8 +4836,10 @@ getoutputfile(char *cmd, char **eptr) singsub(&s); if (errflag) s = NULL; - else + else { untokenize(s); + s = dyncat(s, "\n"); + } } if (!s) /* Unclear why we need to do this before open() */ |