#include <unistd.h>
#include <sys/types.h>
#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;
}