diff options
-rw-r--r-- | ioexact.c | 7 | ||||
-rw-r--r-- | ioexact.h | 6 |
2 files changed, 9 insertions, 4 deletions
@@ -1,12 +1,13 @@ #include <errno.h> #include <unistd.h> #include <signal.h> +#include <stdbool.h> #include "ioexact.h" extern volatile sig_atomic_t sigint; -ssize_t read_exact(int fd, void *buf, size_t len, int mayexit) +ssize_t read_exact(int fd, void *buf, size_t len, bool mayexit) { ssize_t num = 0, written; @@ -21,6 +22,7 @@ ssize_t read_exact(int fd, void *buf, size_t len, int mayexit) } if (!written) return 0; + len -= written; buf += written; num += written; @@ -29,7 +31,7 @@ ssize_t read_exact(int fd, void *buf, size_t len, int mayexit) return num; } -ssize_t write_exact(int fd, void *buf, size_t len, int mayexit) +ssize_t write_exact(int fd, void *buf, size_t len, bool mayexit) { ssize_t num = 0, written; @@ -44,6 +46,7 @@ ssize_t write_exact(int fd, void *buf, size_t len, int mayexit) } if (!written) return 0; + len -= written; buf += written; num += written; @@ -1,7 +1,9 @@ #ifndef IOEXACT_H #define IOEXACT_H -extern ssize_t read_exact(int fd, void *buf, size_t len, int mayexit); -extern ssize_t write_exact(int fd, void *buf, size_t len, int mayexit); +#include <stdbool.h> + +extern ssize_t read_exact(int fd, void *buf, size_t len, bool mayexit); +extern ssize_t write_exact(int fd, void *buf, size_t len, bool mayexit); #endif /* IOEXACT_H */ |