aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/io
diff options
context:
space:
mode:
authorSteven G. Kargl <kargls@comcast.net>2004-12-02 04:10:26 +0000
committerPaul Brook <pbrook@gcc.gnu.org>2004-12-02 04:10:26 +0000
commitdf65f0938c4b76b388958c04666e0efd279ba333 (patch)
treec20ca282f2b337834e069d56d9239c0253de5b3e /libgfortran/io
parent8930ce20d027c54f5019ab3b0171222bf85e357c (diff)
downloadgcc-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.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 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. */