aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/LXRng/Web.pm15
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/LXRng/Web.pm b/lib/LXRng/Web.pm
index d7f9be4..63ca5b6 100644
--- a/lib/LXRng/Web.pm
+++ b/lib/LXRng/Web.pm
@@ -742,18 +742,20 @@ sub generate_pdf {
'lines' => \@lines},
$texh)
or die $template->error();
- my $pid = fork();
- die $! unless defined($pid);
+
+ my $pdflatex;
+ my $pid = open($pdflatex, "-|");
+ die $! unless defined $pid;
+
if ($pid == 0) {
- close(STDOUT);
- open(STDOUT, "> $texname.output");
close(STDERR);
open(STDERR, ">&STDOUT");
chdir($tempdir);
exec("pdflatex", "$texname");
kill(9, $$);
}
- waitpid($pid, 0);
+ my @err = <$pdflatex>;
+ close($pdflatex);
my $pdfname = $texname;
$pdfname =~ s/[.]tex$/.pdf/;
if (-e $pdfname) {
@@ -769,9 +771,6 @@ sub generate_pdf {
close($pdfh);
}
elsif (-e "$texname.output") {
- open(my $errh, "< $texname.output") or die $!;
- my @err = <$errh>;
- close($errh);
@err = splice(@err, -15) if @err > 15;
die "PDF generation failed: ".join("\n", @err);
}