notmuch new: Fix to work on filesystems returning DT_UNKNOWN
authorGeo Carncross <geocar-notmuch@internetconnection.net>
Thu, 21 Jan 2010 20:10:18 +0000 (15:10 -0500)
committerCarl Worth <cworth@cworth.org>
Sat, 23 Jan 2010 05:52:30 +0000 (18:52 +1300)
commitc5416b6f1b2ec0ab1bcc011b521542a7839479d2
treeeb22860e8e0479ca53e9abee5da3c8a1c505ac9e
parent1ef33800df7b3eaac36c0c17881e2630f7bfc0be
notmuch new: Fix to work on filesystems returning DT_UNKNOWN

Such as reiserfs or xfs. This has been broken since the merge of
support for rename and deletion of files from the mail store.

Here's the original justification for the patch:

A review of notmuch-new.c shows three uses of ->d_type:

Near line 153, in _entries_resemble_maildir() we can simply allow for
DT_UNKNOWN. This would fail if people have MH-style folders which have
three folders called "new" "cur" and "tmp", but that seems unlikely, in
which case the "tmp" folder would simply not be scanned.

Near line 273 in add_files_recursive() we have another check. If
DT_UNKNOWN, we fall through, then add_files_recursive() does a stat
almost immediately, returning with success if the path isn't a
directory.

Thus, the fallback is already written.

Finally, near line 343, in add_files_recursive() (a long function) we
have another check. Here we can simply treat DT_UNKNOWN as DT_LNK, since
the logic for the stat() results are the same.
notmuch-new.c