notmuch new: Eliminate the check on the mtime of regular files before adding.

This check was buggy in that moving a pre-existing file into the mail
store, (where the file existed before the last run of "notmuch new"),
does not update the mtime of the file. So the message would never be
added to the database.

The fix here is not practical in the long run, (since it causes *all*
files in the mail store to be processed in every run of "notmuch new"
(!)). But this change will let us drop a stat() call that we don't
otherwise need and will help move us toward proper database-backed
detection of new files, (which will fix the bug without the
performance impact of the current fix).
This commit is contained in:
Carl Worth 2010-01-05 15:59:11 -08:00
parent 2ce46c31fe
commit dde214c768

View file

@ -127,9 +127,8 @@ is_maildir (struct dirent **entries, int count)
* *
* o If 'fs_mtime' > 'db_mtime' * o If 'fs_mtime' > 'db_mtime'
* *
* o For each regular file in 'path' with mtime newer than the * o For each regular file directly within 'path', call
* 'db_mtime' call add_message to add the file to the * add_message to add the file to the database.
* database.
* *
* o For each sub-directory of path, recursively call into this * o For each sub-directory of path, recursively call into this
* same function. * same function.
@ -219,9 +218,6 @@ add_files_recursive (notmuch_database_t *notmuch,
} }
if (S_ISREG (st->st_mode)) { if (S_ISREG (st->st_mode)) {
/* If the file hasn't been modified since the last
* add_files, then we need not look at it. */
if (db_mtime == 0 || st->st_mtime > db_mtime) {
state->processed_files++; state->processed_files++;
if (state->verbose) { if (state->verbose) {
@ -279,7 +275,6 @@ add_files_recursive (notmuch_database_t *notmuch,
do_add_files_print_progress = 0; do_add_files_print_progress = 0;
add_files_print_progress (state); add_files_print_progress (state);
} }
}
} else if (S_ISDIR (st->st_mode)) { } else if (S_ISDIR (st->st_mode)) {
status = add_files_recursive (notmuch, next, st, state); status = add_files_recursive (notmuch, next, st, state);
if (status && ret == NOTMUCH_STATUS_SUCCESS) if (status && ret == NOTMUCH_STATUS_SUCCESS)