Now able to report the encoding of an incoming message

This commit is contained in:
Pierre Pronchery 2010-06-01 23:46:49 +00:00
parent 5988a39a43
commit fbecdf8628
3 changed files with 7 additions and 3 deletions

View File

@ -635,10 +635,10 @@ int gsm_event(GSM * gsm, GSMEventType type, ...)
unsigned int);
break;
case GSM_EVENT_TYPE_MESSAGE:
/* FIXME implement correctly */
event->message.index = va_arg(ap, unsigned int);
event->message.number = va_arg(ap, char const *);
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.content = va_arg(ap, char const *);
break;
@ -1459,6 +1459,7 @@ static int _gsm_trigger_cmgr(GSM * gsm, char const * result)
/* message content */
if(*length == 0) /* XXX assumes this is text mode */
{
gsm->event.message.encoding = GSM_ENCODING_UTF8;
gsm->event.message.content = result;
*length = strlen(result);
_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 */
gsm->event.message.number = gsm->number; /* XXX ugly */
gsm->event.message.encoding = GSM_ENCODING_UTF8;
gsm->event.message.content = p;
_gsm_event_send(gsm, GSM_EVENT_TYPE_MESSAGE);
free(p);

View File

@ -259,7 +259,8 @@ typedef union _GSMEvent
unsigned int index;
char const * number;
time_t date;
unsigned int length; /* XXX may be removed */
GSMEncoding encoding;
unsigned int length;
char const * content;
} message;

View File

@ -2371,7 +2371,7 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data)
event->incoming_message.index);
return 0;
case GSM_EVENT_TYPE_MESSAGE:
encoding = PHONE_ENCODING_UTF8; /* XXX may not be */
encoding = event->message.encoding;
if((content = malloc(event->message.length)) == NULL)
return 1; /* XXX report error */
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,
&content, &event->message.length);
phone_event(phone, PHONE_EVENT_SMS_RECEIVED);
/* FIXME may be unsuitable (eg not UTF-8...) */
phone_messages_set(phone, event->message.index,
event->message.number,
event->message.date, content);