#include <gmime/gmime.h>
#include <glib.h> /* GHashTable */
+#define EMPTY_STRING(s) ((s)[0] == '\0')
+
struct visible _notmuch_thread {
notmuch_database_t *notmuch;
char *thread_id;
term != NULL;
term = term->next)
{
- /* We ignore initial 'K'. */
- if (strcmp(tag, (term->string + 1)) == 0) {
+ /* Check for an empty string, and then ignore initial 'K'. */
+ if (*(term->string) && strcmp(tag, (term->string + 1)) == 0) {
message_excluded = TRUE;
break;
}
address = internet_address_list_get_address (list, 0);
if (address) {
author = internet_address_get_name (address);
- if (author == NULL) {
+ /* We treat quoted empty names as if they were empty. */
+ if (author == NULL || author[0] == '\0') {
InternetAddressMailbox *mailbox;
mailbox = INTERNET_ADDRESS_MAILBOX (address);
author = internet_address_mailbox_get_addr (mailbox);
cleaned_subject = talloc_strdup (thread, subject);
}
- if (thread->subject)
- talloc_free (thread->subject);
+ if (! EMPTY_STRING(cleaned_subject)) {
+ if (thread->subject)
+ talloc_free (thread->subject);
- thread->subject = talloc_strdup (thread, cleaned_subject);
+ thread->subject = talloc_strdup (thread, cleaned_subject);
+ }
}
/* Add a message to this thread which is known to match the original
if (date > thread->newest || ! thread->matched_messages) {
thread->newest = date;
- if (sort != NOTMUCH_SORT_OLDEST_FIRST)
+ const char *cur_subject = notmuch_thread_get_subject(thread);
+ if (sort != NOTMUCH_SORT_OLDEST_FIRST || EMPTY_STRING(cur_subject))
_thread_set_subject_from_message (thread, message);
}
notmuch_messages_t *messages;
notmuch_message_t *message;
+ notmuch_status_t status;
seed_message = _notmuch_message_create (local, notmuch, seed_doc_id, NULL);
if (! seed_message)
* oldest or newest subject is desired. */
notmuch_query_set_sort (thread_id_query, NOTMUCH_SORT_OLDEST_FIRST);
- for (messages = notmuch_query_search_messages (thread_id_query);
+ status = notmuch_query_search_messages_st (thread_id_query, &messages);
+ if (status)
+ goto DONE;
+
+ for (;
notmuch_messages_valid (messages);
notmuch_messages_move_to_next (messages))
{