aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2017-06-04 09:32:30 -0300
committerDavid Bremner <david@tethera.net>2017-08-01 21:17:47 -0400
commit8a8e2b11c208050aa1d719ec0933f58d51628fdd (patch)
tree886ee56fb742482b88fae41fe0949e906c7ca15f /lib
parent411675a6ce78988157c4a078f504b3b7805e54c6 (diff)
lib: add notmuch_message_count_files
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/message.cc8
-rw-r--r--lib/notmuch-private.h6
-rw-r--r--lib/notmuch.h8
-rw-r--r--lib/string-list.c6
4 files changed, 28 insertions, 0 deletions
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)