diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-08-06 18:10:31 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-08-06 18:10:31 +0200 |
commit | 7192d0221a361d3d9cfd6626058e4a1c86ea7b44 (patch) | |
tree | 11d3db0604f47498e16b50ef7f559e138bfe4482 /lib/index.cc | |
parent | 6bc2f5a999d9ff77779d98b7cc688a4350ea65d9 (diff) | |
parent | 6b820673fc9c2483572af5ec7ea91e4d7d7258c9 (diff) |
Merge remote-tracking branch 'origin/master' into vim
Diffstat (limited to 'lib/index.cc')
-rw-r--r-- | lib/index.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/index.cc b/lib/index.cc index d8f8b2b..e377732 100644 --- a/lib/index.cc +++ b/lib/index.cc @@ -315,6 +315,7 @@ _index_mime_part (notmuch_message_t *message, GByteArray *byte_array; GMimeContentDisposition *disposition; char *body; + const char *charset; if (! part) { fprintf (stderr, "Warning: Not indexing empty mime part.\n"); @@ -390,6 +391,20 @@ _index_mime_part (notmuch_message_t *message, g_mime_stream_filter_add (GMIME_STREAM_FILTER (filter), discard_uuencode_filter); + charset = g_mime_object_get_content_type_parameter (part, "charset"); + if (charset) { + GMimeFilter *charset_filter; + charset_filter = g_mime_filter_charset_new (charset, "UTF-8"); + /* This result can be NULL for things like "unknown-8bit". + * Don't set a NULL filter as that makes GMime print + * annoying assertion-failure messages on stderr. */ + if (charset_filter) { + g_mime_stream_filter_add (GMIME_STREAM_FILTER (filter), + charset_filter); + g_object_unref (charset_filter); + } + } + wrapper = g_mime_part_get_content_object (GMIME_PART (part)); if (wrapper) g_mime_data_wrapper_write_to_stream (wrapper, filter); |