Browse Source

ubiupdatevol: fix -t to not require an option. Closes 7466

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko 9 years ago
parent
commit
186b98a86f
1 changed files with 14 additions and 9 deletions
  1. 14 9
      miscutils/ubi_tools.c

+ 14 - 9
miscutils/ubi_tools.c

@@ -125,12 +125,24 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
 	strcpy(path, "/sys/class/ubi/ubi");
 	memset(&req_structs, 0, sizeof(req_structs));
 
+#define OPTION_m  (1 << 0)
+#define OPTION_d  (1 << 1)
+#define OPTION_n  (1 << 2)
+#define OPTION_N  (1 << 3)
+#define OPTION_s  (1 << 4)
+#define OPTION_a  (1 << 5)
+#define OPTION_t  (1 << 6)
 	if (do_mkvol) {
 		opt_complementary = "-1:d+:n+:a+";
 		opts = getopt32(argv, "md:n:N:s:a:t:",
 				&dev_num, &vol_id,
 				&vol_name, &size_bytes_str, &alignment, &type
 			);
+	} else
+	if (do_update) {
+		opt_complementary = "-1";
+		opts = getopt32(argv, "s:at", &size_bytes_str);
+		opts *= OPTION_s;
 	} else {
 		opt_complementary = "-1:m+:d+:n+:a+";
 		opts = getopt32(argv, "m:d:n:N:s:a:t:",
@@ -138,13 +150,6 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
 				&vol_name, &size_bytes_str, &alignment, &type
 		);
 	}
-#define OPTION_m  (1 << 0)
-#define OPTION_d  (1 << 1)
-#define OPTION_n  (1 << 2)
-#define OPTION_N  (1 << 3)
-#define OPTION_s  (1 << 4)
-#define OPTION_a  (1 << 5)
-#define OPTION_t  (1 << 6)
 
 	if (opts & OPTION_s)
 		size_bytes = xatoull_sfx(size_bytes_str, size_suffixes);
@@ -302,9 +307,9 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
 			if (!(opts & OPTION_s)) {
 				if (!*argv)
 					bb_show_usage();
-				xstat(*argv, &st);
-				size_bytes = st.st_size;
 				xmove_fd(xopen(*argv, O_RDONLY), STDIN_FILENO);
+				xfstat(STDIN_FILENO, &st, *argv);
+				size_bytes = st.st_size;
 			}
 
 			bytes64 = size_bytes;