}
sub user_dir {
- my ( $self,$user, $dir ) = @_;
+ my ( $self, $user, $dir ) = @_;
$user = $self->user_info($user) unless ref $user eq 'HASH';
my $path;
if ( exists $user->{dir} ) {
sub usage {
my ( $self, $user ) = @_;
$user = $self->user_info($user) unless ref $user eq 'HASH';
+
+ my $usage_path = $user->{dir} . '/.meta/files.usage';
+ $self->mkbasepath( $usage_path, { uid => $user->{uid} } );
+ if ( ! -e $usage_path ) {
+ warn "# usage $usage_path missing";
+ $self->list_files($user);
+ }
+
+ open(my $fh, '<', $usage_path);
+ my $size = <$fh>;
+ chomp $size;
+
+ warn "# usage $user->{login} usage: $size\n";
+ return $size;
+
+=for slow and broken
+
my $path = $self->user_dir( $user => 'usage');
my $sum;
open(my $fh, '<', $path);
$sum->{_quota} = $quota;
warn "## usage ",dump($user, $sum), $/;
return $sum;
+
+=cut
+
}
sub send_file {
$user = $self->user_info($user) unless ref $user eq 'HASH';
+ die "no dir for ",dump($user) unless exists $user->{dir};
+
my $files = $user->{dir} . '/.meta/files';
+ $self->mkbasepath( $files, { uid => $user->{uid} } );
if ( -e $files && -s $files > 0) {
local $/ = undef;
open(my $fh, '<', $files);
return $list;
}
- my $path = $user->{dir};
- open(my $pipe, '-|', qq|find -L $path -printf "%y %s %p\n"|);
+ my $dir = $user->{dir};
+ open(my $pipe, '-|', qq|find -L $dir -printf "%y %s %p\n"|);
open(my $fh, '>', "$files.new");
my $total_usage = 0;
my $list_txt;
while(<$pipe>) {
chomp;
my ( $type, $size, $name ) = split(/\s/, $_);
- $name =~ s{$path}{./};
+ $name =~ s{$dir}{./};
$name =~ s{//+}{/}g;
my $line = "$type $size $name\n";
print $fh $line;
close($usage);
rename "$files.usage.new", "$files.usage";
- warn "# list_files $path usage: $total_usage\n";
+ warn "# list_files $dir usage: $total_usage\n";
return $list_txt;
}