xref: /illumos-gate/usr/src/lib/libresolv2/common/bsd/readv.c (revision 8a2b682e57a046b828f37bcde1776f131ef4629f)
1 #include "port_before.h"
2 
3 #include <sys/types.h>
4 #include <sys/uio.h>
5 #include <sys/stat.h>
6 #include <sys/socket.h>
7 
8 #include "port_after.h"
9 
10 #ifndef NEED_READV
11 int __bindcompat_readv;
12 #else
13 
14 int
15 __readv(fd, vp, vpcount)
16 	int fd;
17 	const struct iovec *vp;
18 	int vpcount;
19 {
20 	int count = 0;
21 
22 	while (vpcount-- > 0) {
23 		int bytes = read(fd, vp->iov_base, vp->iov_len);
24 
25 		if (bytes < 0)
26 			return (-1);
27 		count += bytes;
28 		if (bytes != vp->iov_len)
29 			break;
30 		vp++;
31 	}
32 	return (count);
33 }
34 #endif /* NEED_READV */
35 /*! \file */
36