X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstdio%2Ftmpfile.c;h=ae493987b8a7d43f89c4e1eed86cdd81fba7756c;hb=2e5fff43dd7fc808197744c67cca7908ac19bb4f;hp=b050f7fdba85c764995e999141a5b5b6db302b6d;hpb=aa398f56fa398f2202b04e82c67f822f3233786f;p=musl diff --git a/src/stdio/tmpfile.c b/src/stdio/tmpfile.c index b050f7fd..ae493987 100644 --- a/src/stdio/tmpfile.c +++ b/src/stdio/tmpfile.c @@ -1,23 +1,31 @@ #include #include -#include +#include #include "stdio_impl.h" +#define MAXTRIES 100 + FILE *tmpfile(void) { - char buf[L_tmpnam], *s; + char s[] = "/tmp/tmpfile_XXXXXX"; int fd; FILE *f; - for (;;) { - s = tmpnam(buf); - if (!s) return NULL; - fd = syscall(SYS_open, s, O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600); + int try; + for (try=0; try= 0) { +#ifdef SYS_unlink + __syscall(SYS_unlink, s); +#else + __syscall(SYS_unlinkat, AT_FDCWD, s, 0); +#endif f = __fdopen(fd, "w+"); - remove(s); + if (!f) __syscall(SYS_close, fd); return f; } } + return 0; } -LFS64(tmpfile); +weak_alias(tmpfile, tmpfile64);