mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +01:00
maildir_flags_to_tags: Avoid interpreting "no info" as "no flags set".
If a filename has no maildir info at all, (that is, it does not contain the sequence ":2,"), we consider this distinct from a filename with an empty maildir info, (the ":2," separator is present, but no flags characters follow). Specifically, we regard a missing info field as providing no information, so tags will remain unchanged. On the other hand, an info field that is present but has no flags set will cause various tags to be cleared, (or in the case of "unread", added). This fixes the "remove info" case of the maildir-sync tests in the test suite.
This commit is contained in:
parent
38d82b07c4
commit
404db1de90
1 changed files with 8 additions and 0 deletions
|
@ -868,6 +868,7 @@ notmuch_message_maildir_flags_to_tags (notmuch_message_t *message)
|
|||
const char *filename;
|
||||
char *combined_flags = talloc_strdup (message, "");
|
||||
unsigned i;
|
||||
int seen_maildir_info = 0;
|
||||
|
||||
for (filenames = notmuch_message_get_filenames (message);
|
||||
notmuch_filenames_valid (filenames);
|
||||
|
@ -879,11 +880,18 @@ notmuch_message_maildir_flags_to_tags (notmuch_message_t *message)
|
|||
if (! flags)
|
||||
continue;
|
||||
|
||||
seen_maildir_info = 1;
|
||||
flags += 3;
|
||||
|
||||
combined_flags = talloc_strdup_append (combined_flags, flags);
|
||||
}
|
||||
|
||||
/* If none of the filenames have any maildir info field (not even
|
||||
* an empty info with no flags set) then there's no information to
|
||||
* go on, so do nothing. */
|
||||
if (! seen_maildir_info)
|
||||
return NOTMUCH_STATUS_SUCCESS;
|
||||
|
||||
status = notmuch_message_freeze (message);
|
||||
if (status)
|
||||
return status;
|
||||
|
|
Loading…
Reference in a new issue