From ee0475543fab82b9ea1348922c2662a8ae172116 Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Tue, 12 Mar 2013 18:50:39 +0000 Subject: * mi/mi-cmds.h (mi_execute_command): Make "cmd" const. * mi/mi-interp.c (mi_interpreter_exec): Make "command" const. Remove temporary copy of input string. (mi_execute_command_wrapper): Make "cmd" const. * mi/mi-main.c (mi_execute_command): Make "string_ptr" const. * mi/mi-parse.c (mi_parse_argv): Make "args" const. Use const strings. (mi_parse): Make "cmd" const. Use const strings. * mi/mi-parse.h (mi_parse): Make "cmd" const. --- gdb/mi/mi-cmds.h | 2 +- gdb/mi/mi-interp.c | 9 +++------ gdb/mi/mi-main.c | 2 +- gdb/mi/mi-parse.c | 41 +++++++++++++++++++++++++---------------- gdb/mi/mi-parse.h | 2 +- 5 files changed, 31 insertions(+), 25 deletions(-) (limited to 'gdb/mi') diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h index 3859a40..fdf6f9c 100644 --- a/gdb/mi/mi-cmds.h +++ b/gdb/mi/mi-cmds.h @@ -157,6 +157,6 @@ extern int mi_debug_p; /* Raw console output - FIXME: should this be a parameter? */ extern struct ui_file *raw_stdout; -extern void mi_execute_command (char *cmd, int from_tty); +extern void mi_execute_command (const char *cmd, int from_tty); #endif diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c index d1fe33c..2702f4f 100644 --- a/gdb/mi/mi-interp.c +++ b/gdb/mi/mi-interp.c @@ -41,7 +41,7 @@ /* These are the interpreter setup, etc. functions for the MI interpreter. */ -static void mi_execute_command_wrapper (char *cmd); +static void mi_execute_command_wrapper (const char *cmd); static void mi_execute_command_input_handler (char *cmd); static void mi_command_loop (int mi_version); @@ -217,10 +217,7 @@ mi_interpreter_suspend (void *data) static struct gdb_exception mi_interpreter_exec (void *data, const char *command) { - char *tmp = alloca (strlen (command) + 1); - - strcpy (tmp, command); - mi_execute_command_wrapper (tmp); + mi_execute_command_wrapper (command); return exception_none; } @@ -309,7 +306,7 @@ mi_interp_query_hook (const char *ctlstr, va_list ap) } static void -mi_execute_command_wrapper (char *cmd) +mi_execute_command_wrapper (const char *cmd) { mi_execute_command (cmd, stdin == instream); } diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 37294e0..20777a3 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -1962,7 +1962,7 @@ mi_print_exception (const char *token, struct gdb_exception exception) } void -mi_execute_command (char *cmd, int from_tty) +mi_execute_command (const char *cmd, int from_tty) { char *token; struct mi_parse *command = NULL; diff --git a/gdb/mi/mi-parse.c b/gdb/mi/mi-parse.c index 407869d..15fb778 100644 --- a/gdb/mi/mi-parse.c +++ b/gdb/mi/mi-parse.c @@ -32,7 +32,7 @@ target char. */ static int -mi_parse_escape (char **string_ptr) +mi_parse_escape (const char **string_ptr) { int c = *(*string_ptr)++; @@ -103,9 +103,9 @@ mi_parse_escape (char **string_ptr) } static void -mi_parse_argv (char *args, struct mi_parse *parse) +mi_parse_argv (const char *args, struct mi_parse *parse) { - char *chp = args; + const char *chp = args; int argc = 0; char **argv = xmalloc ((argc + 1) * sizeof (char *)); @@ -115,7 +115,7 @@ mi_parse_argv (char *args, struct mi_parse *parse) char *arg; /* Skip leading white space. */ - chp = skip_spaces (chp); + chp = skip_spaces_const (chp); /* Three possibilities: EOF, quoted string, or other text. */ switch (*chp) { @@ -127,7 +127,7 @@ mi_parse_argv (char *args, struct mi_parse *parse) { /* A quoted string. */ int len; - char *start = chp + 1; + const char *start = chp + 1; /* Determine the buffer size. */ chp = start; @@ -184,7 +184,7 @@ mi_parse_argv (char *args, struct mi_parse *parse) /* An unquoted string. Accumulate all non-blank characters into a buffer. */ int len; - char *start = chp; + const char *start = chp; while (*chp != '\0' && !isspace (*chp)) { @@ -229,9 +229,9 @@ mi_parse_cleanup (void *arg) } struct mi_parse * -mi_parse (char *cmd, char **token) +mi_parse (const char *cmd, char **token) { - char *chp; + const char *chp; struct mi_parse *parse = XMALLOC (struct mi_parse); struct cleanup *cleanup; @@ -244,7 +244,7 @@ mi_parse (char *cmd, char **token) cleanup = make_cleanup (mi_parse_cleanup, parse); /* Before starting, skip leading white space. */ - cmd = skip_spaces (cmd); + cmd = skip_spaces_const (cmd); /* Find/skip any token and then extract it. */ for (chp = cmd; *chp >= '0' && *chp <= '9'; chp++) @@ -256,7 +256,7 @@ mi_parse (char *cmd, char **token) /* This wasn't a real MI command. Return it as a CLI_COMMAND. */ if (*chp != '-') { - chp = skip_spaces (chp); + chp = skip_spaces_const (chp); parse->command = xstrdup (chp); parse->op = CLI_COMMAND; @@ -267,7 +267,7 @@ mi_parse (char *cmd, char **token) /* Extract the command. */ { - char *tmp = chp + 1; /* discard ``-'' */ + const char *tmp = chp + 1; /* discard ``-'' */ for (; *chp && !isspace (*chp); chp++) ; @@ -282,7 +282,7 @@ mi_parse (char *cmd, char **token) error (_("Undefined MI command: %s"), parse->command); /* Skip white space following the command. */ - chp = skip_spaces (chp); + chp = skip_spaces_const (chp); /* Parse the --thread and --frame options, if present. At present, some important commands, like '-break-*' are implemented by @@ -310,6 +310,8 @@ mi_parse (char *cmd, char **token) } if (strncmp (chp, "--thread-group ", tgs) == 0) { + char *endp; + option = "--thread-group"; if (parse->thread_group != -1) error (_("Duplicate '--thread-group' option")); @@ -317,30 +319,37 @@ mi_parse (char *cmd, char **token) if (*chp != 'i') error (_("Invalid thread group id")); chp += 1; - parse->thread_group = strtol (chp, &chp, 10); + parse->thread_group = strtol (chp, &endp, 10); + chp = endp; } else if (strncmp (chp, "--thread ", ts) == 0) { + char *endp; + option = "--thread"; if (parse->thread != -1) error (_("Duplicate '--thread' option")); chp += ts; - parse->thread = strtol (chp, &chp, 10); + parse->thread = strtol (chp, &endp, 10); + chp = endp; } else if (strncmp (chp, "--frame ", fs) == 0) { + char *endp; + option = "--frame"; if (parse->frame != -1) error (_("Duplicate '--frame' option")); chp += fs; - parse->frame = strtol (chp, &chp, 10); + parse->frame = strtol (chp, &endp, 10); + chp = endp; } else break; if (*chp != '\0' && !isspace (*chp)) error (_("Invalid value for the '%s' option"), option); - chp = skip_spaces (chp); + chp = skip_spaces_const (chp); } /* For new argv commands, attempt to return the parsed argument diff --git a/gdb/mi/mi-parse.h b/gdb/mi/mi-parse.h index 0dd1815..324ae5d 100644 --- a/gdb/mi/mi-parse.h +++ b/gdb/mi/mi-parse.h @@ -60,7 +60,7 @@ struct mi_parse the TOKEN field of the resultant mi_parse object, to be freed by mi_parse_free. */ -extern struct mi_parse *mi_parse (char *cmd, char **token); +extern struct mi_parse *mi_parse (const char *cmd, char **token); /* Free a command returned by mi_parse_command. */ -- cgit v1.1