diff --git a/lib/index.cc b/lib/index.cc index 0c4e2329..044e4111 100644 --- a/lib/index.cc +++ b/lib/index.cc @@ -490,7 +490,7 @@ _notmuch_message_index_file (notmuch_message_t *message, { GMimeMessage *mime_message; InternetAddressList *addresses; - const char *from, *subject; + const char *subject; notmuch_status_t status; status = _notmuch_message_file_get_mime_message (message_file, @@ -498,9 +498,7 @@ _notmuch_message_index_file (notmuch_message_t *message, if (status) return status; - from = g_mime_message_get_sender (mime_message); - - addresses = internet_address_list_parse_string (from); + addresses = g_mime_message_get_from (mime_message); if (addresses) { _index_address_list (message, "from", addresses); g_object_unref (addresses); diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h index ac315e4c..5dfebf5d 100644 --- a/lib/notmuch-private.h +++ b/lib/notmuch-private.h @@ -46,7 +46,7 @@ NOTMUCH_BEGIN_DECLS #include -#include +#include "gmime-extra.h" #include "xutil.h" #include "error_util.h" diff --git a/notmuch-reply.c b/notmuch-reply.c index f789a140..ceb1d231 100644 --- a/notmuch-reply.c +++ b/notmuch-reply.c @@ -47,9 +47,9 @@ format_part_reply (GMimeStream *stream, mime_node_t *node) InternetAddressList *recipients; char *recipients_string; - g_mime_stream_printf (stream, "> From: %s\n", g_mime_message_get_sender (message)); recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO); recipients_string = internet_address_list_to_string (recipients, 0); + g_mime_stream_printf (stream, "> From: %s\n", g_mime_message_get_from_string (message)); if (recipients_string) g_mime_stream_printf (stream, "> To: %s\n", recipients_string); @@ -292,8 +292,7 @@ static InternetAddressList *get_sender(GMimeMessage *message) g_object_unref (G_OBJECT (reply_to_list)); } - return internet_address_list_parse_string ( - g_mime_message_get_sender (message)); + return g_mime_message_get_from (message); } static InternetAddressList *get_to(GMimeMessage *message) diff --git a/notmuch-show.c b/notmuch-show.c index e0433095..1a72d12f 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -212,7 +212,7 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, sp->string (sp, g_mime_message_get_subject (message)); sp->map_key (sp, "From"); - sp->string (sp, g_mime_message_get_sender (message)); + sp->string (sp, g_mime_message_get_from_string (message)); recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO); recipients_string = internet_address_list_to_string (recipients, 0); @@ -520,9 +520,9 @@ format_part_text (const void *ctx, sprinter_t *sp, mime_node_t *node, if (node->envelope_file) g_mime_stream_printf (stream, "%s\n", _get_one_line_summary (ctx, node->envelope_file)); g_mime_stream_printf (stream, "Subject: %s\n", g_mime_message_get_subject (message)); - g_mime_stream_printf (stream, "From: %s\n", g_mime_message_get_sender (message)); recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO); recipients_string = internet_address_list_to_string (recipients, 0); + g_mime_stream_printf (stream, "From: %s\n", g_mime_message_get_from_string (message)); if (recipients_string) g_mime_stream_printf (stream, "To: %s\n", recipients_string); g_free (recipients_string); diff --git a/util/gmime-extra.c b/util/gmime-extra.c index 33751de7..8590c55d 100644 --- a/util/gmime-extra.c +++ b/util/gmime-extra.c @@ -39,6 +39,17 @@ g_mime_message_get_date_string (void *ctx, GMimeMessage *message) return g_string_talloc_strdup (ctx, date); } +InternetAddressList * +g_mime_message_get_from (GMimeMessage *message) +{ + return internet_address_list_parse_string (g_mime_message_get_sender (message)); +} + +const char * +g_mime_message_get_from_string (GMimeMessage *message) { + return g_mime_message_get_sender (message); +} + InternetAddressList * g_mime_message_get_reply_to_list (GMimeMessage *message) { @@ -81,6 +92,12 @@ g_mime_message_get_reply_to_list(GMimeMessage *message) return g_mime_message_get_reply_to (message); } +const char * +g_mime_message_get_from_string (GMimeMessage *message) +{ + return g_mime_object_get_header (GMIME_OBJECT (message), "From"); +} + char * g_mime_message_get_reply_to_string (void *ctx, GMimeMessage *message) { diff --git a/util/gmime-extra.h b/util/gmime-extra.h index 794ffbfd..04d63026 100644 --- a/util/gmime-extra.h +++ b/util/gmime-extra.h @@ -9,7 +9,21 @@ GMimeStream *g_mime_stream_stdout_new(void); /** * return talloc allocated date string */ + char *g_mime_message_get_date_string (void *ctx, GMimeMessage *message); + +/** + * glib allocated list of From: addresses + */ + +InternetAddressList * g_mime_message_get_from (GMimeMessage *message); + +/** + * return string for From: address + * (owned by gmime) + */ +const char * g_mime_message_get_from_string (GMimeMessage *message); + InternetAddressList * g_mime_message_get_reply_to_list (GMimeMessage *message); /** @@ -18,9 +32,4 @@ InternetAddressList * g_mime_message_get_reply_to_list (GMimeMessage *message); char * g_mime_message_get_reply_to_string (void *ctx, GMimeMessage *message); -/** - * Return glib allocated reply-to list - */ -InternetAddressList * g_mime_message_get_reply_to_list (GMimeMessage *message); - #endif