[LON-CAPA-cvs] cvs: loncom /cgi decompress.pl
albertel
lon-capa-cvs@mail.lon-capa.org
Fri, 05 May 2006 21:07:19 -0000
albertel Fri May 5 17:07:19 2006 EDT
Modified files:
/loncom/cgi decompress.pl
Log:
- look for the binaries instead of assuming we know where they are
Index: loncom/cgi/decompress.pl
diff -u loncom/cgi/decompress.pl:1.15 loncom/cgi/decompress.pl:1.16
--- loncom/cgi/decompress.pl:1.15 Thu Nov 3 15:36:58 2005
+++ loncom/cgi/decompress.pl Fri May 5 17:07:19 2006
@@ -33,9 +33,19 @@
use lib '/home/httpd/lib/perl';
use LONCAPA::loncgi;
-if(! &LONCAPA::loncgi::check_cookie_and_load_env()) {
- print "Content-type: text/html\n\n";
- print <<END;
+my %location_of;
+foreach my $program ('tar','gunzip','bunzip2','unzip') {
+ foreach my $dir ('/bin/','/usr/bin/','/usr/local/bin/','/sbin/',
+ '/usr/sbin/') {
+ if (-x $dir.$program) {
+ $location_of{$program} = $dir.$program;
+ }
+ }
+}
+
+if (!&LONCAPA::loncgi::check_cookie_and_load_env()) {
+ print("Content-type: text/html\n\n");
+ print(<<END);
<html><body>NO COOKIE!</body></html>
END
} else {
@@ -53,19 +63,18 @@
chdir($dir);
my @cmd;
if ($file =~ m|\.zip$|) {
- @cmd = ("/usr/bin/unzip","-o");
- } elsif ($file =~ m|\.tar\.gz$|) {
- @cmd = ("/usr/bin/tar","-zxpvf");
+ @cmd = ($location_of{'unzip'},"-o");
+ } elsif ($file =~ m|\.tar\.gz$|
+ || $file =~ m|\.tgz$| ) {
+ @cmd = ($location_of{'tar'},"-zxpvf");
} elsif ($file =~ m|\.tar\.bz2$|) {
- @cmd = ("/usr/bin/tar","-jxpvf");
+ @cmd = ($location_of{'tar'},"-jxpvf");
} elsif ($file =~ m|\.bz2$|) {
- @cmd = ("/usr/bin/bunzip2");
- } elsif ($file =~ m|\.tgz$|) {
- @cmd = ("/usr/bin/tar","-zxpvf");
+ @cmd = ($location_of{'bunzip2'});
} elsif ($file =~ m|\.gz$|) {
- @cmd = ("/usr/bin/gunzip");
+ @cmd = ($location_of{'gunzip'});
} elsif ($file =~ m|\.tar$|) {
- @cmd = ("/usr/bin/tar","-xpvf");
+ @cmd = ($location_of{'tar'},"-xpvf");
} else {
print("There has been an error in determining the file type of $file, please check name");
}
@@ -73,7 +82,7 @@
undef($!);
undef($@);
open(OUTPUT,"-|", @cmd, $file);
- while (<OUTPUT>) { print "$_<br />"; }
+ while (my $line = <OUTPUT>) { print("$line<br />"); }
close(OUTPUT);
print("<p><b>Decompress complete.</b></p>");
if ($! || $@) {