aboutsummaryrefslogtreecommitdiff
path: root/src/lib9/opentemp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib9/opentemp.c')
-rw-r--r--src/lib9/opentemp.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/lib9/opentemp.c b/src/lib9/opentemp.c
index f90bf771..0af154de 100644
--- a/src/lib9/opentemp.c
+++ b/src/lib9/opentemp.c
@@ -2,14 +2,20 @@
#include <libc.h>
int
-opentemp(char *template)
+opentemp(char *template, int mode)
{
- int fd;
+ int fd, fd1;
fd = mkstemp(template);
if(fd < 0)
return -1;
- remove(template);
- return fd;
+ /* reopen for mode */
+ fd1 = open(template, mode);
+ if(fd1 < 0){
+ close(fd);
+ remove(template);
+ return -1;
+ }
+ close(fd);
+ return fd1;
}
-