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 b330dcce..f3d1e159 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 4534fb52..bcd22bee 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 e1745444..f6ed3990 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.11.0