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);