[PATCH 06/10] nand command: check for <dev> directly after option parsing

Sascha Hauer s.hauer at pengutronix.de
Mon Mar 4 05:13:50 EST 2013


Allo subcommands need at least one nonopt arg, so check for
it right after parsing the options and drop the check in the
MARKBAD command.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 commands/nand.c |   31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/commands/nand.c b/commands/nand.c
index 79f6735..39fb64e 100644
--- a/commands/nand.c
+++ b/commands/nand.c
@@ -58,6 +58,9 @@ static int do_nand(int argc, char *argv[])
 		}
 	}
 
+	if (optind >= argc)
+		return COMMAND_ERROR_USAGE;
+
 	if (command == NAND_ADD) {
 		while (optind < argc) {
 			if (dev_add_bb_dev(basename(argv[optind]), NULL))
@@ -75,25 +78,23 @@ static int do_nand(int argc, char *argv[])
 	}
 
 	if (command == NAND_MARKBAD) {
-		if (optind < argc) {
-			int ret = 0, fd;
+		int ret = 0, fd;
 
-			printf("marking block at 0x%08llx on %s as bad\n",
-					badblock, argv[optind]);
+		printf("marking block at 0x%08llx on %s as bad\n",
+				badblock, argv[optind]);
 
-			fd = open(argv[optind], O_RDWR);
-			if (fd < 0) {
-				perror("open");
-				return 1;
-			}
+		fd = open(argv[optind], O_RDWR);
+		if (fd < 0) {
+			perror("open");
+			return 1;
+		}
 
-			ret = ioctl(fd, MEMSETBADBLOCK, &badblock);
-			if (ret)
-				perror("ioctl");
+		ret = ioctl(fd, MEMSETBADBLOCK, &badblock);
+		if (ret)
+			perror("ioctl");
 
-			close(fd);
-			return ret;
-		}
+		close(fd);
+		return ret;
 	}
 
 	return 0;
-- 
1.7.10.4




More information about the barebox mailing list