1 package CloudStore::MD5sum;
6 use Carp qw(confess carp);
18 my ( $self, $data ) = @_;
21 $login = $data->{login} if ref $data eq 'HASH' && exists $data->{login};
23 return $md5sum_db->{$login} if exists $md5sum_db->{$login};
25 my ( undef, undef, $uid, $gid, undef, undef, $email, $dir, $shell ) =
28 my $md5_path = "$dir/.md5";
30 my $db = TokyoCabinet::HDB->new();
31 $db->open($md5_path, $db->OWRITER | $db->OCREAT)
32 or die "can't open $md5_path: ",$db->errmsg( $db->ecode );
34 warn "open $md5_path";
36 $md5sum_db->{$login} = $db;
41 my ( $self, $login ) = @_;
45 my $hdb = $self->md5sum( $login );
47 while(defined(my $key = $hdb->iternext())){
48 my $value = $hdb->get($key);
50 push @lines, "$value $key";
58 my ( $self, $login ) = @_;
60 $login = $login->{login} if ref $login eq 'HASH';
61 confess "no login" unless $login;
63 if ( exists $md5sum_db->{$login} ) {
64 $md5sum_db->{$login}->close;
65 delete $md5sum_db->{$login};
66 warn "close md5sum $login";
68 carp "# close md5sum $login IGNORED";