aboutsummaryrefslogtreecommitdiff
path: root/archival
diff options
context:
space:
mode:
Diffstat (limited to 'archival')
-rw-r--r--archival/libarchive/data_extract_to_command.c8
-rw-r--r--archival/tar.c1
2 files changed, 7 insertions, 2 deletions
diff --git a/archival/libarchive/data_extract_to_command.c b/archival/libarchive/data_extract_to_command.c
index 2bbab7641..0e977049d 100644
--- a/archival/libarchive/data_extract_to_command.c
+++ b/archival/libarchive/data_extract_to_command.c
@@ -99,8 +99,12 @@ void FAST_FUNC data_extract_to_command(archive_handle_t *archive_handle)
99 close(p[1]); 99 close(p[1]);
100 xdup2(p[0], STDIN_FILENO); 100 xdup2(p[0], STDIN_FILENO);
101 signal(SIGPIPE, SIG_DFL); 101 signal(SIGPIPE, SIG_DFL);
102 execl(DEFAULT_SHELL, DEFAULT_SHELL_SHORT_NAME, "-c", archive_handle->tar__to_command, NULL); 102 execl(archive_handle->tar__to_command_shell,
103 bb_perror_msg_and_die("can't execute '%s'", DEFAULT_SHELL); 103 archive_handle->tar__to_command_shell,
104 "-c",
105 archive_handle->tar__to_command,
106 NULL);
107 bb_perror_msg_and_die("can't execute '%s'", archive_handle->tar__to_command_shell);
104 } 108 }
105 close(p[0]); 109 close(p[0]);
106 /* Our caller is expected to do signal(SIGPIPE, SIG_IGN) 110 /* Our caller is expected to do signal(SIGPIPE, SIG_IGN)
diff --git a/archival/tar.c b/archival/tar.c
index d43c8dee3..01b83d5e2 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -970,6 +970,7 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
970 putenv((char*)"TAR_FILETYPE=f"); 970 putenv((char*)"TAR_FILETYPE=f");
971 signal(SIGPIPE, SIG_IGN); 971 signal(SIGPIPE, SIG_IGN);
972 tar_handle->action_data = data_extract_to_command; 972 tar_handle->action_data = data_extract_to_command;
973 IF_FEATURE_TAR_TO_COMMAND(tar_handle->tar__to_command_shell = xstrdup(get_shell_name());)
973 } 974 }
974 975
975 if (opt & OPT_KEEP_OLD) 976 if (opt & OPT_KEEP_OLD)