You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
932 B
42 lines
932 B
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))
|
|
{
|