FreeCalypso > hg > fc-pcsc-tools
diff simtool/pbdump.c @ 8:4a9bf783491d
phone number decoding factored out
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 12 Feb 2021 00:07:24 +0000 |
parents | ce189c97b7b1 |
children | dc565e91069d |
line wrap: on
line diff
--- a/simtool/pbdump.c Thu Feb 11 23:56:13 2021 +0000 +++ b/simtool/pbdump.c Fri Feb 12 00:07:24 2021 +0000 @@ -10,39 +10,6 @@ #include "simresp.h" #include "curfile.h" -static char gsm_address_digits[16] = - {'0','1','2','3','4','5','6','7','8','9','*','#','a','b','c','?'}; - -static -decode_number(data, nbytes, out) - u_char *data; - unsigned nbytes; - char *out; -{ - u_char *dp, *endp; - int c; - - dp = data; - endp = data + nbytes; - while (dp < endp) { - c = *dp & 0xF; - if (c == 0xF) - return(-1); - *out++ = gsm_address_digits[c]; - c = *dp >> 4; - if (c == 0xF) { - if (dp + 1 == endp) - break; - else - return(-1); - } - *out++ = gsm_address_digits[c]; - dp++; - } - *out = '\0'; - return(0); -} - static check_blank_area(dp, endp) u_char *dp, *endp; @@ -77,7 +44,7 @@ fixp = sim_resp_data + sim_resp_data_len - 14; if (fixp[0] < 2 || fixp[0] > 11) goto malformed; - rc = decode_number(fixp + 2, fixp[0] - 1, digits); + rc = decode_phone_number(fixp + 2, fixp[0] - 1, digits); if (rc < 0) goto malformed; rc = check_blank_area(fixp + 1 + fixp[0], fixp + 12);