From f3057cdf8518d4931a12beb3f4322638500efec8 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 26 Apr 2016 10:17:32 +0200 Subject: ioops: Add mkostemp_or_die() wrapper for mkostemp(3) Add a panic()ing wrapper for mkostemp(3). This will be used to safely create unique temporary files. Signed-off-by: Tobias Klauser --- ioops.c | 10 ++++++++++ ioops.h | 1 + 2 files changed, 11 insertions(+) diff --git a/ioops.c b/ioops.c index c1eeddc..160c74e 100644 --- a/ioops.c +++ b/ioops.c @@ -1,6 +1,7 @@ #ifndef _GNU_SOURCE # define _GNU_SOURCE #endif +#include #include #include #include @@ -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); diff --git a/ioops.h b/ioops.h index ce0315f..9556930 100644 --- a/ioops.h +++ b/ioops.h @@ -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); -- cgit v1.2.3-54-g00ecf