Skip to content
Snippets Groups Projects
Commit 4ac8aacd authored by Jes Sorensen's avatar Jes Sorensen Committed by Kevin Wolf
Browse files

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: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 31ca34b8
No related branches found
No related tags found
No related merge requests found
......@@ -188,6 +188,33 @@ 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);
return 0;
}
static BlockDriverState *bdrv_new_open(const char *filename,
const char *fmt,
int flags)
......@@ -310,6 +337,11 @@ static int img_create(int argc, char **argv)
help();
filename = argv[optind++];
if (options && !strcmp(options, "?")) {
ret = print_block_option_help(filename, fmt);
goto out;
}
/* Find driver and parse its options */
drv = bdrv_find_format(fmt);
if (!drv) {
......@@ -328,11 +360,6 @@ static int img_create(int argc, char **argv)
create_options = append_option_parameters(create_options,
proto_drv->create_options);
if (options && !strcmp(options, "?")) {
print_option_help(create_options);
goto out;
}
/* Create parameter list with default values */
param = parse_option_parameters("", create_options, param);
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];
if (options && !strcmp(options, "?")) {
ret = print_block_option_help(out_filename, out_fmt);
goto out;
}
if (bs_n > 1 && out_baseimg) {
error("-B makes no sense when concatenating multiple input images");
ret = -1;
......@@ -746,10 +778,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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment