Diff for /loncom/lonmaxima between versions 1.26 and 1.27

version 1.26, 2007/04/19 17:29:11 version 1.27, 2007/04/26 02:46:39
Line 247  sub make_new_child { Line 247  sub make_new_child {
   
         my $command=Expect->spawn('maxima');          my $command=Expect->spawn('maxima');
         $command->log_stdout(0);          $command->log_stdout(0);
    #$command->log_file("$execdir/logs/lonmaxima.session.log");
         &getmaximaoutput($command);          &getmaximaoutput($command);
   
         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;
             print $command "kill(all);\n";              print $command "kill(all);\n";
     &getmaximaoutput($command);      &getmaximaoutput($command,2);
             &sync($command);              &sync($command);
             my $syntaxerr = 0;              my $syntaxerr = 0;
             while (my $cmd=<$client>) {              while (my $cmd=<$client>) {
Line 307  sub getmaximaoutput { Line 307  sub getmaximaoutput {
     my $regexp = '\(\%i\d+\)';      my $regexp = '\(\%i\d+\)';
     my $syntaxerr=0;      my $syntaxerr=0;
     if ($numcheck) {      if ($numcheck) {
         if ($command->match() =~ /\(\%i(\d+)\)/) {          if ($numcheck eq 2) {
       # command was the killall so should get a full reset on
       # command numbers
       $regexp = '(\(\%i(1)\)|Incorrect syntax\:)';
    } elsif ($command->match() =~ /\(\%i(\d+)\)/) {
             my $nextmatch = $1+1;              my $nextmatch = $1+1;
             $regexp = '(\(\%i'.$nextmatch.'\)|Incorrect syntax\:)';              $regexp = '(\(\%i'.$nextmatch.'\)|Incorrect syntax\:)';
         }          }
     }      }
     my $timeout = 20;      my $timeout = 20;
     my (undef,$error,$matched,$output)=$command->expect($timeout, -re => $regexp);      my (undef,$error,$matched,$output) =
     if ($numcheck) {   $command->expect($timeout, -re => $regexp);
         if ($matched eq 'Incorrect syntax:') {  
             $syntaxerr = 1;      if ($numcheck && $matched eq 'Incorrect syntax:') {
             if (wantarray) {   $syntaxerr = 1;
                 return ($matched,$syntaxerr);   if (wantarray) {
             } else {      return ($matched,$syntaxerr);
                 return $matched;   } else {
             }      return $matched;
         }   }
     }      }
     if ($error) {      if ($error) {
         if (wantarray) {   return 'Error: '.$error;
             return ('Error: '.$error);  
         } else {  
             return 'Error: '.$error;  
         }  
     }      }
     $output =~ s/\r+//g; # Remove Windows-style linebreaks      $output =~ s/\r+//g; # Remove Windows-style linebreaks
     my $foundoutput=0;      my $foundoutput=0;

Removed from v.1.26  
changed lines
  Added in v.1.27


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>