ref: 84f6061a92d92f6f0136f7d6ab42fa03c38d5a78
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;
}