2004-10-30 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Oct 2004 16:23:23 +0000 (16:23 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Oct 2004 16:23:23 +0000 (16:23 +0000)
* config.h.in: Regenerate.
* configure: Regenerate.
* configure.ac (AC_CHECK_FUNCS): Add mkstemp.
* io/unix.c (S_IRGRP): Define if undefined.
(S_IWGRP): Same.
(S_IROTH): Same.
(S_IWOTH): Same.
(tempfile): Use mktemp if mkstemp missing, fix typos.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89893 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/config.h.in
libgfortran/configure
libgfortran/configure.ac
libgfortran/io/unix.c

index 559840a..d584434 100644 (file)
@@ -1,5 +1,16 @@
 2004-10-30  Aaron W. LaFramboise <aaronavay62@aaronwl.com>
 
+       * config.h.in: Regenerate.
+       * configure: Regenerate.
+       * configure.ac (AC_CHECK_FUNCS): Add mkstemp.
+       * io/unix.c (S_IRGRP): Define if undefined.
+       (S_IWGRP): Same.
+       (S_IROTH): Same.
+       (S_IWOTH): Same.
+       (tempfile): Use mktemp if mkstemp missing, fix typos.
+
+2004-10-30  Aaron W. LaFramboise <aaronavay62@aaronwl.com>
+
        *  intrinsics/system.c ("libgfortran.h"): Move after system headers.
 
 2004-10-30  Canqun Yang  <canqun@nudt.edu.cn>
index a40e297..ecb9a6c 100644 (file)
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
 /* Define to 1 if you have a working `mmap' system call. */
 #undef HAVE_MMAP
 
 #undef HAVE_NEXTAFTERF
 
 /* libm includes powf */
-# undef HAVE_POWF
+#undef HAVE_POWF
 
 /* libm includes round */
 #undef HAVE_ROUND
index 4e5900c..c13ccdc 100755 (executable)
@@ -6753,7 +6753,8 @@ fi
 # Check for library functions.
 
 
-for ac_func in getrusage times
+
+for ac_func in getrusage times mkstemp
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 echo "$as_me:$LINENO: checking for $ac_func" >&5
index f7a8b99..598070d 100644 (file)
@@ -159,7 +159,7 @@ AC_CHECK_HEADER([complex.h],[AC_DEFINE([HAVE_COMPLEX_H], [1], [complex.h exists]
 AC_CHECK_LIB([m],[csin],[need_math="no"],[need_math="yes"])
 
 # Check for library functions.
-AC_CHECK_FUNCS(getrusage times)
+AC_CHECK_FUNCS(getrusage times mkstemp)
 
 # Check libc for getgid, getpid, getuid
 AC_CHECK_LIB([c],[getgid],[AC_DEFINE([HAVE_GETGID],[1],[libc includes getgid])])
index 03dc66f..45d8cfd 100644 (file)
@@ -54,6 +54,24 @@ Boston, MA 02111-1307, USA.  */
 #define PROT_WRITE 2
 #endif
 
+/* These flags aren't defined on all targets (mingw32), so provide them
+   here.  */
+#ifndef S_IRGRP
+#define S_IRGRP 0
+#endif
+
+#ifndef S_IWGRP
+#define S_IWGRP 0
+#endif
+
+#ifndef S_IROTH
+#define S_IROTH 0
+#endif
+
+#ifndef S_IWOTH
+#define S_IWOTH 0
+#endif
+
 /* This implementation of stream I/O is based on the paper:
  *
  *  "Exploiting the advantages of mapped files for stream I/O",
@@ -921,8 +939,8 @@ unpack_filename (char *cstring, const char *fstring, int len)
 /* tempfile()-- Generate a temporary filename for a scratch file and
  * open it.  mkstemp() opens the file for reading and writing, but the
  * library mode prevents anything that is not allowed.  The descriptor
- * is returns, which is less than zero on error.  The template is
- * pointed to by ioparm.file, which is copied into the unit structure
+ * is returned, which is -1 on error.  The template is pointed to by 
+ * ioparm.file, which is copied into the unit structure
  * and freed later. */
 
 static int
@@ -940,10 +958,23 @@ tempfile (void)
 
   template = get_mem (strlen (tempdir) + 20);
 
-  st_sprintf (template, "%s/gfortantmpXXXXXX", tempdir);
+  st_sprintf (template, "%s/gfortrantmpXXXXXX", tempdir);
+
+#ifdef HAVE_MKSTEMP
 
   fd = mkstemp (template);
 
+#else /* HAVE_MKSTEMP */
+
+  if (mktemp (template))
+    do
+      fd = open (template, O_CREAT | O_EXCL, S_IREAD | S_IWRITE);
+    while (!(fd == -1 && errno == EEXIST) && mktemp (template));
+  else
+    fd = -1;
+
+#endif /* HAVE_MKSTEMP */
+
   if (fd < 0)
     free_mem (template);
   else