// Failed to spawn compressor.
close(pipe_into_cmd[1]);
close(pipe_outof_cmd[0]);
+ fprintf(stderr,
+ "WARNING: Failed to start compressor cmd! Invalid cmd?\n");
return 1;
}
// Status is available.
if (WIFEXITED(compressor_status)) {
compressor_return_val = WEXITSTATUS(compressor_status);
- if (compressor_return_val == 127) {
- // Exec failed.
- fprintf(stderr,
- "WARNING: Exec failed (exec exit code 127)! Invalid "
- "compressor cmd?\n");
- return 1;
- } else if (compressor_return_val == 0) {
- // Immediately halted.
- fprintf(stderr,
- "WARNING: Exec failed (exec exit code 0)! Invalid "
- "compressor cmd?\n");
- return 1;
- } else {
- // Other status returned.
- fprintf(stderr,
- "WARNING: Exec failed (exec exit code %d)! Invalid "
- "compressor cmd?\n",
- compressor_return_val);
- return 1;
- }
+ fprintf(stderr,
+ "WARNING: Exec failed (exec exit code %d)! Invalid "
+ "compressor cmd?\n",
+ compressor_return_val);
+ return 1;
}
} else if (compressor_ret == 0) {
// Probably still running, continue on.
} else {
// Error.
+ fprintf(stderr,
+ "WARNING: Exec failed (exec exit code unknown)! Invalid "
+ "compressor cmd?\n");
return 1;
}
fprintf(stderr, "[%10u/%10u]\n", state->count, state->max);
if (simple_archiver_list_get(filenames, write_files_fn, state)) {
// Error occurred.
+ fprintf(stderr, "Error ocurred writing file(s) to archive.\n");
+ return SDAS_FAILED_TO_WRITE;
}
state->out_f = NULL;
simple_archiver_helper_make_dirs((const char *)out_f_name);
out_f = fopen(out_f_name, "wb");
+ __attribute__((
+ cleanup(cleanup_temp_filename_delete))) void **ptrs_array =
+ malloc(sizeof(void *) * 2);
+ ptrs_array[0] = out_f_name;
+ ptrs_array[1] = &out_f;
#if SIMPLE_ARCHIVER_PLATFORM == SIMPLE_ARCHIVER_PLATFORM_COSMOPOLITAN || \
SIMPLE_ARCHIVER_PLATFORM == SIMPLE_ARCHIVER_PLATFORM_MAC || \
SIMPLE_ARCHIVER_PLATFORM == SIMPLE_ARCHIVER_PLATFORM_LINUX
// Failed to spawn compressor.
close(pipe_into_cmd[1]);
close(pipe_outof_cmd[0]);
+ fprintf(
+ stderr,
+ "WARNING: Failed to start decompressor cmd! Invalid cmd?\n");
return SDAS_INTERNAL_ERROR;
}
}
close(pipe_into_cmd[0]);
close(pipe_outof_cmd[1]);
+ int decompressor_status;
+ int decompressor_return_val;
+ int decompressor_ret =
+ waitpid(decompressor_pid, &decompressor_status, WNOHANG);
+ if (decompressor_ret == decompressor_pid) {
+ // Status is available.
+ if (WIFEXITED(decompressor_status)) {
+ decompressor_return_val = WEXITSTATUS(decompressor_status);
+ fprintf(stderr,
+ "WARNING: Exec failed (exec exit code %d)! Invalid "
+ "decompressor cmd?\n",
+ decompressor_return_val);
+ return SDAS_INTERNAL_ERROR;
+ }
+ } else if (decompressor_ret == 0) {
+ // Probably still running, continue on.
+ } else {
+ // Error.
+ fprintf(stderr,
+ "WARNING: Exec failed (exec exit code unknown)! Invalid "
+ "decompressor cmd?\n");
+ return SDAS_INTERNAL_ERROR;
+ }
+
uint64_t compressed_file_size = u64;
int write_again = 0;
int write_pipe_done = 0;
return SDAS_INTERNAL_ERROR;
}
+ ptrs_array[0] = NULL;
fprintf(stderr, " Extracted.\n");
#endif
} else {