]> git.notmuchmail.org Git - notmuch/blobdiff - lib/message.cc
build: build parse-time-string as part of the notmuch lib and static cli
[notmuch] / lib / message.cc
index ed96477f98b7773d6905dd5325fe3d38ec28de3d..978de066d4185ee991794bfad1f50140dd9424d6 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,15 +1084,25 @@ 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);
 
-       flags = strstr (filename, ":2,");
-       if (! flags)
+       if (! dir)
            continue;
 
-       seen_maildir_info = 1;
-       flags += 3;
-
-       combined_flags = talloc_strdup_append (combined_flags, flags);
+       flags = strstr (filename, ":2,");
+       if (flags) {
+           seen_maildir_info = 1;
+           flags += 3;
+           combined_flags = talloc_strdup_append (combined_flags, flags);
+       } else if (STRNCMP_LITERAL (dir, "new/") == 0) {
+           /* Messages are delivered to new/ with no "info" part, but
+            * 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