Pristine Ack-5.5
[Ack-5.5.git] / lang / cem / libcc.ansi / misc / mktemp.c
1 /* $Id: mktemp.c,v 1.2 1994/06/24 11:45:32 ceriel Exp $ */
2 /* mktemp - make a name for a temporary file; only here for backwards compat */
3 /* no _-protected system-calls? */
4
5 unsigned int getpid(void);
6 int access(char *, int);
7
8 char *mktemp(char *template)
9 {
10   register int pid, k;
11   register char *p;
12
13   pid = getpid();               /* get process id as semi-unique number */
14   p = template;
15   while (*p) p++;               /* find end of string */
16
17   /* Replace XXXXXX at end of template with pid. */
18   while (*--p == 'X') {
19         *p = '0' + (pid % 10);
20         pid /= 10;
21   }
22   p++;
23   for (k = 'a'; k <= 'z'; k++) {
24         *p = k;
25         if (access(template, 0) < 0) {
26                 return template;
27         }
28   }
29   return("/");
30 }