17 safe_write(const int fd
, const void * const buf_
, size_t count
,
21 const char *buf
= (const char *) buf_
;
27 while (count
> (size_t) 0) {
28 while ((written
= write(fd
, buf
, count
)) <= (ssize_t
) 0) {
29 if (errno
== EAGAIN
) {
30 if (poll(&pfd
, (nfds_t
) 1, timeout
) == 0) {
34 } else if (errno
!= EINTR
) {
39 count
-= (size_t) written
;
42 return (ssize_t
) (buf
- (const char *) buf_
);
46 safe_read(const int fd
, void * const buf_
, size_t count
)
48 unsigned char *buf
= (unsigned char *) buf_
;
52 while ((readnb
= read(fd
, buf
, count
)) < (ssize_t
) 0 &&
54 if (readnb
< (ssize_t
) 0) {
57 if (readnb
== (ssize_t
) 0) {
60 count
-= (size_t) readnb
;
62 } while (count
> (ssize_t
) 0);
64 return (ssize_t
) (buf
- (unsigned char *) buf_
);
68 safe_read_partial(const int fd
, void * const buf_
, const size_t max_count
)
70 unsigned char * const buf
= (unsigned char *) buf_
;
73 while ((readnb
= read(fd
, buf
, max_count
)) < (ssize_t
) 0 &&
82 safe_write(const int fd
, const void * const buf_
, size_t count
,
87 assert(count
> (size_t) 0U);
94 safe_read(const int fd
, void * const buf_
, size_t count
)
98 assert(count
> (size_t) 0U);
104 safe_read_partial(const int fd
, void * const buf_
, const size_t max_count
)
107 assert(buf_
!= NULL
);
108 assert(max_count
> (size_t) 0U);