version 1.5, 2001/12/20 22:36:15
|
version 1.17, 2020/02/19 18:53:17
|
Line 24
|
Line 24
|
# |
# |
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
|
|
use strict; |
use strict; |
my $output; |
|
|
$|=1; |
|
|
my $tmpdir = '/home/httpd/perl/tmp/'; |
my $tmpdir = '/home/httpd/perl/tmp/'; |
my $filename = $tmpdir . $ENV{'QUERY_STRING'}; |
my %data; |
|
foreach (split/&/,$ENV{'QUERY_STRING'}) { |
|
my ($name,$value)=split/=/; |
|
$data{$name}=$value; |
|
} |
|
my $filename = $data{'file'}; |
|
# unescape filename |
|
$filename =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
|
die if ($filename =~ /\// || $filename !~ /_plot.data$/); |
|
$filename = $tmpdir . $filename; |
|
die "$data{'file'} does not exist\n" if (! -e $filename); |
|
|
|
my $output = $data{'output'}; |
|
if ($output eq '') { |
|
$output = (split('\.',$0))[-1]; |
|
} |
|
|
$output =<<"END"; |
if ($output eq 'gif' || $output eq 'png') { |
Content-type: text/html |
if (open(my $plot, "export LANG='en_US.UTF-8'; gnuplot $filename |")) { |
|
|
|
print <<"END"; |
|
Content-type: image/$output |
|
|
END |
END |
|
while (my $line = <$plot>) { |
|
print($line); |
|
} |
|
close($plot); |
|
} else { |
|
die "failed to open pipe to run gnuplot\n"; |
|
} |
|
|
if (0) { |
} elsif ($output eq 'eps') { |
$output =<<"END"; |
print <<"END"; |
Content-type: image/gif |
Content-type: text/html |
|
|
|
<html><head><title>eps plot creation</title></head> |
|
<body> |
|
<h2>Creating eps plot</h2> |
|
|
END |
END |
$output .= `gnuplot $filename`; |
if (! system ("export LANG='en_US.UTF-8'; gnuplot $filename")) { |
|
print "<h2>An error occurred.</h2>\n". |
|
"I am not going to tell you about it as I have not bothered ". |
|
"to figure out how to get you the error text.\n"; |
|
} else { |
|
print "<h2>EPS file generated successfully.</h2>\n"; |
|
} |
|
print "</body></html>\n"; |
|
} else { |
|
die "output $output is not a recognized value or has no value\n"; |
} |
} |
print $output; |
|
|
|
|
|
|
|