version 1.38, 2008/08/19 09:46:36
|
version 1.43, 2018/10/29 02:57:30
|
Line 156 my $wwwid=getpwnam('www');
|
Line 156 my $wwwid=getpwnam('www');
|
if ($wwwid!=$<) { |
if ($wwwid!=$<) { |
my $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; |
my $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; |
my $subj="LON: User ID mismatch"; |
my $subj="LON: User ID mismatch"; |
system("echo 'User ID mismatch. lonmaxima must be run as user www.' |\ |
system("echo 'User ID mismatch. lonmaxima must be run as user www.' |". |
mailto $emailto -s '$subj' > /dev/null"); |
" mailto -s '$subj' $emailto > /dev/null"); |
exit 1; |
exit 1; |
} |
} |
|
|
Line 259 sub make_new_child {
|
Line 259 sub make_new_child {
|
|
|
&logthis('New process started'); |
&logthis('New process started'); |
|
|
my $command=Expect->spawn('maxima'); |
my $command = new Expect(); |
|
$command->log_stdout(0); |
|
#$command->log_file("$execdir/logs/lonmaxima.session.log"); |
|
$command->spawn('maxima'); |
|
&getmaximaoutput($command, 2); # wait for maxima to finish initialization |
# soft/hard_close can take awhile and we really |
# soft/hard_close can take awhile and we really |
# don't care we just want it gone |
# don't care we just want it gone |
$SIG{INT} = sub { |
$SIG{INT} = sub { |
Line 268 sub make_new_child {
|
Line 272 sub make_new_child {
|
exit; |
exit; |
}; |
}; |
|
|
$command->log_stdout(0); |
|
#$command->log_file("$execdir/logs/lonmaxima.session.log"); |
|
|
|
for (my $i=0; $i < $MAX_CLIENTS_PER_CHILD; $i++) { |
for (my $i=0; $i < $MAX_CLIENTS_PER_CHILD; $i++) { |
&status('Accepting connections'); |
&status('Accepting connections'); |
my $client = $server->accept() or last; |
my $client = $server->accept() or last; |
&sync($command); |
&sync($command); |
print $command ("display2d:false;kill(all);reset();\n"); |
print $command ("display2d:false;simp:true;kill(all);\n"); |
&getmaximaoutput($command,2); |
&getmaximaoutput($command,2); |
&sync($command); |
&sync($command); |
my $syntaxerr = 0; |
my $syntaxerr = 0; |
Line 335 sub getmaximaoutput {
|
Line 337 sub getmaximaoutput {
|
if ($numcheck eq 2) { |
if ($numcheck eq 2) { |
# command was the killall so should get a full reset on |
# command was the killall so should get a full reset on |
# command numbers |
# command numbers |
$regexp = '(\(\%i(1)\)|Incorrect syntax\:)'; |
$regexp = '(\(\%i(1)\)|[Ii]ncorrect syntax\:)'; |
} elsif ($command->match() =~ /\(\%i(\d+)\)/) { |
} elsif ($command->match() =~ /\(\%i(\d+)\)/) { |
my $nextmatch = $1+1; |
my $nextmatch = $1+1; |
$regexp = '(\(\%i'.$nextmatch.'\)|Incorrect syntax\:)'; |
$regexp = '(\(\%i'.$nextmatch.'\)|[Ii]ncorrect syntax\:)'; |
} |
} |
} |
} |
my $timeout = 20; |
my $timeout = 20; |
my (undef,$error,$matched,$output) = |
my (undef,$error,$matched,$output) = |
$command->expect($timeout, -re => $regexp); |
$command->expect($timeout, -re => $regexp); |
|
|
if ($numcheck && $matched eq 'Incorrect syntax:') { |
if ($numcheck && lc($matched) eq 'incorrect syntax:') { |
$syntaxerr = 1; |
$syntaxerr = 1; |
if (wantarray) { |
if (wantarray) { |
return ($matched,$syntaxerr); |
return ($matched,$syntaxerr); |
Line 356 sub getmaximaoutput {
|
Line 358 sub getmaximaoutput {
|
if ($error) { |
if ($error) { |
return 'Error: '.$error; |
return 'Error: '.$error; |
} |
} |
$output =~ s/\r+//g; # Remove Windows-style linebreaks |
$output =~ s/\r+//gs; # Remove Windows-style linebreaks |
my $foundoutput=0; |
my $foundoutput=0; |
my $found_label=0; |
my $found_label=0; |
my $realoutput=''; |
my $realoutput=''; |
foreach my $line (split(/\n/,$output)) { |
foreach my $line (split(/\n/,$output)) { |
if ($line=~/\;/) { $foundoutput=1; next; } |
if ($line=~/\;/) { $foundoutput=1; next; } |
if (!$foundoutput) { next; } |
if (!$foundoutput) { next; } |
if ($line=~/^Incorrect syntax:/) { $syntaxerr = 1; next; } |
if ($line=~/^[Ii]ncorrect syntax:/) { $syntaxerr = 1; next; } |
if ($line=~ /^(\(\%o\d+\))(.+)$/){ |
if ($line=~ /^(\(\%o\d+\))(.+)$/){ |
my $label = $1; |
my $label = $1; |
$line = $2; |
$line = $2; |