From 9f925b3620efbc88b31d6e651b3306a0b980e810 Mon Sep 17 00:00:00 2001 From: Andrzej Zaborowski Date: Mon, 7 Jun 2010 12:08:32 +0200 Subject: util: Add a "sim string" encoding utility. --- src/simutil.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'src/simutil.c') 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; } -- cgit v1.2.3