On Monday 03 June 2013 03:11:10 Paul B. Henson wrote:
> Signed-off-by: Paul B. Henson <[email protected]>
> ---
>  miscutils/ubi_tools.c |   33 ++++++++++++++++++++++++---------
>  1 files changed, 24 insertions(+), 9 deletions(-)
> 
> diff --git a/miscutils/ubi_tools.c b/miscutils/ubi_tools.c
> index f09be8c..6b5d384 100644
> --- a/miscutils/ubi_tools.c
> +++ b/miscutils/ubi_tools.c
> @@ -103,7 +103,8 @@
>  //usage:     "\n     -n VOLID        Volume ID, if not specified, it"
>  //usage:     "\n                     will be assigned automatically"
>  //usage:     "\n     -N NAME         Volume name"
> -//usage:     "\n     -s SIZE         Size in bytes"
> +//usage:     "\n     -s SIZE         Size in bytes, kilobytes (KiB),"
> +//usage:     "\n                     megabytes (MiB), or gigabytes (GiB)"
>  //usage:     "\n     -t TYPE         Volume type (static|dynamic)"
>  //usage:
>  //usage:#define ubirmvol_trivial_usage
> @@ -117,15 +118,23 @@
>  //usage:#define ubirsvol_full_usage "\n\n"
>  //usage:       "Resize UBI volume\n"
>  //usage:     "\n     -n VOLID        Volume ID to resize"
> -//usage:     "\n     -s SIZE         Size in bytes"
> +//usage:     "\n     -s SIZE         Size in bytes, kilobytes (KiB),"
> +//usage:     "\n                     megabytes (MiB), or gigabytes (GiB)"
>  //usage:
>  //usage:#define ubiupdatevol_trivial_usage
>  //usage:       "UBI_DEVICE [IMG_FILE]"
>  //usage:#define ubiupdatevol_full_usage "\n\n"
>  //usage:       "Update UBI volume\n"
>  //usage:     "\n     -t      Truncate UBI volume"
> -//usage:     "\n     -s SIZE Bytes in input (if reading stdin)"
> +//usage:     "\n     -s SIZE Bytes, kilobytes (KiB), megabytes (MiB),"
> +//usage:     "\n             or gigabytes (GiB) in input (if reading stdin)"
>  
> +static const struct suffix_mult size_suffixes[] = {
> +{ "KiB", 1024 },
> +{ "MiB", 1024*1024 },
> +{ "GiB", 1024*1024*1024 },
> +{ "", 0 }
> +};
>  
>  int ubi_tools_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
>  int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
> @@ -138,21 +147,22 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
>       int dev_num = UBI_DEV_NUM_AUTO;
>       int vol_id = UBI_VOL_NUM_AUTO;
>       char *vol_name = NULL;
> +     char *size_str = NULL;
>       int size_bytes;
>       int alignment = 1;
>       char *type = NULL;
>  
>       if (do_mkvol) {
> -             opt_complementary = "-1:d+:n+:s+:a+";
> +             opt_complementary = "-1:d+:n+:a+";
>               opts = getopt32(argv, "md:n:N:s:a:t::",
>                               &dev_num, &vol_id,
> -                             &vol_name, &size_bytes, &alignment, &type
> +                             &vol_name, &size_str, &alignment, &type
>                       );
>       } else {
> -             opt_complementary = "-1:m+:d+:n+:s+:a+";
> +             opt_complementary = "-1:m+:d+:n+:a+";
>               opts = getopt32(argv, "m:d:n:N:s:a:t::",
>                               &mtd_num, &dev_num, &vol_id,
> -                             &vol_name, &size_bytes, &alignment, &type
> +                             &vol_name, &size_str, &alignment, &type
>               );
>       }
>       ubi_ctrl = argv[optind];
> @@ -212,7 +222,9 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
>                       if (size_bytes <= 0)
>                               bb_error_msg_and_die("%s invalid maximum size 
> calculated", "UBI");
>               } else
> -             if (!(opts & OPTION_s))

Will  xstrtou_sfx not die and print an error msg  if !size_str so maybe  
bb_error_msg_and_die 
is not needed.
It should be a getopt32 job to check for missing options and error out and die.

> +             if (opts & OPTION_s)
> +                     size_bytes = xstrtou_sfx(size_str, 10, size_suffixes);
> +             else
>                       bb_error_msg_and_die("%s size not specified", "UBI");
>               if (!(opts & OPTION_N))
>                       bb_error_msg_and_die("%s name not specified", "UBI");
> @@ -245,7 +257,9 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
>       } else
>       if (do_rsvol) {
>               struct ubi_rsvol_req req;
> -             if (!(opts & OPTION_s))

idem

> +             if (opts & OPTION_s)
> +                     size_bytes = xstrtou_sfx(size_str, 10, size_suffixes);
> +             else
>                       bb_error_msg_and_die("%s size not specified", "UBI");
>               if (!(opts & OPTION_n))
>                       bb_error_msg_and_die("%s volume id not specified", 
> "UBI");
> @@ -293,6 +307,7 @@ int ubi_tools_main(int argc UNUSED_PARAM, char **argv)
>                       leb_size = xstrtou(buf, 10);
>  
>                       if (opts & OPTION_s) {
> +                             size_bytes = xstrtou_sfx(size_str, 10, 
> size_suffixes);
>                               input_fd = 0;
>                       } else {
>                               if (!argv[optind+1])
> 

Ciao,
Tito
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to