Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id D01324196F0 for ; Thu, 1 Apr 2010 06:47:24 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -4.2 X-Spam-Level: X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_50=0.8, RCVD_IN_DNSWL_HI=-5] autolearn=ham Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yKPA7kaTWfST for ; Thu, 1 Apr 2010 06:47:23 -0700 (PDT) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by olra.theworths.org (Postfix) with ESMTP id C6E95431FC1 for ; Thu, 1 Apr 2010 06:47:23 -0700 (PDT) Received: from int-mx05.intmail.prod.int.phx2.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.18]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o31DlMle022534 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 1 Apr 2010 09:47:23 -0400 Received: from tin.rawstew (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx05.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o31DlMhb003877 for ; Thu, 1 Apr 2010 09:47:22 -0400 Received: by tin.rawstew (Postfix, from userid 10119) id A5281506C5; Thu, 1 Apr 2010 09:47:21 -0400 (EDT) Date: Thu, 1 Apr 2010 09:47:21 -0400 To: notmuch@notmuchmail.org Message-ID: <20100401134721.GD25669@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-08-17) From: nstraz@redhat.com X-Scanned-By: MIMEDefang 2.67 on 10.5.11.18 Subject: [notmuch] [PATCH] Setup the GMimeStream only when needed X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Apr 2010 13:47:25 -0000 I ran into this while looking at the vim plugin. Vim's system() call redirects output to a file and it was missing many of the part{ lines. If stream_stdout is setup too early, it will overwrite the part start when notmuch is redirected to a file. --- notmuch-show.c | 15 ++++++--------- 1 files changed, 6 insertions(+), 9 deletions(-) diff --git a/notmuch-show.c b/notmuch-show.c index ff1fecb..96647c1 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -236,9 +236,6 @@ format_part_text (GMimeObject *part, int *part_count) { GMimeContentDisposition *disposition; GMimeContentType *content_type; - GMimeStream *stream_stdout = g_mime_stream_file_new (stdout); - - g_mime_stream_file_set_owner (GMIME_STREAM_FILE (stream_stdout), FALSE); disposition = g_mime_object_get_content_disposition (part); if (disposition && @@ -256,14 +253,14 @@ format_part_text (GMimeObject *part, int *part_count) 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); } printf ("\fattachment}\n"); - if (stream_stdout) - g_object_unref(stream_stdout); - return; } @@ -276,7 +273,10 @@ format_part_text (GMimeObject *part, int *part_count) 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); } else { @@ -285,9 +285,6 @@ format_part_text (GMimeObject *part, int *part_count) } printf ("\fpart}\n"); - - if (stream_stdout) - g_object_unref(stream_stdout); } static void -- 1.6.6.1