From patchwork Tue Jun 9 23:07:39 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nahor X-Patchwork-Id: 28352 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by bilbo.ozlabs.org (Postfix) with ESMTPS id DC314B70C8 for ; Wed, 10 Jun 2009 09:12:12 +1000 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1MEAQI-0003E2-DC; Tue, 09 Jun 2009 23:08:06 +0000 Received: from main.gmane.org ([80.91.229.2] helo=ciao.gmane.org) by bombadil.infradead.org with esmtps (Exim 4.69 #1 (Red Hat Linux)) id 1MEAQ8-00036x-AP for linux-mtd@lists.infradead.org; Tue, 09 Jun 2009 23:08:03 +0000 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1MEAQ2-0005AJ-TU for linux-mtd@lists.infradead.org; Tue, 09 Jun 2009 23:07:50 +0000 Received: from adsl-99-185-243-218.dsl.pltn13.sbcglobal.net ([99.185.243.218]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 09 Jun 2009 23:07:50 +0000 Received: from nahor.j+gmane by adsl-99-185-243-218.dsl.pltn13.sbcglobal.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 09 Jun 2009 23:07:50 +0000 X-Injected-Via-Gmane: http://gmane.org/ To: linux-mtd@lists.infradead.org From: Nahor Subject: Re: [PATCH 2/3] [MTD-UTILS] Use same kind of code for reading OOB than for regular data Date: Tue, 09 Jun 2009 16:07:39 -0700 Lines: 49 Message-ID: References: <1244551983.5847.388.camel@localhost.localdomain> <4A2E98BD.30704@orb.com> Mime-Version: 1.0 X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: adsl-99-185-243-218.dsl.pltn13.sbcglobal.net User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) In-Reply-To: <4A2E98BD.30704@orb.com> X-Spam-Score: -1.0 (-) X-Spam-Report: SpamAssassin version 3.2.5 on bombadil.infradead.org summary: Content analysis details: (-1.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [80.91.229.2 listed in list.dnswl.org] X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Use the same code structure when reading the OOB than when reading the regular data. Signed-off-by: Jehan Bing --- a/nandwrite.c 2009-06-09 13:20:56.000000000 -0700 +++ b/nandwrite.c 2009-06-09 13:20:44.000000000 -0700 @@ -520,17 +520,32 @@ int main(int argc, char * const argv[]) } if (writeoob) { - int tinycnt = 0; + { + int readlen = meminfo.oobsize; - while(tinycnt < meminfo.oobsize) { - cnt = read(ifd, oobreadbuf + tinycnt, meminfo.oobsize - tinycnt); - if (cnt == 0) { // EOF - break; - } else if (cnt < 0) { - perror ("File I/O error on input file"); + int tinycnt = 0; + + while (tinycnt < readlen) { + cnt = read(ifd, oobreadbuf + tinycnt, readlen - tinycnt); + if (cnt == 0) { // EOF + break; + } else if (cnt < 0) { + perror ("File I/O error on input"); + goto closeall; + } + tinycnt += cnt; + } + + if (tinycnt < readlen) { + fprintf(stderr, "Unexpected EOF. Expecting at least " + "%d more bytes for OOB\n", readlen - tinycnt); goto closeall; } - tinycnt += cnt; + + if ((ifd == STDIN_FILENO) && (cnt == 0)) { + /* No more bytes - we are done after writing the remaining bytes */ + imglen = 0; + } } if (!noecc) {