X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fmessage.cc;h=7c7ea7a1c02aa84d47e9ff8f3db82216d9aedbce;hb=50ae83a17feb1fc2f48fb8e51ef73da08ae4e2f2;hp=a410394d3d5ac8c2d7772a6b3d1d65762c24ed85;hpb=c3c52e464b8b0e024a01feacfeb34cc4ce1f3d62;p=notmuch diff --git a/lib/message.cc b/lib/message.cc index a410394d..7c7ea7a1 100644 --- a/lib/message.cc +++ b/lib/message.cc @@ -37,6 +37,7 @@ struct _notmuch_message { char *filename; notmuch_message_file_t *message_file; notmuch_message_list_t *replies; + unsigned long flags; Xapian::Document doc; }; @@ -108,6 +109,7 @@ _notmuch_message_create (const void *talloc_owner, message->doc_id = doc_id; message->frozen = 0; + message->flags = 0; /* Each of these will be lazily created as needed. */ message->message_id = NULL; @@ -316,9 +318,9 @@ _notmuch_message_get_in_reply_to (notmuch_message_t *message) in_reply_to = *i; if (i != message->doc.termlist_end () && - strncmp ((*i).c_str (), prefix, prefix_len)) + strncmp ((*i).c_str (), prefix, prefix_len) == 0) { - INTERNAL_ERROR ("Message %s has duplicate In-Reply-To IDs: %s and %s\n" + INTERNAL_ERROR ("Message %s has duplicate In-Reply-To IDs: %s and %s\n", notmuch_message_get_message_id (message), message->in_reply_to, (*i).c_str () + prefix_len); @@ -394,9 +396,7 @@ void _notmuch_message_set_filename (notmuch_message_t *message, const char *filename) { - const char *s; - const char *db_path; - unsigned int db_path_len; + const char *relative; if (message->filename) { talloc_free (message->filename); @@ -406,22 +406,8 @@ _notmuch_message_set_filename (notmuch_message_t *message, if (filename == NULL) INTERNAL_ERROR ("Message filename cannot be NULL."); - s = filename; - - db_path = notmuch_database_get_path (message->notmuch); - db_path_len = strlen (db_path); - - if (*s == '/' && strlen (s) > db_path_len - && strncmp (s, db_path, db_path_len) == 0) - { - s += db_path_len; - while (*s == '/') s++; - - if (!*s) - INTERNAL_ERROR ("Message filename was same as db prefix."); - } - - message->doc.set_data (s); + relative = _notmuch_database_relative_path (message->notmuch, filename); + message->doc.set_data (relative); } const char * @@ -445,6 +431,23 @@ notmuch_message_get_filename (notmuch_message_t *message) return message->filename; } +notmuch_bool_t +notmuch_message_get_flag (notmuch_message_t *message, + notmuch_message_flag_t flag) +{ + return message->flags & (1 << flag); +} + +void +notmuch_message_set_flag (notmuch_message_t *message, + notmuch_message_flag_t flag, notmuch_bool_t enable) +{ + if (enable) + message->flags |= (1 << flag); + else + message->flags &= ~(1 << flag); +} + time_t notmuch_message_get_date (notmuch_message_t *message) {