aboutsummaryrefslogtreecommitdiff
path: root/libf2c
diff options
context:
space:
mode:
authorToon Moene <toon@moene.indiv.nluug.nl>2000-11-15 19:26:42 +0100
committerToon Moene <toon@gcc.gnu.org>2000-11-15 18:26:42 +0000
commitadcee32ccbe783c41ca2874bed6febc7954d0c38 (patch)
tree906e2d26d534b15d1e3cb47e917eca58b0681a79 /libf2c
parent0437a5a8a8a1890e3ce2a4a0dbce8901cfab9a52 (diff)
downloadgcc-adcee32ccbe783c41ca2874bed6febc7954d0c38.zip
gcc-adcee32ccbe783c41ca2874bed6febc7954d0c38.tar.gz
gcc-adcee32ccbe783c41ca2874bed6febc7954d0c38.tar.bz2
configure.in: See if `mkstemp' is available.
2000-11-15 Toon Moene <toon@moene.indiv.nluug.nl> * libI77/configure.in: See if `mkstemp' is available. * libI77/configure: Regenerate. * libI77/open.c: Use `mkstemp' to create scratch file atomically. From-SVN: r37484
Diffstat (limited to 'libf2c')
-rw-r--r--libf2c/ChangeLog7
-rwxr-xr-xlibf2c/libI77/configure67
-rw-r--r--libf2c/libI77/configure.in1
-rw-r--r--libf2c/libI77/open.c17
4 files changed, 85 insertions, 7 deletions
diff --git a/libf2c/ChangeLog b/libf2c/ChangeLog
index 6f57ca2..9f3fbfb 100644
--- a/libf2c/ChangeLog
+++ b/libf2c/ChangeLog
@@ -1,3 +1,10 @@
+2000-11-15 Toon Moene <toon@moene.indiv.nluug.nl>
+
+ * libI77/configure.in: See if `mkstemp' is available.
+ * libI77/configure: Regenerate.
+ * libI77/open.c: Use `mkstemp' to create scratch
+ file atomically.
+
2000-07-03 Donn Terry (donnte@microsoft.com)
* libU77/aclocal.m4: check for 2 argument gettimeofday without
struct timezone
diff --git a/libf2c/libI77/configure b/libf2c/libI77/configure
index 69868c5..afb87e3 100755
--- a/libf2c/libI77/configure
+++ b/libf2c/libI77/configure
@@ -1338,7 +1338,7 @@ else
echo "$ac_t""no" 1>&6
fi
-for ac_func in tempnam
+for ac_func in mkstemp
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:1345: checking for $ac_func" >&5
@@ -1393,25 +1393,80 @@ else
fi
done
+for ac_func in tempnam
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:1400: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1405 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:1428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
# posix will guarantee the right behaviour for sprintf, else we can't be
# sure; HEADER_STDC wouldn't be the right check in sunos4, for instance.
# However, on my sunos4/gcc setup unistd.h leads us wrongly to believe
# we're posix-conformant, so always do the test.
echo $ac_n "checking for ansi/posix sprintf result""... $ac_c" 1>&6
-echo "configure:1403: checking for ansi/posix sprintf result" >&5
+echo "configure:1458: checking for ansi/posix sprintf result" >&5
if test "$cross_compiling" = yes; then
g77_cv_sys_sprintf_ansi=no
else
cat > conftest.$ac_ext <<EOF
-#line 1408 "configure"
+#line 1463 "configure"
#include "confdefs.h"
#include <stdio.h>
/* does sprintf return the number of chars transferred? */
main () {char foo[2]; (sprintf(foo, "1") == 1) ? exit(0) : exit(1);}
EOF
-if { (eval echo configure:1415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
g77_cv_sys_sprintf_ansi=yes
else
@@ -1442,9 +1497,9 @@ fi
# define NON_ANSI_RW_MODES on unix (can't hurt)
echo $ac_n "checking NON_ANSI_RW_MODES""... $ac_c" 1>&6
-echo "configure:1446: checking NON_ANSI_RW_MODES" >&5
+echo "configure:1501: checking NON_ANSI_RW_MODES" >&5
cat > conftest.$ac_ext <<EOF
-#line 1448 "configure"
+#line 1503 "configure"
#include "confdefs.h"
#ifdef unix
yes
diff --git a/libf2c/libI77/configure.in b/libf2c/libI77/configure.in
index 2b34830..e5877c0 100644
--- a/libf2c/libI77/configure.in
+++ b/libf2c/libI77/configure.in
@@ -129,6 +129,7 @@ else
AC_MSG_RESULT(no)
fi
+AC_CHECK_FUNCS(mkstemp)
AC_CHECK_FUNCS(tempnam)
# posix will guarantee the right behaviour for sprintf, else we can't be
diff --git a/libf2c/libI77/open.c b/libf2c/libI77/open.c
index 3e4c8bc..830dca5 100644
--- a/libf2c/libI77/open.c
+++ b/libf2c/libI77/open.c
@@ -133,10 +133,11 @@ integer f_open(olist *a)
#endif
{ unit *b;
integer rv;
- char buf[256], *s;
+ char buf[256], *s, *env;
cllist x;
int ufmt;
FILE *tf;
+ int fd, len;
#ifndef NON_UNIX_STDIO
int n;
#endif
@@ -209,6 +210,19 @@ integer f_open(olist *a)
case 's':
case 'S':
b->uscrtch=1;
+#ifdef HAVE_MKSTEMP /* Allow use of TMPDIR preferentially. */
+ env = getenv("TMPDIR");
+ if (!env) env = getenv("TEMP");
+ if (!env) env = "/tmp";
+ len = strlen(env);
+ if (len > 256 - sizeof "/tmp.FXXXXXX")
+ err (a->oerr, 132, "open");
+ strcpy(buf, env);
+ strcat(buf, "/tmp.FXXXXXX");
+ fd = mkstemp(buf);
+ if (fd == -1 || close(fd))
+ err (a->oerr, 132, "open");
+#else /* ! defined (HAVE_MKSTEMP) */
#ifdef HAVE_TEMPNAM /* Allow use of TMPDIR preferentially. */
s = tempnam (0, buf);
if (strlen (s) >= sizeof (buf))
@@ -223,6 +237,7 @@ integer f_open(olist *a)
(void) mktemp(buf);
#endif
#endif /* ! defined (HAVE_TEMPNAM) */
+#endif /* ! defined (HAVE_MKSTEMP) */
goto replace;
case 'n':
case 'N':