lib: Indicate if there are more filenames after removal.

Make _notmuch_message_remove_filename return
NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID if the message has more filenames
and fix callers to handle this.
This commit is contained in:
Austin Clements 2011-02-06 04:17:49 -05:00 committed by David Bremner
parent e59cc0031f
commit e4379c43e2

View file

@ -501,6 +501,9 @@ _notmuch_message_add_filename (notmuch_message_t *message,
* This change will not be reflected in the database until the next * This change will not be reflected in the database until the next
* call to _notmuch_message_sync. * call to _notmuch_message_sync.
* *
* If this message still has other filenames, returns
* NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID.
*
* Note: This function does not remove a document from the database, * Note: This function does not remove a document from the database,
* even if the specified filename is the only filename for this * even if the specified filename is the only filename for this
* message. For that functionality, see * message. For that functionality, see
@ -590,6 +593,9 @@ _notmuch_message_remove_filename (notmuch_message_t *message,
if (strncmp ((*i).c_str (), direntry_prefix, direntry_prefix_len)) if (strncmp ((*i).c_str (), direntry_prefix, direntry_prefix_len))
break; break;
/* Indicate that there are filenames remaining. */
status = NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID;
direntry = (*i).c_str (); direntry = (*i).c_str ();
direntry += direntry_prefix_len; direntry += direntry_prefix_len;
@ -1282,7 +1288,8 @@ notmuch_message_tags_to_maildir_flags (notmuch_message_t *message)
new_status = _notmuch_message_remove_filename (message, new_status = _notmuch_message_remove_filename (message,
filename); filename);
/* Hold on to only the first error. */ /* Hold on to only the first error. */
if (! status && new_status) { if (! status && new_status
&& new_status != NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID) {
status = new_status; status = new_status;
continue; continue;
} }