Diff for /loncom/lond between versions 1.318.2.5 and 1.318.2.6

version 1.318.2.5, 2006/03/03 22:03:17 version 1.318.2.6, 2006/03/04 04:27:38
Line 3102  sub store_handler { Line 3102  sub store_handler {
 }  }
 &register_handler("store", \&store_handler, 0, 1, 0);  &register_handler("store", \&store_handler, 0, 1, 0);
   
   sub putstore_handler {
       my ($cmd, $tail, $client) = @_;
    
       my $userinput = "$cmd:$tail";
   
       my ($udom,$uname,$namespace,$rid,$v,$what) =split(/:/,$tail);
       if ($namespace ne 'roles') {
   
    chomp($what);
    my $hashref  = &tie_user_hash($udom, $uname, $namespace,
          &GDBM_WRCREAT(), "C",
          "$rid:$what");
    if ($hashref) {
       my $now = time;
       my %data = &hash_extract($what);
       my @allkeys;
       if (exists($hashref->{"$v:compressed:$rid"})) {
    my %current = &hash_extract($hashref->{"$v:compressed:$rid"});
    while (my($key,$value) = each(%data)) {
       push(@allkeys,$key);
       $current{$key} = $value;
    }
    $hashref->{"$v:compressed:$rid"}= &hash_to_str(\%current);
       } else {
    while (my($key,$value) = each(%data)) {
       push(@allkeys,$key);
       $hashref->{"$v:$rid:$key"} = $value;
    }
       }
       my $allkeys = join(':',@allkeys);
       $hashref->{"$v:keys:$rid"}=$allkeys;
   
       if (&untie_user_hash($hashref)) {
    &Reply($client, "ok\n", $userinput);
       } else {
    &Failure($client, "error: ".($!+0)." untie(GDBM) Failed ".
    "while attempting store\n", $userinput);
       }
    } else {
       &Failure( $client, "error: ".($!+0)." tie(GDBM) Failed ".
        "while attempting store\n", $userinput);
    }
       } else {
    &Failure($client, "refused\n", $userinput);
       }
   
       return 1;
   }
   &register_handler("putstore", \&putstore_handler, 0, 1, 0);
   
   sub hash_extract {
       my ($str)=@_;
       my %hash;
       foreach my $pair (split(/\&/,$str)) {
    my ($key,$value)=split(/=/,$pair);
    $hash{$key}=$value;
       }
       return (%hash);
   }
   sub hash_to_str {
       my ($hash_ref)=@_;
       my $str;
       foreach my $key (keys(%$hash_ref)) {
    $str.=$key.'='.$hash_ref->{$key}.'&';
       }
       $str=~s/\&$//;
       return $str;
   }
   
 #  #
 #  Dump out all versions of a resource that has key=value pairs associated  #  Dump out all versions of a resource that has key=value pairs associated
 # with it for each version.  These resources are built up via the store  # with it for each version.  These resources are built up via the store

Removed from v.1.318.2.5  
changed lines
  Added in v.1.318.2.6


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