unicode: Read data files from inside the zip without extracting them.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2020-03-13 11:55:59 +01:00
parent dec6f0773b
commit eb7d7ef863

View file

@ -436,26 +436,28 @@ sub open_data_file($$)
my ($base, $name) = @_; my ($base, $name) = @_;
(my $dir = "data/$name") =~ s/\/[^\/]+$//; (my $dir = "data/$name") =~ s/\/[^\/]+$//;
local *FILE; local *FILE;
unless (-f "data/$name")
{ if ($base =~ /.*\/([^\/]+)\.zip$/)
system "mkdir", "-p", $dir;
if ($base =~ /.*\/([^\/]+\.zip)$/)
{ {
my $zip = $1; my $zip = $1;
unless (-f "data/$zip") unless (-f "data/$zip")
{ {
mkdir "data";
print "Fetching $base...\n"; print "Fetching $base...\n";
!system "wget", "-q", "-O", "data/$zip", "$base" or die "cannot fetch $base"; !system "wget", "-q", "-O", "data/$zip", $base or die "cannot fetch $base";
} }
!system "unzip", "-q", "-d", "data", "data/$zip", $name or die "cannot extract $name from $zip"; open FILE, "-|", "unzip", "-p", "data/$zip", $name or die "cannot extract $name from $zip";
} }
else else
{ {
unless (-f "data/$name")
{
system "mkdir", "-p", $dir;
print "Fetching $base/$name...\n"; print "Fetching $base/$name...\n";
!system "wget", "-q", "-O", "data/$name", "$base/$name" or die "cannot fetch $base/$name"; !system "wget", "-q", "-O", "data/$name", "$base/$name" or die "cannot fetch $base/$name";
} }
}
open FILE, "<data/$name" or die "cannot open data/$name"; open FILE, "<data/$name" or die "cannot open data/$name";
}
return *FILE; return *FILE;
} }