ref: 5b9d9b6057b4ebdb7d4590c849607f6d0765c00c
dir: /lib/c/tmpnam.c/
#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, 0) != 0) break; } if (s) strcpy(s, buf); return buf; }