Hi Denis,
On 16/07/2012 02:49, Denis Kenzior wrote:
Hi Guillaume,
On 07/16/2012 09:34 AM, Guillaume Zajac wrote:
> ---
> 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.
> + */
What version of 23.038 are you using? I cannot find such wording in R9
or R10 specs.
It is not the exact wording, I have just rephrased the comment.
The exact wording it just below the GSM 7 bits default alphabet
extension table in section 6.2.1.1
Generally, do you prefer having an exact extract of the 3GPP spec or
just an explanation of what is happening?
> 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);
Regards,
-Denis
Kind regards,
Guillaume