libutil: Add writeall utility function

writeall makes successive write calls to write an entire buffer to the
output file descriptor. It returns the number of bytes written, or -1 on
the first error.
This commit is contained in:
Michael Forney
2017-01-01 17:00:32 -08:00
committed by Anselm R Garbe
parent 529e50a7ad
commit 5cb3a1eba1
3 changed files with 26 additions and 1 deletions

21
libutil/writeall.c Normal file
View File

@@ -0,0 +1,21 @@
/* See LICENSE file for copyright and license details. */
#include <unistd.h>
#include "../util.h"
ssize_t
writeall(int fd, const void *buf, size_t len)
{
const char *p = buf;
ssize_t n;
while (len) {
n = write(fd, p, len);
if (n <= 0)
return n;
p += n;
len -= n;
}
return p - (const char *)buf;
}