Am 31.05.2025 um 19:15 hat Michael Tokarev geschrieben:
> Add missing long options and --help output.
> Also add -b short option for --backing-chain, and remove
> now-unused OPTION_BACKING_CHAIN.

I think I wouldn't do this part, -b specifies a backing file name
elsewhere, so this feels a little inconsistent. Adding long options
everywhere is obvious, but overloading short options with more meanings
in different subcommands could be confusing.

> Reorder options for consistency.
> 
> While at it, remove unused option_index variable.
> 
> Signed-off-by: Michael Tokarev <m...@tls.msk.ru>
> ---
>  qemu-img.c | 54 ++++++++++++++++++++++++++++++++++--------------------
>  1 file changed, 34 insertions(+), 20 deletions(-)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index 5858304a62..f0d04a874d 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -65,7 +65,6 @@ typedef struct img_cmd_t {
>  
>  enum {
>      OPTION_OUTPUT = 256,
> -    OPTION_BACKING_CHAIN = 257,
>      OPTION_OBJECT = 258,
>      OPTION_IMAGE_OPTS = 259,
>      OPTION_PATTERN = 260,
> @@ -3217,50 +3216,65 @@ static int img_info(const img_cmd_t *ccmd, int argc, 
> char **argv)
>  
>      fmt = NULL;
>      for(;;) {
> -        int option_index = 0;
>          static const struct option long_options[] = {
>              {"help", no_argument, 0, 'h'},
>              {"format", required_argument, 0, 'f'},
> -            {"output", required_argument, 0, OPTION_OUTPUT},
> -            {"backing-chain", no_argument, 0, OPTION_BACKING_CHAIN},
> -            {"object", required_argument, 0, OPTION_OBJECT},
>              {"image-opts", no_argument, 0, OPTION_IMAGE_OPTS},
> +            {"backing-chain", no_argument, 0, 'b'},
>              {"force-share", no_argument, 0, 'U'},
> +            {"output", required_argument, 0, OPTION_OUTPUT},
> +            {"object", required_argument, 0, OPTION_OBJECT},
>              {0, 0, 0, 0}
>          };
> -        c = getopt_long(argc, argv, ":f:hU",
> -                        long_options, &option_index);
> +        c = getopt_long(argc, argv, "hf:bU",
> +                        long_options, NULL);
>          if (c == -1) {
>              break;
>          }
>          switch(c) {
> -        case ':':
> -            missing_argument(argv[optind - 1]);
> -            break;
> -        case '?':
> -            unrecognized_option(argv[optind - 1]);
> -            break;
>          case 'h':
> -            help();
> +            cmd_help(ccmd, "[-f FMT | --image-opts] [-b] [-U]"
> +"        [--output human|json] [--object OBJDEF] FILE\n"
> +,
> +"  -f, --format FMT\n"
> +"     specify FILE image format explicitly (default: probing is used)\n"
> +"  --image-opts\n"
> +"     treat FILE as an option string (key=value,..), not a file name\n"
> +"     (incompatible with -f|--format)\n"
> +"  -b, --backing-chain\n"
> +"     display information about backing chaing\n"
> +"     in case the image is stacked\n"

s/chaing/chain/

Also no need for the \n in the middle, the whole message fits in 80
characters.

Kevin


Reply via email to