diff options
author | Daniel Borkmann <dborkman@redhat.com> | 2013-06-04 13:32:41 +0200 |
---|---|---|
committer | Daniel Borkmann <dborkman@redhat.com> | 2013-06-04 13:32:41 +0200 |
commit | c19bbb5083376a7941e2ea4607ee5e90ecfb5cde (patch) | |
tree | e021a198ddeaf6fd93661b25eecc92745a2ae066 | |
parent | 85726b6a6d53f6c3a2c18ba3412ee5b14ee4d6f3 (diff) |
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 <dborkman@redhat.com>
-rw-r--r-- | ioops.c | 23 | ||||
-rw-r--r-- | ioops.h | 2 |
2 files changed, 25 insertions, 0 deletions
@@ -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; +} @@ -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 */ |