xref: /openbsd/gnu/usr.bin/texinfo/m4/mkstemp.m4 (revision 73471bf0)
1#serial 6
2
3# On some hosts (e.g., HP-UX 10.20, SunOS 4.1.4, Solaris 2.5.1), mkstemp has a
4# silly limit that it can create no more than 26 files from a given template.
5# Other systems lack mkstemp altogether.
6# On OSF1/Tru64 V4.0F, the system-provided mkstemp function can create
7# only 32 files per process.
8# On systems like the above, arrange to use the replacement function.
9AC_DEFUN([gl_FUNC_MKSTEMP],
10[dnl
11  AC_REPLACE_FUNCS(mkstemp)
12  if test $ac_cv_func_mkstemp = no; then
13    gl_cv_func_mkstemp_limitations=yes
14  else
15    AC_CACHE_CHECK([for mkstemp limitations],
16      gl_cv_func_mkstemp_limitations,
17      [
18	AC_TRY_RUN([
19#         include <stdlib.h>
20	  int main ()
21	  {
22	    int i;
23	    for (i = 0; i < 70; i++)
24	      {
25		char template[] = "conftestXXXXXX";
26		int fd = mkstemp (template);
27		if (fd == -1)
28		  exit (1);
29		close (fd);
30	      }
31	    exit (0);
32	  }
33	  ],
34	gl_cv_func_mkstemp_limitations=no,
35	gl_cv_func_mkstemp_limitations=yes,
36	gl_cv_func_mkstemp_limitations=yes
37	)
38      ]
39    )
40  fi
41
42  if test $gl_cv_func_mkstemp_limitations = yes; then
43    AC_LIBOBJ(mkstemp)
44    AC_LIBOBJ(tempname)
45    AC_DEFINE(mkstemp, rpl_mkstemp,
46      [Define to rpl_mkstemp if the replacement function should be used.])
47    gl_PREREQ_MKSTEMP
48    gl_PREREQ_TEMPNAME
49  fi
50])
51
52# Prerequisites of lib/mkstemp.c.
53AC_DEFUN([gl_PREREQ_MKSTEMP],
54[
55])
56
57# Prerequisites of lib/tempname.c.
58AC_DEFUN([gl_PREREQ_TEMPNAME],
59[
60  AC_REQUIRE([AC_HEADER_STAT])
61  AC_CHECK_HEADERS_ONCE(fcntl.h sys/time.h unistd.h)
62  AC_CHECK_HEADERS(stdint.h)
63  AC_CHECK_FUNCS(__secure_getenv gettimeofday)
64  AC_CHECK_DECLS_ONCE(getenv)
65  AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])
66])
67