static int ois_append_sm_text(char *raw, const Msg *msg) { int udhlen7, udhlen8; int msglen7, msglen8; int len; SAY(3, "ois_append_sm_text"); if (msg->sms.coding == DC_7BIT || msg->sms.coding == DC_UNDEF) { charset_utf8_to_gsm(msg->sms.udhdata); charset_utf8_to_gsm(msg->sms.msgdata); } /* calculate lengths */ udhlen8 = octstr_len(msg->sms.udhdata); msglen8 = octstr_len(msg->sms.msgdata); udhlen7 = udhlen8; msglen7 = msglen8; len = udhlen8 + msglen8; /* copy text */ raw[0] = (char) (len); raw[1] = (char) (udhlen7 + msglen7); memcpy(&raw[2], octstr_get_cstr(msg->sms.udhdata), udhlen8); memcpy(&raw[2+udhlen8], octstr_get_cstr(msg->sms.msgdata), msglen8); IOTRACE("encoding", &raw[2], len); return 2 + len; }
int main(int argc, char **argv) { Octstr *os1, *os2; gwlib_init(); os1 = octstr_create(""); octstr_append_from_hex(os1, "411810124550421715161a"); os2 = octstr_duplicate(os1); debug("", 0, "Orginal GSM charset data:"); octstr_dump(os1, 0); charset_gsm_to_utf8(os1); debug("", 0, "Same data mapped to URT-8 charset:"); octstr_dump(os1, 0); charset_utf8_to_gsm(os1); debug("", 0, "Same data mapped back again to GSM charset:"); octstr_dump(os1, 0); if (octstr_compare(os1, os2) != 0) panic(0, "Data is not the same after re-mapping!"); else debug("",0,"Data is same, ok."); octstr_destroy(os1); octstr_destroy(os2); gwlib_shutdown(); return 0; }