--- loncom/cgi/decompress.pl 2003/11/19 15:07:25 1.8 +++ loncom/cgi/decompress.pl 2005/11/03 20:36:58 1.15 @@ -31,97 +31,56 @@ #### use strict; use lib '/home/httpd/lib/perl'; -use LONCAPA::loncgi (); -if(! &LONCAPA::loncgi::check_cookie_and_load_env()) -{ +use LONCAPA::loncgi; + +if(! &LONCAPA::loncgi::check_cookie_and_load_env()) { print "Content-type: text/html\n\n"; print <NO COOKIE! END -} -else -{ +} else { print "Content-type: text/html\n\n"; - if(! $ENV{'cgi.file'} || ! $ENV{'cgi.dir'}) - { - print <Bad Enviroment! END - } - else - { - print <Output of decompress:

+ } else { + print(<

Output of decompress:

END - chdir $ENV{'cgi.dir'}; - if ($ENV{'cgi.file'} =~ m|zip|) - { - open(OUTPUT, "unzip $ENV{'cgi.file'} 2> /dev/null |"); - while () - { - print "$_
"; - } - close(TRACE); - } - elsif ($ENV{'cgi.file'} =~ m|tar.gz|) - { - open(OUTPUT, "tar -zxpvf $ENV{'cgi.file'} 2> /dev/null |"); - while () - { - print "$_
"; - } - close(TRACE); - } - elsif ($ENV{'cgi.file'} =~ m|tar.bz2|) - { - open(OUTPUT, "tar -jxpvf $ENV{'cgi.file'} 2> /dev/null |"); - while () - { - print "$_
"; - } - close(TRACE); - } - elsif ($ENV{'cgi.file'} =~ m|bz2|) - { - open(OUTPUT, "bunzip2 $ENV{'cgi.file'} 2> /dev/null |"); - while () - { - print "$_
"; - } - close(TRACE); - } - elsif ($ENV{'cgi.file'} =~ m|tgz|) - { - open(OUTPUT, "tar -zxpvf $ENV{'cgi.file'} 2> /dev/null |"); - while () - { - print "$_
"; - } - close(TRACE); - } - elsif ($ENV{'cgi.file'} =~ m|gz|) - { - open(OUTPUT, "gunzip $ENV{'cgi.file'} 2> /dev/null |"); - while () - { - print "$_
"; - } - close(TRACE); - } - elsif ($ENV{'cgi.file'} =~ m|tar|) - { - open(OUTPUT, "tar -xpvf $ENV{'cgi.file'} 2> /dev/null |"); - while () - { - print "$_
"; - } - close(TRACE); - } - else - { - print "There has been an error in determining the file type of $ENV{'cgi.file'}, please check name"; - } - print "
Decompress complete!
"; + 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"); + } + if (@cmd) { + undef($!); + undef($@); + open(OUTPUT,"-|", @cmd, $file); + while () { print "$_
"; } + close(OUTPUT); + print("

Decompress complete.

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

An error occurred

$!

$@

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