mirror of https://github.com/xqemu/xqemu.git
Consolidate printing of block driver options
This consolidates the printing of block driver options in print_block_option_help() which is called from both img_create() and img_convert(). This allows for the "?" detection to be done just after the parsing of options and the filename, instead of half way down the codepath of these functions. Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
31ca34b8cc
commit
4ac8aacd95
46
qemu-img.c
46
qemu-img.c
|
@ -188,6 +188,33 @@ static int read_password(char *buf, int buf_size)
|
||||||
}
|
}
|
||||||
#endif
|
#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);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static BlockDriverState *bdrv_new_open(const char *filename,
|
static BlockDriverState *bdrv_new_open(const char *filename,
|
||||||
const char *fmt,
|
const char *fmt,
|
||||||
int flags)
|
int flags)
|
||||||
|
@ -310,6 +337,11 @@ static int img_create(int argc, char **argv)
|
||||||
help();
|
help();
|
||||||
filename = argv[optind++];
|
filename = argv[optind++];
|
||||||
|
|
||||||
|
if (options && !strcmp(options, "?")) {
|
||||||
|
ret = print_block_option_help(filename, fmt);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
/* Find driver and parse its options */
|
/* Find driver and parse its options */
|
||||||
drv = bdrv_find_format(fmt);
|
drv = bdrv_find_format(fmt);
|
||||||
if (!drv) {
|
if (!drv) {
|
||||||
|
@ -328,11 +360,6 @@ static int img_create(int argc, char **argv)
|
||||||
create_options = append_option_parameters(create_options,
|
create_options = append_option_parameters(create_options,
|
||||||
proto_drv->create_options);
|
proto_drv->create_options);
|
||||||
|
|
||||||
if (options && !strcmp(options, "?")) {
|
|
||||||
print_option_help(create_options);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Create parameter list with default values */
|
/* Create parameter list with default values */
|
||||||
param = parse_option_parameters("", create_options, param);
|
param = parse_option_parameters("", create_options, param);
|
||||||
set_option_parameter_int(param, BLOCK_OPT_SIZE, -1);
|
set_option_parameter_int(param, BLOCK_OPT_SIZE, -1);
|
||||||
|
@ -694,6 +721,11 @@ static int img_convert(int argc, char **argv)
|
||||||
|
|
||||||
out_filename = argv[argc - 1];
|
out_filename = argv[argc - 1];
|
||||||
|
|
||||||
|
if (options && !strcmp(options, "?")) {
|
||||||
|
ret = print_block_option_help(out_filename, out_fmt);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (bs_n > 1 && out_baseimg) {
|
if (bs_n > 1 && out_baseimg) {
|
||||||
error("-B makes no sense when concatenating multiple input images");
|
error("-B makes no sense when concatenating multiple input images");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
@ -746,10 +778,6 @@ static int img_convert(int argc, char **argv)
|
||||||
drv->create_options);
|
drv->create_options);
|
||||||
create_options = append_option_parameters(create_options,
|
create_options = append_option_parameters(create_options,
|
||||||
proto_drv->create_options);
|
proto_drv->create_options);
|
||||||
if (options && !strcmp(options, "?")) {
|
|
||||||
print_option_help(create_options);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options) {
|
if (options) {
|
||||||
param = parse_option_parameters(options, create_options, param);
|
param = parse_option_parameters(options, create_options, param);
|
||||||
|
|
Loading…
Reference in New Issue