|
|
1.1 ! root 1: /* ! 2: * Produce a unique filename by replacing ! 3: * the trailing 6 X's on the user's input string ! 4: * with process id and a unique letter. ! 5: * (It is assumed, but not checked, that the X's are present.) ! 6: * Revised by Michael Griffin, 7-5-84. Avoids control characters in ! 7: * generator. Repeats after 91 invocations by the same process. ! 8: */ ! 9: ! 10: static char generator = 'a'; ! 11: ! 12: char * ! 13: mktemp(template) ! 14: char *template; ! 15: { ! 16: register char *p; ! 17: register i, pid; ! 18: ! 19: for (p = template; *p; p++) ! 20: ; ! 21: switch (generator) { ! 22: case '~': ! 23: *--p = generator; ! 24: generator = 'A'; ! 25: break; ! 26: case '_': ! 27: *--p = generator; ! 28: generator = '!'; ! 29: break; ! 30: case '*': ! 31: *--p = ++generator; ! 32: generator++; ! 33: break; ! 34: case '?': ! 35: *--p = (generator = '@'); ! 36: break; ! 37: case '@': ! 38: generator = 'a'; ! 39: *--p = generator++; ! 40: break; ! 41: default: ! 42: *--p = generator++; ! 43: } ! 44: pid = getpid(); ! 45: i = 5; do { ! 46: *--p = pid%10 + '0'; ! 47: pid /= 10; ! 48: } while (--i); ! 49: return (template); ! 50: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.