(gl_USE_SYSTEM_EXTENSIONS): Call AC_BEFORE first,
[gnulib.git] / m4 / mkstemp.m4
index a7c12d8..3d379fd 100644 (file)
@@ -1,9 +1,11 @@
-#serial 1
+#serial 4
 
-# On some systems (e.g., HPUX-10.20), mkstemp has the silly limit that it
-# can create no more than 26 files from a given template.  Other systems
-# lack mkstemp altogether.  On either type of system, arrange to use the
-# replacement function.
+# On some hosts (e.g., HP-UX 10.20, SunOS 4.1.4, Solaris 2.5.1), mkstemp has a
+# silly limit that it can create no more than 26 files from a given template.
+# Other systems lack mkstemp altogether.
+# On OSF1/Tru64 V4.0F, the system-provided mkstemp function can create
+# only 32 files per process.
+# On systems like the above, arrange to use the replacement function.
 AC_DEFUN([UTILS_FUNC_MKSTEMP],
 [dnl
   AC_REPLACE_FUNCS(mkstemp)
@@ -13,19 +15,14 @@ AC_DEFUN([UTILS_FUNC_MKSTEMP],
     AC_CACHE_CHECK([for mkstemp limitations],
       utils_cv_func_mkstemp_limitations,
       [
-       utils_tmpdir_mkstemp=mkst-$$$$
-       # Arrange for deletion-upon-exception of this temporary directory.
-       ac_clean_files="$ac_clean_files $utils_tmpdir_mkstemp"
-       mkdir $utils_tmpdir_mkstemp
-
        AC_TRY_RUN([
 #         include <stdlib.h>
          int main ()
          {
            int i;
-           for (i = 0; i < 30; i++)
+           for (i = 0; i < 70; i++)
              {
-               char template[] = "$utils_tmpdir_mkstemp/aXXXXXX";
+               char template[] = "conftestXXXXXX";
                int fd = mkstemp (template);
                if (fd == -1)
                  exit (1);
@@ -38,8 +35,6 @@ AC_DEFUN([UTILS_FUNC_MKSTEMP],
        utils_cv_func_mkstemp_limitations=yes,
        utils_cv_func_mkstemp_limitations=yes
        )
-
-       rm -rf $utils_tmpdir_mkstemp
       ]
     )
   fi
@@ -49,5 +44,23 @@ AC_DEFUN([UTILS_FUNC_MKSTEMP],
     AC_LIBOBJ(tempname)
     AC_DEFINE(mkstemp, rpl_mkstemp,
       [Define to rpl_mkstemp if the replacement function should be used.])
+    gl_PREREQ_MKSTEMP
+    jm_PREREQ_TEMPNAME
   fi
 ])
+
+# Prerequisites of lib/mkstemp.c.
+AC_DEFUN([gl_PREREQ_MKSTEMP],
+[
+])
+
+# Prerequisites of lib/tempname.c.
+AC_DEFUN([jm_PREREQ_TEMPNAME],
+[
+  AC_REQUIRE([AC_HEADER_STAT])
+  AC_CHECK_HEADERS_ONCE(fcntl.h sys/time.h unistd.h)
+  AC_CHECK_HEADERS(stdint.h)
+  AC_CHECK_FUNCS(__secure_getenv gettimeofday)
+  AC_CHECK_DECLS_ONCE(getenv)
+  AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])
+])