diff options
author | Steven G. Kargl <kargls@comcast.net> | 2004-12-02 04:10:26 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2004-12-02 04:10:26 +0000 |
commit | df65f0938c4b76b388958c04666e0efd279ba333 (patch) | |
tree | c20ca282f2b337834e069d56d9239c0253de5b3e /libgfortran/io | |
parent | 8930ce20d027c54f5019ab3b0171222bf85e357c (diff) | |
download | gcc-df65f0938c4b76b388958c04666e0efd279ba333.zip gcc-df65f0938c4b76b388958c04666e0efd279ba333.tar.gz gcc-df65f0938c4b76b388958c04666e0efd279ba333.tar.bz2 |
flush.c: New file.
2004-12-02 Steven G. Kargl <kargls@comcast.net>
Paul Brook <paul@codesourcery.com>
libgfortran/
* intrinsics/flush.c: New file.
* intrinsics/fnum.c: ditto
* intrinsics/stat.c: ditto
* io/io.h (unit_to_fd): Add prototype.
* io/unix.c (unit_to_fd): New function.
* configure.ac: Add test for members of struct stat. Check for
sys/types.h and sys/stat.h
* Makefile.am: Add intrinsics/{flush.c,fnum.c,stat.c}
* configure.in: Regenerate.
* config.h.in: Regenerate.
* Makefile.in: Regenerate.
fortran/
* check.c (gfc_check_flush, gfc_check_fnum): New functions.
(gfc_check_fstat, gfc_check_fstat_sub): New functions.
(gfc_check_stat, gfc_check_stat_sub): New functions.
* gfortran.h (GFC_ISYM_FNUM,GFC_ISYM_FSTAT,GFC_ISYM_STAT): New symbols
* intrinsic.c (add_functions,add_subroutines): Add flush, fnum,
fstat, and stat to intrinsics symbol tables.
* intrinsic.h (gfc_check_flush, gfc_resolve_stat_sub): Add prototypes.
(gfc_resolve_fstat_sub, gfc_resolve_stat): Ditto.
* iresolve.c (gfc_resolve_fnum, gfc_resolve_fstat): New functions.
(gfc_resolve_stat, gfc_resolve_flush): New functions.
(gfc_resolve_stat_sub,gfc_resolve_fstat_sub): New functions
* trans-intrinsic.c (gfc_conv_intrinsic_function): Add new intrinsics.
Co-Authored-By: Paul Brook <paul@codesourcery.com>
From-SVN: r91609
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 e910fa5..6774866 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 2e9d9a4..5be631a 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. */ |