diff options
author | Denis Kenzior <denis.kenzior@intel.com> | 2009-08-31 14:24:48 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2009-08-31 15:12:37 -0500 |
commit | a96fde13622fe4408f5da452a4e9c7dfeea6415b (patch) | |
tree | 7609d1b098d7ddf4612972068de561b19bac89b4 /src/simutil.c | |
parent | 7ecebc9a3182e7d37a0284f19e2d80a965c8a470 (diff) | |
download | ofono-a96fde13622fe4408f5da452a4e9c7dfeea6415b.tar.bz2 |
Simplify overly complicated code
Diffstat (limited to 'src/simutil.c')
-rw-r--r-- | src/simutil.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/simutil.c b/src/simutil.c index 9c8b44bf..a73f96b5 100644 --- a/src/simutil.c +++ b/src/simutil.c @@ -407,38 +407,38 @@ gboolean sim_adn_parse(const unsigned char *data, int length, { int number_len; int ton_npi; + const unsigned char *alpha; + int alpha_length; if (length < 14) return FALSE; - /* Alpha-Identifier field */ - if (identifier) { - if (length > 14) - *identifier = sim_string_to_utf8(data, length - 14); - else - *identifier = NULL; - } - data += length - 14; + alpha = data; + alpha_length = length - 14; + + data += alpha_length; number_len = *data++; ton_npi = *data++; - if (number_len > 11 || ton_npi == 0xff) { - if (identifier && *identifier) { - g_free(*identifier); - *identifier = NULL; - } - + if (number_len > 11 || ton_npi == 0xff) return FALSE; - } ph->type = ton_npi; /* BCD coded, however the TON/NPI is given by the first byte */ number_len -= 1; - extract_bcd_number(data, number_len, ph->number); + if (identifier == NULL) + return TRUE; + + /* Alpha-Identifier field */ + if (alpha_length > 0) + *identifier = sim_string_to_utf8(alpha, alpha_length); + else + *identifier = NULL; + return TRUE; } |