All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] util: Fix GSM to UTF8 conversion mechanism
@ 2012-07-16 14:34 Guillaume Zajac
  2012-07-16  0:49 ` Denis Kenzior
  2012-07-17  3:53 ` Denis Kenzior
  0 siblings, 2 replies; 9+ messages in thread
From: Guillaume Zajac @ 2012-07-16 14:34 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1316 bytes --]

---
 src/util.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/util.c b/src/util.c
index aecc790..41ef3d4 100644
--- a/src/util.c
+++ b/src/util.c
@@ -628,8 +628,16 @@ char *convert_gsm_to_utf8_with_lang(const unsigned char *text, long len,
 
 			c = gsm_single_shift_lookup(&t, text[i]);
 
+			/*
+			 * According to the 3GPP specifications 23.038
+			 * section 6.2.1.1:
+			 * In the case there is no character in the extension
+			 * table, the character of the main default alphabet
+			 * table or the character from the National Language
+			 * Locking Shift Table should be displayed.
+			 */
 			if (c == GUND)
-				goto error;
+				c = gsm_locking_shift_lookup(&t, text[i]);
 		} else {
 			c = gsm_locking_shift_lookup(&t, text[i]);
 		}
@@ -647,9 +655,12 @@ char *convert_gsm_to_utf8_with_lang(const unsigned char *text, long len,
 	while (out < res + res_length) {
 		unsigned short c;
 
-		if (text[i] == 0x1b)
+		if (text[i] == 0x1b) {
 			c = gsm_single_shift_lookup(&t, text[++i]);
-		else
+			/* See 3GPP 23.038 section 6.2.1.1 */
+			if (c == GUND)
+				c = gsm_locking_shift_lookup(&t, text[i]);
+		} else
 			c = gsm_locking_shift_lookup(&t, text[i]);
 
 		out += g_unichar_to_utf8(c, out);
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-07-18 13:54 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-16 14:34 [PATCH] util: Fix GSM to UTF8 conversion mechanism Guillaume Zajac
2012-07-16  0:49 ` Denis Kenzior
2012-07-17  8:41   ` Guillaume Zajac
2012-07-17  2:09     ` Denis Kenzior
2012-07-18  8:06       ` Guillaume Zajac
2012-07-18 12:31         ` Marcel Holtmann
2012-07-18 13:54           ` Guillaume Zajac
2012-07-17 18:14             ` Denis Kenzior
2012-07-17  3:53 ` Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.