diff options
Diffstat (limited to 'src/gsmd/ext_response.c')
-rw-r--r-- | src/gsmd/ext_response.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/gsmd/ext_response.c b/src/gsmd/ext_response.c index 37edf59..f2a94a7 100644 --- a/src/gsmd/ext_response.c +++ b/src/gsmd/ext_response.c @@ -109,16 +109,16 @@ struct gsm_extrsp *extrsp_parse(const void *ctx, const char *input) } break; case TOKEN_NUMERIC: - if (isdigit(*cur)) { - *cur_buf = *cur; - cur_buf++; - } - - if (*cur == ',' || *(cur+1) == '\0') { + if (*cur == ',') { /* end of number */ cur_token->u.numeric = atoi(buf); er->num_tokens++; state = IDLE; + } else if (isdigit(*cur)) { + *cur_buf = *cur; + cur_buf++; + } else { + /* ERORR */ } break; case TOKEN_STRING: @@ -170,6 +170,12 @@ struct gsm_extrsp *extrsp_parse(const void *ctx, const char *input) cur++; } + if (state == TOKEN_NUMERIC) { + /* end of number */ + cur_token->u.numeric = atoi(buf); + er->num_tokens++; + } + //extrsp_dump(er); return er; } |