summaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-03-14 12:14:58 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2007-03-14 12:14:58 +0000
commita638be8feeed51f77f62e9e175b9bd968b05fdbf (patch)
treedc870b1be35b275ad15eb98f9d849d5ff460ae4d /libgfortran
parentb14642ed3f1ed50e4dc20303805c3ae2ac3ac379 (diff)
downloadgcc-a638be8feeed51f77f62e9e175b9bd968b05fdbf.tar.gz
* io/unix.c (regular_file): For ACTION_UNSPECIFIED retry with
O_RDONLY even if errno is EROFS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122914 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog5
-rw-r--r--libgfortran/io/unix.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 7f906581425..1e71f1d6461 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2007-03-14 Jakub Jelinek <jakub@redhat.com>
+
+ * io/unix.c (regular_file): For ACTION_UNSPECIFIED retry with
+ O_RDONLY even if errno is EROFS.
+
2007-03-09 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/31099
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 08f32878fcd..b58df51ae36 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -1213,7 +1213,7 @@ regular_file (st_parameter_open *opp, unit_flags *flags)
break;
case STATUS_REPLACE:
- crflag = O_CREAT | O_TRUNC;
+ crflag = O_CREAT | O_TRUNC;
break;
default:
@@ -1229,14 +1229,14 @@ regular_file (st_parameter_open *opp, unit_flags *flags)
mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
fd = open (path, rwflag | crflag, mode);
if (flags->action != ACTION_UNSPECIFIED)
- return fd;
+ return fd;
if (fd >= 0)
{
flags->action = ACTION_READWRITE;
return fd;
}
- if (errno != EACCES)
+ if (errno != EACCES && errno != EROFS)
return fd;
/* retry for read-only access */