--- loncom/cgi/decompress.pl	2003/11/17 23:12:12	1.5
+++ loncom/cgi/decompress.pl	2005/05/25 22:31:51	1.14
@@ -1,7 +1,8 @@
 #!/usr/bin/perl
 #
-# 
+#
 # Copyright Michigan State University Board of Trustees
+# $Id
 #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
 #
@@ -28,74 +29,74 @@
 # A CGI script that decompresses compressed files for mass uploading into
 # construction space
 ####
+use strict;
 use lib '/home/httpd/lib/perl';
-use LONCAPA::Configuration;
-use LONCAPA::loncgi();
-use Apache::lonnet;
+use LONCAPA::loncgi;
 
-if(! &LONCAPA::loncgi::check_cookie_and_load_env()){
+if(! &LONCAPA::loncgi::check_cookie_and_load_env()) {
     print "Content-type: text/html\n\n";
     print <<END;
-	 <html><body>NO COOKIE!</body></html>
+    <html><body>NO COOKIE!</body></html>
 END
 } else {
     print "Content-type: text/html\n\n";
-print "<html><head></head><body>";
-print "$ENV{'cgi.path'}";
-print "<br>$ENV{'cgi.file'}";
-print "<br>$ENV{'user.name'}<br>";
-$path = $ENV{'cgi.path'};
-$path =~ m|/{1}|;
-$path = $'; #' stupid emacs
-$path =~ m|/{1}|;
-$path = $';
-$username = $`; #Hmm, can't use the enviroment for this, if you are a co-author.. so we work around it.
-$path2 = "/home/$username/public_html/";
-$path2 .=$path;
-$back_path = "";
-	while($path =~ m|/|) {
-	    $back_path .= $`;
-	    $back_path .= "/";
-	    $path = $'; #' stupid emacs
-	}
-$path = "/home/$username/public_html";
-$path .= '/';
-$path .= $back_path;
-print "<br>path: $path<br>";
-print "back_path: $back_path <br>";
-print "path2: $path2 <br>";
-print "$path2<br>";
-if ( -r $path2){
-print "Good read access is allowed";
-print "<br><br>";
-$right = $ENV{'request.role'};
-$right =~ m|\.|;
-$right = $`;
-$filename = $ENV{'cgi.file'};
-if($right eq "ca" || $right eq "au") {
-chdir $path;
-if      ($filename =~ m|zip|) {
-	    system "unzip -qq $path2 &> /dev/null";
-	} elsif ($filename =~ m|tar.gz|) {
-	    system "tar -zxpvf $path2 &> /dev/null";
-	} elsif ($filename =~ m|tar.bz2|){
-	   system "tar -jxpvf $path2 &> /dev/null";
-	} elsif ($filename =~ m|bz2|){
-	    system "bunzip2 $path2 &> /dev/null";
-	} elsif ($filename =~ m|tgz|){
-	    system "tar -zxpvf $path2 &> /dev/null";
-	} elsif ($filename =~ m|gz|){
-	    system "gunzip $path2 &> /dev/null";
-	} elsif ($filename =~ m|tar|){
-	    system "tar -xpvf $path2 &> /dev/null";
-	}
-} 
-else {print "You don't have proper privledges";}
-}
-else { print "Read access not allowed!"; }
-print '<meta http-equiv="refresh" content="0; URL=';
-print "http://$ENV{'SERVER_NAME'}/~$username'}/$back_path"; print '" />';
-print '</body></html>';
-&Apache::lonnet::delenv(cgi.file);
-&Apache::lonnet::delenv(cgi.path);
+    my $file=$Apache::lonnet::env{'cgi.file'};
+    my $dir=$Apache::lonnet::env{'cgi.dir'}; 
+    if(! $file || ! $dir) {
+        print <<END;
+        <html><body>Bad Enviroment!</body></html>
+END
+    } else {
+        print <<END;
+	<html><body><b>Output of decompress:</b><br /><br />
+END
+        chdir $dir;
+        if ($file =~ m|zip|) {
+            open(OUTPUT, "unzip $file 2> /dev/null |");
+            while (<OUTPUT>) {
+                print "$_<br />";
+            }
+            close(OUTPUT);
+        } elsif ($file =~ m|tar.gz|) {
+            open(OUTPUT, "tar -zxpvf $file 2> /dev/null |");
+            while (<OUTPUT>) {
+                print "$_<br />";
+            }
+            close(OUTPUT);
+        } elsif ($file =~ m|tar.bz2|) {
+            open(OUTPUT, "tar -jxpvf $file 2> /dev/null |");
+            while (<OUTPUT>) {
+                print "$_<br />";
+            }
+            close(OUTPUT);
+        } elsif ($file =~ m|bz2|) {
+            open(OUTPUT, "bunzip2 $file 2> /dev/null |");
+            while (<OUTPUT>) {
+                print "$_<br />";
+            }
+            close(OUTPUT);
+        } elsif ($file =~ m|tgz|) {
+            open(OUTPUT, "tar -zxpvf $file 2> /dev/null |");
+            while (<OUTPUT>) {
+                print "$_<br />";
+            }
+            close(OUTPUT);
+        } elsif ($file =~ m|gz|) {
+            open(OUTPUT, "gunzip $file 2> /dev/null |");
+            while (<OUTPUT>) {
+                print "$_<br />";
+            }
+            close(OUTPUT);
+        } elsif ($file =~ m|tar|) {
+            open(OUTPUT, "tar -xpvf $file 2> /dev/null |");
+            while (<OUTPUT>) {
+                print "$_<br />";
+            }
+            close(OUTPUT);
+        } else {
+            print "There has been an error in determining the file type of $file, please check name";
+        }
+        print "<br /><b>Decompress complete!</b><br /></body></html>";
+    }
 }
+