r16556: Add mkdtemp to libreplace. This is apparantly available on Linux
authorJames Peach <jpeach@samba.org>
Tue, 27 Jun 2006 05:49:09 +0000 (05:49 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:09:34 +0000 (14:09 -0500)
and BSD systems, but it's not everywhere.
(This used to be commit b3d2512ed4fc8c378607bcc2dc241a1f77ab7197)

source4/lib/replace/README
source4/lib/replace/config.m4
source4/lib/replace/replace.c
source4/lib/replace/replace.h

index 0101b80913b15b9df5df8e9a248932f495411f1a..271713247a4a25aa11f2e6da73dc815cccf7c524 100644 (file)
@@ -45,6 +45,7 @@ chroot
 bzero
 strerror
 errno
+mkdtemp
 mkstemp (a secure one!)
 pread
 pwrite
@@ -75,4 +76,4 @@ Prerequisites:
 memset (for bzero)
 syslog (for vsyslog)
 setnetgrent, getnetgrent, endnetgrent (for innetgr)
-mktemp (for mkstemp)
+mktemp (for mkstemp and mkdtemp)
index 4948f91163aad078711f0743990e518e5c9deacc..8b71372262fc0eb967e45085cba73c131aa332e1 100644 (file)
@@ -57,7 +57,7 @@ AC_CHECK_FUNCS(strtoull __strtoull strtouq strtoll __strtoll strtoq)
 AC_CHECK_FUNCS(seteuid setresuid setegid setresgid chroot bzero strerror)
 AC_CHECK_FUNCS(timegm setenv vsyslog setlinebuf mktime ftruncate chsize rename)
 AC_CHECK_FUNCS(waitpid strnlen strlcpy strlcat innetgr initgroups memmove strdup)
-AC_CHECK_FUNCS(pread pwrite strndup strcasestr strtok_r)
+AC_CHECK_FUNCS(pread pwrite strndup strcasestr strtok_r mkdtemp)
 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
 AC_HAVE_DECL(errno, [#include <errno.h>])
index 02c3d0416382eecfd38306212517682e38d236fb..989c0947c37cd4d3b38513be5418ec5b932847fd 100644 (file)
@@ -506,6 +506,21 @@ int rep_mkstemp(char *template)
 }
 #endif
 
+#ifndef HAVE_MKDTEMP
+char * mkdtemp(char *template)
+{
+       char *dname;
+       
+       if (dname = mktemp(template)) {
+               if (mkdir(dname, 0700) >= 0) {
+                       return dname;
+               }
+       }
+
+       return NULL;
+}
+#endif
+
 #ifndef HAVE_PREAD
 static ssize_t pread(int __fd, void *__buf, size_t __nbytes, off_t __offset)
 {
index 8beb43bfa4ce20b6869cc16ea5c1b2d2474f9519..e59ba43206251cb5354fef4a1a66485021a6c3df 100644 (file)
@@ -173,6 +173,10 @@ typedef int (*comparison_fn_t)(const void *, const void *);
 int rep_mkstemp(char *temp);
 #endif
 
+#ifndef HAVE_MKDTEMP
+char *mkdtemp(char *template);
+#endif
+
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif