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:
committed by
Anselm R Garbe
parent
529e50a7ad
commit
5cb3a1eba1
21
libutil/writeall.c
Normal file
21
libutil/writeall.c
Normal 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;
|
||||
}
|
Reference in New Issue
Block a user