X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Ftemp%2Fmkdtemp.c;h=76140c77591c781fe00d10b2075dff1a4098d169;hp=cb030ee4de074938b58c1e231ef97993341557e3;hb=743546a9339d3da4304fd63f74872e90ac792f63;hpb=80695b1d1e64a026c473a33965e680444e863e34 diff --git a/src/temp/mkdtemp.c b/src/temp/mkdtemp.c index cb030ee4..76140c77 100644 --- a/src/temp/mkdtemp.c +++ b/src/temp/mkdtemp.c @@ -1,4 +1,3 @@ -#define _GNU_SOURCE #include #include #include @@ -9,14 +8,19 @@ #include #include "libc.h" +char *__mktemp(char *); + char *mkdtemp(char *template) { - for (;;) { - if (!mktemp(template)) return 0; + int retries = 100, t0 = *template; + while (retries--) { + if (!*__mktemp(template)) return 0; if (!mkdir(template, 0700)) return template; if (errno != EEXIST) return 0; /* this is safe because mktemp verified * that we have a valid template string */ + template[0] = t0; strcpy(template+strlen(template)-6, "XXXXXX"); } + return 0; }