[PATCH] Handle var_uinteger/var_zuinteger and case var_integer/var_zinteger together.

Yao Qi
2012-07-18T12:52:42Z

Hi,
Similar to previous patch, this patch is also to handle case
var_uinteger/var_zuinteger and case var_integer/var_zinteger together.
This change removes some duplicated code, and applies range checking
to the value of var_zuinteger and var_zinteger.

Note that my following patches will check the change of command
option for some purpose, so better to handle these case statements
as together we we can.

gdb:

2012-07-18 Yao Qi <yao@codesourcery.com>

* cli/cli-setshow.c (do_setshow_command): Handle case 'var_uinteger'
and 'var_zuninteger' together. Handle case 'var_integer' and
'var_zinteger' together.
---
gdb/cli/cli-setshow.c | 16 ++++------------
1 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c
index 0f854e5..fabc4d7 100644
--- a/gdb/cli/cli-setshow.c
+++ b/gdb/cli/cli-setshow.c
@@ -267,20 +267,22 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
}
break;
case var_uinteger:
+ case var_zuinteger:
if (arg == NULL)
error_no_arg (_("integer to set it to."));
*(unsigned int *) c->var = parse_and_eval_long (arg);
- if (*(unsigned int *) c->var == 0)
+ if (c->var_type == var_uinteger && *(unsigned int *) c->var == 0)
*(unsigned int *) c->var = UINT_MAX;
break;
case var_integer:
+ case var_zinteger:
{
unsigned int val;

if (arg == NULL)
error_no_arg (_("integer to set it to."));
val = parse_and_eval_long (arg);
- if (val == 0)
+ if (val == 0 && c->var_type == var_integer)
*(int *) c->var = INT_MAX;
else if (val >= INT_MAX)
error (_("integer %u out of range"), val);
@@ -288,16 +290,6 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
*(int *) c->var = val;
break;
}
- case var_zinteger:
- if (arg == NULL)
- error_no_arg (_("integer to set it to."));
- *(int *) c->var = parse_and_eval_long (arg);
- break;
- case var_zuinteger:
- if (arg == NULL)
- error_no_arg (_("integer to set it to."));
- *(unsigned int *) c->var = parse_and_eval_long (arg);
- break;
case var_enum:
{
int i;
--
1.7.7.6