diff options
author | Holger Freyther <zecke@selfish.org> | 2009-02-23 00:50:38 +0000 |
---|---|---|
committer | Holger Freyther <zecke@selfish.org> | 2009-02-23 00:50:38 +0000 |
commit | 59da07bd0eae1fb58f446bfcecbe80c710f401e8 (patch) | |
tree | b130db3ca05ff23b0275dd442253a479b9d93774 /src/gsm_utils.c | |
parent | 73e61c4cd68db450de5a2ad1d0377b40d6429484 (diff) |
[sms] Add test case for the 7-bit coding/decoding...
we don't pass it yet.
Diffstat (limited to 'src/gsm_utils.c')
-rw-r--r-- | src/gsm_utils.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gsm_utils.c b/src/gsm_utils.c index f61b6f294..0811f58c7 100644 --- a/src/gsm_utils.c +++ b/src/gsm_utils.c @@ -44,7 +44,7 @@ char *gsm_7bit_decode(u_int8_t *user_data, u_int8_t length) } /* GSM 03.38 6.2.1 Charachter packing */ -u_int8_t *gsm_7bit_encode(char *data) +u_int8_t *gsm_7bit_encode(const char *data, u_int8_t *out_length) { int i; u_int8_t d_off = 0, b_off = 0; @@ -57,7 +57,8 @@ u_int8_t *gsm_7bit_encode(char *data) u_int8_t second = (data[i] & 0x7f) >> (7 - b_off); result[d_off] |= first; - result[d_off + 1] = second; + if (second != 0) + result[d_off + 1] = second; b_off += 7; @@ -67,5 +68,7 @@ u_int8_t *gsm_7bit_encode(char *data) } } + *out_length = d_off; + return result; } |