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:
Carl Worth 2010-01-06 10:30:08 -08:00
parent 49f09958df
commit 39e81ca431

View file

@ -334,8 +334,27 @@ add_files_recursive (notmuch_database_t *notmuch,
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;
}
/* Don't add a file that we've added before. */
if (notmuch_filenames_has_more (db_files) &&