fix trash-put when missing trash directories
This commit is contained in:
parent
7e6be8be3b
commit
3a81189d62
|
@ -12,8 +12,8 @@ sub fs_root ($file_name) {
|
|||
}
|
||||
|
||||
sub file_info ($file) {
|
||||
my $file_name = `basename "$file"`;
|
||||
my $file_path = `realpath -s "$file"`;
|
||||
my $file_name = `basename "$file"`;
|
||||
my $file_path = `realpath -s "$file"`;
|
||||
chomp( $file_name, $file_path );
|
||||
my $file_fs_root = fs_root($file_name);
|
||||
|
||||
|
@ -35,7 +35,7 @@ sub trash_dirs ($file_fs_root) {
|
|||
}
|
||||
|
||||
sub target_file_name ( $file_name, $trash_file_path ) {
|
||||
opendir( my $dir, "$trash_file_path" ) or die "$!\n";
|
||||
opendir( my $dir, "$trash_file_path" ) or die "$!";
|
||||
my $existing_suffix_nums =
|
||||
map( ( $_ =~ /^${file_name}\.~(\d)~/ ), readdir $dir );
|
||||
my $suffix_num = max($existing_suffix_nums) + 1;
|
||||
|
@ -46,20 +46,22 @@ sub target_file_name ( $file_name, $trash_file_path ) {
|
|||
}
|
||||
|
||||
sub write_file ( $file_path, $contents ) {
|
||||
open( FH, '>', $file_path ) or die "$!\n";
|
||||
open( FH, '>', $file_path ) or die "$!";
|
||||
print FH $contents;
|
||||
}
|
||||
|
||||
# NOTE: Execution starts here
|
||||
|
||||
if ( $#ARGV + 1 != 1 ) {
|
||||
die "Bad Arguments\n";
|
||||
die "Bad Arguments";
|
||||
}
|
||||
|
||||
stat $ARGV[0] or die "$!\n";
|
||||
stat $ARGV[0] or die "$!";
|
||||
my ( $file_name, $file_src, $file_fs_root ) = file_info( $ARGV[0] );
|
||||
|
||||
my ( $trash_info_path, $trash_file_path ) = trash_dirs($file_fs_root);
|
||||
make_path( $trash_info_path, $trash_file_path ) or die "$!";
|
||||
|
||||
my $target_name = target_file_name( $file_name, $trash_file_path );
|
||||
chomp( my $deletion_time = `date -u +%Y%m%dUTC%T` );
|
||||
|
||||
|
@ -69,6 +71,5 @@ Path=$file_src
|
|||
DeletionDate=$deletion_time
|
||||
EOF
|
||||
|
||||
make_path( $trash_info_path, $trash_file_path );
|
||||
rename( $file_src, "$trash_file_path/$target_name" ) or die "$!\n";
|
||||
write_file( "$trash_info_path/$target_name", $info_contents ) or die "$!\n";
|
||||
rename( $file_src, "$trash_file_path/$target_name" ) or die "$!";
|
||||
write_file( "$trash_info_path/$target_name", $info_contents ) or die "$!";
|
||||
|
|
Loading…
Reference in New Issue