libowfat/buffer/buffer_stubborn.c

17 lines
316 B
C
Raw Normal View History

2001-02-04 01:28:45 +00:00
#include <errno.h>
#include "buffer.h"
int buffer_stubborn(ssize_t (*op)(),int fd,const char* buf, size_t len,void* cookie) {
2014-03-14 19:42:54 +00:00
ssize_t w;
2015-11-19 13:06:15 +00:00
errno=0;
2001-02-04 01:28:45 +00:00
while (len) {
2015-11-19 13:06:15 +00:00
if ((w=op(fd,buf,len,cookie))<=0) {
2001-02-04 01:28:45 +00:00
if (errno == EINTR) continue;
return -1;
2015-11-19 13:06:15 +00:00
}
2001-02-04 01:28:45 +00:00
buf+=w;
2014-03-14 19:42:54 +00:00
len-=(size_t)w;
2001-02-04 01:28:45 +00:00
}
return 0;
}