diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2010-06-07 12:08:32 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-06-09 12:43:27 -0500 |
commit | 9f925b3620efbc88b31d6e651b3306a0b980e810 (patch) | |
tree | 9554aab9b9ec1237cc6c997033b752c0edd8614d /src/simutil.c | |
parent | 6120e487b5d8cc946ea35a68cdda2a3897adde68 (diff) | |
download | ofono-9f925b3620efbc88b31d6e651b3306a0b980e810.tar.bz2 |
util: Add a "sim string" encoding utility.
Diffstat (limited to 'src/simutil.c')
-rw-r--r-- | src/simutil.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/simutil.c b/src/simutil.c index f980bf69..7291729e 100644 --- a/src/simutil.c +++ b/src/simutil.c @@ -1232,29 +1232,24 @@ void sim_adn_build(unsigned char *data, int length, const char *identifier) { int number_len = strlen(ph->number); - unsigned char *gsm_identifier = NULL; - long gsm_bytes; - long alpha_length; + unsigned char *alpha = NULL; + int alpha_written = 0; + int alpha_length; alpha_length = length - 14; /* Alpha-Identifier field */ if (alpha_length > 0) { - memset(data, 0xff, alpha_length); - if (identifier) - gsm_identifier = convert_utf8_to_gsm(identifier, - -1, NULL, &gsm_bytes, 0); - - if (gsm_identifier) { - memcpy(data, gsm_identifier, - MIN(gsm_bytes, alpha_length)); - g_free(gsm_identifier); + alpha = utf8_to_sim_string(identifier, alpha_length, + &alpha_written); + if (alpha) { + memcpy(data, alpha, alpha_written); + g_free(alpha); } - /* TODO: figure out when the identifier needs to - * be encoded in UCS2 and do this. - */ + memset(data + alpha_written, 0xff, + alpha_length - alpha_written); data += alpha_length; } |