From 76c64d6ca9e9258b74ec13d13496eb7ca872a288 Mon Sep 17 00:00:00 2001
From: Gary Bisson <bisson.gary@gmail.com>
Date: Tue, 17 Dec 2013 17:03:06 -0800
Subject: mtd-utils: nanddump: write requested length only

nanddump was always writing a whole page of data into the output
discarding the length actually requested. This patch allows to
write only the remaining length if oob is omitted. In case oob
is needed, it makes sense to copy the entire page.

Signed-off-by: Richard Weinberger <richard@nod.at>
---
 nand-utils/nanddump.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

(limited to 'nand-utils')

diff --git a/nand-utils/nanddump.c b/nand-utils/nanddump.c
index 4ee7ed4..300aca6 100644
--- a/nand-utils/nanddump.c
+++ b/nand-utils/nanddump.c
@@ -445,8 +445,14 @@ int main(int argc, char * const argv[])
 						pretty_buf, PRETTY_BUF_LEN, true, canonical, ofs + i);
 				write(ofd, pretty_buf, strlen(pretty_buf));
 			}
-		} else
-			write(ofd, readbuf, bs);
+		} else {
+			/* Write requested length if oob is omitted */
+			size_t size_left = end_addr - ofs;
+			if (omitoob && (size_left < bs))
+				write(ofd, readbuf, size_left);
+			else
+				write(ofd, readbuf, bs);
+		}
 
 		if (omitoob)
 			continue;
-- 
cgit v1.2.3