diff options
author | Denys Vlasenko | 2014-09-25 22:10:32 +0200 |
---|---|---|
committer | Denys Vlasenko | 2014-09-25 22:10:32 +0200 |
commit | 186b98a86f069bb65bf4110e324d75fef98857c0 (patch) | |
tree | 3ef2a680ce89542fa9522fc63c6afe9077bf6233 /miscutils | |
parent | 054f5a5b0d383904e450ca718b1e758ed16baa66 (diff) | |
download | busybox-186b98a86f069bb65bf4110e324d75fef98857c0.zip busybox-186b98a86f069bb65bf4110e324d75fef98857c0.tar.gz |
ubiupdatevol: fix -t to not require an option. Closes 7466
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r-- | 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; |