From 6dc7d3dea2243d19361bfad40cb5a29279dd69a0 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sat, 17 Nov 2001 08:54:26 +0000 Subject: (UTILS_FUNC_MKSTEMP): New file and macro. Prompted by a report from Bob Proulx. --- m4/mkstemp.m4 | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 m4/mkstemp.m4 (limited to 'm4') diff --git a/m4/mkstemp.m4 b/m4/mkstemp.m4 new file mode 100644 index 000000000..21bcc381d --- /dev/null +++ b/m4/mkstemp.m4 @@ -0,0 +1,51 @@ +#serial 1 + +# 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. +AC_DEFUN([UTILS_FUNC_MKSTEMP], +[dnl + AC_REPLACE_FUNCS(mkstemp) + if test $ac_cv_func_mkstemp = no; then + utils_cv_func_mkstemp_limitations=yes + else + 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 + int main () + { + int i; + for (i = 0; i < 30; i++) + { + char template[] = "$utils_tmpdir_mkstemp/aXXXXXX"; + if (mkstemp (template) == -1) + exit (1); + } + exit (0); + } + ], + utils_cv_func_mkstemp_limitations=no, + utils_cv_func_mkstemp_limitations=yes, + utils_cv_func_mkstemp_limitations=yes + ) + + rm -rf $utils_tmpdir_mkstemp + ] + ) + fi + + if test $utils_cv_func_mkstemp_limitations = yes; then + AC_LIBOBJ(mkstemp) + AC_LIBOBJ(tempname) + AC_DEFINE(mkstemp, rpl_mkstemp, + [Define to rpl_mkstemp if the replacement function should be used.]) + fi +]) -- cgit v1.2.3-54-g00ecf