#include "iobuf.h" int iobuf_copy(ibuf* in, obuf* out) { char buf[iobuf_bufsize]; if (ibuf_eof(in)) return 1; if (ibuf_error(in) || obuf_error(out)) return 0; do { if (!ibuf_read_large(in, buf, sizeof buf) && in->count == 0) break; if (!obuf_write_large(out, buf, in->count)) return 0; } while (!ibuf_eof(in)); return ibuf_eof(in); } int iobuf_copyflush(ibuf* in, obuf* out) { if (!iobuf_copy(in, out)) return 0; return obuf_flush(out); }