From df65f0938c4b76b388958c04666e0efd279ba333 Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Thu, 2 Dec 2004 04:10:26 +0000 Subject: flush.c: New file. 2004-12-02 Steven G. Kargl Paul Brook 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 From-SVN: r91609 --- libgfortran/io/io.h | 2 ++ libgfortran/io/unix.c | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'libgfortran/io') 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. */ -- cgit v1.1