[LON-CAPA-cvs] cvs: loncom(version_1_2_X) /lonnet/perl lonnet.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Wed, 15 Sep 2004 20:41:07 -0000
albertel Wed Sep 15 16:41:07 2004 EDT
Modified files: (Branch: version_1_2_X)
/loncom/lonnet/perl lonnet.pm
Log:
- backport 1.539 (symbread improvement)
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.523.2.1 loncom/lonnet/perl/lonnet.pm:1.523.2.2
--- loncom/lonnet/perl/lonnet.pm:1.523.2.1 Wed Aug 25 12:05:10 2004
+++ loncom/lonnet/perl/lonnet.pm Wed Sep 15 16:41:07 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.523.2.1 2004/08/25 16:05:10 albertel Exp $
+# $Id: lonnet.pm,v 1.523.2.2 2004/09/15 20:41:07 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -50,7 +50,7 @@
use Apache::loncoursedata;
use Apache::lonlocal;
use Storable qw(lock_store lock_nstore lock_retrieve freeze thaw);
-use Time::HiRes();
+use Time::HiRes qw( gettimeofday tv_interval );
my $readit;
=pod
@@ -3996,11 +3996,14 @@
my $section;
if (defined($courseid) && $courseid eq $ENV{'request.course.id'}) {
+ if (!$symbparm) { $symbparm=&symbread(); }
+ }
+ if ($symbparm && defined($courseid) &&
+ $courseid eq $ENV{'request.course.id'}) {
#print '<br>'.$space.' - '.$qualifier.' - '.$spacequalifierrest;
# ----------------------------------------------------- Cascading lookup scheme
- if (!$symbparm) { $symbparm=&symbread(); }
my $symbp=$symbparm;
my $mapp=(&decode_symb($symbp))[0];
@@ -4011,11 +4014,11 @@
($ENV{'user.domain'} eq $udom)) {
$section=$ENV{'request.course.sec'};
} else {
- if (! defined($usection)) {
- $section=&usection($udom,$uname,$courseid);
- } else {
- $section = $usection;
- }
+ if (! defined($usection)) {
+ $section=&usection($udom,$uname,$courseid);
+ } else {
+ $section = $usection;
+ }
}
my $seclevel=$courseid.'.['.$section.'].'.$spacequalifierrest;
@@ -4053,7 +4056,7 @@
$uname." at ".$udom.": ".
$tmp."</font>");
} elsif ($tmp=~/error: 2 /) {
- &EXT_cache_set($udom,$uname);
+ &EXT_cache_set($udom,$uname);
} elsif ($tmp =~ /^(con_lost|no_such_host)/) {
return $tmp;
}
@@ -4063,10 +4066,10 @@
# -------------------------------------------------------- second, check course
my $coursereply=&courseresdata($ENV{'course.'.$courseid.'.num'},
- $ENV{'course.'.$courseid.'.domain'},
- ($seclevelr,$seclevelm,$seclevel,
- $courselevelr,$courselevelm,
- $courselevel));
+ $ENV{'course.'.$courseid.'.domain'},
+ ($seclevelr,$seclevelm,$seclevel,
+ $courselevelr,$courselevelm,
+ $courselevel));
if (defined($coursereply)) { return $coursereply; }
# ------------------------------------------------------ third, check map parms
@@ -4564,14 +4567,23 @@
sub symbread {
my ($thisfn,$donotrecurse)=@_;
+ if (defined($ENV{'request.symbread.cached'})) {
+ return $ENV{'request.symbread.cached'};
+ }
# no filename provided? try from environment
unless ($thisfn) {
- if ($ENV{'request.symb'}) { return &symbclean($ENV{'request.symb'}); }
+ if ($ENV{'request.symb'}) {
+ $ENV{'request.symbread.cached'}=&symbclean($ENV{'request.symb'});
+ return $ENV{'request.symbread.cached'};
+ }
$thisfn=$ENV{'request.filename'};
}
# is that filename actually a symb? Verify, clean, and return
if ($thisfn=~/\_\_\_\d+\_\_\_(.*)$/) {
- if (&symbverify($thisfn,$1)) { return &symbclean($thisfn); }
+ if (&symbverify($thisfn,$1)) {
+ $ENV{'request.symbread.cached'}=&symbclean($thisfn);
+ return $ENV{'request.symbread.cached'};
+ }
}
$thisfn=declutter($thisfn);
my %hash;
@@ -4592,6 +4604,7 @@
unless ($syval=~/\_\d+$/) {
unless ($ENV{'form.request.prefix'}=~/\.(\d+)\_$/) {
&appenv('request.ambiguous' => $thisfn);
+ $ENV{'request.symbread.cached'}='';
return '';
}
$syval.=$1;
@@ -4639,10 +4652,12 @@
}
}
if ($syval) {
- return &symbclean($syval.'___'.$thisfn);
+ $ENV{'request.symbread.cached'}=&symbclean($syval.'___'.$thisfn);
+ return $ENV{'request.symbread.cached'};
}
}
&appenv('request.ambiguous' => $thisfn);
+ $ENV{'request.symbread.cached'}='';
return '';
}