xref: /titanic_50/usr/src/lib/libbc/libc/gen/common/mkstemp.c (revision 743541abe0006f1be576e21a976c36fb2e87accc)
1 /*
2  * Copyright (c) 1983 Regents of the University of California.
3  * All rights reserved.  The Berkeley software License Agreement
4  * specifies the terms and conditions for redistribution.
5  */
6 
7 #pragma ident	"%Z%%M%	%I%	%E% SMI"
8 
9 #include <sys/file.h>
10 
11 int
12 mkstemp(char *as)
13 {
14 	char *s;
15 	unsigned int pid;
16 	int fd, i;
17 
18 	pid = getpid();
19 	s = as;
20 	while (*s++)
21 		/* void */;
22 	s--;
23 	while (*--s == 'X') {
24 		*s = (pid % 10) + '0';
25 		pid /= 10;
26 	}
27 	s++;
28 	i = 'a';
29 	while ((fd = open(as, O_CREAT|O_EXCL|O_RDWR, 0600)) == -1) {
30 		if (i == 'z')
31 			return (-1);
32 		*s = i++;
33 	}
34 	return (fd);
35 }
36