From 226b07c6be276ec9ca9e4b7c67d2b227d07651df Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 3 Jun 2010 15:35:59 +0000 Subject: [PATCH] Code cleanup --- src/gsm.c | 2 +- src/phone.c | 50 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/gsm.c b/src/gsm.c index fbb6bd2..9bad133 100644 --- a/src/gsm.c +++ b/src/gsm.c @@ -1498,7 +1498,7 @@ static int _gsm_trigger_cmgr(GSM * gsm, char const * result) free(p); p = q; } - *length = l; + gsm->event.message.length = l; gsm->event.message.number = gsm->number; /* XXX ugly */ gsm->event.message.content = p; _gsm_event_send(gsm, GSM_EVENT_TYPE_MESSAGE); diff --git a/src/phone.c b/src/phone.c index 4070195..2df1287 100644 --- a/src/phone.c +++ b/src/phone.c @@ -2300,6 +2300,7 @@ static void _phone_track(Phone * phone, PhoneTrack what, gboolean track) /* callbacks */ /* phone_gsm_event */ static int _gsm_event_error(Phone * phone, GSMEvent * event); +static int _gsm_event_message(Phone * phone, GSMEvent * event); static int _gsm_event_phone_activity(Phone * phone, GSMPhoneActivity activity); static void _on_sim_pin_valid_response(GtkWidget * widget, gint response, gpointer data); @@ -2308,8 +2309,6 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data) { Phone * phone = data; GSMRegistrationReport report; - GSMEncoding encoding; - char * content; #ifdef DEBUG fprintf(stderr, "DEBUG: %s(%d)\n", __func__, event->type); @@ -2374,20 +2373,7 @@ static int _phone_gsm_event(GSMEvent * event, gpointer data) event->incoming_message.index); return 0; case GSM_EVENT_TYPE_MESSAGE: - encoding = event->message.encoding; - if((content = malloc(event->message.length)) == NULL) - return 1; /* XXX report error */ - memcpy(content, event->message.content, - event->message.length); - 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); - free(content); - return 0; + return _gsm_event_message(phone, event); case GSM_EVENT_TYPE_MESSAGE_LIST: _phone_fetch_messages(phone, event->message_list.start, event->message_list.end); @@ -2477,6 +2463,38 @@ static int _gsm_event_error(Phone * phone, GSMEvent * event) return 0; } +static int _gsm_event_message(Phone * phone, GSMEvent * event) +{ + GSMEncoding encoding; + char * content; + size_t length; + + encoding = event->message.encoding; + length = event->message.length; + if((content = malloc(length)) == NULL) + return 1; /* XXX report error */ + memcpy(content, event->message.content, length); + phone_event(phone, PHONE_EVENT_SMS_RECEIVING, &encoding, &content, + &length); + phone_event(phone, PHONE_EVENT_SMS_RECEIVED); + switch(encoding) + { + case GSM_ENCODING_UTF8: + phone_messages_set(phone, event->message.index, + event->message.number, + event->message.date, content); + break; + case GSM_ENCODING_RAW_DATA: + phone_messages_set(phone, event->message.index, + event->message.number, + event->message.date, + "Raw data (not shown)"); + break; + } + free(content); + return 0; +} + static int _gsm_event_phone_activity(Phone * phone, GSMPhoneActivity activity) { switch(activity)