diff options
| -rw-r--r-- | archival/libunarchive/seek_by_char.c | 2 | ||||
| -rw-r--r-- | include/libbb.h | 1 | ||||
| -rw-r--r-- | libbb/copyfd.c | 10 | 
3 files changed, 6 insertions, 7 deletions
diff --git a/archival/libunarchive/seek_by_char.c b/archival/libunarchive/seek_by_char.c index c0315616e..a50d566f5 100644 --- a/archival/libunarchive/seek_by_char.c +++ b/archival/libunarchive/seek_by_char.c @@ -27,6 +27,6 @@  extern void seek_by_char(const archive_handle_t *archive_handle, const unsigned int jump_size)  {  	if (jump_size) { -		bb_full_fd_action(archive_handle->src_fd, -1, jump_size, NULL); +		bb_copyfd_size(archive_handle->src_fd, -1, jump_size);  	}  } diff --git a/include/libbb.h b/include/libbb.h index 15e3e49cf..61888042d 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -483,6 +483,5 @@ extern void xregcomp(regex_t *preg, const char *regex, int cflags);  #define HASH_SHA1	1  #define HASH_MD5	2  extern int hash_fd(int fd, const size_t size, const uint8_t hash_algo, uint8_t *hashval); -extern size_t bb_full_fd_action(int src_fd, int dst_fd, const size_t size, ssize_t (*action)(int fd, const void *, size_t));  #endif /* __LIBCONFIG_H__ */ diff --git a/libbb/copyfd.c b/libbb/copyfd.c index 1ef994c98..9ab83728c 100644 --- a/libbb/copyfd.c +++ b/libbb/copyfd.c @@ -34,7 +34,7 @@  /* If size is 0 copy until EOF */ -extern size_t bb_full_fd_action(int src_fd, int dst_fd, const size_t size, ssize_t (*action)(int fd, const void *, size_t)) +static size_t bb_full_fd_action(int src_fd, int dst_fd, const size_t size)  {  	size_t read_total = 0;  	RESERVE_CONFIG_BUFFER(buffer,BUFSIZ); @@ -50,8 +50,8 @@ extern size_t bb_full_fd_action(int src_fd, int dst_fd, const size_t size, ssize  		}  		read_actual = safe_read(src_fd, buffer, read_try); -		if (read_actual > 0) { -			if (action && (action(dst_fd, buffer, (size_t) read_actual) != read_actual)) { +		if ((read_actual > 0) && (dst_fd >= 0)) { +			if (bb_full_write(dst_fd, buffer, (size_t) read_actual) != read_actual) {  				bb_perror_msg(bb_msg_write_error);	/* match Read error below */  				break;  			} @@ -79,12 +79,12 @@ extern size_t bb_full_fd_action(int src_fd, int dst_fd, const size_t size, ssize  extern int bb_copyfd_size(int fd1, int fd2, const off_t size)  {  	if (size) { -		return(bb_full_fd_action(fd1, fd2, size, bb_full_write)); +		return(bb_full_fd_action(fd1, fd2, size));  	}  	return(0);  }  extern int bb_copyfd_eof(int fd1, int fd2)  { -	return(bb_full_fd_action(fd1, fd2, 0, bb_full_write)); +	return(bb_full_fd_action(fd1, fd2, 0));  }  | 
