FreeCalypso > hg > fc-pcsc-tools
diff libcommon/number_decode.c @ 8:4a9bf783491d
phone number decoding factored out
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 12 Feb 2021 00:07:24 +0000 |
parents | |
children | f5a26c1d0b93 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libcommon/number_decode.c Fri Feb 12 00:07:24 2021 +0000 @@ -0,0 +1,37 @@ +/* + * This module implements functions for decoding phone numbers. + */ + +#include <sys/types.h> + +static char gsm_address_digits[16] = + {'0','1','2','3','4','5','6','7','8','9','*','#','a','b','c','?'}; + +decode_phone_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); +}