light: fix symlink deletion

This commit is contained in:
Thomas Schoebel-Theuer 2013-05-06 08:12:00 +02:00
parent ca07c9a763
commit 30f97cd23f
2 changed files with 14 additions and 5 deletions

View File

@ -3487,7 +3487,7 @@ static int prepare_delete(void *buf, struct mars_dent *dent)
MARS_DBG("target '%s' deleted and marked for removal\n", dent->new_link);
} else {
MARS_DBG("target '%s' does no longer exist\n", dent->new_link);
if (dent->d_serial < global->deleted_border) {
if (dent->d_serial <= global->deleted_border) {
MARS_DBG("removing deletion symlink '%s'\n", dent->d_path);
dent->d_killme = true;
mars_unlink(dent->d_path);

View File

@ -860,10 +860,19 @@ sub _create_delete {
my ($target) = @_;
my $nr = 0;
my @paths = glob("$mars/todo-global/delete-*");
if (@paths) {
my $last = pop(@paths);
$nr = $last;
$nr =~ s/^.*delete-([0-9]+)$/$1/;
foreach my $path (@paths) {
$path =~ m/-([0-9]+)/;
if (defined($1) && $1 > $nr) {
$nr = $1;
}
}
my @paths2 = glob("$mars/todo-global/deleted-*");
foreach my $path (@paths2) {
my $link = get_link($path, 1);
$link =~ m/([0-9]+)/;
if (defined($1) && $1 > $nr) {
$nr = $1;
}
}
my $new = sprintf("$mars/todo-global/delete-%09d", $nr + 1);
lprint "create symlink $new -> $target\n";