static PyTypeObject cmdpy_object_type;
-
/* Constants used by this module. */
static PyObject *invoke_cst;
static PyObject *complete_cst;
}
/* Called by gdb for command completion. */
+
static char **
cmdpy_completer (struct cmd_list_element *command, char *text, char *word)
{
/* Helper for cmdpy_init which locates the command list to use and
pulls out the command name.
- TEXT is the command name list. The final word in the list is the
+ NAME is the command name list. The final word in the list is the
name of the new command. All earlier words must be existing prefix
commands.
This function returns the xmalloc()d name of the new command. On
error sets the Python error and returns NULL. */
+
char *
-gdbpy_parse_command_name (char *text,
+gdbpy_parse_command_name (const char *name,
struct cmd_list_element ***base_list,
struct cmd_list_element **start_list)
{
struct cmd_list_element *elt;
- int len = strlen (text);
+ int len = strlen (name);
int i, lastchar;
- char *prefix_text;
+ char *prefix_text, *prefix_text2;
char *result;
/* Skip trailing whitespace. */
- for (i = len - 1; i >= 0 && (text[i] == ' ' || text[i] == '\t'); --i)
+ for (i = len - 1; i >= 0 && (name[i] == ' ' || name[i] == '\t'); --i)
;
if (i < 0)
{
lastchar = i;
/* Find first character of the final word. */
- for (; i > 0 && (isalnum (text[i - 1])
- || text[i - 1] == '-'
- || text[i - 1] == '_');
+ for (; i > 0 && (isalnum (name[i - 1])
+ || name[i - 1] == '-'
+ || name[i - 1] == '_');
--i)
;
result = xmalloc (lastchar - i + 2);
- memcpy (result, &text[i], lastchar - i + 1);
+ memcpy (result, &name[i], lastchar - i + 1);
result[lastchar - i + 1] = '\0';
/* Skip whitespace again. */
- for (--i; i >= 0 && (text[i] == ' ' || text[i] == '\t'); --i)
+ for (--i; i >= 0 && (name[i] == ' ' || name[i] == '\t'); --i)
;
if (i < 0)
{
}
prefix_text = xmalloc (i + 2);
- memcpy (prefix_text, text, i + 1);
+ memcpy (prefix_text, name, i + 1);
prefix_text[i + 1] = '\0';
- text = prefix_text;
- elt = lookup_cmd_1 (&text, *start_list, NULL, 1);
+ prefix_text2 = prefix_text;
+ elt = lookup_cmd_1 (&prefix_text2, *start_list, NULL, 1);
if (!elt || elt == (struct cmd_list_element *) -1)
{
PyErr_Format (PyExc_RuntimeError, _("Could not find command prefix %s."),
If PREFIX is True, then this command is a prefix command.
The documentation for the command is taken from the doc string for
- the python class.
-
-*/
+ the python class. */
+
static int
cmdpy_init (PyObject *self, PyObject *args, PyObject *kw)
{
cmdpy_object *obj = (cmdpy_object *) self;
const char *name;
- char *copy;
int cmdtype;
int completetype = -1;
char *docstring = NULL;
return -1;
}
- copy = xstrdup (name);
- cmd_name = gdbpy_parse_command_name (copy, &cmd_list, &cmdlist);
- xfree (copy);
+ cmd_name = gdbpy_parse_command_name (name, &cmd_list, &cmdlist);
if (! cmd_name)
return -1;
\f
/* Initialize the 'commands' code. */
+
void
gdbpy_initialize_commands (void)
{
{
parmpy_object *obj = (parmpy_object *) self;
const char *name;
- char *copy;
char *set_doc, *show_doc, *doc;
char *cmd_name;
int parmclass, cmdtype;
obj->type = (enum var_types) parmclass;
memset (&obj->value, 0, sizeof (obj->value));
- copy = xstrdup (name);
- cmd_name = gdbpy_parse_command_name (copy, &set_list,
+ cmd_name = gdbpy_parse_command_name (name, &set_list,
&setlist);
if (! cmd_name)
- {
- xfree (copy);
- return -1;
- }
+ return -1;
xfree (cmd_name);
- cmd_name = gdbpy_parse_command_name (copy, &show_list,
+ cmd_name = gdbpy_parse_command_name (name, &show_list,
&showlist);
if (! cmd_name)
return -1;
- xfree (copy);
set_doc = get_doc_string (self, set_doc_cst);
show_doc = get_doc_string (self, show_doc_cst);