Skip to contentSkip to conversation

Return error if failure when reading from standard input

PATH Nahor 3 participants 4 messages Jun 4, 2009 – Jun 9, 2009 Memory technology devices (MTD)

lore
Share & tools
lore

Nahor

author
#0 lore raw

The test to return SUCCESS or FAILURE at the end of nandwrite is done only when reading from a file. When reading from the standard input, nandwrite always returns success except for some cases at the begining.

This patches aims at fixing that by returning an error when jumping to the closeall label.

Regards,
Nahor

nandwrite.c 2009-06-03 17:25:19.000000000 -0700 renamed from nandwrite.c 2009-06-01 18:03:55.000000000 -0700 +4 -1
@@ -261,6 +261,7 @@
        int oobinfochanged = 0;
        struct nand_oobinfo old_oobinfo;
        int readcnt = 0;
+       bool failed = true;
 
        process_options(argc, argv);
 
@@ -623,6 +624,8 @@
                mtdoffset += meminfo.writesize;
        }
 
+       failed = false;
+
 closeall:
        close(ifd);
 
@@ -637,7 +640,7 @@
 
        close(fd);
 
-       if ((ifd != STDIN_FILENO) && (imglen > 0)) {
+       if (failed || ((ifd != STDIN_FILENO) && (imglen > 0))) {
                perror ("Data was only partially written due to error\n");
                exit (EXIT_FAILURE);
        }
#1 lore raw
Quoted 6 lines · Nahor

The test to return SUCCESS or FAILURE at the end of nandwrite is done only when reading from a file. When reading from the standard input, nandwrite always returns success except for some cases at the begining.

This patches aims at fixing that by returning an error when jumping to the closeall label.

Looks ok to me. Please, send an applicable patch.

Signature · 2 lines
Best regards,
Artem Bityutskiy (Битюцкий Артём)
#2 lore raw

Fix nandwrite to return EXIT_FAILURE in case of error when using the standard input instead of a file for input.

nandwrite.c +4 -1
diff -up mtd-utils.loop/nandwrite.c mtd-utils.failed_patch/nandwrite.c
@@ -261,6 +261,7 @@ int main(int argc, char * const argv[])
 	int oobinfochanged = 0;
 	struct nand_oobinfo old_oobinfo;
 	int readcnt = 0;
+	bool failed = true;
 
 	process_options(argc, argv);
 
@@ -623,6 +624,8 @@ int main(int argc, char * const argv[])
 		mtdoffset += meminfo.writesize;
 	}
 
+	failed = false;
+
 closeall:
 	close(ifd);
 
@@ -637,7 +640,7 @@ restoreoob:
 
 	close(fd);
 
-	if ((ifd != STDIN_FILENO) && (imglen > 0)) {
+	if (failed || ((ifd != STDIN_FILENO) && (imglen > 0))) {
 		perror ("Data was only partially written due to error\n");
 		exit (EXIT_FAILURE);
 	}
#3 lore raw
Quoted 2 lines · Jehan Bing

Fix nandwrite to return EXIT_FAILURE in case of error when using the standard input instead of a file for input.

Pushed, thanks.

Signature · 2 lines
Best regards,
Artem Bityutskiy (Битюцкий Артём)