--- loncom/cgi/decompress.pl 2004/06/09 19:04:47 1.12 +++ loncom/cgi/decompress.pl 2005/11/03 20:36:58 1.15 @@ -31,8 +31,8 @@ #### use strict; use lib '/home/httpd/lib/perl'; -use LONCAPA::loncgi (); -my %origENV=%ENV; +use LONCAPA::loncgi; + if(! &LONCAPA::loncgi::check_cookie_and_load_env()) { print "Content-type: text/html\n\n"; print <<END; @@ -40,64 +40,47 @@ if(! &LONCAPA::loncgi::check_cookie_and_ END } else { print "Content-type: text/html\n\n"; - my $file=$ENV{'cgi.file'}; - my $dir=$ENV{'cgi.dir'}; - %ENV=%origENV; + my $file=$Apache::lonnet::env{'cgi.file'}; + my $dir=$Apache::lonnet::env{'cgi.dir'}; if(! $file || ! $dir) { - print <<END; + print(<<END); <html><body>Bad Enviroment!</body></html> END } else { - print <<END; - <html><body><b>Output of decompress:</b><br /><br /> + print(<<END); + <html><body><p><b>Output of decompress:</b></p> 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); + chdir($dir); + my @cmd; + if ($file =~ m|\.zip$|) { + @cmd = ("/usr/bin/unzip","-o"); + } elsif ($file =~ m|\.tar\.gz$|) { + @cmd = ("/usr/bin/tar","-zxpvf"); + } elsif ($file =~ m|\.tar\.bz2$|) { + @cmd = ("/usr/bin/tar","-jxpvf"); + } elsif ($file =~ m|\.bz2$|) { + @cmd = ("/usr/bin/bunzip2"); + } elsif ($file =~ m|\.tgz$|) { + @cmd = ("/usr/bin/tar","-zxpvf"); + } elsif ($file =~ m|\.gz$|) { + @cmd = ("/usr/bin/gunzip"); + } elsif ($file =~ m|\.tar$|) { + @cmd = ("/usr/bin/tar","-xpvf"); } else { - print "There has been an error in determining the file type of $file, please check name"; + 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>"; + if (@cmd) { + undef($!); + undef($@); + open(OUTPUT,"-|", @cmd, $file); + while (<OUTPUT>) { print "$_<br />"; } + close(OUTPUT); + print("<p><b>Decompress complete.</b></p>"); + if ($! || $@) { + print("<p><b>An error occurred</b></p><p>$!</p><p>$@</p>"); + } + print("</body></html>"); + } } }