The declaration of the GMimeStream pointer to stdout in format_part_content_text was somehow preventing subsequent printf calls from outputting to stdout if the output was redirected to a file. Scoping the declaration to the actual use of the stream pointer works around this problem. --- notmuch-show.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/notmuch-show.c b/notmuch-show.c index e90f07e..61c6f49 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -447,7 +447,6 @@ format_part_content_text (GMimeObject *part) { GMimeContentDisposition *disposition = g_mime_object_get_content_disposition (part); GMimeContentType *content_type = g_mime_object_get_content_type (GMIME_OBJECT (part)); - GMimeStream *stream_stdout = g_mime_stream_file_new (stdout); printf (", Content-type: %s\n", g_mime_content_type_to_string (content_type)); @@ -462,6 +461,7 @@ format_part_content_text (GMimeObject *part) if (g_mime_content_type_is_type (content_type, "text", "*") && !g_mime_content_type_is_type (content_type, "text", "html")) { + GMimeStream *stream_stdout = g_mime_stream_file_new (stdout); g_mime_stream_file_set_owner (GMIME_STREAM_FILE (stream_stdout), FALSE); show_part_content (part, stream_stdout); g_object_unref(stream_stdout); -- 1.7.4.4