aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io/unix.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/io/unix.c')
-rw-r--r--libgfortran/io/unix.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 78ed0f7..865eb68 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -892,7 +892,7 @@ open_internal (char *base, int length)
* around it. */
static stream *
-fd_to_stream (int fd, int prot)
+fd_to_stream (int fd, int prot, int avoid_mmap)
{
struct stat statbuf;
unix_stream *s;
@@ -911,7 +911,10 @@ fd_to_stream (int fd, int prot)
s->file_length = S_ISREG (statbuf.st_mode) ? statbuf.st_size : -1;
#if HAVE_MMAP
- mmap_open (s);
+ if (avoid_mmap)
+ fd_open (s);
+ else
+ mmap_open (s);
#else
fd_open (s);
#endif
@@ -1153,7 +1156,7 @@ open_external (unit_flags *flags)
internal_error ("open_external(): Bad action");
}
- return fd_to_stream (fd, prot);
+ return fd_to_stream (fd, prot, 0);
}
@@ -1163,7 +1166,7 @@ open_external (unit_flags *flags)
stream *
input_stream (void)
{
- return fd_to_stream (STDIN_FILENO, PROT_READ);
+ return fd_to_stream (STDIN_FILENO, PROT_READ, 1);
}
@@ -1173,7 +1176,7 @@ input_stream (void)
stream *
output_stream (void)
{
- return fd_to_stream (STDOUT_FILENO, PROT_WRITE);
+ return fd_to_stream (STDOUT_FILENO, PROT_WRITE, 1);
}
@@ -1183,7 +1186,7 @@ output_stream (void)
stream *
error_stream (void)
{
- return fd_to_stream (STDERR_FILENO, PROT_WRITE);
+ return fd_to_stream (STDERR_FILENO, PROT_WRITE, 1);
}
/* init_error_stream()-- Return a pointer to the error stream. This