--- loncom/interface/printout.pl 2006/12/07 22:12:19 1.116
+++ loncom/interface/printout.pl 2007/02/23 00:39:31 1.122
@@ -1,6 +1,7 @@
#!/usr/bin/perl
# CGI-script to run LaTeX, dvips, ps2ps, ps2pdf etc.
#
+# $Id: printout.pl,v 1.122 2007/02/23 00:39:31 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -127,8 +128,8 @@ sub send_error_mail {
foreach my $line (@$texfile) {
$message .= "$line\n";
}
- my (undef, %receivers) = &Apache::lonfeedback::decide_receiver(undef, 0,
- 1,1,1);
+ my (undef, %receivers) = &Apache::lonmsg::decide_receiver(undef, 0,
+ 1,1,1);
# print "
sending...section: $env{'request.course.sec'}";
foreach my $dest (keys %receivers) {
# print "
dest is $dest";
@@ -187,9 +188,9 @@ END
print "Return to last resource.
";
my $figfile = $texfile;
- $figfile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.dat/;
+ $figfile =~ s/^(.*_printout)_\d+_\d+_\d+\.tex/$1\.dat/;
my $duefile = $texfile;
- $duefile =~ s/^([^\.]+printout)[^t]+\.tex/$1\.due/;
+ $duefile =~ s/^(.*_printout)_\d+_\d+_\d+\.tex/$1\.due/;
#do we have figures?
# print "Figure file: $figfile\n";
if (-e $figfile) {
@@ -527,7 +528,7 @@ foreach $texfile (@texfile) {
\%prog_state, $dvi_file);
}
- &busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null",
+ &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
"for $status_statement dvips to repaginate",
\%prog_state, $new_name_file);
#
@@ -559,8 +560,7 @@ foreach $texfile (@texfile) {
if (-e $missfonts_file) {
#print("
Missing fonts file exists\n");
&create_missing_fonts($missfonts_file);
- unlink($missfonts_file, \%prog_state);
- &busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null",
+ &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
"for $status_statement dvips generated missing fonts",
\%prog_state, $new_name_file);
}
@@ -604,8 +604,10 @@ foreach $texfile (@texfile) {
$texps =~ s/\.tex/\.ps/;
my @garb = ($texaux,$texdvi,$texps);
# unlink @garb;
- unlink $duefile;
+ unlink($duefile);
print "Your PDF document";
+ unlink($missfonts_file);
+
}
if ($advanced_role) {
print "
";
@@ -627,6 +629,7 @@ foreach $texfile (@texfile) {
print "Your original LaTeX file ";
print "\n";
}
+
} else {
#LaTeX successfully parsed tex file
$name_file =~ s/\.tex/\.dvi/;
@@ -668,8 +671,7 @@ foreach $texfile (@texfile) {
if (-e $missfonts_file) {
#print("
Missing fonts file exists\n");
&create_missing_fonts($missfonts_file);
- unlink($missfonts_file, \%prog_state);
- &busy_wait_command("$comma $name_file 1>dev/null 2>/dev/null",
+ &busy_wait_command("$comma $name_file 1>/dev/null 2>/dev/null",
"for $status_statement dvips generated missing fonts",
\%prog_state, $new_name_file);
}
@@ -755,10 +757,12 @@ foreach $texfile (@texfile) {
$texps =~ s/\.tex/\.ps/;
my @garb = ($texlog,$texaux,$texdvi,$texps);
# unlink @garb;
- unlink $duefile;
+ unlink($duefile);
print "$link_text - click here to download pdf";
print "\n";
}
+ unlink($missfonts_file);
+
}
} else {
print "LaTeX file $texfile was not created successfully";
@@ -862,7 +866,7 @@ sub repaginate {
#
if ($line =~ /^%%Page:/) {
- my @pageinfo = split(/ /, $line);
+ my @pageinfo = split(/\s+/, $line);
if ($page_number < $pageinfo[1]) {
$page_number = $pageinfo[1];
} elsif ($pageinfo[2] ne 1) {
@@ -962,16 +966,19 @@ sub create_missing_fonts {
# Open and read in the font file..we'll read it into the array
# font_commands.
#
- my $font_handle = IO::File->new($fontfile);
+ open(my $font_handle, $fontfile);
my @font_commands = <$font_handle>;
-
+
+ # make the list contain each command only once
+ my %uniq;
+ @font_commands = map { $uniq{$_}++ == 0 ? $_ : () } @font_commands;
# Now process each command replacing the appropriate 8000's with
# 600's ensuring that font names with 8000's in them are not corrupted.
# and if the --mfmode is not ljfour we turn it into ljfour.
# Then we execute the command.
#
-
+
foreach my $command (@font_commands) {
#print("
Raw command: $command");
$command =~ s/ 8000/ 600/g; # dpi directives.
@@ -988,7 +995,7 @@ sub create_missing_fonts {
$command = join(" ", (@cmdarray));
#print("
Creating fonts via command: $command");
- &busy_wait_command("$command 1>dev/null 2>/dev/null",
+ &busy_wait_command("$command 1>/dev/null 2>/dev/null",
"Creating missing font",
$state, $command);