This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/2] Use mi_getopt_silent


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]