ref: d69b942c0f484c8677cf8b8b2acfe8b190d6fc5f
dir: /src/libc/stdio/tmpnam.c/
#include <sys.h> #include <stdio.h> #include <string.h> #include "../syscall.h" #undef tmpnam char * tmpnam(char *s) { static char *tmpl, buf[L_tmpnam]; char *p; if (*buf == '\0') { for (tmpl = buf, p = _TMPNAME; *tmpl++ = *p++; ) ; for (p = tmpl; p < &buf[L_tmpnam-1]; ++p) *p = '0'; *p = '\0'; } for (;;) { for (p = tmpl; *p && *p != '9'; ++p) ; if (*p == '\0') return NULL; ++*p; if (_access(buf, F_OK) != 0) break; } if (s) strcpy(s, buf); return buf; }