From f268a8871a061395633d943e6f177fa8f8008963 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Sat, 25 Sep 2021 19:48:26 +0000 Subject: Axe iobuffer Signed-off-by: Laurent Bercot --- src/libstddjb/fd_cat.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'src/libstddjb/fd_cat.c') diff --git a/src/libstddjb/fd_cat.c b/src/libstddjb/fd_cat.c index 4acc08a..d9d5c99 100644 --- a/src/libstddjb/fd_cat.c +++ b/src/libstddjb/fd_cat.c @@ -1,27 +1,23 @@ /* ISC license. */ -#include +#include -#include +#include #include -int fd_cat (int from, int to) +#define BSIZE 65536 + +off_t fd_cat (int from, int to) { - iobuffer b ; - size_t n = 0 ; - if (!iobuffer_init(&b, from, to)) return -1 ; + off_t n = 0 ; + char buf[BSIZE] ; for (;;) { - ssize_t r = iobuffer_fill(&b) ; - if (r < 0) goto err ; - else if (!r) break ; - if (!iobuffer_flush(&b)) goto err ; + ssize_t r = fd_read(from, buf, BSIZE) ; + if (r == -1) return -1 ; + if (!r) break ; + if (allwrite(to, buf, r) < r) return -1 ; n += r ; } - iobuffer_finish(&b) ; return n ; - - err: - iobuffer_finish(&b) ; - return -1 ; } -- cgit v1.2.3