This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 1/2] Use mi_getopt_silent
- From: Pedro Alves <palves at redhat dot com>
- To: Yao Qi <yao at codesourcery dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Mon, 26 Aug 2013 17:22:13 +0100
- Subject: Re: [PATCH 1/2] Use mi_getopt_silent
- Authentication-results: sourceware.org; auth=none
- References: <51FA557F dot 5 at redhat dot com> <1377402123-3740-1-git-send-email-yao at codesourcery dot com> <1377402123-3740-2-git-send-email-yao at codesourcery dot com>
On 08/25/2013 04:42 AM, Yao Qi wrote:
> This patch is to add a new function mi_getopt_silent, which returns -1
> silently (without throwing error) when unknown option is met, and use
> this function to parse options for command '-stack-list-arguments'.
>
> It makes easier to add a new option in patch 2/2.
Thanks! This is OK. A few minor suggestions below.
> 2013-08-24 Yao Qi <yao@codesourcery.com>
>
> * mi/mi-cmd-stack.c (parse_no_frames_option): Remove.
> (mi_cmd_stack_list_args): Use mi_getopt_silent to handle
> options.
> * mi/mi-getopt.c (mi_getopt): Remove.
This "remove" got me confused, and made think it was a
ChangeLog mistake.
> (mi_getopt_1): Renamed from mi_getopt. Add one parameter
> 'error_on_unknown'.
> (mi_getopt): Call mi_getopt_1.
> (mi_getopt_silent): New.
Here's what I suggest:
* mi/mi-getopt.c (mi_getopt): Rename to ...
(mi_getopt_1): ... this. Add parameter 'error_on_unknown'.
(mi_getopt): Reimplement as wrapper around mi_getopt_1.
(mi_getopt_silent): New function.
> * mi/mi-getopt.h (mi_getopt_silent): Declare.
> --- a/gdb/mi/mi-getopt.c
> +++ b/gdb/mi/mi-getopt.c
> @@ -21,11 +21,14 @@
> #include "mi-getopt.h"
> #include "gdb_string.h"
>
> -int
> -mi_getopt (const char *prefix,
> - int argc, char **argv,
> - const struct mi_opt *opts,
> - int *oind, char **oarg)
> +/* See comments about mi_getopt and mi_getopt_silent in mi-getopt.h.
> + When there is an unknown option, if ERROR_ON_UNKNOWN is true, it
> + throws an error, otherwise return -1. */
("throws" -> "returns"). I'd suggest:
If an unknown option is encountered, if ERROR_ON_UNKNOWN is true,
throw an error, otherwise return -1. */
> +
> +static int
> +mi_getopt_1 (const char *prefix, int argc, char **argv,
> + const struct mi_opt *opts, int *oind, char **oarg,
> + int error_on_unknown)
> {
>
> int
> diff --git a/gdb/mi/mi-getopt.h b/gdb/mi/mi-getopt.h
> index 9600353..cabe488 100644
> --- a/gdb/mi/mi-getopt.h
> +++ b/gdb/mi/mi-getopt.h
> @@ -46,11 +46,15 @@ struct mi_opt
> If ARGV[OPTIND] is not an option, -1 is returned and OPTIND updated
> to specify the non-option argument. OPTARG is set to NULL.
>
> - mi_getopt() calls ``error("%s: Unknown option %c", prefix,
> - option)'' if an unknown option is encountered. */
> + If an unknown option is encountered, mi_getopt() calls
> + ``error("%s: Unknown option %c", prefix, option)'' and mi_getopt_silent
> + returns -1. */
I'd suggest s/and/while/.
>
> extern int mi_getopt (const char *prefix, int argc, char **argv,
> const struct mi_opt *opt, int *optind, char **optarg);
> +extern int mi_getopt_silent (const char *prefix, int argc, char **argv,
> + const struct mi_opt *opts, int *oind,
> + char **oarg);
--
Pedro Alves