From fbecdf8628de8763ac2ffdd6d0222f454c81bfb9 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Tue, 1 Jun 2010 23:46:49 +0000 Subject: [PATCH] Now able to report the encoding of an incoming message --- src/gsm.c | 4 +++- src/gsm.h | 3 ++- src/phone.c | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gsm.c b/src/gsm.c index d6fcff1..b735a5c 100644 --- a/src/gsm.c +++ b/src/gsm.c @@ -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); diff --git a/src/gsm.h b/src/gsm.h index 7783746..b20afd4 100644 --- a/src/gsm.h +++ b/src/gsm.h @@ -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; diff --git a/src/phone.c b/src/phone.c index 0c1f0d5..d4fa89b 100644 --- a/src/phone.c +++ b/src/phone.c @@ -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);