diff options
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -0,0 +1,21 @@ +#include <unistd.h> + +#include "util.h" + +ssize_t loop_write(int fd, const void *b, size_t l) { + ssize_t t = 0; + while (l) { + ssize_t r; + + if ((r = write(fd, b, l)) < 0) + return t == 0 ? r : t; + else if (r == 0) + return t; + + b += r; + l -= r; + t += r; + } + + return t; +} |