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;
sprintf(header.mode, "%07o", 0600);
sprintf(header.uid, "%07o", 0);
sprintf(header.gid, "%07o", 0);
- sprintf(header.size, "%011o", len);
+ sprintf(header.size, "%011o", (int)len);
sprintf(header.mtime, "%011o", (int)time(NULL));
header.typeflag = '0';
strcpy(header.magic, "ustar ");
for (map<string, pair<int64_t, int64_t> >::iterator i = group_sizes.begin();
i != group_sizes.end(); ++i) {
printf(" %s: %lld (%lld compressed)\n", i->first.c_str(),
- i->second.first, i->second.second);
+ (long long)i->second.first, (long long)i->second.second);
}
}