version 1.1, 2015/03/19 14:57:29 |
version 1.3, 2020/06/15 01:37:15 |
|
|
#include "config.h" |
/* $Id$ */ |
|
|
#if HAVE_MKDTEMP |
|
|
|
int dummy; |
|
|
|
#else |
|
|
|
/* $Id$ */ |
|
/* |
/* |
* Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
|
|
* The algorithm of this function is inspired by OpenBSD mkdtemp(3) |
* The algorithm of this function is inspired by OpenBSD mkdtemp(3) |
* by Theo de Raadt and Todd Miller, but the code differs. |
* by Theo de Raadt and Todd Miller, but the code differs. |
*/ |
*/ |
|
#include "config.h" |
|
|
#include <sys/stat.h> |
#include <sys/stat.h> |
#include <errno.h> |
#include <errno.h> |
Line 45 mkdtemp(char *path) |
|
Line 38 mkdtemp(char *path) |
|
for (tries = INT_MAX; tries; tries--) { |
for (tries = INT_MAX; tries; tries--) { |
if (mktemp(path) == NULL) { |
if (mktemp(path) == NULL) { |
errno = EEXIST; |
errno = EEXIST; |
return(NULL); |
return NULL; |
} |
} |
if (mkdir(path, S_IRUSR | S_IWUSR | S_IXUSR) == 0) |
if (mkdir(path, S_IRUSR | S_IWUSR | S_IXUSR) == 0) |
return(path); |
return path; |
if (errno != EEXIST) |
if (errno != EEXIST) |
return(NULL); |
return NULL; |
for (cp = start; *cp != '\0'; cp++) |
for (cp = start; *cp != '\0'; cp++) |
*cp = 'X'; |
*cp = 'X'; |
} |
} |
errno = EEXIST; |
errno = EEXIST; |
return(NULL); |
return NULL; |
} |
} |
|
|
#endif |
|