[git commit] ubiupdatevol: fix -t to not require an option. Closes 7466

Denys Vlasenko vda.linux at googlemail.com
Thu Sep 25 20:10:32 UTC 2014


commit: http://git.busybox.net/busybox/commit/?id=186b98a86f069bb65bf4110e324d75fef98857c0
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 miscutils/ubi_tools.c |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/miscutils/ubi_tools.c b/miscutils/ubi_tools.c
index b713935..6c09fe5 100644
--- a/miscutils/ubi_tools.c
+++ b/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;


More information about the busybox-cvs mailing list