summaryrefslogtreecommitdiff
path: root/m4/mkstemp.m4
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2001-11-17 08:54:26 +0000
committerJim Meyering <jim@meyering.net>2001-11-17 08:54:26 +0000
commit6dc7d3dea2243d19361bfad40cb5a29279dd69a0 (patch)
treebc45493cf0bf2e6623049798e2b5afc5bd73547b /m4/mkstemp.m4
parente7389b6a8fffa45a71bc366f05e570d8253f717f (diff)
downloadcoreutils-6dc7d3dea2243d19361bfad40cb5a29279dd69a0.tar.xz
(UTILS_FUNC_MKSTEMP): New file and macro.
Prompted by a report from Bob Proulx.
Diffstat (limited to 'm4/mkstemp.m4')
-rw-r--r--m4/mkstemp.m451
1 files changed, 51 insertions, 0 deletions
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 <stdlib.h>
+ 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
+])