2005-11-25 Andrew Stubbs <andrew.stubbs@st.com>

* cli-decode.c (find_command_name_length): New function.
	(lookup_cmd_1): Replace loop reading command name with
	find_command_name_length().
	(lookup_cmd): Likewise.
	(lookup_cmd_composition): Likewise.
This commit is contained in:
Andrew Stubbs 2005-11-25 11:45:49 +00:00
parent b251bf6fa6
commit 3386243e48
2 changed files with 50 additions and 47 deletions

View File

@ -1,3 +1,11 @@
2005-11-25 Andrew Stubbs <andrew.stubbs@st.com>
* cli-decode.c (find_command_name_length): New function.
(lookup_cmd_1): Replace loop reading command name with
find_command_name_length().
(lookup_cmd): Likewise.
(lookup_cmd_composition): Likewise.
2005-11-25 Frederic Riss <frederic.riss@st.com>
* dwarf2-frame.c: (execute_cfa_program): Don't access past the

View File

@ -977,6 +977,31 @@ find_cmd (char *command, int len, struct cmd_list_element *clist,
return found;
}
static int
find_command_name_length (const char *text)
{
const char *p = text;
/* Treating underscores as part of command words is important
so that "set args_foo()" doesn't get interpreted as
"set args _foo()". */
/* Some characters are only used for TUI specific commands. However, they
are always allowed for the sake of consistency.
The XDB compatibility characters are only allowed when using the right
mode because they clash with other GDB commands - specifically '/' is
used as a suffix for print, examine and display.
Note that this is larger than the character set allowed when creating
user-defined commands. */
while (isalnum (*p) || *p == '-' || *p == '_' ||
/* Characters used by TUI specific commands. */
*p == '+' || *p == '<' || *p == '>' || *p == '$' ||
/* Characters used for XDB compatibility. */
(xdb_commands && (*p == '!' || *p == '/' || *p == '?')))
p++;
return p - text;
}
/* This routine takes a line of TEXT and a CLIST in which to start the
lookup. When it returns it will have incremented the text pointer past
the section of text it matched, set *RESULT_LIST to point to the list in
@ -1017,7 +1042,7 @@ struct cmd_list_element *
lookup_cmd_1 (char **text, struct cmd_list_element *clist,
struct cmd_list_element **result_list, int ignore_help_classes)
{
char *p, *command;
char *command;
int len, tmp, nfound;
struct cmd_list_element *found, *c;
char *line = *text;
@ -1025,27 +1050,13 @@ lookup_cmd_1 (char **text, struct cmd_list_element *clist,
while (**text == ' ' || **text == '\t')
(*text)++;
/* Treating underscores as part of command words is important
so that "set args_foo()" doesn't get interpreted as
"set args _foo()". */
/* NOTE: cagney/2003-02-13 The `tui_active' was previously
`tui_version'. */
for (p = *text;
*p && (isalnum (*p) || *p == '-' || *p == '_' ||
#if defined(TUI)
(tui_active &&
(*p == '+' || *p == '<' || *p == '>' || *p == '$')) ||
#endif
(xdb_commands && (*p == '!' || *p == '/' || *p == '?')));
p++)
;
/* Identify the name of the command. */
len = find_command_name_length (*text);
/* If nothing but whitespace, return 0. */
if (p == *text)
if (len == 0)
return 0;
len = p - *text;
/* *text and p now bracket the first command word to lookup (and
it's length is len). We copy this into a local temporary */
@ -1092,7 +1103,7 @@ lookup_cmd_1 (char **text, struct cmd_list_element *clist,
/* We've matched something on this list. Move text pointer forward. */
*text = p;
*text += len;
if (found->cmd_pointer)
{
@ -1194,14 +1205,12 @@ lookup_cmd (char **line, struct cmd_list_element *list, char *cmdtype,
error (_("Lack of needed %scommand"), cmdtype);
else
{
char *p = *line, *q;
char *q;
int len = find_command_name_length (*line);
while (isalnum (*p) || *p == '-')
p++;
q = (char *) alloca (p - *line + 1);
strncpy (q, *line, p - *line);
q[p - *line] = '\0';
q = (char *) alloca (len + 1);
strncpy (q, *line, len);
q[len] = '\0';
undef_cmd_error (cmdtype, q);
}
}
@ -1379,7 +1388,7 @@ lookup_cmd_composition (char *text,
struct cmd_list_element **prefix_cmd,
struct cmd_list_element **cmd)
{
char *p, *command;
char *command;
int len, tmp, nfound;
struct cmd_list_element *cur_list;
struct cmd_list_element *prev_cmd;
@ -1399,28 +1408,14 @@ lookup_cmd_composition (char *text,
while (*text == ' ' || *text == '\t')
(text)++;
/* Treating underscores as part of command words is important
so that "set args_foo()" doesn't get interpreted as
"set args _foo()". */
/* NOTE: cagney/2003-02-13 The `tui_active' was previously
`tui_version'. */
for (p = text;
*p && (isalnum (*p) || *p == '-' || *p == '_' ||
#if defined(TUI)
(tui_active &&
(*p == '+' || *p == '<' || *p == '>' || *p == '$')) ||
#endif
(xdb_commands && (*p == '!' || *p == '/' || *p == '?')));
p++)
;
/* Identify the name of the command. */
len = find_command_name_length (text);
/* If nothing but whitespace, return. */
if (p == text)
return 0;
if (len == 0)
return 0;
len = p - text;
/* text and p now bracket the first command word to lookup (and
/* text is the start of the first command word to lookup (and
it's length is len). We copy this into a local temporary */
command = (char *) alloca (len + 1);
@ -1473,7 +1468,7 @@ lookup_cmd_composition (char *text,
else
return 1;
text = p;
text += len;
}
}