]> git.notmuchmail.org Git - notmuch/blobdiff - message.cc
notmuch show: Add a one-line summary of the message before the header.
[notmuch] / message.cc
index 169b20c193695c16744744233aaac041292e2dfb..2a9001493721dc5493d643659c36afde4f74028b 100644 (file)
@@ -232,26 +232,50 @@ notmuch_message_get_message_id (notmuch_message_t *message)
     return message->message_id;
 }
 
+static void
+_notmuch_message_ensure_message_file (notmuch_message_t *message)
+{
+    const char *filename;
+
+    if (message->message_file)
+       return;
+
+    filename = notmuch_message_get_filename (message);
+    if (unlikely (filename == NULL))
+       return;
+
+    message->message_file = _notmuch_message_file_open_ctx (message, filename);
+}
+
+const char *
+notmuch_message_get_header (notmuch_message_t *message, const char *header)
+{
+    _notmuch_message_ensure_message_file (message);
+    if (message->message_file == NULL)
+       return NULL;
+
+    return notmuch_message_file_get_header (message->message_file, header);
+}
+
 const char *
-_notmuch_message_get_subject (notmuch_message_t *message)
+notmuch_message_get_all_headers (notmuch_message_t *message)
 {
-    if (! message->message_file) {
-       notmuch_message_file_t *message_file;
-       const char *filename;
+    _notmuch_message_ensure_message_file (message);
+    if (message->message_file == NULL)
+       return NULL;
 
-       filename = notmuch_message_get_filename (message);
-       if (unlikely (filename == NULL))
-           return NULL;
+    return notmuch_message_file_get_all_headers (message->message_file);
+}
 
-       message_file = _notmuch_message_file_open_ctx (message, filename);
-       if (unlikely (message_file == NULL))
-           return NULL;
+size_t
+notmuch_message_get_header_size (notmuch_message_t *message)
+{
+    _notmuch_message_ensure_message_file (message);
+    if (message->message_file == NULL)
+       return 0;
 
-       message->message_file = message_file;
-    }
+    return notmuch_message_file_get_header_size (message->message_file);
 
-    return notmuch_message_file_get_header (message->message_file,
-                                           "subject");
 }
 
 const char *
@@ -346,6 +370,21 @@ notmuch_message_get_filename (notmuch_message_t *message)
     return message->filename;
 }
 
+time_t
+notmuch_message_get_date (notmuch_message_t *message)
+{
+    std::string value;
+
+    try {
+       value = message->doc.get_value (NOTMUCH_VALUE_TIMESTAMP);
+    } catch (Xapian::Error &error) {
+       INTERNAL_ERROR ("Failed to read timestamp value from document.");
+       return 0;
+    }
+
+    return Xapian::sortable_unserialise (value);
+}
+
 notmuch_tags_t *
 notmuch_message_get_tags (notmuch_message_t *message)
 {