--- loncom/xml/run.pm 2004/08/10 19:16:40 1.49 +++ loncom/xml/run.pm 2006/01/11 08:56:13 1.56 @@ -1,6 +1,6 @@ package Apache::run; # -# $Id: run.pm,v 1.49 2004/08/10 19:16:40 albertel Exp $ +# $Id: run.pm,v 1.56 2006/01/11 08:56:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -50,6 +50,7 @@ while (!$_LONCAPA_INTERNAL_oldexpression my $__LC__prefix; my $__LC__result; while (1) { + if ($__LC__a =~ m-^&(theta|pi|rho)$-) { last; } { use strict; no strict "vars"; @@ -83,13 +84,13 @@ sub evaluate { }; my $innererror; eval { - alarm($Apache::lonnet::perlvar{'lonScriptTimeout'}); + &Apache::lonxml::start_alarm(); $safeeval->reval('{'.$decls.';$_=<<\'EXPRESSION\';'."\n".$expression. "\n".'EXPRESSION'."\n".$EVALUATE_STRING.'}'); $innererror=$@; - alarm(0); + &Apache::lonxml::end_alarm(); }; - my $error=$@; + my $error=$@; if ($error eq '' && $innererror eq '' && !$Apache::run::timeout) { $result = $safeeval->reval('return $_;'); chomp $result; @@ -121,10 +122,10 @@ sub run { }; my $innererror; eval { - alarm($Apache::lonnet::perlvar{'lonScriptTimeout'}); + &Apache::lonxml::start_alarm(); @result=$safeeval->reval($code); $innererror=$@; - alarm(0); + &Apache::lonxml::end_alarm(); }; my $error=$@; if (($Apache::run::timeout || $error ne '' || $innererror ne '') && !$hideerrors) { @@ -157,10 +158,13 @@ sub dump { my ($target,$safeeval)=@_; my $dump=''; foreach my $symname (sort keys %{$safeeval->varglob('main::')}) { - if (($symname!~/^\_/) && ($symname!~/\:$/)) { + if (($symname!~ /^(INC|SIG)/) && ($symname!~/\027/) && + ($symname!~/^\_/) && ($symname!~/\:$/)) { my $line; if ($safeeval->reval('defined($'.$symname.')')) { - $line.='$'.$symname.'='.$safeeval->reval('$'.$symname)."\n"; + if ($symname =~ /^\w/) { + $line.='$'.$symname.'='.$safeeval->reval('$'.$symname)."\n"; + } } if ($safeeval->reval('defined(@'.$symname.')')) { $line.='@'.$symname.'=('. @@ -170,11 +174,11 @@ sub dump { $line.='%'.$symname.'=('; $line.=$safeeval->reval('join(",",map { $_."=>".$'. $symname.'{$_} } sort keys %'. - $symname.')').")"."\n" - } + $symname.')').")"."\n"; + } if ($line ne '') { $line=&HTML::Entities::encode($line,'<>&"'); - $line=~s|\n|
|; + $line=~s|\n|
|g; $dump.=$line; } }