* [PATCH 1/3] sim: Watch for changes to relevant SIM files.
@ 2011-02-19 3:54 Andrzej Zaborowski
2011-02-19 3:54 ` [PATCH 2/3] message-waiting: " Andrzej Zaborowski
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Andrzej Zaborowski @ 2011-02-19 3:54 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 9843 bytes --]
---
src/sim.c | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 157 insertions(+), 13 deletions(-)
diff --git a/src/sim.c b/src/sim.c
index c39269d..c33fcd5 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -58,6 +58,7 @@ struct ofono_sim {
char **language_prefs;
unsigned char *efli;
unsigned char efli_length;
+ gboolean language_prefs_update;
enum ofono_sim_password_type pin_type;
gboolean locked_pins[OFONO_SIM_PASSWORD_SIM_PUK]; /* Number of PINs */
@@ -97,8 +98,10 @@ struct ofono_sim {
struct sim_fs *simfs;
struct ofono_sim_context *context;
+ struct ofono_sim_context *early_context;
unsigned char *iidf_image;
+ unsigned int *iidf_watch_ids;
DBusMessage *pending;
const struct ofono_sim_driver *driver;
@@ -928,6 +931,11 @@ static void sim_iidf_read_cb(int ok, int length, int record,
sim_iidf_read_clut_cb, sim);
}
+static void sim_image_data_changed(int id, void *userdata)
+{
+ /* TODO: notify D-bus clients */
+}
+
static void sim_get_image(struct ofono_sim *sim, unsigned char id,
gpointer user_data)
{
@@ -941,7 +949,7 @@ static void sim_get_image(struct ofono_sim *sim, unsigned char id,
if (image != NULL) {
sim_get_image_cb(sim, id, image, FALSE);
- return;
+ goto watch;
}
if (sim->efimg_length <= (id * 9)) {
@@ -958,6 +966,17 @@ static void sim_get_image(struct ofono_sim *sim, unsigned char id,
/* read the image data */
ofono_sim_read_bytes(sim->context, iidf_id, iidf_offset, iidf_len,
sim_iidf_read_cb, sim);
+
+watch:
+ if (sim->efimg_length <= id * 9)
+ return;
+
+ if (sim->iidf_watch_ids[id] > 0)
+ return;
+
+ sim->iidf_watch_ids[id] = ofono_sim_add_file_watch(sim->context,
+ iidf_id, sim_image_data_changed,
+ sim, NULL);
}
static DBusMessage *sim_get_icon(DBusConnection *conn,
@@ -1197,10 +1216,12 @@ out:
check:
/* All records retrieved */
if (sim->service_numbers) {
- char **service_numbers;
-
sim->service_numbers = g_slist_reverse(sim->service_numbers);
sim->sdn_ready = TRUE;
+ }
+
+ if (sim->sdn_ready) {
+ char **service_numbers;
service_numbers = get_service_numbers(sim->service_numbers);
@@ -1213,6 +1234,21 @@ check:
}
}
+static void sim_service_numbers_changed(int id, void *userdata)
+{
+ struct ofono_sim *sim = userdata;
+
+ if (sim->service_numbers) {
+ g_slist_foreach(sim->service_numbers,
+ (GFunc)service_number_free, NULL);
+ g_slist_free(sim->service_numbers);
+ sim->service_numbers = NULL;
+ }
+
+ ofono_sim_read(sim->context, SIM_EFSDN_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_FIXED, sim_sdn_read_cb, sim);
+}
+
static void sim_own_numbers_update(struct ofono_sim *sim)
{
ofono_sim_read(sim->context, SIM_EFMSISDN_FILEID,
@@ -1220,6 +1256,13 @@ static void sim_own_numbers_update(struct ofono_sim *sim)
sim);
}
+static void sim_own_numbers_changed(int id, void *userdata)
+{
+ struct ofono_sim *sim = userdata;
+
+ sim_own_numbers_update(sim);
+}
+
static void sim_efimg_read_cb(int ok, int length, int record,
const unsigned char *data,
int record_length, void *userdata)
@@ -1247,6 +1290,11 @@ static void sim_efimg_read_cb(int ok, int length, int record,
if (sim->efimg == NULL)
return;
+ sim->iidf_watch_ids = g_try_new0(unsigned int, num_records);
+
+ if (sim->iidf_watch_ids == NULL)
+ return;
+
sim->efimg_length = num_records * 9;
}
@@ -1261,6 +1309,33 @@ static void sim_efimg_read_cb(int ok, int length, int record,
memcpy(efimg, &data[1], 9);
}
+static void sim_efimg_changed(int id, void *userdata)
+{
+ struct ofono_sim *sim = userdata;
+ int i, watch;
+
+ if (sim->efimg != NULL) {
+ for (i = sim->efimg_length / 9 - 1; i >= 0; i--) {
+ watch = sim->iidf_watch_ids[i];
+ if (watch == 0)
+ continue;
+
+ ofono_sim_remove_file_watch(sim->context, watch);
+ }
+
+ g_free(sim->efimg);
+ sim->efimg = NULL;
+ sim->efimg_length = 0;
+ g_free(sim->iidf_watch_ids);
+ sim->iidf_watch_ids = NULL;
+ }
+
+ ofono_sim_read(sim->context, SIM_EFIMG_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_FIXED, sim_efimg_read_cb, sim);
+
+ /* TODO: notify D-bus clients */
+}
+
static void sim_ready(enum ofono_sim_state new_state, void *user)
{
struct ofono_sim *sim = user;
@@ -1269,11 +1344,18 @@ static void sim_ready(enum ofono_sim_state new_state, void *user)
return;
sim_own_numbers_update(sim);
+ ofono_sim_add_file_watch(sim->context, SIM_EFMSISDN_FILEID,
+ sim_own_numbers_changed, sim, NULL);
ofono_sim_read(sim->context, SIM_EFSDN_FILEID,
OFONO_SIM_FILE_STRUCTURE_FIXED, sim_sdn_read_cb, sim);
+ ofono_sim_add_file_watch(sim->context, SIM_EFSDN_FILEID,
+ sim_service_numbers_changed, sim, NULL);
+
ofono_sim_read(sim->context, SIM_EFIMG_FILEID,
OFONO_SIM_FILE_STRUCTURE_FIXED, sim_efimg_read_cb, sim);
+ ofono_sim_add_file_watch(sim->context, SIM_EFIMG_FILEID,
+ sim_efimg_changed, sim, NULL);
}
static void sim_set_ready(struct ofono_sim *sim)
@@ -1846,7 +1928,15 @@ skip_efpl:
DBUS_TYPE_STRING,
&sim->language_prefs);
- sim_pin_check(sim);
+ /* Proceed with sim initialization if we're not merely updating */
+ if (!sim->language_prefs_update) {
+ if (sim->context == NULL)
+ sim->context = ofono_sim_context_create(sim);
+
+ sim_pin_check(sim);
+ }
+
+ sim->language_prefs_update = FALSE;
}
static void sim_iccid_read_cb(int ok, int length, int record,
@@ -1872,6 +1962,43 @@ static void sim_iccid_read_cb(int ok, int length, int record,
&sim->iccid);
}
+static void sim_iccid_changed(int id, void *userdata)
+{
+ struct ofono_sim *sim = userdata;
+
+ if (sim->iccid) {
+ g_free(sim->iccid);
+ sim->iccid = NULL;
+ }
+
+ ofono_sim_read(sim->early_context, SIM_EF_ICCID_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
+ sim_iccid_read_cb, sim);
+}
+
+static void sim_efli_efpl_changed(int id, void *userdata)
+{
+ struct ofono_sim *sim = userdata;
+
+ if (sim->efli != NULL) /* This shouldn't happen */
+ return;
+
+ if (sim->language_prefs) {
+ g_strfreev(sim->language_prefs);
+ sim->language_prefs = NULL;
+ }
+
+ sim->language_prefs_update = TRUE;
+
+ ofono_sim_read(sim->early_context, SIM_EFLI_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
+ sim_efli_read_cb, sim);
+
+ ofono_sim_read(sim->early_context, SIM_EFPL_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
+ sim_efpl_read_cb, sim);
+}
+
static void sim_initialize(struct ofono_sim *sim)
{
/*
@@ -1900,10 +2027,15 @@ static void sim_initialize(struct ofono_sim *sim)
* in the EFust
*/
+ if (sim->early_context == NULL)
+ sim->early_context = ofono_sim_context_create(sim);
+
/* Grab the EFiccid which is always available */
- ofono_sim_read(sim->context, SIM_EF_ICCID_FILEID,
+ ofono_sim_read(sim->early_context, SIM_EF_ICCID_FILEID,
OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
sim_iccid_read_cb, sim);
+ ofono_sim_add_file_watch(sim->early_context, SIM_EF_ICCID_FILEID,
+ sim_iccid_changed, sim, NULL);
/* EFecc is read by the voicecall atom */
@@ -1915,12 +2047,17 @@ static void sim_initialize(struct ofono_sim *sim)
* However we don't depend on the user interface and so
* need to read both files now.
*/
- ofono_sim_read(sim->context, SIM_EFLI_FILEID,
+ ofono_sim_read(sim->early_context, SIM_EFLI_FILEID,
OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
sim_efli_read_cb, sim);
- ofono_sim_read(sim->context, SIM_EFPL_FILEID,
+ ofono_sim_add_file_watch(sim->early_context, SIM_EFLI_FILEID,
+ sim_efli_efpl_changed, sim, NULL);
+
+ ofono_sim_read(sim->early_context, SIM_EFPL_FILEID,
OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
sim_efpl_read_cb, sim);
+ ofono_sim_add_file_watch(sim->early_context, SIM_EFPL_FILEID,
+ sim_efli_efpl_changed, sim, NULL);
}
struct ofono_sim_context *ofono_sim_context_create(struct ofono_sim *sim)
@@ -2069,6 +2206,11 @@ static void sim_free_early_state(struct ofono_sim *sim)
g_strfreev(sim->language_prefs);
sim->language_prefs = NULL;
}
+
+ if (sim->early_context) {
+ ofono_sim_context_free(sim->early_context);
+ sim->early_context = NULL;
+ }
}
static void sim_free_main_state(struct ofono_sim *sim)
@@ -2092,6 +2234,7 @@ static void sim_free_main_state(struct ofono_sim *sim)
(GFunc)service_number_free, NULL);
g_slist_free(sim->service_numbers);
sim->service_numbers = NULL;
+ sim->sdn_ready = FALSE;
}
if (sim->efust) {
@@ -2118,6 +2261,8 @@ static void sim_free_main_state(struct ofono_sim *sim)
g_free(sim->efimg);
sim->efimg = NULL;
sim->efimg_length = 0;
+ g_free(sim->iidf_watch_ids);
+ sim->iidf_watch_ids = NULL;
}
g_free(sim->iidf_image);
@@ -2125,6 +2270,11 @@ static void sim_free_main_state(struct ofono_sim *sim)
sim->fixed_dialing = FALSE;
sim->barred_dialing = FALSE;
+
+ if (sim->context) {
+ ofono_sim_context_free(sim->context);
+ sim->context = NULL;
+ }
}
static void sim_free_state(struct ofono_sim *sim)
@@ -2304,11 +2454,6 @@ static void sim_remove(struct ofono_atom *atom)
sim_free_state(sim);
- if (sim->context) {
- ofono_sim_context_free(sim->context);
- sim->context = NULL;
- }
-
sim_fs_free(sim->simfs);
sim->simfs = NULL;
@@ -2374,7 +2519,6 @@ void ofono_sim_register(struct ofono_sim *sim)
ofono_modem_add_interface(modem, OFONO_SIM_MANAGER_INTERFACE);
sim->state_watches = __ofono_watchlist_new(g_free);
sim->simfs = sim_fs_new(sim, sim->driver);
- sim->context = ofono_sim_context_create(sim);
__ofono_atom_register(sim->atom, sim_unregister);
--
1.7.1.86.g0e460.dirty
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 2/3] message-waiting: Watch for changes to relevant SIM files.
2011-02-19 3:54 [PATCH 1/3] sim: Watch for changes to relevant SIM files Andrzej Zaborowski
@ 2011-02-19 3:54 ` Andrzej Zaborowski
2011-03-16 2:24 ` Denis Kenzior
2011-02-19 3:54 ` [PATCH 3/3] call-forwarding: " Andrzej Zaborowski
2011-03-16 2:24 ` [PATCH 1/3] sim: " Denis Kenzior
2 siblings, 1 reply; 6+ messages in thread
From: Andrzej Zaborowski @ 2011-02-19 3:54 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 4746 bytes --]
---
src/message-waiting.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 91 insertions(+), 1 deletions(-)
diff --git a/src/message-waiting.c b/src/message-waiting.c
index 72cf582..ad534d9 100644
--- a/src/message-waiting.c
+++ b/src/message-waiting.c
@@ -49,8 +49,10 @@ struct ofono_message_waiting {
unsigned char efmwis_length;
unsigned char efmbdn_length;
unsigned char efmbdn_record_id[5];
+ unsigned int efmbdn_watch;
unsigned char ef_cphs_mwis_length;
unsigned char ef_cphs_mbdn_length;
+ unsigned int ef_cphs_mbdn_watch;
gboolean mbdn_not_provided;
gboolean cphs_mbdn_not_provided;
struct ofono_phone_number mailbox_number[5];
@@ -576,6 +578,33 @@ static void mw_mbdn_read_cb(int ok, int total_length, int record,
mw->efmbdn_length = record_length;
}
+static void mw_mbdn_changed(int id, void *userdata)
+{
+ struct ofono_message_waiting *mw = userdata;
+ int err;
+
+ mw->efmbdn_length = 0;
+ mw->mbdn_not_provided = FALSE;
+
+ err = ofono_sim_read(mw->sim_context, SIM_EFMBDN_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_FIXED,
+ mw_mbdn_read_cb, mw);
+ if (err != 0)
+ ofono_error("Unable to read EF-MBDN from SIM");
+}
+
+static void mw_cphs_mbdn_changed(int id, void *userdata)
+{
+ struct ofono_message_waiting *mw = userdata;
+
+ mw->ef_cphs_mbdn_length = 0;
+ mw->cphs_mbdn_not_provided = FALSE;
+
+ ofono_sim_read(mw->sim_context, SIM_EF_CPHS_MBDN_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_FIXED,
+ mw_cphs_mbdn_read_cb, mw);
+}
+
static void mw_mbi_read_cb(int ok, int total_length, int record,
const unsigned char *data,
int record_length, void *userdata)
@@ -604,6 +633,9 @@ static void mw_mbi_read_cb(int ok, int total_length, int record,
err = ofono_sim_read(mw->sim_context, SIM_EFMBDN_FILEID,
OFONO_SIM_FILE_STRUCTURE_FIXED,
mw_mbdn_read_cb, mw);
+ mw->efmbdn_watch = ofono_sim_add_file_watch(mw->sim_context,
+ SIM_EFMBDN_FILEID,
+ mw_mbdn_changed, mw, NULL);
if (err != 0)
ofono_error("Unable to read EF-MBDN from SIM");
@@ -615,10 +647,15 @@ out:
*/
st = ofono_sim_get_cphs_service_table(mw->sim);
- if (st && bit_field(st[0], 4, 2) == 3)
+ if (st && bit_field(st[0], 4, 2) == 3) {
ofono_sim_read(mw->sim_context, SIM_EF_CPHS_MBDN_FILEID,
OFONO_SIM_FILE_STRUCTURE_FIXED,
mw_cphs_mbdn_read_cb, mw);
+ mw->ef_cphs_mbdn_watch = ofono_sim_add_file_watch(
+ mw->sim_context,
+ SIM_EF_CPHS_MBDN_FILEID,
+ mw_cphs_mbdn_changed, mw, NULL);
+ }
}
static void mw_mwis_write_cb(int ok, void *userdata)
@@ -935,6 +972,46 @@ static void message_waiting_unregister(struct ofono_atom *atom)
ofono_modem_remove_interface(modem, OFONO_MESSAGE_WAITING_INTERFACE);
}
+static void mw_mwis_changed(int id, void *userdata)
+{
+ struct ofono_message_waiting *mw = userdata;
+
+ mw->efmwis_length = 0;
+
+ ofono_sim_read(mw->sim_context, SIM_EFMWIS_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_FIXED,
+ mw_mwis_read_cb, mw);
+}
+
+static void mw_cphs_mwis_changed(int id, void *userdata)
+{
+ struct ofono_message_waiting *mw = userdata;
+
+ mw->ef_cphs_mwis_length = 0;
+
+ ofono_sim_read(mw->sim_context, SIM_EF_CPHS_MWIS_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
+ mw_cphs_mwis_read_cb, mw);
+}
+
+static void mw_mbi_changed(int id, void *userdata)
+{
+ struct ofono_message_waiting *mw = userdata;
+
+ mw->efmbdn_length = 0;
+ mw->mbdn_not_provided = FALSE;
+
+ mw->ef_cphs_mbdn_length = 0;
+ mw->cphs_mbdn_not_provided = FALSE;
+
+ ofono_sim_remove_file_watch(mw->sim_context, mw->efmbdn_watch);
+ ofono_sim_remove_file_watch(mw->sim_context, mw->ef_cphs_mbdn_watch);
+
+ ofono_sim_read(mw->sim_context, SIM_EFMBI_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_FIXED,
+ mw_mbi_read_cb, mw);
+}
+
void ofono_message_waiting_register(struct ofono_message_waiting *mw)
{
DBusConnection *conn;
@@ -980,6 +1057,19 @@ void ofono_message_waiting_register(struct ofono_message_waiting *mw)
ofono_sim_read(mw->sim_context, SIM_EF_CPHS_MWIS_FILEID,
OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
mw_cphs_mwis_read_cb, mw);
+
+ /*
+ * The operator could send us SMS mwi updates, but let's be
+ * extra careful and track the file contents too.
+ */
+ ofono_sim_add_file_watch(mw->sim_context, SIM_EFMWIS_FILEID,
+ mw_mwis_changed, mw, NULL);
+ ofono_sim_add_file_watch(mw->sim_context,
+ SIM_EF_CPHS_MWIS_FILEID,
+ mw_cphs_mwis_changed, mw, NULL);
+
+ ofono_sim_add_file_watch(mw->sim_context, SIM_EFMBI_FILEID,
+ mw_mbi_changed, mw, NULL);
}
__ofono_atom_register(mw->atom, message_waiting_unregister);
--
1.7.1.86.g0e460.dirty
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 3/3] call-forwarding: Watch for changes to relevant SIM files.
2011-02-19 3:54 [PATCH 1/3] sim: Watch for changes to relevant SIM files Andrzej Zaborowski
2011-02-19 3:54 ` [PATCH 2/3] message-waiting: " Andrzej Zaborowski
@ 2011-02-19 3:54 ` Andrzej Zaborowski
2011-03-16 2:25 ` Denis Kenzior
2011-03-16 2:24 ` [PATCH 1/3] sim: " Denis Kenzior
2 siblings, 1 reply; 6+ messages in thread
From: Andrzej Zaborowski @ 2011-02-19 3:54 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2383 bytes --]
---
src/call-forwarding.c | 45 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 44 insertions(+), 1 deletions(-)
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index d13f990..fe535b8 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -1358,8 +1358,31 @@ static void sim_cphs_cff_read_cb(int ok, int total_length, int record,
DBUS_TYPE_BOOLEAN, &cfu_voice);
}
-static void sim_read_cf_indicator(struct ofono_call_forwarding *cf)
+static void sim_cfis_changed(int id, void *userdata)
{
+ struct ofono_call_forwarding *cf = userdata;
+
+ if (((cf->flags & CALL_FORWARDING_FLAG_CPHS_CFF) ||
+ cf->cfis_record_id > 0) && is_cfu_enabled(cf, NULL)) {
+ DBusConnection *conn = ofono_dbus_get_connection();
+ const char *path = __ofono_atom_get_path(cf->atom);
+ ofono_bool_t status = FALSE;
+
+ ofono_dbus_signal_property_changed(conn, path,
+ OFONO_CALL_FORWARDING_INTERFACE,
+ "ForwardingFlagOnSim",
+ DBUS_TYPE_BOOLEAN, &status);
+ }
+
+ cf->cfis_record_id = 0;
+ cf->flags &= ~CALL_FORWARDING_FLAG_CPHS_CFF;
+
+ /*
+ * TODO: remove forwarding rules in
+ * cf->cf_conditions[CALL_FORWARDING_TYPE_UNCONDITIONAL] that
+ * originate from EFcfis before adding the new rules?
+ */
+
if (__ofono_sim_service_available(cf->sim,
SIM_UST_SERVICE_CFIS,
SIM_SST_SERVICE_CFIS) == TRUE)
@@ -1372,6 +1395,26 @@ static void sim_read_cf_indicator(struct ofono_call_forwarding *cf)
sim_cphs_cff_read_cb, cf);
}
+static void sim_read_cf_indicator(struct ofono_call_forwarding *cf)
+{
+ if (__ofono_sim_service_available(cf->sim,
+ SIM_UST_SERVICE_CFIS,
+ SIM_SST_SERVICE_CFIS) == TRUE) {
+ ofono_sim_read(cf->sim_context, SIM_EFCFIS_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_FIXED,
+ sim_cfis_read_cb, cf);
+ ofono_sim_add_file_watch(cf->sim_context, SIM_EFCFIS_FILEID,
+ sim_cfis_changed, cf, NULL);
+ } else {
+ ofono_sim_read(cf->sim_context, SIM_EF_CPHS_CFF_FILEID,
+ OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
+ sim_cphs_cff_read_cb, cf);
+ ofono_sim_add_file_watch(cf->sim_context,
+ SIM_EF_CPHS_CFF_FILEID,
+ sim_cfis_changed, cf, NULL);
+ }
+}
+
int ofono_call_forwarding_driver_register(const struct ofono_call_forwarding_driver *d)
{
DBG("driver: %p, name: %s", d, d->name);
--
1.7.1.86.g0e460.dirty
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 1/3] sim: Watch for changes to relevant SIM files.
2011-02-19 3:54 [PATCH 1/3] sim: Watch for changes to relevant SIM files Andrzej Zaborowski
2011-02-19 3:54 ` [PATCH 2/3] message-waiting: " Andrzej Zaborowski
2011-02-19 3:54 ` [PATCH 3/3] call-forwarding: " Andrzej Zaborowski
@ 2011-03-16 2:24 ` Denis Kenzior
2 siblings, 0 replies; 6+ messages in thread
From: Denis Kenzior @ 2011-03-16 2:24 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 296 bytes --]
Hi Andrew,
On 02/18/2011 09:54 PM, Andrzej Zaborowski wrote:
> ---
> src/sim.c | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
> 1 files changed, 157 insertions(+), 13 deletions(-)
>
I split this patch up into three and applied it. Thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-03-16 2:25 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-19 3:54 [PATCH 1/3] sim: Watch for changes to relevant SIM files Andrzej Zaborowski
2011-02-19 3:54 ` [PATCH 2/3] message-waiting: " Andrzej Zaborowski
2011-03-16 2:24 ` Denis Kenzior
2011-02-19 3:54 ` [PATCH 3/3] call-forwarding: " Andrzej Zaborowski
2011-03-16 2:25 ` Denis Kenzior
2011-03-16 2:24 ` [PATCH 1/3] sim: " Denis Kenzior
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.