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