Am 27.09.2024 um 08:11 hat Michael Tokarev geschrieben: > Add missing long options and --help output. > > Signed-off-by: Michael Tokarev <m...@tls.msk.ru> > --- > qemu-img.c | 38 ++++++++++++++++++++++++++++++-------- > 1 file changed, 30 insertions(+), 8 deletions(-) > > diff --git a/qemu-img.c b/qemu-img.c > index 08536553c7..1bd88fcf63 100644 > --- a/qemu-img.c > +++ b/qemu-img.c > @@ -805,7 +805,9 @@ static int img_check(const img_cmd_t *ccmd, int argc, > char **argv) > int option_index = 0; > static const struct option long_options[] = { > {"help", no_argument, 0, 'h'}, > + {"quiet", no_argument, 0, 'q'}, > {"format", required_argument, 0, 'f'}, > + {"cache", required_argument, 0, 'T'}, > {"repair", required_argument, 0, 'r'}, > {"output", required_argument, 0, OPTION_OUTPUT}, > {"object", required_argument, 0, OPTION_OBJECT}, > @@ -813,20 +815,38 @@ static int img_check(const img_cmd_t *ccmd, int argc, > char **argv) > {"force-share", no_argument, 0, 'U'}, > {0, 0, 0, 0} > }; > - c = getopt_long(argc, argv, ":hf:r:T:qU", > + c = getopt_long(argc, argv, "hf:r:T:qU", > long_options, &option_index); > 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] [-T CACHE_MODE] [-r] [-u]\n" > +" [--output human|json] [--object OBJDEF] FILENAME\n" > +, > +" -q, --quiet\n" > +" quiet operations\n"
Let's keep the help text more in line with the terminology used in the man page, even if shorter at times. I would use the first sentence from it here: "Quiet mode - do not print any output (except errors)" > +" -f, --format FMT\n" > +" specifies format of the image explicitly\n" Maybe "format of the image (default: probing is used)"? > +" --image-opts\n" > +" indicates that FILENAME is a complete image specification\n" > +" instead of a file name (incompatible with --format)\n" The man page has: Indicates that the source *FILENAME* parameter is to be interpreted as a full option string, not a plain filename. This parameter is mutually exclusive with the *-f* parameter. A possible adaptation for qemu-img check specially: indicates that FILENAME is a full option string, not a plain filename (incompatible with --format) > +" -T, --cache CACHE_MODE\n" > +" image cache mode (" BDRV_DEFAULT_CACHE ")\n" +" image cache mode (default: " BDRV_DEFAULT_CACHE ")\n" > +" -U, --force-share\n" > +" open image in shared mode for concurrent access\n" > +" --output human|json\n" > +" output format\n" > +" -r, --repair leaks|all\n" > +" repair particular aspect of the image\n" "repair errors of the given category in the image"? > +" (image will be open in read-write mode, incompatible with > --force-share)\n" > +" --object OBJDEF\n" > +" QEMU user-creatable object (eg encryption key)\n" "e.g." > +" FILENAME\n" > +" the image file (or image specification) to operate on\n" To keep consistency with the above suggestion: "(or option string)" > +); > break; > case 'f': > fmt = optarg; > @@ -861,6 +881,8 @@ static int img_check(const img_cmd_t *ccmd, int argc, > char **argv) > case OPTION_IMAGE_OPTS: > image_opts = true; > break; > + default: > + tryhelp(argv[0]); > } > } > if (optind != argc - 1) { Kevin