|
|
1.1 root 1: /*
2: * libc/gen/mktemp.c
3: * Produce a unique filename by replacing
4: * the trailing 6 X's on the user's input string
5: * with process id and a unique letter.
6: * (It is assumed, but not checked, that the X's are present.)
7: * Revised by Michael Griffin, 7-5-84; by steve, 1/5/93.
8: * Avoids unsuitable characters in generator.
9: * Repeats after 26+26+10+1=63 invocations by the same process.
10: */
11:
12: char *
13: mktemp(template) char *template;
14: {
15: static char generator = 'a';
16: register char *p;
17: register int i, pid;
18:
19:
20: for (p = template; *p; p++)
21: ; /* scan to end of template */
22: *--p = generator; /* store generator */
23: switch (generator) { /* bump generator */
24: case 'z': generator = 'A'; break;
25: case 'Z': generator = '0'; break;
26: case '9': generator = '_'; break;
27: case '_': generator = 'a'; break;
28: default: ++generator; break;
29: }
30: pid = getpid();
31: for (i = 5; i-- > 0; ) { /* store 5-digit ASCII pid */
32: *--p = pid%10 + '0';
33: pid /= 10;
34: }
35: return template;
36: }
37:
38: /* end of libc/gen/mktemp.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.