diff --git a/filemin/extract.cgi b/filemin/extract.cgi index 82560ae25..b9c95a3cc 100755 --- a/filemin/extract.cgi +++ b/filemin/extract.cgi @@ -16,7 +16,9 @@ elsif ($archive_type =~ /x-tar|\/gzip|x-xz|x-compressed-tar/) { $cmd = "tar xfp ".quotemeta("$cwd/$in{'file'}"). " -C ".quotemeta($cwd); } -elsif ($archive_type =~ /x-7z/) { +elsif ($archive_type =~ /x-7z/ || + $archive_type =~ /x-raw-disk-image/ || + $archive_type =~ /x-cd-image/) { $cmd = "7z x ".quotemeta("$cwd/$in{'file'}")." -o" .quotemeta($cwd); } elsif ($archive_type =~ /\/zip/) { diff --git a/filemin/filemin-lib.pl b/filemin/filemin-lib.pl index 0808c1fe9..b2169fb28 100644 --- a/filemin/filemin-lib.pl +++ b/filemin/filemin-lib.pl @@ -371,7 +371,11 @@ sub print_interface { $actions = "$actions$edit_icon"; } if ((index($type, "application-zip") != -1 && has_command('unzip')) || - (index($type, "application-x-7z-compressed") != -1 && has_command('7z')) || + ( + ( index($type, "application-x-7z-compressed") != -1 || + index($type, "x-raw-disk-image") != -1 || + index($type, "x-cd-image") != -1 + ) && has_command('7z')) || ((index($type, "application-x-rar") != -1 || index($type, "application-vnd.rar") != -1) && has_command('unrar')) || (index($type, "application-x-rpm") != -1 && has_command('rpm2cpio') && has_command('cpio')) || (index($type, "application-x-deb") != -1 && has_command('dpkg')) @@ -518,7 +522,9 @@ foreach my $fref (@{$files_to_extract}) { } else { $status = system("$xz_cmd -d -f -k " . quotemeta("$cwd/$name")); } - } elsif ($archive_type =~ /x-7z/) { + } elsif ($archive_type =~ /x-7z/ || + $archive_type =~ /x-raw-disk-image/ || + $archive_type =~ /x-cd-image/) { my $x7z_cmd = has_command('7z'); if (!$x7z_cmd) { push(@errors, &text('extract_cmd_not_avail', "" . &html_escape($name) . "", '7z'));