--- 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 <Bad Enviroment! END } else { - print <Output of decompress:

+ print(<

Output of decompress:

END - chdir $dir; - if ($file =~ m|zip|) { - open(OUTPUT, "unzip $file 2> /dev/null |"); - while () { - print "$_
"; - } - close(OUTPUT); - } elsif ($file =~ m|tar.gz|) { - open(OUTPUT, "tar -zxpvf $file 2> /dev/null |"); - while () { - print "$_
"; - } - close(OUTPUT); - } elsif ($file =~ m|tar.bz2|) { - open(OUTPUT, "tar -jxpvf $file 2> /dev/null |"); - while () { - print "$_
"; - } - close(OUTPUT); - } elsif ($file =~ m|bz2|) { - open(OUTPUT, "bunzip2 $file 2> /dev/null |"); - while () { - print "$_
"; - } - close(OUTPUT); - } elsif ($file =~ m|tgz|) { - open(OUTPUT, "tar -zxpvf $file 2> /dev/null |"); - while () { - print "$_
"; - } - close(OUTPUT); - } elsif ($file =~ m|gz|) { - open(OUTPUT, "gunzip $file 2> /dev/null |"); - while () { - print "$_
"; - } - close(OUTPUT); - } elsif ($file =~ m|tar|) { - open(OUTPUT, "tar -xpvf $file 2> /dev/null |"); - while () { - print "$_
"; - } - 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 "
Decompress complete!
"; + if (@cmd) { + undef($!); + undef($@); + open(OUTPUT,"-|", @cmd, $file); + while () { print "$_
"; } + close(OUTPUT); + print("

Decompress complete.

"); + if ($! || $@) { + print("

An error occurred

$!

$@

"); + } + print(""); + } } }