initial check-in, version 0.5.0
[musl] / src / temp / mkstemp.c
1 #include <string.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <fcntl.h>
5 #include <unistd.h>
6 #include <limits.h>
7 #include <errno.h>
8 #include "libc.h"
9
10 int mkstemp(char *template)
11 {
12         int fd;
13 retry:
14         if (!mktemp(template)) return -1;
15         fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0600);
16         if (fd >= 0) return fd;
17         if (errno == EEXIST) {
18                 /* this is safe because mktemp verified
19                  * that we have a valid template string */
20                 strcpy(template+strlen(template)-6, "XXXXXX");
21                 goto retry;
22         }
23         return -1;
24 }
25
26 LFS64(mkstemp);