diff options
| author | Rashmica Gupta <rashmica.g@gmail.com> | 2018-09-07 16:40:10 +1000 |
|---|---|---|
| committer | Alistair Popple <alistair@popple.id.au> | 2018-09-12 11:08:42 +1000 |
| commit | 7a4595059753250d400d25d327116e71f50fe069 (patch) | |
| tree | 32ce78a7a4ef36c7094591670169a30a86c43b02 /src | |
| parent | 348c3329b4a5d9feef9994d1cb817800817af3db (diff) | |
| download | pdbg-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.c | 18 | ||||
| -rw-r--r-- | src/parsers.h | 2 |
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); |

