提交 4ac8aacd 编写于 作者: J Jes Sorensen 提交者: Kevin Wolf

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: NJes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: NKevin Wolf <kwolf@redhat.com>
上级 31ca34b8
...@@ -188,6 +188,33 @@ static int read_password(char *buf, int buf_size) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册