summaryrefslogtreecommitdiffstats
path: root/src/simutil.c
diff options
context:
space:
mode:
authorAndrzej Zaborowski <andrew.zaborowski@intel.com>2010-06-07 12:08:32 +0200
committerDenis Kenzior <denkenz@gmail.com>2010-06-09 12:43:27 -0500
commit9f925b3620efbc88b31d6e651b3306a0b980e810 (patch)
tree9554aab9b9ec1237cc6c997033b752c0edd8614d /src/simutil.c
parent6120e487b5d8cc946ea35a68cdda2a3897adde68 (diff)
downloadofono-9f925b3620efbc88b31d6e651b3306a0b980e810.tar.bz2
util: Add a "sim string" encoding utility.
Diffstat (limited to 'src/simutil.c')
-rw-r--r--src/simutil.c25
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;
}