ref: 405cb6b12e0367c26c96d4cd1df78bfb329b3e09
dir: /sys/src/ape/lib/bsd/mktemp.c/
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
char*
mktemp(char *template)
{
int n;
long x;
char *p;
int c;
struct stat stbuf;
n = strlen(template);
p = template+n-6;
if (n < 6 || strcmp(p, "XXXXXX") != 0) {
*template = 0;
} else {
x = getpid() % 100000;
sprintf(p, "%05d", x);
p += 5;
for(c = 'a'; c <= 'z'; c++) {
*p = c;
if (stat(template, &stbuf) < 0)
return template;
}
*template = 0;
}
return template;
}