X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Ftemp%2Fmkdtemp.c;h=76140c77591c781fe00d10b2075dff1a4098d169;hp=f8b067ec27955b173f928473804fbaf50e5a567f;hb=e72180083e4b0203d1883b6054198decdb60071c;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01 diff --git a/src/temp/mkdtemp.c b/src/temp/mkdtemp.c index f8b067ec..76140c77 100644 --- a/src/temp/mkdtemp.c +++ b/src/temp/mkdtemp.c @@ -8,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; }