mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 20:08:10 +01:00
notmuch new: Fix to detect deletions of names at the end of the list.
Previously we only scanned the list of filenames in the filesystem and detected a deletion whenever that scan skipped a name that existed in the database. That much was fine, but we *also* need to continue walking the list of names from the database when the filesystem list is exhausted. Without this, removing the last file or directory within any particular directory would go undetected.
This commit is contained in:
parent
39e81ca431
commit
59c09623c8
1 changed files with 24 additions and 0 deletions
|
@ -430,6 +430,30 @@ add_files_recursive (notmuch_database_t *notmuch,
|
|||
next = NULL;
|
||||
}
|
||||
|
||||
/* Now that we've walked the whole filesystem list, anything left
|
||||
* over in the database lists has been deleted. */
|
||||
while (notmuch_filenames_has_more (db_files))
|
||||
{
|
||||
char *absolute = talloc_asprintf (state->removed_files,
|
||||
"%s/%s", path,
|
||||
notmuch_filenames_get (db_files));
|
||||
|
||||
_filename_list_add (state->removed_files, absolute);
|
||||
|
||||
notmuch_filenames_advance (db_files);
|
||||
}
|
||||
|
||||
while (notmuch_filenames_has_more (db_subdirs))
|
||||
{
|
||||
char *absolute = talloc_asprintf (state->removed_directories,
|
||||
"%s/%s", path,
|
||||
notmuch_filenames_get (db_subdirs));
|
||||
|
||||
_filename_list_add (state->removed_directories, absolute);
|
||||
|
||||
notmuch_filenames_advance (db_subdirs);
|
||||
}
|
||||
|
||||
if (! interrupted) {
|
||||
status = notmuch_directory_set_mtime (directory, fs_mtime);
|
||||
if (status && ret == NOTMUCH_STATUS_SUCCESS)
|
||||
|
|
Loading…
Reference in a new issue