[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 ($! || $@) {