diff options
Diffstat (limited to 'src/vfs/extfs/helpers/deba.in')
-rw-r--r-- | src/vfs/extfs/helpers/deba.in | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/vfs/extfs/helpers/deba.in b/src/vfs/extfs/helpers/deba.in new file mode 100644 index 0000000..3d1a552 --- /dev/null +++ b/src/vfs/extfs/helpers/deba.in @@ -0,0 +1,107 @@ +#! @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; + |