summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRashmica Gupta <rashmica.g@gmail.com>2018-09-07 16:40:10 +1000
committerAlistair Popple <alistair@popple.id.au>2018-09-12 11:08:42 +1000
commit7a4595059753250d400d25d327116e71f50fe069 (patch)
tree32ce78a7a4ef36c7094591670169a30a86c43b02 /src
parent348c3329b4a5d9feef9994d1cb817800817af3db (diff)
downloadpdbg-7a4595059753250d400d25d327116e71f50fe069.tar.gz
pdbg-7a4595059753250d400d25d327116e71f50fe069.zip
pdbg: Add in parser for uint16_t
Signed-off-by: Rashmica Gupta <rashmica.g@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/parsers.c18
-rw-r--r--src/parsers.h2
2 files changed, 20 insertions, 0 deletions
diff --git a/src/parsers.c b/src/parsers.c
index 6cbe06d..868c383 100644
--- a/src/parsers.c
+++ b/src/parsers.c
@@ -37,6 +37,24 @@ uint32_t *parse_number32(const char *argv)
return n;
}
+uint16_t *parse_number16(const char *argv)
+{
+ unsigned long long tmp;
+ uint16_t *n = malloc(sizeof(*n));
+ char *endptr;
+
+ if (!argv)
+ return NULL;
+
+ errno = 0;
+ tmp = strtoul(argv, &endptr, 0);
+ if (errno || *endptr != '\0' || tmp > UINT16_MAX)
+ return NULL;
+
+ *n = tmp;
+ return n;
+}
+
/* Parse a GPR number, returning an error if it's greater than 32 */
int *parse_gpr(const char *argv)
{
diff --git a/src/parsers.h b/src/parsers.h
index b5f23cf..935c242 100644
--- a/src/parsers.h
+++ b/src/parsers.h
@@ -8,12 +8,14 @@
#define ADDRESS32 (parse_number32, NULL)
#define DATA (parse_number64, NULL)
#define DATA32 (parse_number32, NULL)
+#define DATA16 (parse_number16, NULL)
#define DEFAULT_DATA(default) (parse_number64, default)
#define GPR (parse_gpr, NULL)
#define SPR (parse_spr, NULL)
uint64_t *parse_number64(const char *argv);
uint32_t *parse_number32(const char *argv);
+uint16_t *parse_number16(const char *argv);
int *parse_gpr(const char *argv);
int *parse_spr(const char *argv);
bool *parse_flag_noarg(const char *argv);
OpenPOWER on IntegriCloud