ubiupdatevol: fix -t to not require an option. Closes 7466
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 25 Sep 2014 20:10:32 +0000 (22:10 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 25 Sep 2014 20:10:32 +0000 (22:10 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/ubi_tools.c

index b7139353269e186978ed4f25154088a714458187..6c09fe534f3e225796524d40baac4c5e059aa469 100644 (file)
@@ -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;