[PATCH 07/10] WIP: Add message count to summary output
This requires a bunch of small changes spread out in different places; I'd probably break it up if we decide to make this change. --- lib/message.cc | 8 lib/notmuch-private.h| 6 ++ lib/notmuch.h| 6 ++ lib/string-list.c| 6 ++ lib/thread.cc| 9 + notmuch-search.c | 15 +-- test/T080-search.sh | 2 +- test/T100-search-by-folder.sh| 4 ++-- test/T340-maildir-sync.sh| 4 ++-- test/T370-search-folder-coherence.sh | 2 +- test/T500-search-date.sh | 2 +- 11 files changed, 55 insertions(+), 9 deletions(-) diff --git a/lib/message.cc b/lib/message.cc index f8215a49..5291e846 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 f3c058ab..69179177 100644 --- a/lib/notmuch-private.h +++ b/lib/notmuch-private.h @@ -558,6 +558,12 @@ typedef struct visible _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 d374dc96..7808434f 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -1094,6 +1094,9 @@ notmuch_thread_get_thread_id (notmuch_thread_t *thread); int notmuch_thread_get_total_messages (notmuch_thread_t *thread); +int +notmuch_thread_get_total_files (notmuch_thread_t *thread); + /** * Get a notmuch_messages_t iterator for the top-level messages in * 'thread' in oldest-first order. @@ -1339,6 +1342,9 @@ notmuch_message_get_thread_id (notmuch_message_t *message); notmuch_messages_t * notmuch_message_get_replies (notmuch_message_t *message); +int +notmuch_message_count_files (notmuch_message_t *message); + /** * Get a filename for the email corresponding to 'message'. * 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) diff --git a/lib/thread.cc b/lib/thread.cc index 561ca5be..d385102b 100644 --- a/lib/thread.cc +++ b/lib/thread.cc @@ -44,6 +44,7 @@ struct visible _notmuch_thread { GHashTable *message_hash; int total_messages; +int total_files; int matched_messages; time_t oldest; time_t newest; @@ -266,6 +267,7 @@ _thread_add_message (notmuch_thread_t *thread, _notmuch_message_list_add_message (thread->message_list, talloc_steal (thread, message)); thread->total_messages++; +thread->total_files += notmuch_message_count_files (message); g_hash_table_insert (thread->message_hash, xstrdup (notmuch_message_get_message_id (message)), @@ -495,6 +497,7 @@ _notmuch_thread_create (void *ctx, free, NULL); thread->total_messages = 0; +thread->total_files = 0; thread->matched_messages = 0; thread->oldest = 0; thread->newest = 0; @@ -567,6 +570,12 @@ notmuch_thread_get_total_messages (notmuch_thread_t *thread) } int +notmuch_thread_get_total_files (notmuch_thread_t *thread) +{ +return thread->total_files; +} + +int notmuch_thread_get_matched_messages (notmuch_thread_t *thread) { return thread->matched_messages; diff --git a/notmuch-search.c b/notmuch-search.c index 019e14ee..380e9d8f 100644 --- a/notmuch-search.c +++ b/notmuch-search.c @@ -160,6 +160,7 @@ do_search_threads (search_context_t *ctx) const char *subject = notmuch_thread_get_subject (thread); const char *thread_id = notmuch_thread_get_thread_id (thread); int matched = notmuch_thread_get_matched_messages (thread); + int files = notmuch_thread_get_total_files (thread); int total = notmuch_thread_get_total_messages (thread); const char *relative_date = NULL; notmuch_bool_t first_tag = TRUE; @@ -175,13 +176,23 @@ do_search_threads
[PATCH 07/10] WIP: Add message count to summary output
This requires a bunch of small changes spread out in different places; I'd probably break it up if we decide to make this change. --- lib/message.cc | 8 lib/notmuch-private.h| 6 ++ lib/notmuch.h| 6 ++ lib/string-list.c| 6 ++ lib/thread.cc| 9 + notmuch-search.c | 15 +-- test/T080-search.sh | 2 +- test/T100-search-by-folder.sh| 4 ++-- test/T340-maildir-sync.sh| 4 ++-- test/T370-search-folder-coherence.sh | 2 +- test/T500-search-date.sh | 2 +- 11 files changed, 55 insertions(+), 9 deletions(-) diff --git a/lib/message.cc b/lib/message.cc index f8215a49..5291e846 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 f3c058ab..69179177 100644 --- a/lib/notmuch-private.h +++ b/lib/notmuch-private.h @@ -558,6 +558,12 @@ typedef struct visible _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 d374dc96..7808434f 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -1094,6 +1094,9 @@ notmuch_thread_get_thread_id (notmuch_thread_t *thread); int notmuch_thread_get_total_messages (notmuch_thread_t *thread); +int +notmuch_thread_get_total_files (notmuch_thread_t *thread); + /** * Get a notmuch_messages_t iterator for the top-level messages in * 'thread' in oldest-first order. @@ -1339,6 +1342,9 @@ notmuch_message_get_thread_id (notmuch_message_t *message); notmuch_messages_t * notmuch_message_get_replies (notmuch_message_t *message); +int +notmuch_message_count_files (notmuch_message_t *message); + /** * Get a filename for the email corresponding to 'message'. * 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) diff --git a/lib/thread.cc b/lib/thread.cc index 561ca5be..d385102b 100644 --- a/lib/thread.cc +++ b/lib/thread.cc @@ -44,6 +44,7 @@ struct visible _notmuch_thread { GHashTable *message_hash; int total_messages; +int total_files; int matched_messages; time_t oldest; time_t newest; @@ -266,6 +267,7 @@ _thread_add_message (notmuch_thread_t *thread, _notmuch_message_list_add_message (thread->message_list, talloc_steal (thread, message)); thread->total_messages++; +thread->total_files += notmuch_message_count_files (message); g_hash_table_insert (thread->message_hash, xstrdup (notmuch_message_get_message_id (message)), @@ -495,6 +497,7 @@ _notmuch_thread_create (void *ctx, free, NULL); thread->total_messages = 0; +thread->total_files = 0; thread->matched_messages = 0; thread->oldest = 0; thread->newest = 0; @@ -567,6 +570,12 @@ notmuch_thread_get_total_messages (notmuch_thread_t *thread) } int +notmuch_thread_get_total_files (notmuch_thread_t *thread) +{ +return thread->total_files; +} + +int notmuch_thread_get_matched_messages (notmuch_thread_t *thread) { return thread->matched_messages; diff --git a/notmuch-search.c b/notmuch-search.c index 019e14ee..380e9d8f 100644 --- a/notmuch-search.c +++ b/notmuch-search.c @@ -160,6 +160,7 @@ do_search_threads (search_context_t *ctx) const char *subject = notmuch_thread_get_subject (thread); const char *thread_id = notmuch_thread_get_thread_id (thread); int matched = notmuch_thread_get_matched_messages (thread); + int files = notmuch_thread_get_total_files (thread); int total = notmuch_thread_get_total_messages (thread); const char *relative_date = NULL; notmuch_bool_t first_tag = TRUE; @@ -175,13 +176,23 @@ do_search_threads