aboutsummaryrefslogtreecommitdiffstats
path: root/src/gsm_utils.c
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2009-02-23 00:50:38 +0000
committerHolger Freyther <zecke@selfish.org>2009-02-23 00:50:38 +0000
commit59da07bd0eae1fb58f446bfcecbe80c710f401e8 (patch)
treeb130db3ca05ff23b0275dd442253a479b9d93774 /src/gsm_utils.c
parent73e61c4cd68db450de5a2ad1d0377b40d6429484 (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.c7
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;
}