summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-07-13 18:19:06 -0500
committerDenis Kenzior <denkenz@gmail.com>2009-07-14 15:45:05 -0500
commit0fd50806304018485f64f27caf051444904a7ae0 (patch)
tree0a0fd590a3644de94fd8fa379e5240679c24a7dd /src
parentf5e9b2147ad1e89d48564bb140d0ad3483c023a5 (diff)
downloadofono-0fd50806304018485f64f27caf051444904a7ae0.tar.bz2
Fix parsing of mcc_mnc code
The digits above 0-9 were not handled correctly
Diffstat (limited to 'src')
-rw-r--r--src/simutil.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/simutil.c b/src/simutil.c
index 57d040b4..465b8f34 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -165,26 +165,26 @@ void sim_pnn_operator_free(struct sim_pnn_operator *oper)
static void parse_mcc_mnc(const guint8 *bcd, char *mcc, char *mnc)
{
+ static const char digit_lut[] = "0123456789*#abd\0";
guint8 digit;
digit = (bcd[0] >> 0) & 0xf;
- if (digit != 0xf)
- *mcc ++ = '0' + digit;
+ *mcc++ = digit_lut[digit];
+
digit = (bcd[0] >> 4) & 0xf;
- if (digit != 0xf)
- *mcc ++ = '0' + digit;
+ *mcc++ = digit_lut[digit];
+
digit = (bcd[1] >> 0) & 0xf;
- if (digit != 0xf)
- *mcc ++ = '0' + digit;
+ *mcc++ = digit_lut[digit];
+
digit = (bcd[2] >> 0) & 0xf;
- if (digit != 0xf)
- *mnc ++ = '0' + digit;
+ *mnc++ = digit_lut[digit];
+
digit = (bcd[2] >> 4) & 0xf;
- if (digit != 0xf)
- *mnc ++ = '0' + digit;
+ *mnc++ = digit_lut[digit];
+
digit = (bcd[1] >> 4) & 0xf;
- if (digit != 0xf)
- *mnc ++ = '0' + digit;
+ *mnc++ = digit_lut[digit];
}
static gint spdi_operator_compare(gconstpointer a, gconstpointer b)