ssize_t read_ret;
size_t fwrite_ret;
while (written_amt < file_size) {
+ if (is_sig_pipe_occurred) {
+ fprintf(stderr, "ERROR: SIGPIPE while decompressing!\n");
+ return SDAS_INTERNAL_ERROR;
+ }
int ret = try_write_to_decomp(to_dec_pipe, chunk_remaining, in_f, read_buf,
read_buf_size, hold_buf, has_hold);
if (ret != SDAS_SUCCESS) {
return ret;
- }
- if (file_size - written_amt >= read_buf_size) {
+ } else if (is_sig_pipe_occurred) {
+ fprintf(stderr, "ERROR: SIGPIPE while decompressing!\n");
+ return SDAS_INTERNAL_ERROR;
+ } else if (file_size - written_amt >= read_buf_size) {
read_ret = read(in_pipe, read_buf, read_buf_size);
if (read_ret > 0) {
if (out_fd) {
char hold_buf[SIMPLE_ARCHIVER_BUFFER_SIZE];
ssize_t has_hold = -1;
while (!to_comp_finished) {
+ if (is_sig_pipe_occurred) {
+ fprintf(stderr, "ERROR: SIGPIPE while compressing!\n");
+ return SDAS_INTERNAL_ERROR;
+ }
if (!to_comp_finished) {
// Write to compressor.
if (ferror(fd)) {
// Finish writing.
if (!to_temp_finished) {
while (1) {
+ if (is_sig_pipe_occurred) {
+ fprintf(stderr, "ERROR: SIGPIPE while compressing!\n");
+ return SDAS_INTERNAL_ERROR;
+ }
ssize_t read_ret =
read(pipe_outof_read, buf, SIMPLE_ARCHIVER_BUFFER_SIZE);
if (read_ret < 0) {
fprintf(stderr,
" WARNING: File already exists and "
"\"--overwrite-extract\" is not specified, skipping!\n");
- read_decomp_to_out_file(NULL, pipe_outof_read, (char *)buf,
- SIMPLE_ARCHIVER_BUFFER_SIZE,
- file_info->file_size, &pipe_into_write,
- &chunk_remaining, in_f, hold_buf,
- &has_hold);
+ int ret = read_decomp_to_out_file(
+ NULL, pipe_outof_read, (char *)buf,
+ SIMPLE_ARCHIVER_BUFFER_SIZE, file_info->file_size,
+ &pipe_into_write, &chunk_remaining, in_f, hold_buf,
+ &has_hold);
+ if (ret != SDAS_SUCCESS) {
+ return ret;
+ }
continue;
}
}
}
} else {
#else
- // } (This comment exists so that vim can correctly match curly-braces.
+ // } (This comment exists so that vim can correctly match curly-braces).
if (!is_compressed) {
#endif
while (node->next != file_info_list->tail) {