diff options
Diffstat (limited to 'archival')
-rw-r--r-- | archival/libarchive/data_extract_to_command.c | 8 | ||||
-rw-r--r-- | archival/tar.c | 1 |
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) |