[Patch v4 07/12] lib: add notmuch_message_count_files
David Bremner
david at tethera.net
Fri Jul 21 03:58:35 PDT 2017
This operation is relatively inexpensive, as the needed metadata is
already computed by our lazy metadata fetching. The goal is to support
better UI for messages with multipile files.
---
lib/message.cc | 8 ++++++++
lib/notmuch-private.h | 6 ++++++
lib/notmuch.h | 8 ++++++++
lib/string-list.c | 6 ++++++
4 files changed, 28 insertions(+)
diff --git a/lib/message.cc b/lib/message.cc
index f78e5a9d..68c02001 100644
--- a/lib/message.cc
+++ b/lib/message.cc
@@ -946,6 +946,14 @@ notmuch_message_get_filenames (notmuch_message_t *message)
return _notmuch_filenames_create (message, message->filename_list);
}
+int
+notmuch_message_count_files (notmuch_message_t *message)
+{
+ _notmuch_message_ensure_filename_list (message);
+
+ return _notmuch_string_list_length (message->filename_list);
+}
+
notmuch_bool_t
notmuch_message_get_flag (notmuch_message_t *message,
notmuch_message_flag_t flag)
diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h
index 57c61639..544788bc 100644
--- a/lib/notmuch-private.h
+++ b/lib/notmuch-private.h
@@ -550,6 +550,12 @@ typedef struct _notmuch_string_list {
notmuch_string_list_t *
_notmuch_string_list_create (const void *ctx);
+/*
+ * return the number of strings in 'list'
+ */
+int
+_notmuch_string_list_length (notmuch_string_list_t *list);
+
/* Add 'string' to 'list'.
*
* The list will create its own talloced copy of 'string'.
diff --git a/lib/notmuch.h b/lib/notmuch.h
index 17f0872e..f5018497 100644
--- a/lib/notmuch.h
+++ b/lib/notmuch.h
@@ -1342,6 +1342,14 @@ notmuch_messages_t *
notmuch_message_get_replies (notmuch_message_t *message);
/**
+ * Get the total number of files associated with a message.
+ * @returns Non-negative integer
+ * @since libnotmuch 5.0 (notmuch 0.25)
+ */
+int
+notmuch_message_count_files (notmuch_message_t *message);
+
+/**
* Get a filename for the email corresponding to 'message'.
*
* The returned filename is an absolute filename, (the initial
diff --git a/lib/string-list.c b/lib/string-list.c
index 43ebe499..9c3ae7ef 100644
--- a/lib/string-list.c
+++ b/lib/string-list.c
@@ -42,6 +42,12 @@ _notmuch_string_list_create (const void *ctx)
return list;
}
+int
+_notmuch_string_list_length (notmuch_string_list_t *list)
+{
+ return list->length;
+}
+
void
_notmuch_string_list_append (notmuch_string_list_t *list,
const char *string)
--
2.13.2
More information about the notmuch
mailing list