Miscellaneous mke2fs cleanup

Reorder some mke2fs arg parsing to be more alphabetical, and remove
use of atoi() (which doesn't report errors) in favour of strtoul().

Signed-off-by: Andreas Dilger <adilger@clusterfs.com>


diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index d50733e..acdb842 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -976,7 +976,7 @@
 	}
 
 	while ((c = getopt (argc, argv,
-		    "b:cE:f:g:i:jl:m:no:qr:R:s:tvI:J:ST:FL:M:N:O:V")) != EOF) {
+		    "b:cf:g:i:jl:m:no:qr:s:tvE:FI:J:L:M:N:O:R:ST:V")) != EOF) {
 		switch (c) {
 		case 'b':
 			blocksize = strtol(optarg, &tmp, 0);
@@ -1072,8 +1072,16 @@
 		case 'o':
 			creator_os = optarg;
 			break;
+		case 'q':
+			quiet = 1;
+			break;
 		case 'r':
-			param.s_rev_level = atoi(optarg);
+			param.s_rev_level = strtoul(optarg, &tmp, 0);
+			if (*tmp) {
+				com_err(program_name, 0,
+					_("bad revision level - %s"), optarg);
+				exit(1);
+			}
 			if (param.s_rev_level == EXT2_GOOD_OLD_REV) {
 				param.s_feature_incompat = 0;
 				param.s_feature_compat = 0;
@@ -1098,15 +1106,9 @@
 			}
 			break;
 #endif
-		case 'N':
-			num_inodes = atoi(optarg);
-			break;
 		case 'v':
 			verbose = 1;
 			break;
-		case 'q':
-			quiet = 1;
-			break;
 		case 'F':
 			force = 1;
 			break;
@@ -1116,6 +1118,14 @@
 		case 'M':
 			mount_dir = optarg;
 			break;
+		case 'N':
+			num_inodes = strtoul(optarg, &tmp, 0);
+			if (*tmp) {
+				com_err(program_name, 0,
+					_("bad num inodes - %s"), optarg);
+					exit(1);
+			}
+			break;
 		case 'O':
 			if (!strcmp(optarg, "none")) {
 				param.s_feature_compat = 0;