* [PATCH 1/5 v3] [MTD-UTILS] Unified reading from standard input and from file
@ 2009-08-06 0:40 Jehan Bing
2009-08-11 11:21 ` Artem Bityutskiy
0 siblings, 1 reply; 2+ messages in thread
From: Jehan Bing @ 2009-08-06 0:40 UTC (permalink / raw)
To: linux-mtd@lists.infradead.org
Use same code path for reading data (not the OOB) from either the
standard input or a regular file.
Signed-off-by: Jehan Bing <jehan@orb.com>
--- a/nandwrite.c 2009-06-08 13:33:32.000000000 -0700
+++ b/nandwrite.c 2009-06-09 13:20:56.000000000 -0700
@@ -260,7 +260,6 @@ int main(int argc, char * const argv[])
int ret, readlen;
int oobinfochanged = 0;
struct nand_oobinfo old_oobinfo;
- int readcnt = 0;
bool failed = true;
process_options(argc, argv);
@@ -476,37 +475,17 @@ int main(int argc, char * const argv[])
}
- readlen = meminfo.writesize;
+ {
+ readlen = meminfo.writesize;
- if (ifd != STDIN_FILENO) {
int tinycnt = 0;
- if (pad && (imglen < readlen))
- {
- readlen = imglen;
- erase_buffer(writebuf + readlen, meminfo.writesize - readlen);
- }
-
- /* Read Page Data from input file */
- while(tinycnt < readlen) {
+ while (tinycnt < readlen) {
cnt = read(ifd, writebuf + tinycnt, readlen - tinycnt);
if (cnt == 0) { // EOF
break;
} else if (cnt < 0) {
- perror ("File I/O error on input file");
- goto closeall;
- }
- tinycnt += cnt;
- }
- } else {
- int tinycnt = 0;
-
- while(tinycnt < readlen) {
- cnt = read(ifd, writebuf + tinycnt, readlen - tinycnt);
- if (cnt == 0) { // EOF
- break;
- } else if (cnt < 0) {
- perror ("File I/O error on stdin");
+ perror ("File I/O error on input");
goto closeall;
}
tinycnt += cnt;
@@ -514,18 +493,29 @@ int main(int argc, char * const argv[])
/* No padding needed - we are done */
if (tinycnt == 0) {
- imglen = 0;
+ // For standard input, set the imglen to 0 to signal
+ // the end of the "file". For non standard input, leave
+ // it as-is to detect an early EOF
+ if (ifd == STDIN_FILENO) {
+ imglen = 0;
+ }
break;
}
- /* No more bytes - we are done after writing the remaining bytes */
- if (cnt == 0) {
- imglen = 0;
+ /* Padding */
+ if (tinycnt < readlen) {
+ if (!pad) {
+ fprintf(stderr, "Unexpected EOF. Expecting at least "
+ "%d more bytes. Use the padding option.\n",
+ readlen - tinycnt);
+ goto closeall;
+ }
+ erase_buffer(writebuf + tinycnt, readlen - tinycnt);
}
- /* Padding */
- if (pad && (tinycnt < readlen)) {
- erase_buffer(writebuf + tinycnt, meminfo.writesize - tinycnt);
+ if ((ifd == STDIN_FILENO) && (cnt == 0)) {
+ /* No more bytes - we are done after writing the remaining bytes */
+ imglen = 0;
}
}
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH 1/5 v3] [MTD-UTILS] Unified reading from standard input and from file
2009-08-06 0:40 [PATCH 1/5 v3] [MTD-UTILS] Unified reading from standard input and from file Jehan Bing
@ 2009-08-11 11:21 ` Artem Bityutskiy
0 siblings, 0 replies; 2+ messages in thread
From: Artem Bityutskiy @ 2009-08-11 11:21 UTC (permalink / raw)
To: Jehan Bing; +Cc: linux-mtd@lists.infradead.org
On Wed, 2009-08-05 at 17:40 -0700, Jehan Bing wrote:
> Use same code path for reading data (not the OOB) from either the
> standard input or a regular file.
>
> Signed-off-by: Jehan Bing <jehan@orb.com>
I've pushed patches 1-5 to mtd-utils.git, thanks.
--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-08-11 11:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-06 0:40 [PATCH 1/5 v3] [MTD-UTILS] Unified reading from standard input and from file Jehan Bing
2009-08-11 11:21 ` Artem Bityutskiy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).