From c19bbb5083376a7941e2ea4607ee5e90ecfb5cde Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Tue, 4 Jun 2013 13:32:41 +0200 Subject: [PATCH] ioops: Add {read,write}_blob_or_die for reading/writing binary blobs We need those functions for later key generation simplification. Signed-off-by: Daniel Borkmann --- ioops.c | 23 +++++++++++++++++++++++ ioops.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/ioops.c b/ioops.c index 6e79317f..a5dc94a5 100644 --- a/ioops.c +++ b/ioops.c @@ -96,3 +96,26 @@ ssize_t write_or_die(int fd, const void *buf, size_t len) return ret; } + +int read_blob_or_die(const char *file, void *blob, size_t count) +{ + int fd, ret; + + fd = open_or_die(file, O_RDONLY); + ret = read_or_die(fd, blob, len); + close(fd); + + return ret; +} + +int write_blob_or_die(const char *file, const void *blob, size_t count) +{ + int fd, ret; + + fd = open_or_die_m(file, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR); + ret = write_or_die(fd, blob, len); + fdatasync(fd); + close(fd); + + return ret; +} diff --git a/ioops.h b/ioops.h index eed3e3d7..a344361d 100644 --- a/ioops.h +++ b/ioops.h @@ -8,5 +8,7 @@ extern int tun_open_or_die(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); extern ssize_t write_or_die(int fd, const void *buf, size_t count); +extern int read_blob_or_die(const char *file, void *blob, size_t count); +extern int write_blob_or_die(const char *file, const void *blob, size_t count); #endif /* IOOPS_H */ -- 2.11.4.GIT