Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}