--- loncom/cgi/decompress.pl 2003/11/19 14:58:14 1.7 +++ loncom/cgi/decompress.pl 2005/11/03 20:36:58 1.15 @@ -2,7 +2,7 @@ # # # Copyright Michigan State University Board of Trustees -# +# $Id # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # @@ -29,109 +29,58 @@ # A CGI script that decompresses compressed files for mass uploading into # construction space #### - -#Things still todo, -#It has been tabinated -#Now uses strict! with added feature of making everything very strict! -#about 50% through rewriting things to use split and join -#still have a lot of debugging statements that will go away after I get it to work ok(along with all the
's) -#still have to rewrite the refresh tag to work right, its broken -#the whole thing is broken right now -#will rename the variables and reorder most of the script to make it more sane -#improve the general readability of the whole thing, because unlike C everyone gets to look at it, so it has to be readable 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(""); + } } }