summaryrefslogtreecommitdiff
path: root/libgfortran/io
diff options
context:
space:
mode:
Diffstat (limited to 'libgfortran/io')
-rw-r--r--libgfortran/io/io.h2
-rw-r--r--libgfortran/io/unix.c17
2 files changed, 18 insertions, 1 deletions
diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h
index e910fa58780..6774866745f 100644
--- a/libgfortran/io/io.h
+++ b/libgfortran/io/io.h
@@ -465,6 +465,8 @@ void empty_internal_buffer(stream *);
#define flush prefix(flush)
try flush (stream *);
+#define unit_to_fd prefix(unit_to_fd)
+int unit_to_fd (int);
/* unit.c */
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 2e9d9a4ba8c..5be631a9aab 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -286,7 +286,6 @@ sys_exit (int code)
}
-
/*********************************************************************
File descriptor stream functions
*********************************************************************/
@@ -918,6 +917,22 @@ fd_to_stream (int fd, int prot)
}
+/* Given the Fortran unit number, convert it to a C file descriptor. */
+
+int
+unit_to_fd(int unit)
+{
+
+ gfc_unit *us;
+
+ us = find_unit(unit);
+ if (us == NULL)
+ return -1;
+
+ return ((unix_stream *) us->s)->fd;
+}
+
+
/* unpack_filename()-- Given a fortran string and a pointer to a
* buffer that is PATH_MAX characters, convert the fortran string to a
* C string in the buffer. Returns nonzero if this is not possible. */