Kamil Dudka cb022d
From dc0675a5b8f89b8e504fe1641d57a896674caac5 Mon Sep 17 00:00:00 2001
Kamil Dudka cb022d
From: Peter Stephenson <pws@zsh.org>
Kamil Dudka cb022d
Date: Tue, 20 Jan 2015 09:29:22 +0000
Kamil Dudka cb022d
Subject: [PATCH 1/2] users/19751: remove error on failure to close file
Kamil Dudka cb022d
 descriptor by number.
Kamil Dudka cb022d
Kamil Dudka cb022d
Keep it when closing file descriptor stored in a variable, i.e.
Kamil Dudka cb022d
explicitly opened by the user.
Kamil Dudka cb022d
Kamil Dudka cb022d
Upstream-commit: e6d964246700581fe22ea834b2ea12dd301e8c3d
Kamil Dudka cb022d
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
Kamil Dudka cb022d
---
Kamil Dudka cb022d
 Src/exec.c            |  7 ++++++-
Kamil Dudka cb022d
 Test/A04redirect.ztst | 10 ++++++----
Kamil Dudka cb022d
 2 files changed, 12 insertions(+), 5 deletions(-)
Kamil Dudka cb022d
Kamil Dudka cb022d
diff --git a/Src/exec.c b/Src/exec.c
Kamil Dudka cb022d
index a9c4688..04c8b50 100644
Kamil Dudka cb022d
--- a/Src/exec.c
Kamil Dudka cb022d
+++ b/Src/exec.c
Kamil Dudka cb022d
@@ -3167,7 +3167,12 @@ execcmd(Estate state, int input, int output, int how, int last1)
Kamil Dudka cb022d
 		}
Kamil Dudka cb022d
 		if (fn->fd1 < 10)
Kamil Dudka cb022d
 		    closemn(mfds, fn->fd1, REDIR_CLOSE);
Kamil Dudka cb022d
-		if (!closed && zclose(fn->fd1) < 0) {
Kamil Dudka cb022d
+		/*
Kamil Dudka cb022d
+		 * Only report failures to close file descriptors
Kamil Dudka cb022d
+		 * if they're under user control as we don't know
Kamil Dudka cb022d
+		 * what the previous status of others was.
Kamil Dudka cb022d
+		 */
Kamil Dudka cb022d
+		if (!closed && zclose(fn->fd1) < 0 && fn->varid) {
Kamil Dudka cb022d
 		    zwarn("failed to close file descriptor %d: %e",
Kamil Dudka cb022d
 			  fn->fd1, errno);
Kamil Dudka cb022d
 		}
Kamil Dudka cb022d
diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst
Kamil Dudka cb022d
index a39ce46..cb67788 100644
Kamil Dudka cb022d
--- a/Test/A04redirect.ztst
Kamil Dudka cb022d
+++ b/Test/A04redirect.ztst
Kamil Dudka cb022d
@@ -152,11 +152,13 @@
Kamil Dudka cb022d
 >hello
Kamil Dudka cb022d
 >goodbye
Kamil Dudka cb022d
 
Kamil Dudka cb022d
-  ({ exec 3<&- } 2>/dev/null
Kamil Dudka cb022d
-  exec 3<&-
Kamil Dudka cb022d
-  read foo <&-)
Kamil Dudka cb022d
+  (exec {varid}<&0
Kamil Dudka cb022d
+  exec {varid}<&-
Kamil Dudka cb022d
+  print About to close a second time >&2
Kamil Dudka cb022d
+  read {varid}<&-)
Kamil Dudka cb022d
 1:'<&-' redirection
Kamil Dudka cb022d
-*?\(eval\):*: failed to close file descriptor 3:*
Kamil Dudka cb022d
+?About to close a second time
Kamil Dudka cb022d
+*?\(eval\):*: failed to close file descriptor *
Kamil Dudka cb022d
 
Kamil Dudka cb022d
   print foo >&-
Kamil Dudka cb022d
 0:'>&-' redirection
Kamil Dudka cb022d
-- 
Kamil Dudka cb022d
2.1.0
Kamil Dudka cb022d
Kamil Dudka cb022d
Kamil Dudka cb022d
From 206fdc852a0f28dddce7411eafeb3ab29b0259ed Mon Sep 17 00:00:00 2001
Kamil Dudka cb022d
From: Peter Stephenson <pws@zsh.org>
Kamil Dudka cb022d
Date: Tue, 20 Jan 2015 11:53:42 +0000
Kamil Dudka cb022d
Subject: [PATCH 2/2] users/19756: test for case of closing fd with no error
Kamil Dudka cb022d
 message
Kamil Dudka cb022d
Kamil Dudka cb022d
Upstream-commit: 638bfa93a009987e57bd7eaa8b2a1c1067a3652a
Kamil Dudka cb022d
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
Kamil Dudka cb022d
---
Kamil Dudka cb022d
 Test/A04redirect.ztst | 7 ++++++-
Kamil Dudka cb022d
 1 file changed, 6 insertions(+), 1 deletion(-)
Kamil Dudka cb022d
Kamil Dudka cb022d
diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst
Kamil Dudka cb022d
index cb67788..13f1f7c 100644
Kamil Dudka cb022d
--- a/Test/A04redirect.ztst
Kamil Dudka cb022d
+++ b/Test/A04redirect.ztst
Kamil Dudka cb022d
@@ -152,11 +152,16 @@
Kamil Dudka cb022d
 >hello
Kamil Dudka cb022d
 >goodbye
Kamil Dudka cb022d
 
Kamil Dudka cb022d
+  ({exec 3<&- } 2>/dev/null
Kamil Dudka cb022d
+   exec 3<&-
Kamil Dudka cb022d
+   read foo <&-)
Kamil Dudka cb022d
+1:'<&-' redirection with numeric fd (no error message on failure)
Kamil Dudka cb022d
+
Kamil Dudka cb022d
   (exec {varid}<&0
Kamil Dudka cb022d
   exec {varid}<&-
Kamil Dudka cb022d
   print About to close a second time >&2
Kamil Dudka cb022d
   read {varid}<&-)
Kamil Dudka cb022d
-1:'<&-' redirection
Kamil Dudka cb022d
+1:'<&-' redirection with fd in variable (error message on failure)
Kamil Dudka cb022d
 ?About to close a second time
Kamil Dudka cb022d
 *?\(eval\):*: failed to close file descriptor *
Kamil Dudka cb022d
 
Kamil Dudka cb022d
-- 
Kamil Dudka cb022d
2.1.0
Kamil Dudka cb022d