--- loncom/lond 2002/12/18 20:43:29 1.104 +++ loncom/lond 2003/01/13 21:52:11 1.105 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.104 2002/12/18 20:43:29 matthew Exp $ +# $Id: lond,v 1.105 2003/01/13 21:52:11 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1226,6 +1226,48 @@ sub make_new_child { } } else { print $client "error:$!\n"; + } +# ----------------------------------------------------------------- dumpcurrent + } elsif ($userinput =~ /^dumpcurrent/) { + my ($cmd,$udom,$uname,$namespace) + =split(/:/,$userinput); + $namespace=~s/\//\_/g; + $namespace=~s/\W//g; + my $qresult=''; + my $proname=propath($udom,$uname); + if (tie(%hash,'GDBM_File', + "$proname/$namespace.db", + &GDBM_READER(),0640)) { + # Structure of %data: + # $data{$symb}->{$parameter}=$value; + # $data{$symb}->{'v.'.$parameter}=$version; + # since $parameter will be unescaped, we do not + # have to worry about silly parameter names... + my %data = (); + while (my ($key,$value) = each(%hash)) { + my ($v,$symb,$param) = split(/:/,$key); + next if ($v eq 'version' || $symb eq 'keys'); + next if (exists($data{$symb}) && + exists($data{$symb}->{$param}) && + $data{$symb}->{'v.'.$param} > $v); + #&logthis("v = ".$v." p = ".$param." s = ".$symb); + $data{$symb}->{$param}=$value; + $data{$symb}->{'v.'.$param}=$value; + } + if (untie(%hash)) { + while (my ($symb,$param_hash) = each(%data)) { + while(my ($param,$value) = each (%$param_hash)){ + next if ($param =~ /^v\./); + $qresult.=$symb.':'.$param.'='.$value.'&'; + } + } + chop($qresult); + print $client "$qresult\n"; + } else { + print $client "error:$!\n"; + } + } else { + print $client "error:$!\n"; } # ------------------------------------------------------------------------ dump } elsif ($userinput =~ /^dump/) {