[LON-CAPA-cvs] cvs: loncom /cgi decompress.pl
albertel
lon-capa-cvs@mail.lon-capa.org
Thu, 03 Nov 2005 20:36:58 -0000
albertel Thu Nov 3 15:36:58 2005 EDT
Modified files:
/loncom/cgi decompress.pl
Log:
- shorter and safer
- BUG#4439, filneams with spaces weren't working
Index: loncom/cgi/decompress.pl
diff -u loncom/cgi/decompress.pl:1.14 loncom/cgi/decompress.pl:1.15
--- loncom/cgi/decompress.pl:1.14 Wed May 25 18:31:51 2005
+++ loncom/cgi/decompress.pl Thu Nov 3 15:36:58 2005
@@ -43,60 +43,44 @@
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>");
+ }
}
}