aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli/cli-script.c
diff options
context:
space:
mode:
authorAndrew Stubbs <andrew.stubbs@st.com>2005-11-15 12:03:08 +0000
committerAndrew Stubbs <andrew.stubbs@st.com>2005-11-15 12:03:08 +0000
commitc03c782ff0dad9272576c5099eec29f7c001602c (patch)
tree97c379991a02f1636d104e7de6fb26170e91ee37 /gdb/cli/cli-script.c
parent1637cd900b9f1f05d0a128479bd3484cd98f2811 (diff)
downloadgdb-c03c782ff0dad9272576c5099eec29f7c001602c.zip
gdb-c03c782ff0dad9272576c5099eec29f7c001602c.tar.gz
gdb-c03c782ff0dad9272576c5099eec29f7c001602c.tar.bz2
2005-11-15 Andrew Stubbs <andrew.stubbs@st.com>
* cli/cli-script.c: Include gdb_assert.h. (locate_arg): Detect $argc. (insert_args): Substitute $argc. * Makefile.in (cli-script.o): Add dependency on gdb_assert.h. doc/ * gdb.texinfo (User-defined commands): Add $argc. Add missing 'end'. Change @var{$arg0 to @code{$arg0.
Diffstat (limited to 'gdb/cli/cli-script.c')
-rw-r--r--gdb/cli/cli-script.c40
1 files changed, 32 insertions, 8 deletions
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
index a4da9c5..1a91d2d 100644
--- a/gdb/cli/cli-script.c
+++ b/gdb/cli/cli-script.c
@@ -33,6 +33,7 @@
#include "cli/cli-cmds.h"
#include "cli/cli-decode.h"
#include "cli/cli-script.h"
+#include "gdb_assert.h"
/* Prototypes for local functions */
@@ -572,7 +573,8 @@ locate_arg (char *p)
{
while ((p = strchr (p, '$')))
{
- if (strncmp (p, "$arg", 4) == 0 && isdigit (p[4]))
+ if (strncmp (p, "$arg", 4) == 0
+ && (isdigit (p[4]) || p[4] == 'c'))
return p;
p++;
}
@@ -596,12 +598,20 @@ insert_args (char *line)
len += p - line;
i = p[4] - '0';
- if (i >= user_args->count)
+ if (p[4] == 'c')
+ {
+ /* $argc. Number will be <=10. */
+ len += user_args->count == 10 ? 2 : 1;
+ }
+ else if (i >= user_args->count)
{
error (_("Missing argument %d in user function."), i);
return NULL;
}
- len += user_args->a[i].len;
+ else
+ {
+ len += user_args->a[i].len;
+ }
line = p + 5;
}
@@ -625,13 +635,27 @@ insert_args (char *line)
memcpy (new_line, line, p - line);
new_line += p - line;
- i = p[4] - '0';
- len = user_args->a[i].len;
- if (len)
+ if (p[4] == 'c')
+ {
+ gdb_assert (user_args->count >= 0 && user_args->count <= 10);
+ if (user_args->count == 10)
+ {
+ *(new_line++) = '1';
+ *(new_line++) = '0';
+ }
+ else
+ *(new_line++) = user_args->count + '0';
+ }
+ else
{
- memcpy (new_line, user_args->a[i].arg, len);
- new_line += len;
+ i = p[4] - '0';
+ len = user_args->a[i].len;
+ if (len)
+ {
+ memcpy (new_line, user_args->a[i].arg, len);
+ new_line += len;
+ }
}
line = p + 5;
}