diff options
Diffstat (limited to 'libgfortran/io')
-rw-r--r-- | libgfortran/io/io.h | 2 | ||||
-rw-r--r-- | libgfortran/io/unix.c | 17 |
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. */ |