Hi On Thu, Aug 27, 2015 at 7:07 PM, Laurent Vivier <lviv...@redhat.com> wrote: > As '-help' output is 400 lines long it is not easy > to find information, but generally we know from > which area we want the information. > > As subsections already exist in the help description, > add some command options to only display the wanted > subsection. > > As more is better, this patch adds 13 lines to the -help output: > > -help-standard display standard options > -help-block display block options > -help-usb display usb options > -help-display display display options > -help-machine display machine options > -help-network display network options > -help-character display character options > -help-url display url options > -help-bt display bt options > -help-tpm display tpm options > -help-kernel display kernel options > -help-expert display expert options > -help-object display object options > > Example: > > $ qemu-system-x86_64 -help-kernel > Linux/Multiboot boot specific: > -kernel bzImage use 'bzImage' as kernel image > -append cmdline use 'cmdline' as kernel command line > -initrd file use 'file' as initial ram disk > -dtb file use 'file' as device tree image > > Signed-off-by: Laurent Vivier <lviv...@redhat.com> > --- > v2: simplify the dance of #define/#undef, thanks to Marc-André. > > qemu-options.hx | 150 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- > vl.c | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 280 insertions(+), 4 deletions(-) >
Looks good to me & works fine Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> I would prefer to not have all the --help-* in --help-standard, but that's quite minor. But if you agree, it's perhaps worth the extra effort though thanks > diff --git a/qemu-options.hx b/qemu-options.hx > index 77f5853..49b78df 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -6,17 +6,123 @@ HXCOMM construct option structures, enums and help message > for specified > HXCOMM architectures. > HXCOMM HXCOMM can be used for comments, discarded from both texi and C > > +#if defined(QEMU_HELP_SELECT_STANDARD) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_STANDARD > DEFHEADING(Standard options:) > STEXI > @table @option > ETEXI > > DEF("help", 0, QEMU_OPTION_h, > - "-h or -help display this help and exit\n", QEMU_ARCH_ALL) > + "-h or -help display all help options and exit\n", QEMU_ARCH_ALL) > STEXI > @item -h > @findex -h > -Display help and exit > +Display all help options and exit > +ETEXI > + > +DEF("help-standard", 0, QEMU_OPTION_h_standard, > + "-help-standard display standard options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-standard > +@findex -help-standard > +Display standard options > +ETEXI > + > +DEF("help-block", 0, QEMU_OPTION_h_block, > + "-help-block display block options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-block > +@findex -help-block > +Display block options > +ETEXI > + > +DEF("help-usb", 0, QEMU_OPTION_h_usb, > + "-help-usb display usb options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-usb > +@findex -help-usb > +Display usb options > +ETEXI > + > +DEF("help-display", 0, QEMU_OPTION_h_display, > + "-help-display display display options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-display > +@findex -help-display > +Display display options > +ETEXI > + > +DEF("help-machine", 0, QEMU_OPTION_h_machine, > + "-help-machine display machine options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-machine > +@findex -help-machine > +Display machine options > +ETEXI > + > +DEF("help-network", 0, QEMU_OPTION_h_network, > + "-help-network display network options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-network > +@findex -help-network > +Display network options > +ETEXI > + > +DEF("help-character", 0, QEMU_OPTION_h_character, > + "-help-character display character options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-character > +@findex -help-character > +Display character options > +ETEXI > + > +DEF("help-url", 0, QEMU_OPTION_h_url, > + "-help-url display url options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-url > +@findex -help-url > +Display url options > +ETEXI > + > +DEF("help-bt", 0, QEMU_OPTION_h_bt, > + "-help-bt display bt options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-bt > +@findex -help-bt > +Display bt options > +ETEXI > + > +DEF("help-tpm", 0, QEMU_OPTION_h_tpm, > + "-help-tpm display tpm options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-tpm > +@findex -help-tpm > +Display tpm options > +ETEXI > + > +DEF("help-kernel", 0, QEMU_OPTION_h_kernel, > + "-help-kernel display kernel options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-kernel > +@findex -help-kernel > +Display kernel options > +ETEXI > + > +DEF("help-expert", 0, QEMU_OPTION_h_expert, > + "-help-expert display expert options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-expert > +@findex -help-expert > +Display expert options > +ETEXI > + > +DEF("help-object", 0, QEMU_OPTION_h_object, > + "-help-object display object options\n", QEMU_ARCH_ALL) > +STEXI > +@item -help-object > +@findex -help-object > +Display object options > ETEXI > > DEF("version", 0, QEMU_OPTION_version, > @@ -410,7 +516,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_BLOCK) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_BLOCK > DEFHEADING(Block device options:) > STEXI > @table @option > @@ -798,7 +907,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_USB) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_USB > DEFHEADING(USB options:) > STEXI > @table @option > @@ -862,7 +974,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_DISPLAY) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_DISPLAY > DEFHEADING(Display options:) > STEXI > @table @option > @@ -1329,7 +1444,10 @@ STEXI > @end table > ETEXI > ARCHHEADING(, QEMU_ARCH_I386) > +#endif > > +#if defined(QEMU_HELP_SELECT_MACHINE) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_MACHINE > ARCHHEADING(i386 target only:, QEMU_ARCH_I386) > STEXI > @table @option > @@ -1441,7 +1559,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_NETWORK) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_NETWORK > DEFHEADING(Network options:) > STEXI > @table @option > @@ -1995,7 +2116,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_CHARACTER) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_CHARACTER > DEFHEADING(Character device options:) > STEXI > > @@ -2273,7 +2397,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_URL) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_URL > DEFHEADING(Device URL Syntax:) > STEXI > > @@ -2482,7 +2609,10 @@ ETEXI > STEXI > @end table > ETEXI > +#endif > > +#if defined(QEMU_HELP_SELECT_BT) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_BT > DEFHEADING(Bluetooth(R) options:) > STEXI > @table @option > @@ -2557,7 +2687,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_TPM) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_TPM > #ifdef CONFIG_TPM > DEFHEADING(TPM device options:) > > @@ -2632,7 +2765,10 @@ ETEXI > DEFHEADING() > > #endif > +#endif > > +#if defined(QEMU_HELP_SELECT_KERNEL) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_KERNEL > DEFHEADING(Linux/Multiboot boot specific:) > STEXI > > @@ -2688,7 +2824,10 @@ STEXI > @end table > ETEXI > DEFHEADING() > +#endif > > +#if defined(QEMU_HELP_SELECT_EXPERT) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_EXPERT > DEFHEADING(Debug/Expert options:) > STEXI > @table @option > @@ -3510,7 +3649,7 @@ DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate, > " Output vmstate information in JSON format to file.\n" > " Use the scripts/vmstate-static-checker.py file to\n" > " check for possible regressions in migration code\n" > - " by comparing two such vmstate dumps.", > + " by comparing two such vmstate dumps.\n", > QEMU_ARCH_ALL) > STEXI > @item -dump-vmstate @var{file} > @@ -3518,7 +3657,10 @@ STEXI > Dump json-encoded vmstate information for current machine type to file > in @var{file} > ETEXI > +#endif > > +#if defined(QEMU_HELP_SELECT_OBJECT) || !defined(QEMU_HELP_SELECT) > +#undef QEMU_HELP_SELECT_OBJECT > DEFHEADING(Generic object creation) > > DEF("object", HAS_ARG, QEMU_OPTION_object, > @@ -3571,7 +3713,7 @@ to the RNG daemon. > @end table > > ETEXI > - > +#endif > > HXCOMM This is the last statement. Insert new options before this line! > STEXI > diff --git a/vl.c b/vl.c > index 584ca88..e581dd2 100644 > --- a/vl.c > +++ b/vl.c > @@ -1931,6 +1931,101 @@ static void help(int exitcode) > exit(exitcode); > } > > +#define QEMU_HELP_SELECT > +static void help_standard(int exitcode) > +{ > +#define QEMU_HELP_SELECT_STANDARD > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_block(int exitcode) > +{ > +#define QEMU_HELP_SELECT_BLOCK > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_usb(int exitcode) > +{ > +#define QEMU_HELP_SELECT_USB > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_display(int exitcode) > +{ > +#define QEMU_HELP_SELECT_DISPLAY > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_machine(int exitcode) > +{ > +#define QEMU_HELP_SELECT_MACHINE > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_network(int exitcode) > +{ > +#define QEMU_HELP_SELECT_NETWORK > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_character(int exitcode) > +{ > +#define QEMU_HELP_SELECT_CHARACTER > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_url(int exitcode) > +{ > +#define QEMU_HELP_SELECT_URL > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_bt(int exitcode) > +{ > +#define QEMU_HELP_SELECT_BT > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_tpm(int exitcode) > +{ > +#define QEMU_HELP_SELECT_TPM > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_kernel(int exitcode) > +{ > +#define QEMU_HELP_SELECT_KERNEL > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_expert(int exitcode) > +{ > +#define QEMU_HELP_SELECT_EXPERT > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +static void help_object(int exitcode) > +{ > +#define QEMU_HELP_SELECT_OBJECT > +#define QEMU_OPTIONS_GENERATE_HELP > +#include "qemu-options-wrapper.h" > + exit(exitcode); > +} > +#undef QEMU_HELP_SELECT > + > + > #define HAS_ARG 0x0001 > > typedef struct QEMUOption { > @@ -3318,6 +3413,42 @@ int main(int argc, char **argv, char **envp) > case QEMU_OPTION_h: > help(0); > break; > + case QEMU_OPTION_h_standard: > + help_standard(0); > + break; > + case QEMU_OPTION_h_block: > + help_block(0); > + break; > + case QEMU_OPTION_h_usb: > + help_usb(0); > + break; > + case QEMU_OPTION_h_display: > + help_display(0); > + break; > + case QEMU_OPTION_h_machine: > + help_machine(0); > + break; > + case QEMU_OPTION_h_network: > + help_network(0); > + break; > + case QEMU_OPTION_h_character: > + help_character(0); > + break; > + case QEMU_OPTION_h_url: > + help_url(0); > + break; > + case QEMU_OPTION_h_bt: > + help_bt(0); > + break; > + case QEMU_OPTION_h_kernel: > + help_kernel(0); > + break; > + case QEMU_OPTION_h_expert: > + help_expert(0); > + break; > + case QEMU_OPTION_h_object: > + help_object(0); > + break; > case QEMU_OPTION_version: > version(); > exit(0); > @@ -3330,6 +3461,9 @@ int main(int argc, char **argv, char **envp) > } > break; > #ifdef CONFIG_TPM > + case QEMU_OPTION_h_tpm: > + help_tpm(0); > + break; > case QEMU_OPTION_tpmdev: > if (tpm_config_parse(qemu_find_opts("tpmdev"), optarg) < 0) { > exit(1); > -- > 2.1.0 > -- Marc-André Lureau