aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--win32/popen.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/win32/popen.c b/win32/popen.c
index 8810b8de0..c9ea00ffd 100644
--- a/win32/popen.c
+++ b/win32/popen.c
@@ -315,11 +315,17 @@ pid_t mingw_fork_compressor(int fd, const char *compressor, const char *mode)
315 int fd1; 315 int fd1;
316 pid_t pid; 316 pid_t pid;
317 317
318 if (find_applet_by_name(compressor) >= 0) 318 if (find_applet_by_name(compressor) < 0
319#if ENABLE_XZ || ENABLE_LZMA
320 /* xz and lzma applets don't support compression, try using
321 * an external program */
322 || (mode[0] == 'w' && index_in_strings("lzma\0xz\0", compressor) >= 0)
323#endif
324 )
325 cmd = xasprintf("%s -cf -", compressor);
326 else
319 cmd = xasprintf("%s --busybox %s -cf -", bb_busybox_exec_path, 327 cmd = xasprintf("%s --busybox %s -cf -", bb_busybox_exec_path,
320 compressor); 328 compressor);
321 else
322 cmd = xasprintf("%s -cf -", compressor);
323 329
324 if ((fd1 = mingw_popen_fd(cmd, mode, fd, &pid)) == -1) 330 if ((fd1 = mingw_popen_fd(cmd, mode, fd, &pid)) == -1)
325 bb_perror_msg_and_die("can't execute '%s'", compressor); 331 bb_perror_msg_and_die("can't execute '%s'", compressor);