char *filename;
notmuch_message_file_t *message_file;
notmuch_message_list_t *replies;
+ unsigned long flags;
Xapian::Document doc;
};
message->doc_id = doc_id;
message->frozen = 0;
+ message->flags = 0;
/* Each of these will be lazily created as needed. */
message->message_id = NULL;
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);
_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);
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 *
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)
{