diff options
-rw-r--r-- | ioops.c | 10 | ||||
-rw-r--r-- | ioops.h | 1 |
2 files changed, 11 insertions, 0 deletions
@@ -1,6 +1,7 @@ #ifndef _GNU_SOURCE # define _GNU_SOURCE #endif +#include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> @@ -53,6 +54,15 @@ void create_or_die(const char *file, mode_t mode) close(fd); } +int mkostemp_or_die(char *templ, int flags) +{ + /* mode is 0600 (S_IRUSR | S_IWUSR) by default */ + int fd = mkostemp(templ, flags); + if (unlikely(fd < 0)) + panic("Cannot create unique temporary file! %s\n", strerror(errno)); + return fd; +} + void pipe_or_die(int pipefd[2], int flags) { int ret = pipe2(pipefd, flags); @@ -8,6 +8,7 @@ extern int open_or_die_m(const char *file, int flags, mode_t mode); extern int dup_or_die(int oldfd); extern void dup2_or_die(int oldfd, int newfd); extern void create_or_die(const char *file, mode_t mode); +extern int mkostemp_or_die(char *templ, int flags); extern int tun_open_or_die(const char *name, int type); extern void pipe_or_die(int pipefd[2], int flags); extern ssize_t read_or_die(int fd, void *buf, size_t count); |