mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-23 12:56:51 +03:00
fc9c24c6f9
Currently, deba and debd VFS contains fake directories a-la "14:21 DEBIAN", "14:21 CONTENTS". Items from DEBIAN directory (conffiles, md5sums, ...) not accessible. The patch fixes this issues. Thanks to Serhiy Storchaka for the patch.
108 lines
3.0 KiB
Plaintext
108 lines
3.0 KiB
Plaintext
#! @PERL@
|
|
#
|
|
# 1999 (c) Piotr Roszatycki <dexter@debian.org>
|
|
# This software is under GNU license
|
|
# last modification: 1999-12-08
|
|
#
|
|
# deba
|
|
|
|
sub quote {
|
|
$_ = shift(@_);
|
|
s/([^\w\/.+-])/\\$1/g;
|
|
return($_);
|
|
}
|
|
|
|
sub list
|
|
{
|
|
my($qarchive)=@_;
|
|
$qarchive = quote($qarchive);
|
|
chop($date=`LC_ALL=C date "+%m-%d-%Y %H:%M"`);
|
|
chop($info_size=`apt-cache show $qarchive | wc -c`);
|
|
$install_size=length($pressinstall);
|
|
$upgrade_size=length($pressupgrade);
|
|
|
|
print "-r--r--r-- 1 root root $info_size $date INFO\n";
|
|
|
|
chop($debd = `dpkg -s $qarchive | grep -i ^Version | sed 's/^version: //i'`);
|
|
chop($deba = `apt-cache show $qarchive | grep -i ^Version | sed 's/^version: //i'`);
|
|
if( ! $debd ) {
|
|
print "-r-xr--r-- 1 root root $install_size $date INSTALL\n";
|
|
} elsif( $debd ne $deba ) {
|
|
print "-r-xr--r-- 1 root root $upgrade_size $date UPGRADE\n";
|
|
}
|
|
}
|
|
|
|
sub copyout
|
|
{
|
|
my($archive,$filename,$destfile)=@_;
|
|
my $qarchive = quote($archive);
|
|
my $qdestfile = quote($destfile);
|
|
if($filename eq "INFO") {
|
|
system("apt-cache show $qarchive > $qdestfile");
|
|
} elsif($filename eq "INSTALL") {
|
|
if ( open(FILEOUT, "> $destfile") ) {
|
|
print FILEOUT $pressinstall;
|
|
close FILEOUT;
|
|
system("chmod a+x $qdestfile");
|
|
}
|
|
} elsif($filename eq "UPGRADE") {
|
|
if ( open(FILEOUT, ">, $destfile") ) {
|
|
print FILEOUT $pressupgrade;
|
|
close FILEOUT;
|
|
system("chmod a+x $qdestfile");
|
|
}
|
|
} else {
|
|
die "extfs: $filename: No such file or directory\n";
|
|
}
|
|
}
|
|
|
|
sub run
|
|
{
|
|
my($archive,$filename)=@_;
|
|
my $qarchive = quote($archive);
|
|
if($filename eq "INSTALL") {
|
|
system("apt-get install $qarchive");
|
|
} elsif($filename eq "UPGRADE") {
|
|
system("apt-get install $qarchive");
|
|
} else {
|
|
die "extfs: $filename: Permission denied\n";
|
|
}
|
|
}
|
|
|
|
$pressinstall=<<EOInstall;
|
|
|
|
WARNING
|
|
Don\'t use this method if you are not willing to install this package...
|
|
|
|
This is not a real file. It is a way to install the package you are browsing.
|
|
|
|
To install this package go back to the panel and press Enter on this file.
|
|
|
|
EOInstall
|
|
|
|
$pressupgrade=<<EOInstall;
|
|
|
|
WARNING
|
|
Don\'t use this method if you are not willing to upgrade this package...
|
|
|
|
This is not a real file. It is a way to upgrade the package you are browsing.
|
|
|
|
To upgrade this package go back to the panel and press Enter on this file.
|
|
|
|
EOInstall
|
|
|
|
|
|
umask 077;
|
|
|
|
chop($name = `if [ -f "$ARGV[1]" ]; then cat $ARGV[1]; else echo $ARGV[1]; fi`);
|
|
$name =~ s%.*/([0-9a-z.-]*)_.*%$1%;
|
|
|
|
exit 1 unless $name;
|
|
|
|
if($ARGV[0] eq "list") { &list($name); exit 0; }
|
|
elsif($ARGV[0] eq "copyout") { ©out($name,$ARGV[2],$ARGV[3]); exit 0; }
|
|
elsif($ARGV[0] eq "run") { &run($name,$ARGV[2]); exit 0; }
|
|
|
|
exit 1;
|
|
|