--- loncom/interface/printout.pl 2008/01/28 11:24:48 1.129
+++ loncom/interface/printout.pl 2008/03/11 01:48:57 1.132
@@ -1,7 +1,7 @@
#!/usr/bin/perl
# CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc.
#
-# $Id: printout.pl,v 1.129 2008/01/28 11:24:48 foxr Exp $
+# $Id: printout.pl,v 1.132 2008/03/11 01:48:57 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -43,6 +43,7 @@ use LONCAPA::Configuration;
use strict;
+my $busy_wait_timeout = 30;
# Determine if a user is operating as a student for this course/domain.
#Parameters:
@@ -205,7 +206,7 @@ $env{'request.noversionuri'} = '/cgi-bin
close $temporary_file;
my $noteps;
my %prog_state;
- if ($advanced_role) { %prog_state=&Apache::lonhtmlcommon::Create_PrgWin('','Coverting Images to EPS','Picture Conversion Status',$#content_of_file,'inline','80'); }
+ if ($advanced_role) { %prog_state=&Apache::lonhtmlcommon::Create_PrgWin('','Converting Images to EPS','Picture Conversion Status',$#content_of_file,'inline','80'); }
print('
');
foreach my $not_eps (@content_of_file) {
chomp($not_eps);
@@ -376,17 +377,17 @@ foreach $texfile (@texfile) {
my $name_file = $2;
my $path_file = $1.'/';
chdir $path_file;
- my $dvi_file= $name_file; $dvi_file =~ s/\.tex/$name_range\.dvi/;
+ my $dvi_file= $name_file; $dvi_file =~ s/\.tex$/\.dvi/;
&busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
"for $status_statement now LaTeXing file",
- \%prog_state,$dvi_file, 10);
+ \%prog_state,$dvi_file, $busy_wait_timeout);
if ($tableofcontents eq 'yes') {
&busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
"for $status_statement First LaTeX of file for table of contents",
- \%prog_state,$dvi_file, 10);
+ \%prog_state,$dvi_file, $busy_wait_timeout);
&busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
"for $status_statement Second LaTeX of file for table of contents",
- \%prog_state,$dvi_file,10);
+ \%prog_state,$dvi_file,$busy_wait_timeout);
} #to create table of contents
my $idxname=$name_file;
$idxname=~s/\.tex$/\.idx/;
@@ -396,7 +397,7 @@ foreach $texfile (@texfile) {
\%prog_state,$idxname);
&busy_wait_command("latex $name_file 1>/dev/null 2>/dev/null",
"for $status_statement now LaTeXing file for index section",
- \%prog_state,$dvi_file,10);
+ \%prog_state,$dvi_file, $busy_wait_timeout);
} #to create index
#Do we have a latex error in the log file?
my $logfilename = $texfile; $logfilename =~ s/\.tex$/\.log/;
@@ -448,7 +449,7 @@ foreach $texfile (@texfile) {
$logfilename=~s{^\Q$perlvar{'lonPrtDir'}\E}{/prtspool};
print "Your log file ";
print "\n";
- #link tooriginal LaTeX file (included according Michael Hamlin desire)
+ #link to original LaTeX file
my $tex_temporary_file=IO::File->new($texfile) || die "Couldn't open tex file $texfile for reading: $!\n";
my @tex_content_of_file = <$tex_temporary_file>;
close $tex_temporary_file;
@@ -512,14 +513,14 @@ foreach $texfile (@texfile) {
#
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement first latex to repaginate",
- \%prog_state, $name_file,10);
+ \%prog_state, $name_file,$busy_wait_timeout);
if ($tableofcontents eq 'yes') {
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement second latex to repaginate",
- \%prog_state, $name_file,10);
+ \%prog_state, $name_file,$busy_wait_timeout);
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement third latex to repaginate",
- \%prog_state, $name_file,10);
+ \%prog_state, $name_file,$busy_wait_timeout);
}
if ($tableofindex eq 'yes') {
my $idxname = $latex_file;
@@ -529,7 +530,7 @@ foreach $texfile (@texfile) {
\%prog_state, $idxname);
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement now Recreting index (latex)",
- \%prog_state, $dvi_file,10);
+ \%prog_state, $dvi_file,$busy_wait_timeout);
}
&busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
@@ -619,7 +620,7 @@ foreach $texfile (@texfile) {
$logfilename=~s{^\Q$perlvar{'lonPrtDir'}\E}{/prtspool};
print "Your log file ";
print "\n";
- #link tooriginal LaTeX file (included according Michael Hamlin desire)
+ #link to original LaTeX file
my $tex_temporary_file=IO::File->new($texfile) || die "Couldn't open tex file $texfile for reading: $!\n";
my @tex_content_of_file = <$tex_temporary_file>;
close $tex_temporary_file;
@@ -685,14 +686,14 @@ foreach $texfile (@texfile) {
&repaginate($new_name_file, $latex_file, $numberofcolumns);
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement first latex to repaginate",
- \%prog_state, $name_file,10);
+ \%prog_state, $name_file, $busy_wait_timeout);
if ($tableofcontents eq 'yes') {
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement second latex to repaginate",
- \%prog_state, $name_file,10);
+ \%prog_state, $name_file, $busy_wait_timeout);
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement third latex to repaginate",
- \%prog_state, $name_file,10);
+ \%prog_state, $name_file, $busy_wait_timeout);
}
if ($tableofindex eq 'yes') {
my $idxname = $latex_file;
@@ -702,7 +703,7 @@ foreach $texfile (@texfile) {
\%prog_state, $idxname);
&busy_wait_command("latex $latex_file 1>/dev/null 2>/dev/null",
"for $status_statement now Recreting index (latex)",
- \%prog_state, $dvi_file,10);
+ \%prog_state, $dvi_file, $busy_wait_timeout);
}
&busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
"for $status_statement dvips to repaginate",
@@ -823,6 +824,13 @@ sub busy_wait_command {
if ($size == $last_size) {
$unchanged_time++;
if ($timeout && ($unchanged_time > $timeout)) {
+ print "
Executing $command, the output file $output_file did not grow\n"; + print "after $timeout seconds. This may indicate $command\n"; + print "is in an infinite loop.\n"; + print "See if printing fewer copies helps. Please contact LON-CAPA\n"; + print "support about this in any event."; + print "
"; kill(9, $pid); # Reaper will do the rest...I hope there's errors in the log. } } else {