lib: Treat messages in new/ as maildir messages with no flags set

Previously, notmuch new only synchronized maildir flags to tags for
files with a maildir "info" part.  Since messages in new/ don't have
an info part, notmuch would ignore them for flag-to-tag
synchronization.

This patch makes notmuch consider messages in new/ to be legitimate
maildir messages that simply have no maildir flags set.  The most
visible effect of this is that such messages now automatically get the
unread tag.
This commit is contained in:
Austin Clements 2012-06-09 15:14:17 -04:00 committed by David Bremner
parent 750231bae8
commit b88030bda6
2 changed files with 13 additions and 8 deletions

View file

@ -1090,13 +1090,19 @@ notmuch_message_maildir_flags_to_tags (notmuch_message_t *message)
continue; continue;
flags = strstr (filename, ":2,"); flags = strstr (filename, ":2,");
if (! flags) if (flags) {
continue; seen_maildir_info = 1;
flags += 3;
seen_maildir_info = 1; combined_flags = talloc_strdup_append (combined_flags, flags);
flags += 3; } else if (STRNCMP_LITERAL (dir, "new/") == 0) {
/* Messages are delivered to new/ with no "info" part, but
combined_flags = talloc_strdup_append (combined_flags, flags); * they effectively have default maildir flags. According
* to the spec, we should ignore the info part for
* messages in new/, but some MUAs (mutt) can set maildir
* flags on messages in new/, so we're liberal in what we
* accept. */
seen_maildir_info = 1;
}
} }
/* If none of the filenames have any maildir info field (not even /* If none of the filenames have any maildir info field (not even

View file

@ -167,7 +167,6 @@ notmuch tag +unread +draft -flagged subject:"Non-compliant maildir info"
test_expect_equal "$(cd $MAIL_DIR/cur/; ls non-compliant*)" "non-compliant-maildir-info:2,These-are-not-flags-in-ASCII-order-donottouch" test_expect_equal "$(cd $MAIL_DIR/cur/; ls non-compliant*)" "non-compliant-maildir-info:2,These-are-not-flags-in-ASCII-order-donottouch"
test_begin_subtest "Files in new/ get default synchronized tags" test_begin_subtest "Files in new/ get default synchronized tags"
test_subtest_known_broken
OLDCONFIG=$(notmuch config get new.tags) OLDCONFIG=$(notmuch config get new.tags)
notmuch config set new.tags test notmuch config set new.tags test
add_message [subject]='"File in new/"' [dir]=new [filename]='file-in-new' add_message [subject]='"File in new/"' [dir]=new [filename]='file-in-new'