qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver option


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options
Date: Fri, 3 Dec 2010 10:57:15 +0000

On Thu, Dec 2, 2010 at 5:46 PM,  <address@hidden> wrote:
> @@ -188,6 +188,32 @@ static int read_password(char *buf, int buf_size)
>  }
>  #endif
>
> +static int print_block_option_help(const char *filename, const char *fmt)
> +{
> +    BlockDriver *drv, *proto_drv;
> +    QEMUOptionParameter *create_options = NULL;
> +
> +    /* Find driver and parse its options */
> +    drv = bdrv_find_format(fmt);
> +    if (!drv) {
> +        error("Unknown file format '%s'", fmt);
> +        return 1;
> +    }
> +
> +    proto_drv = bdrv_find_protocol(filename);
> +    if (!proto_drv) {
> +        error("Unknown protocol '%s'", filename);
> +        return 1;
> +    }
> +
> +    create_options = append_option_parameters(create_options,
> +                                              drv->create_options);
> +    create_options = append_option_parameters(create_options,
> +                                              proto_drv->create_options);
> +    print_option_help(create_options);

free_option_parameters(create_options);

> @@ -694,6 +720,11 @@ static int img_convert(int argc, char **argv)
>
>     out_filename = argv[argc - 1];
>
> +    if (options && !strcmp(options, "?")) {
> +        ret = print_block_option_help(out_filename, out_fmt);
> +        goto out2;
> +    }
> +
>     if (bs_n > 1 && out_baseimg) {
>         error("-B makes no sense when concatenating multiple input images");
>         return 1;
> @@ -749,10 +780,6 @@ static int img_convert(int argc, char **argv)
>                                               drv->create_options);
>     create_options = append_option_parameters(create_options,
>                                               proto_drv->create_options);
> -    if (options && !strcmp(options, "?")) {
> -        print_option_help(create_options);
> -        goto out;
> -    }
>
>     if (options) {
>         param = parse_option_parameters(options, create_options, param);
> @@ -984,6 +1011,7 @@ out:
>         }
>     }
>     free(bs);
> +out2:

Not needed, out is fine.  All those free functions are nops on NULL pointers.

Even simpler would be to just return early instead of jumping to a
label.  The other checks at the top of the function also do that.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]