]> git.notmuchmail.org Git - notmuch/commitdiff
lib: Only synchronize maildir flags for messages in maildirs
authorAustin Clements <amdragon@MIT.EDU>
Sat, 9 Jun 2012 19:14:16 +0000 (15:14 -0400)
committerDavid Bremner <bremner@debian.org>
Sun, 10 Jun 2012 23:13:58 +0000 (20:13 -0300)
Previously, we synchronized flags to tags for any message that looked
like it had maildir flags in its file name, regardless of whether it
was in a maildir-like directory structure.  This was asymmetric with
tag-to-flag synchronization, which only applied to messages in
directories named new/ and cur/ (introduced by 95dd5fe5).

This change makes our interpretation stricter and addresses this
asymmetry by only synchronizing flags to tags for messages in
directories named new/ or cur/.  It also prepares us to treat messages
in new/ as maildir messages, even though they lack maildir flags.

lib/message.cc

index ed96477f98b7773d6905dd5325fe3d38ec28de3d..bbac2ffaf87da987b1c7f05244ce1caf801831c1 100644 (file)
@@ -1074,7 +1074,7 @@ notmuch_message_maildir_flags_to_tags (notmuch_message_t *message)
     const char *flags;
     notmuch_status_t status;
     notmuch_filenames_t *filenames;
-    const char *filename;
+    const char *filename, *dir;
     char *combined_flags = talloc_strdup (message, "");
     unsigned i;
     int seen_maildir_info = 0;
@@ -1084,6 +1084,10 @@ notmuch_message_maildir_flags_to_tags (notmuch_message_t *message)
         notmuch_filenames_move_to_next (filenames))
     {
        filename = notmuch_filenames_get (filenames);
+       dir = _filename_is_in_maildir (filename);
+
+       if (! dir)
+           continue;
 
        flags = strstr (filename, ":2,");
        if (! flags)