summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ioexact.c7
-rw-r--r--ioexact.h6
2 files changed, 9 insertions, 4 deletions
diff --git a/ioexact.c b/ioexact.c
index 1600784..7ba6594 100644
--- a/ioexact.c
+++ b/ioexact.c
@@ -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;
diff --git a/ioexact.h b/ioexact.h
index 6234e8e..c69552b 100644
--- a/ioexact.h
+++ b/ioexact.h
@@ -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 */