#include #include #include #include #include #include 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; }