Be certain to not abort prematurely when reading stuff from pipes.
No binary (build failed)
—
(log yok)
| @@ -25,7 +25,7 @@ extern ssize_t archive_xread(const archive_handle_t *archive_handle, unsigned ch | |
| ssize_t size; | |
| size = archive_handle->read(archive_handle->src_fd, buf, count); | |
| - | if (size == -1) { |
| + | if (size < 0) { |
| bb_perror_msg_and_die("Read error"); | |
| } | |
| @@ -30,7 +30,7 @@ archive_handle_t *init_handle(void) | |
| archive_handle->action_header = header_skip; | |
| archive_handle->action_data = data_skip; | |
| archive_handle->filter = filter_accept_all; | |
| - | archive_handle->read = read; |
| + | archive_handle->read = bb_full_read; |
| archive_handle->seek = seek_by_jump; | |
| return(archive_handle); | |
| @@ -526,7 +526,7 @@ static inline int writeTarFile(const char *tarName, const int verboseFlag, | |
| while (1) { | |
| char buf; | |
| - | int n = read(gzipStatusPipe[0], &buf, 1); |
| + | int n = bb_full_read(gzipStatusPipe[0], &buf, 1); |
| if (n == 0 && vfork_exec_errno != 0) { | |
| errno = vfork_exec_errno; | |