From 9b690aad40a3c39e9e46fc26beb0e3f43af6a997 Mon Sep 17 00:00:00 2001 From: Guillaume Lucas Date: Thu, 25 Nov 2010 16:15:04 +0000 Subject: [PATCH] stkutil: Use sms_dcs_decode in decode_text This is a much more pedantic version that can be used to retrieve the text character set. --- src/stkutil.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/stkutil.c b/src/stkutil.c index 377ceff0..78efbf0b 100644 --- a/src/stkutil.c +++ b/src/stkutil.c @@ -77,9 +77,13 @@ struct gsm_sms_tpdu { static char *decode_text(unsigned char dcs, int len, const unsigned char *data) { char *utf8; + enum sms_charset charset; - switch (dcs) { - case 0x00: + if (!sms_dcs_decode(dcs, NULL, &charset, NULL, NULL)) + return NULL; + + switch (charset) { + case SMS_CHARSET_7BIT: { long written; unsigned long max_to_unpack = len * 8 / 7; @@ -94,10 +98,10 @@ static char *decode_text(unsigned char dcs, int len, const unsigned char *data) g_free(unpacked); break; } - case 0x04: + case SMS_CHARSET_8BIT: utf8 = convert_gsm_to_utf8(data, len, NULL, NULL, 0); break; - case 0x08: + case SMS_CHARSET_UCS2: utf8 = g_convert((const gchar *) data, len, "UTF-8//TRANSLIT", "UCS-2BE", NULL, NULL, NULL);