24 return (ssize_t)
read(fd,(
void *)buf,len);
29 return (ssize_t) write(fd,(
const void *)buf,len);
71static int oneread(ssize_t (*op)(
int,
char *,
size_t),
int fd,
char *buf,
size_t len)
77 if (r == -1)
if (errno == EINTR)
continue;
82static int getthis(
buffer *s,
char *buf,
size_t len)
84 if (len > s->
p) len = s->
p;
95 if (s->
p)
return s->
p;
96 r = oneread(s->
op,s->
fd,s->
x,s->
n);
108 if (s->
p > 0)
return getthis(s,buf,len);
109 if (s->
n <= len)
return oneread(s->
op,s->
fd,buf,s->
n);
111 if (r <= 0)
return r;
112 return getthis(s,buf,len);
119 if (s->
p > 0)
return getthis(s,buf,len);
120 if (s->
n <= len)
return oneread(s->
op,s->
fd,buf,len);
122 if (r <= 0)
return r;
123 return getthis(s,buf,len);
137static int allwrite(ssize_t (*op)(
int,
char *,
size_t),
int fd,
const char *buf,
size_t len)
144 if (errno == EINTR)
continue;
162 return allwrite(s->
op,s->
fd,s->
x,p);
169 while (len > (n = s->
n - s->
p)) {
170 byte_copy(s->
x + s->
p,n,buf); s->
p += n; buf += n; len -= n;
184 if (len > n - s->
p) {
189 if (n > len) n = len;
190 if (allwrite(s->
op,s->
fd,buf,n) == -1)
return -1;
204 return allwrite(s->
op,s->
fd,buf,len);
void byte_copy(void *, unsigned int, const void *)
void byte_copyr(void *, unsigned int, const void *)
ssize_t buffer_unixread(int, char *, size_t)
ssize_t buffer_unixwrite(int, char *, size_t)
#define BUFFER_INIT(op, fd, buf, len)
#define buffer_SEEK(s, len)
unsigned int str_len(const char *)
int read(int _str, void *_buf, int _b)
char buffer_2_space[BUFFER_OUTSIZE]
char buffer_0_small[BUFFER_SMALL]
int buffer_putalign(buffer *s, const char *buf, size_t len)
int buffer_get(buffer *s, char *buf, size_t len)
ssize_t buffer_unixread(int fd, char *buf, size_t len)
int buffer_putsflush(buffer *s, const char *buf)
void buffer_init(buffer *s, ssize_t(*op)(int, char *, size_t), int fd, char *buf, size_t len)
char buffer_2_small[BUFFER_SMALL]
int buffer_putflush(buffer *s, const char *buf, size_t len)
int buffer_copy(buffer *bout, buffer *bin)
char buffer_1_space[BUFFER_OUTSIZE]
int buffer_puts(buffer *s, const char *buf)
char buffer_0_space[BUFFER_INSIZE]
char buffer_1_small[BUFFER_SMALL]
int buffer_flush(buffer *s)
int buffer_bget(buffer *s, char *buf, size_t len)
void buffer_seek(buffer *s, size_t len)
ssize_t buffer_unixwrite(int fd, char *buf, size_t len)
int buffer_put(buffer *s, const char *buf, size_t len)
int buffer_feed(buffer *s)
int buffer_putsalign(buffer *s, const char *buf)
char * buffer_peek(buffer *s)
ssize_t(* op)(int, char *, size_t)