blob: 44903c68afe10006050f17157855d9c073143177 [file] [log] [blame]
https://bugs.gentoo.org/447810
fix from upstream to workaround broken BSD kernels
commit 208fdb509e072977ae7a621e916dfcd32c76047d
Author: Chet Ramey <chet@caleb.ins.cwru.edu>
Date: Mon Mar 4 08:09:29 2013 -0500
commit bash-20130201 snapshot
diff --git a/redir.c b/redir.c
index d7da2f3..aa3d16d 100644
--- a/redir.c
+++ b/redir.c
@@ -650,7 +650,7 @@ redir_open (filename, flags, mode, ri)
int flags, mode;
enum r_instruction ri;
{
- int fd, r;
+ int fd, r, e;
r = find_string_in_alist (filename, _redir_special_filenames, 1);
if (r >= 0)
@@ -666,7 +666,16 @@ redir_open (filename, flags, mode, ri)
}
else
{
- fd = open (filename, flags, mode);
+ do
+ {
+ fd = open (filename, flags, mode);
+ e = errno;
+ if (fd < 0 && e == EINTR)
+ QUIT;
+ errno = e;
+ }
+ while (fd < 0 && errno == EINTR);
+
#if defined (AFS)
if ((fd < 0) && (errno == EACCES))
{