aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gsm_04_11.c
diff options
context:
space:
mode:
authorDaniel Willmann <daniel@totalueberwachung.de>2009-08-13 03:39:07 +0200
committerHarald Welte (local) <laflocal@hanuman.gnumonks.org>2009-08-13 16:35:00 +0200
commit9aef14547a721e96193e65be0a60eb94b34eb476 (patch)
tree3411a5f45c4d17a93bbb99274dfca9b0d17c3c17 /openbsc/src/gsm_04_11.c
parent58c83d8368c22a25f0bd8482cc031297c1bbcb4c (diff)
Beautify septet->octet calculation (do not use ceil)
Diffstat (limited to 'openbsc/src/gsm_04_11.c')
-rw-r--r--openbsc/src/gsm_04_11.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c
index 246847bf2..e1b417a86 100644
--- a/openbsc/src/gsm_04_11.c
+++ b/openbsc/src/gsm_04_11.c
@@ -276,6 +276,7 @@ static int gsm340_gen_tpdu(struct msgb *msg, struct gsm_sms *sms)
u_int8_t *smsp;
u_int8_t oa[12]; /* max len per 03.40 */
u_int8_t oa_len = 0;
+ u_int8_t octet_len;
unsigned int old_msg_len = msg->len;
/* generate first octet with masked bits */
@@ -321,10 +322,13 @@ static int gsm340_gen_tpdu(struct msgb *msg, struct gsm_sms *sms)
/* generate TP-UD */
/* FIXME: Handle DSC of UCS2 or 8/bit default */
if (gsm338_get_sms_alphabet(sms->data_coding_scheme) == DCS_7BIT_DEFAULT) {
+ octet_len = sms->user_data_len*7/8;
+ if (sms->user_data_len*7%8 != 0)
+ octet_len++;
/* Warning, user_data_len indicates the amount of septets
* (characters), we need amount of octets occupied */
- smsp = msgb_put(msg, ceil(sms->user_data_len*7/8.0));
- memcpy(smsp, sms->user_data, ceil(sms->user_data_len*7/8.0));
+ smsp = msgb_put(msg, octet_len);
+ memcpy(smsp, sms->user_data, octet_len);
}
return msg->len - old_msg_len;