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:
parent
529e50a7ad
commit
5cb3a1eba1
3
Makefile
3
Makefile
|
@ -79,7 +79,8 @@ LIBUTILSRC =\
|
|||
libutil/strlcpy.c\
|
||||
libutil/strsep.c\
|
||||
libutil/strtonum.c\
|
||||
libutil/unescape.c
|
||||
libutil/unescape.c\
|
||||
libutil/writeall.c
|
||||
|
||||
LIB = $(LIBUTF) $(LIBUTIL)
|
||||
|
||||
|
|
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;
|
||||
}
|
3
util.h
3
util.h
|
@ -62,6 +62,9 @@ char *strsep(char **, const char *);
|
|||
int enregcomp(int, regex_t *, const char *, int);
|
||||
int eregcomp(regex_t *, const char *, int);
|
||||
|
||||
/* io */
|
||||
ssize_t writeall(int, const void *, size_t);
|
||||
|
||||
/* misc */
|
||||
void enmasse(int, char **, int (*)(const char *, const char *, int));
|
||||
void fnck(const char *, const char *, int (*)(const char *, const char *, int), int);
|
||||
|
|
Loading…
Reference in New Issue
Block a user