version 1.317.2.2, 2003/03/14 21:45:20
|
version 1.320, 2003/01/28 00:09:57
|
Line 1744 sub dump {
|
Line 1744 sub dump {
|
return %returnhash; |
return %returnhash; |
} |
} |
|
|
|
# --------------------------------------------------------------- currentdump |
|
sub currentdump { |
|
my ($namespace,$udomain,$uname)=@_; |
|
if (!$udomain) { $udomain = $ENV{'user.domain'}; } |
|
if (!$uname) { $uname = $ENV{'user.name'}; } |
|
my $uhome = &homeserver($uname,$udomain); |
|
my $rep=reply("currentdump:$udomain:$uname:$namespace",$uhome); |
|
return if ($rep =~ /^(error:|no_such_host)/); |
|
# |
|
my %returnhash=(); |
|
# |
|
if ($rep eq "unknown_cmd") { |
|
# an old lond will not know currentdump |
|
# Do a dump and make it look like a currentdump |
|
my @tmp = &dump($namespace,$udomain,$uname,'.'); |
|
return if ($tmp[0] =~ /^(error:|no_such_host)/); |
|
my %hash = @tmp; |
|
@tmp=(); |
|
# Code ripped from lond, essentially. The only difference |
|
# here is the unescaping done by lonnet::dump(). Conceivably |
|
# we might run in to problems with parameter names =~ /^v\./ |
|
while (my ($key,$value) = each(%hash)) { |
|
my ($v,$symb,$param) = split(/:/,$key); |
|
next if ($v eq 'version' || $symb eq 'keys'); |
|
next if (exists($returnhash{$symb}) && |
|
exists($returnhash{$symb}->{$param}) && |
|
$returnhash{$symb}->{'v.'.$param} > $v); |
|
$returnhash{$symb}->{$param}=$value; |
|
$returnhash{$symb}->{'v.'.$param}=$v; |
|
} |
|
# |
|
# Remove all of the keys in the hashes which keep track of |
|
# the version of the parameter. |
|
while (my ($symb,$param_hash) = each(%returnhash)) { |
|
# use a foreach because we are going to delete from the hash. |
|
foreach my $key (keys(%$param_hash)) { |
|
delete($param_hash->{$key}) if ($key =~ /^v\./); |
|
} |
|
} |
|
} else { |
|
my @pairs=split(/\&/,$rep); |
|
foreach (@pairs) { |
|
my ($key,$value)=split(/=/,$_); |
|
my ($symb,$param) = split(/:/,$key); |
|
$returnhash{&unescape($symb)}->{&unescape($param)} = |
|
&unescape($value); |
|
} |
|
} |
|
return %returnhash; |
|
} |
|
|
# --------------------------------------------------------------- put interface |
# --------------------------------------------------------------- put interface |
|
|
sub put { |
sub put { |
Line 3032 sub metadata {
|
Line 3083 sub metadata {
|
$value.=' [Part: '.$part.']'; |
$value.=' [Part: '.$part.']'; |
} |
} |
my $unikey='parameter'.$keyroot.'_'.$name; |
my $unikey='parameter'.$keyroot.'_'.$name; |
if ($subp eq 'default') { $unikey='parameter_0_'.$name; } |
|
$metathesekeys{$unikey}=1; |
$metathesekeys{$unikey}=1; |
$metacache{$uri.':'.$unikey.'.part'}=$part; |
$metacache{$uri.':'.$unikey.'.part'}=$part; |
unless |
unless |