qioerr qbuffer_append_buffer(qbuffer_t* buf, qbuffer_t* src, qbuffer_iter_t src_start, qbuffer_iter_t src_end) { qbuffer_iter_t src_cur = src_start; qbytes_t* bytes; int64_t skip; int64_t len; qioerr err; if( buf == src ) QIO_RETURN_CONSTANT_ERROR(EINVAL, "cannot append a buffer to itself"); while( qbuffer_iter_num_bytes(src_cur, src_end) > 0 ) { qbuffer_iter_get(src_cur, src_end, &bytes, &skip, &len); err = qbuffer_append(buf, bytes, skip, len); if( err ) return err; qbuffer_iter_next_part(src, &src_cur); } return 0; }
err_t qbuffer_append_buffer(qbuffer_t* buf, qbuffer_t* src, qbuffer_iter_t src_start, qbuffer_iter_t src_end) { qbuffer_iter_t src_cur = src_start; qbytes_t* bytes; int64_t skip; int64_t len; err_t err; if( buf == src ) return EINVAL; while( qbuffer_iter_num_bytes(src_cur, src_end) > 0 ) { qbuffer_iter_get(src_cur, src_end, &bytes, &skip, &len); err = qbuffer_append(buf, bytes, skip, len); if( err ) return err; qbuffer_iter_next_part(src, &src_cur); } return 0; }