X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Ftemp%2Fmkdtemp.c;h=76140c77591c781fe00d10b2075dff1a4098d169;hb=e42a977fe5dbe48ba45072ab82886e6b5a694487;hp=f8b067ec27955b173f928473804fbaf50e5a567f;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl 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; }