#include #include #include "libbb.h" /* Copy CHUNKSIZE bytes (or untill EOF if chunksize == -1) * from SRC_FILE to DST_FILE. */ extern int copy_file_chunk_fd(int src_fd, int dst_fd, off_t chunksize) { size_t nread, size; char buffer[BUFSIZ]; while (chunksize != 0) { if (chunksize > BUFSIZ) { size = BUFSIZ; } else { size = chunksize; } nread = xread(src_fd, buffer, size); if (nread == 0) { return 1; } if (write (dst_fd, buffer, nread) != nread) { error_msg_and_die ("Short write"); } if (chunksize != -1) { chunksize -= nread; } } return 0; }