tar_write(buf, TAR_BLOCK_SIZE);
if (close(filter_fd) != 0)
- throw IOException("Error closing Tarfile");
+ fatal("Error closing Tarfile");
/* ...and wait for filter process to finish. */
int status;
waitpid(filter_pid, &status, 0);
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
- throw IOException("Filter process error");
+ fatal("Filter process error");
}
close(real_fd);
/* Create a pipe for communicating with the filter process. */
if (pipe(fds) < 0) {
- throw IOException("Unable to create pipe for filter");
+ fatal("Unable to create pipe for filter");
}
/* Create a child process which can exec() the filter program. */
pid = fork();
if (pid < 0)
- throw IOException("Unable to fork filter process");
+ fatal("Unable to fork filter process");
if (pid > 0) {
/* Parent process */
if (errno == EINTR)
continue;
fprintf(stderr, "Write error: %m\n");
- throw IOException("Write error");
+ fatal("Write error");
}
len -= res;