From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id 758E46DE0F80 for ; Sat, 4 May 2019 17:10:36 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: -0.034 X-Spam-Level: X-Spam-Status: No, score=-0.034 tagged_above=-999 required=5 tests=[AWL=-0.033, SPF_PASS=-0.001] autolearn=disabled Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gTBbR1qZOaPK for ; Sat, 4 May 2019 17:10:34 -0700 (PDT) Received: from fethera.tethera.net (fethera.tethera.net [198.245.60.197]) by arlo.cworth.org (Postfix) with ESMTPS id 4F34C6DE0F70 for ; Sat, 4 May 2019 17:10:34 -0700 (PDT) Received: from remotemail by fethera.tethera.net with local (Exim 4.89) (envelope-from ) id 1hN4jg-0007X1-Fe; Sat, 04 May 2019 20:10:32 -0400 Received: (nullmailer pid 28701 invoked by uid 1000); Sun, 05 May 2019 00:10:29 -0000 From: David Bremner To: David Bremner , Rob Browning , notmuch@notmuchmail.org Subject: [PATCH 2/2] cli/show: avoid empty write to stdout in format_part_raw Date: Sat, 4 May 2019 21:10:27 -0300 Message-Id: <20190505001027.28627-3-david@tethera.net> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190505001027.28627-1-david@tethera.net> References: <20190428162906.20062-3-david@tethera.net> <20190505001027.28627-1-david@tethera.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.29 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: Sun, 05 May 2019 00:10:36 -0000 From: Rob Browning Previously if the input was exactly a multiple of the internal buffer size, notmuch would attempt to fwrite nothing to stdout, but still expected fwrite to return 1, causing a failure that looked like this: $ notmuch show --format=raw id:87o96f1cya.fsf@codeaurora.org ...entire message shown as expected.. Error: Write failed $ echo $? 1 To fix the problem don't call fwrite at all when there's nothing to write. --- notmuch-show.c | 2 +- test/T210-raw.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/notmuch-show.c b/notmuch-show.c index c3a3783a..98b85352 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -851,7 +851,7 @@ format_part_raw (unused (const void *ctx), unused (sprinter_t *sp), return NOTMUCH_STATUS_FILE_ERROR; } - if (fwrite (buf, size, 1, stdout) != 1) { + if (size > 0 && fwrite (buf, size, 1, stdout) != 1) { fprintf (stderr, "Error: Write failed\n"); fclose (file); return NOTMUCH_STATUS_FILE_ERROR; diff --git a/test/T210-raw.sh b/test/T210-raw.sh index 0d57deb5..93944491 100755 --- a/test/T210-raw.sh +++ b/test/T210-raw.sh @@ -61,7 +61,6 @@ for pow in $(seq 12 20); do notmuch show --format=raw subject:$size > OUTPUT test_expect_equal_file mail/size-$size OUTPUT test_begin_subtest "return value, message of size $size" - test_subtest_known_broken test_expect_success "notmuch show --format=raw subject:$size > /dev/null" done -- 2.20.1