1 |
package mgaapplet_urpm; |
2 |
|
3 |
# taken from urpmi: |
4 |
|
5 |
use MDK::Common; |
6 |
use urpm::download; |
7 |
|
8 |
sub userdir_prefix { |
9 |
my ($_urpm) = @_; |
10 |
'/tmp/.urpmi-'; |
11 |
} |
12 |
sub userdir { |
13 |
my ($urpm) = @_; |
14 |
$< or return; |
15 |
|
16 |
my $dir = ($urpm->{urpmi_root} || '') . userdir_prefix($urpm) . $<; |
17 |
mkdir $dir, 0755; # try to create it |
18 |
|
19 |
-d $dir && ! -l $dir or $urpm->{fatal}(1, sprintf("fail to create directory %s", $dir)); |
20 |
-o $dir && -w $dir or $urpm->{fatal}(1, sprintf("invalid owner for directory %s", $dir)); |
21 |
|
22 |
mkdir "$dir/partial"; |
23 |
mkdir "$dir/rpms"; |
24 |
|
25 |
$dir; |
26 |
} |
27 |
sub ensure_valid_cachedir { |
28 |
my ($urpm) = @_; |
29 |
if (my $dir = userdir($urpm)) { |
30 |
$urpm->{cachedir} = $dir; |
31 |
} |
32 |
-w "$urpm->{cachedir}/partial" or $urpm->{fatal}(1, "Can not download packages into %s", "$urpm->{cachedir}/partial"); |
33 |
} |
34 |
sub valid_cachedir { |
35 |
my ($urpm) = @_; |
36 |
userdir($urpm) || $urpm->{cachedir}; |
37 |
} |
38 |
|
39 |
sub get_content { |
40 |
my ($urpm, $url) = @_; |
41 |
|
42 |
my $download_dir = valid_cachedir($urpm) . '/partial/'; |
43 |
my $file = $download_dir . basename($url); |
44 |
|
45 |
unlink $file; # prevent "partial file" errors |
46 |
eval { urpm::download::sync($urpm, undef, [ $url ], quiet => 1, dir => $download_dir) }; |
47 |
#sync_url($urpm, $url, dir => $download_dir, quiet => 1) or return; |
48 |
|
49 |
my @l = cat_($file); |
50 |
unlink $file; |
51 |
|
52 |
wantarray() ? @l : join('', @l); |
53 |
} |
54 |
|
55 |
1; |