aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/ubi_tools.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/miscutils/ubi_tools.c b/miscutils/ubi_tools.c
index b71393532..6c09fe534 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;