diff options
Diffstat (limited to 'gdb/cli/cli-setshow.c')
-rw-r--r-- | gdb/cli/cli-setshow.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c index 89e095a..9d8cb2e 100644 --- a/gdb/cli/cli-setshow.c +++ b/gdb/cli/cli-setshow.c @@ -379,6 +379,26 @@ do_set_command (char *arg, int from_tty, struct cmd_list_element *c) } } break; + case var_zuinteger_unlimited: + { + LONGEST val; + + if (arg == NULL) + error_no_arg (_("integer to set it to.")); + val = parse_and_eval_long (arg); + + if (val >= INT_MAX) + error (_("integer %s out of range"), plongest (val)); + else if (val < -1) + error (_("only -1 is allowed to set as unlimited")); + + if (*(int *) c->var != val) + { + *(int *) c->var = val; + option_changed = 1; + } + } + break; default: error (_("gdb internal error: bad var_type in do_setshow_command")); } @@ -478,6 +498,7 @@ do_set_command (char *arg, int from_tty, struct cmd_list_element *c) break; case var_integer: case var_zinteger: + case var_zuinteger_unlimited: { char s[64]; @@ -562,7 +583,14 @@ do_show_command (char *arg, int from_tty, struct cmd_list_element *c) else fprintf_filtered (stb, "%d", *(int *) c->var); break; - + case var_zuinteger_unlimited: + { + if (*(int *) c->var == -1) + fputs_filtered ("unlimited", stb); + else + fprintf_filtered (stb, "%u", *(int *) c->var); + } + break; default: error (_("gdb internal error: bad var_type in do_show_command")); } |