1 package CloudStore::MD5sum;
16 my ( $self, $data ) = @_;
19 $login = $data->{login} if ref $data eq 'HASH' && exists $data->{login};
21 return $self->{md5sum}->{$login} if exists $self->{md5sum}->{$login};
23 my ( undef, undef, $uid, $gid, undef, undef, $email, $dir, $shell ) =
26 my $md5_path = "$dir/.md5";
28 my $db = TokyoCabinet::HDB->new();
29 $db->open($md5_path, $db->OWRITER | $db->OCREAT)
30 or die "can't open $md5_path: ",$db->errmsg( $db->ecode );
32 warn "open $md5_path";
34 $self->{md5sum}->{$login} = $db;
39 my ( $self, $login ) = @_;
43 my $hdb = $self->md5sum( $login );
45 while(defined(my $key = $hdb->iternext())){
46 my $value = $hdb->get($key);
48 push @lines, "$key $value";
56 my ( $self, $login ) = @_;
59 # @logins = keys %${ $self->{md5sum} } if exists $self->{md5sum} and ref $self->{md5sum} eq 'HASH';
60 @logins = ( $login ) if $login;
62 foreach my $login ( @logins ) {
64 $self->{md5sum}->{$login}->close;
65 warn "close md5sum $login";
67 delete $self->{md5sum};