diff --git a/scripts/zmaudit.pl.in b/scripts/zmaudit.pl.in index 28a505801..dbe480d28 100644 --- a/scripts/zmaudit.pl.in +++ b/scripts/zmaudit.pl.in @@ -382,7 +382,7 @@ MAIN: while( $loop ) { } # if USE_DEEP_STORAGE Debug( 'Got '.int(keys(%$fs_events))." filesystem events for monitor $monitor_dir\n" ); - #delete_empty_directories( $monitor_dir ); + delete_empty_directories($monitor_dir); } # end foreach monitor if ( $cleaned ) { @@ -879,26 +879,30 @@ sub deleteSwapImage { sub delete_empty_directories { my $DIR; - Debug("delete_empty_directories $_[0]"); - if ( ! opendir( $DIR, $_[0] ) ) { - Error( "delete_empty_directories: Can't open directory '".getcwd()."/$_[0]': $!" ); + if ( !opendir($DIR, $_[0]) ) { + Error("delete_empty_directories: Can't open directory '".getcwd()."/$_[0]': $!" ); return; } - my @contents = map { $_ eq '.' or $_ eq '..' ? () : $_ } readdir( $DIR ); + my @contents = map { ( $_ eq '.' or $_ eq '..' ) ? () : $_ } readdir( $DIR ); + Debug("delete_empty_directories $_[0] has " . @contents .' entries:' . ( @contents < 2 ? join(',',@contents) : '' )); my @dirs = map { -d $_[0].'/'.$_ ? $_ : () } @contents; if ( @dirs ) { + Debug("Have " . @dirs . " dirs"); foreach ( @dirs ) { delete_empty_directories( $_[0].'/'.$_ ); } #Reload, since we may now be empty rewinddir $DIR; - @contents = map { $_ eq '.' or $_ eq '..' ? () : $_ } readdir( $DIR ); + @contents = map { ($_ eq '.' or $_ eq '..') ? () : $_ } readdir( $DIR ); } + closedir($DIR); if ( ! @contents ) { ( my $dir ) = ( $_[0] =~ /^(.*)$/ ); - unlink $dir; + Debug("Unlinking $dir because it's empty"); + if ( ! rmdir $dir ) { + Error("Unable to unlink $dir: $!"); + } } - closedir( $DIR ); } # end sub delete_empty_directories 1;