Now able to report the encoding of an incoming message
This commit is contained in:
parent
5988a39a43
commit
fbecdf8628
@ -635,10 +635,10 @@ int gsm_event(GSM * gsm, GSMEventType type, ...)
|
|||||||
unsigned int);
|
unsigned int);
|
||||||
break;
|
break;
|
||||||
case GSM_EVENT_TYPE_MESSAGE:
|
case GSM_EVENT_TYPE_MESSAGE:
|
||||||
/* FIXME implement correctly */
|
|
||||||
event->message.index = va_arg(ap, unsigned int);
|
event->message.index = va_arg(ap, unsigned int);
|
||||||
event->message.number = va_arg(ap, char const *);
|
event->message.number = va_arg(ap, char const *);
|
||||||
event->message.date = va_arg(ap, time_t);
|
event->message.date = va_arg(ap, time_t);
|
||||||
|
event->message.encoding = va_arg(ap, GSMEncoding);
|
||||||
event->message.length = va_arg(ap, unsigned int);
|
event->message.length = va_arg(ap, unsigned int);
|
||||||
event->message.content = va_arg(ap, char const *);
|
event->message.content = va_arg(ap, char const *);
|
||||||
break;
|
break;
|
||||||
@ -1459,6 +1459,7 @@ static int _gsm_trigger_cmgr(GSM * gsm, char const * result)
|
|||||||
/* message content */
|
/* message content */
|
||||||
if(*length == 0) /* XXX assumes this is text mode */
|
if(*length == 0) /* XXX assumes this is text mode */
|
||||||
{
|
{
|
||||||
|
gsm->event.message.encoding = GSM_ENCODING_UTF8;
|
||||||
gsm->event.message.content = result;
|
gsm->event.message.content = result;
|
||||||
*length = strlen(result);
|
*length = strlen(result);
|
||||||
_gsm_event_send(gsm, GSM_EVENT_TYPE_MESSAGE);
|
_gsm_event_send(gsm, GSM_EVENT_TYPE_MESSAGE);
|
||||||
@ -1478,6 +1479,7 @@ static int _gsm_trigger_cmgr(GSM * gsm, char const * result)
|
|||||||
}
|
}
|
||||||
*length = strlen(p); /* XXX should not be necessary */
|
*length = strlen(p); /* XXX should not be necessary */
|
||||||
gsm->event.message.number = gsm->number; /* XXX ugly */
|
gsm->event.message.number = gsm->number; /* XXX ugly */
|
||||||
|
gsm->event.message.encoding = GSM_ENCODING_UTF8;
|
||||||
gsm->event.message.content = p;
|
gsm->event.message.content = p;
|
||||||
_gsm_event_send(gsm, GSM_EVENT_TYPE_MESSAGE);
|
_gsm_event_send(gsm, GSM_EVENT_TYPE_MESSAGE);
|
||||||
free(p);
|
free(p);
|
||||||
|
@ -259,7 +259,8 @@ typedef union _GSMEvent
|
|||||||
unsigned int index;
|
unsigned int index;
|
||||||
char const * number;
|
char const * number;
|
||||||
time_t date;
|
time_t date;
|
||||||
unsigned int length; /* XXX may be removed */
|
GSMEncoding encoding;
|
||||||
|
unsigned int length;
|
||||||
char const * content;
|
char const * content;
|
||||||
} message;
|
} message;
|
||||||
|
|
||||||
|
@ -2371,7 +2371,7 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data)
|
|||||||
event->incoming_message.index);
|
event->incoming_message.index);
|
||||||
return 0;
|
return 0;
|
||||||
case GSM_EVENT_TYPE_MESSAGE:
|
case GSM_EVENT_TYPE_MESSAGE:
|
||||||
encoding = PHONE_ENCODING_UTF8; /* XXX may not be */
|
encoding = event->message.encoding;
|
||||||
if((content = malloc(event->message.length)) == NULL)
|
if((content = malloc(event->message.length)) == NULL)
|
||||||
return 1; /* XXX report error */
|
return 1; /* XXX report error */
|
||||||
memcpy(content, event->message.content,
|
memcpy(content, event->message.content,
|
||||||
@ -2379,6 +2379,7 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data)
|
|||||||
phone_event(phone, PHONE_EVENT_SMS_RECEIVING, &encoding,
|
phone_event(phone, PHONE_EVENT_SMS_RECEIVING, &encoding,
|
||||||
&content, &event->message.length);
|
&content, &event->message.length);
|
||||||
phone_event(phone, PHONE_EVENT_SMS_RECEIVED);
|
phone_event(phone, PHONE_EVENT_SMS_RECEIVED);
|
||||||
|
/* FIXME may be unsuitable (eg not UTF-8...) */
|
||||||
phone_messages_set(phone, event->message.index,
|
phone_messages_set(phone, event->message.index,
|
||||||
event->message.number,
|
event->message.number,
|
||||||
event->message.date, content);
|
event->message.date, content);
|
||||||
|
Loading…
Reference in New Issue
Block a user