mirror of
https://git.notmuchmail.org/git/notmuch
synced 2025-03-28 10:18:59 +01:00
notmuch new: Fix regression preventing addition of symlinked mail files.
As described in the previous commit message, we introduced multiple symlink-based regressions in commit 3df737bc4addfce71c647792ee668725e5221a98 Here, we fix the case of symlinks to regular files by doing an extra stat of any DT_LNK files to determine if they do, in fact, link to regular files.
This commit is contained in:
parent
49f09958df
commit
39e81ca431
1 changed files with 20 additions and 1 deletions
|
@ -334,8 +334,27 @@ add_files_recursive (notmuch_database_t *notmuch,
|
||||||
notmuch_filenames_advance (db_subdirs);
|
notmuch_filenames_advance (db_subdirs);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry->d_type != DT_REG)
|
/* If we're looking at a symlink, we only want to add it if it
|
||||||
|
* links to a regular file, (and not to a directory, say). */
|
||||||
|
if (entry->d_type == DT_LNK) {
|
||||||
|
int err;
|
||||||
|
|
||||||
|
next = talloc_asprintf (notmuch, "%s/%s", path, entry->d_name);
|
||||||
|
err = stat (next, &st);
|
||||||
|
talloc_free (next);
|
||||||
|
next = NULL;
|
||||||
|
|
||||||
|
/* Don't emit an error for a link pointing nowhere, since
|
||||||
|
* the directory-traversal pass will have already done
|
||||||
|
* that. */
|
||||||
|
if (err)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (! S_ISREG (st.st_mode))
|
||||||
|
continue;
|
||||||
|
} else if (entry->d_type != DT_REG) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* Don't add a file that we've added before. */
|
/* Don't add a file that we've added before. */
|
||||||
if (notmuch_filenames_has_more (db_files) &&
|
if (notmuch_filenames_has_more (db_files) &&
|
||||||
|
|
Loading…
Add table
Reference in a new issue