#include <string.h> | |
#include <stdlib.h> | |
#include <errno.h> | |
#include <sys/stat.h> | |
char *__randname(char *); | |
char *mkdtemp(char *template) | |
{ | |
size_t l = strlen(template); | |
int retries = 100; | |
if (l<6 || memcmp(template+l-6, "XXXXXX", 6)) { | |
errno = EINVAL; | |
return 0; | |
} | |
do { | |
__randname(template+l-6); | |
if (!mkdir(template, 0700)) return template; | |
} while (--retries && errno == EEXIST); | |
memcpy(template+l-6, "XXXXXX", 6); | |
return 0; | |
} |