*/
#include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
enum {
//TAR_FILETYPE,
file_header_t *file_header = archive_handle->file_header;
#if 0 /* do we need this? ENABLE_FEATURE_TAR_SELINUX */
- char *sctx = archive_handle->tar__next_file_sctx;
+ char *sctx = archive_handle->tar__sctx[PAX_NEXT_FILE];
if (!sctx)
- sctx = archive_handle->tar__global_sctx;
+ sctx = archive_handle->tar__sctx[PAX_GLOBAL];
if (sctx) { /* setfscreatecon is 4 syscalls, avoid if possible */
setfscreatecon(sctx);
- free(archive_handle->tar__next_file_sctx);
- archive_handle->tar__next_file_sctx = NULL;
+ free(archive_handle->tar__sctx[PAX_NEXT_FILE]);
+ archive_handle->tar__sctx[PAX_NEXT_FILE] = NULL;
}
#endif
archive_handle->tar__to_command_shell,
"-c",
archive_handle->tar__to_command,
- NULL);
+ (char *)0);
bb_perror_msg_and_die("can't execute '%s'", archive_handle->tar__to_command_shell);
}
close(p[0]);
bb_copyfd_exact_size(archive_handle->src_fd, p[1], -file_header->size);
close(p[1]);
- if (safe_waitpid(pid, &status, 0) == -1)
- bb_perror_msg_and_die("waitpid");
+ status = wait_for_exitstatus(pid);
if (WIFEXITED(status) && WEXITSTATUS(status))
bb_error_msg_and_die("'%s' returned status %d",
archive_handle->tar__to_command, WEXITSTATUS(status));
if (WIFSIGNALED(status))
- bb_error_msg_and_die("'%s' terminated on signal %d",
+ bb_error_msg_and_die("'%s' terminated by signal %d",
archive_handle->tar__to_command, WTERMSIG(status));
if (!BB_MMU) {