|
|
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.