--- loncom/lonmaxima 2006/03/03 23:41:38 1.5 +++ loncom/lonmaxima 2006/03/03 23:47:55 1.6 @@ -3,7 +3,7 @@ # The LearningOnline Network with CAPA # Connect to MAXIMA CAS # -# $Id: lonmaxima,v 1.5 2006/03/03 23:41:38 albertel Exp $ +# $Id: lonmaxima,v 1.6 2006/03/03 23:47:55 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -76,12 +76,12 @@ sub maximareply { my $selector = IO::Select->new(); $selector->add($cmd_err, $cmd_out); - while (my @ready = $selector->can_read) { + while (my @ready = $selector->can_read()) { foreach my $fh (@ready) { if (fileno($fh) == fileno($cmd_err)) { $error.=<$cmd_err>; } else { - my $line = scalar <$cmd_out>; + my $line = scalar(<$cmd_out>); if ($line=~/^(\(\%o|\s)/) { $line=~s/^\(.*\)/ /; $reply.=$line; @@ -101,13 +101,13 @@ sub REAPER { # ta # and MAXIMA processes $SIG{CHLD} = \&REAPER; my $pid = wait; - $children --; - delete $children{$pid}; + $children--; + delete($children{$pid}); } sub HUNTSMAN { # signal handler for SIGINT local($SIG{CHLD}) = 'IGNORE'; # we're going to kill our children - kill 'INT' => keys %children; + kill('INT' => keys(%children)); unlink($pidfile); unlink($port); &logthis('---- Shutdown ----'); @@ -197,7 +197,7 @@ if (-e $pidfile) { my $lfh=IO::File->new("$pidfile"); my $pide=<$lfh>; chomp($pide); - if (kill 0 => $pide) { die "already running"; } + if (kill(0 => $pide)) { die "already running"; } } # ------------------------------------------------------- Listen to UNIX socket @@ -208,26 +208,25 @@ $port = "$perlvar{'lonSockDir'}/maximaso unlink($port); -my $server; -unless ( - $server = IO::Socket::UNIX->new(Local => $port, - Type => SOCK_STREAM, - Listen => 10 ) - ) { - my $st=120+int(rand(240)); - &logthis( - "WARNING: ". - "Can't make server socket ($st secs): .. exiting"); - sleep($st); - exit; - }; +my $server = IO::Socket::UNIX->new(Local => $port, + Type => SOCK_STREAM, + Listen => 10 ); +if (!$server) { + my $st=120+int(rand(240)); + + &logthis("WARNING: ". + "Can't make server socket ($st secs): .. exiting"); + + sleep($st); + exit; +} # ---------------------------------------------------- Fork once and dissociate my $fpid=fork; exit if $fpid; -die "Couldn't fork: $!" unless defined ($fpid); +die("Couldn't fork: $!") unless defined($fpid); POSIX::setsid() or die "Can't start new session: $!"; @@ -239,11 +238,9 @@ print PIDSAVE "$$\n"; close(PIDSAVE); &logthis("CRITICAL: ---------- Starting ----------"); &status('Starting'); - - + - # Fork off our children. for (1 .. $PREFORK) { &make_new_child($server); @@ -269,14 +266,14 @@ sub make_new_child { # block signal for fork my $sigset = POSIX::SigSet->new(SIGINT); sigprocmask(SIG_BLOCK, $sigset) - or die "Can't block SIGINT for fork: $!\n"; + or die("Can't block SIGINT for fork: $!\n"); - die "fork: $!" unless defined (my $pid = fork); + die("fork: $!") unless defined(my $pid = fork); if ($pid) { # Parent records the child's birth and returns. sigprocmask(SIG_UNBLOCK, $sigset) - or die "Can't unblock SIGINT for fork: $!\n"; + or die("Can't unblock SIGINT for fork: $!\n"); $children{$pid} = 1; $children++; return; @@ -286,7 +283,7 @@ sub make_new_child { # unblock signals sigprocmask(SIG_UNBLOCK, $sigset) - or die "Can't unblock SIGINT for fork: $!\n"; + or die("Can't unblock SIGINT for fork: $!\n"); &process_requests($server);