[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1] xentrace: adjust exit code for --help option
On 01.06.2023 10:08, Olaf Hering wrote: > Invoking the --help option of any tool should not return with an error, > if that tool does indeed have a documented and implemented help option. > > Adjust the usage() function to exit with either error or success. > Handle the existing entry in the option table to call usage accordingly. > > Adjust the getopt value for help. The char '?' is returned for unknown > options. Returning 'h' instead of '?' makes it allows to handle --help. > > Signed-off-by: Olaf Hering <olaf@xxxxxxxxx> Is this any different from the v1 sent on May 26th? Jan > --- a/tools/xentrace/xentrace.c > +++ b/tools/xentrace/xentrace.c > @@ -807,7 +807,7 @@ static void monitor_tbufs(void) > const char *program_version = "xentrace v1.2"; > const char *program_bug_address = "<mark.a.williamson@xxxxxxxxx>"; > > -static void usage(void) > +static void usage(int status) > { > #define USAGE_STR \ > "Usage: xentrace [OPTION...] [output file]\n" \ > @@ -854,7 +854,7 @@ static void usage(void) > printf(USAGE_STR); > printf("\nReport bugs to %s\n", program_bug_address); > > - exit(EXIT_FAILURE); > + exit(status); > } > > /* convert the argument string pointed to by arg to a long int > representation, > @@ -873,7 +873,7 @@ long sargtol(const char *restrict arg, int base) > { > fprintf(stderr, "Invalid option argument: %s\n", arg); > fprintf(stderr, "Error: %s\n\n", strerror(errno)); > - usage(); > + usage(EXIT_FAILURE); > } > else if (endp == arg) > { > @@ -901,7 +901,7 @@ long sargtol(const char *restrict arg, int base) > > invalid: > fprintf(stderr, "Invalid option argument: %s\n\n", arg); > - usage(); > + usage(EXIT_FAILURE); > return 0; /* not actually reached */ > } > > @@ -917,10 +917,10 @@ static long argtol(const char *restrict arg, int base) > if (errno != 0) { > fprintf(stderr, "Invalid option argument: %s\n", arg); > fprintf(stderr, "Error: %s\n\n", strerror(errno)); > - usage(); > + usage(EXIT_FAILURE); > } else if (endp == arg || *endp != '\0') { > fprintf(stderr, "Invalid option argument: %s\n\n", arg); > - usage(); > + usage(EXIT_FAILURE); > } > > return val; > @@ -1090,7 +1090,7 @@ static void parse_args(int argc, char **argv) > { "discard-buffers", no_argument, 0, 'D' }, > { "dont-disable-tracing", no_argument, 0, 'x' }, > { "start-disabled", no_argument, 0, 'X' }, > - { "help", no_argument, 0, '?' }, > + { "help", no_argument, 0, 'h' }, > { "version", no_argument, 0, 'V' }, > { 0, 0, 0, 0 } > }; > @@ -1144,8 +1144,12 @@ static void parse_args(int argc, char **argv) > opts.memory_buffer = sargtol(optarg, 0); > break; > > + case 'h': > + usage(EXIT_SUCCESS); > + break; > + > default: > - usage(); > + usage(EXIT_FAILURE); > } > } > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |