summaryrefslogtreecommitdiff
path: root/app-shells/zsh/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-04-16 13:07:24 +0100
committerV3n3RiX <venerix@koprulu.sector>2022-04-16 13:07:24 +0100
commit0c100b7dd2b30e75b799d806df4ef899fd98e1ea (patch)
tree464c922e949c7e4d5d891fb2cdda5daee5612537 /app-shells/zsh/files
parente68d405c5d712af4387159df07e226217bdda049 (diff)
gentoo resync : 16.04.2022
Diffstat (limited to 'app-shells/zsh/files')
-rw-r--r--app-shells/zsh/files/zsh-5.8.1-non_interactive_shell_regression_fix.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/app-shells/zsh/files/zsh-5.8.1-non_interactive_shell_regression_fix.patch b/app-shells/zsh/files/zsh-5.8.1-non_interactive_shell_regression_fix.patch
new file mode 100644
index 000000000000..6e202fa2fb24
--- /dev/null
+++ b/app-shells/zsh/files/zsh-5.8.1-non_interactive_shell_regression_fix.patch
@@ -0,0 +1,76 @@
+From da8be06c2062ea02795bcba25172369ec68848cf Mon Sep 17 00:00:00 2001
+From: Peter Stephenson <p.w.stephenson@ntlworld.com>
+Date: Thu, 3 Mar 2022 19:19:35 +0000
+Subject: [PATCH] 49792: Non-interative shell input is line buffered.
+
+---
+ ChangeLog | 5 +++++
+ Src/input.c | 21 ++++++++++++++-------
+ Test/A01grammar.ztst | 9 +++++++++
+ 3 files changed, 28 insertions(+), 7 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 8a5ad4941..cae2fc4e3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,8 @@
++2022-03-03 Peter Stephenson <p.w.stephenson@ntlworld.com>
++
++ * 49792: Src/input.c, Test/A01grammar.ztst: Use line buffering
++ for non-interactive input.
++
+ 2022-02-12 dana <dana@dana.is>
+
+ * unposted: Config/version.mk, Etc/FAQ.yo, README: Update
+diff --git a/Src/input.c b/Src/input.c
+index 18228b37d..caa8e23b0 100644
+--- a/Src/input.c
++++ b/Src/input.c
+@@ -223,13 +223,20 @@ shingetchar(void)
+ return STOUC(*shinbufptr++);
+
+ shinbufreset();
+- do {
+- errno = 0;
+- nread = read(SHIN, shinbuffer, SHINBUFSIZE);
+- } while (nread < 0 && errno == EINTR);
+- if (nread <= 0)
+- return -1;
+- shinbufendptr = shinbuffer + nread;
++ for (;;) {
++ errno = 0;
++ nread = read(SHIN, shinbufendptr, 1);
++ if (nread > 0) {
++ /* Use line buffering (POSIX requirement) */
++ if (*shinbufendptr++ == '\n')
++ break;
++ if (shinbufendptr == shinbuffer + SHINBUFSIZE)
++ break;
++ } else if (nread == 0 || errno != EINTR)
++ break;
++ }
++ if (shinbufendptr == shinbuffer)
++ return -1;
+ return STOUC(*shinbufptr++);
+ }
+
+diff --git a/Test/A01grammar.ztst b/Test/A01grammar.ztst
+index 1e0e9a04e..adbf5f1d9 100644
+--- a/Test/A01grammar.ztst
++++ b/Test/A01grammar.ztst
+@@ -932,3 +932,12 @@ F:Note that the behaviour of 'exit' inside try-list inside a function is unspeci
+ $ZTST_testdir/../Src/zsh -fc '{ ( ) } always { echo foo }'
+ -f:exec last command optimization inhibited for try/always
+ >foo
++
++ (
++ export VALUE=first
++ print -l 'echo Value is $VALUE' 'VALUE=second sh' 'echo Value is $VALUE' |
++ $ZTST_testdir/../Src/zsh -f
++ )
++0:Non-interactive shell command input is line buffered
++>Value is first
++>Value is second
+--
+2.36.0.rc2
+