From 71e5278ce6f189ee4cc356101d31c068d84a9fe4 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Wed, 26 Jan 2011 14:50:30 -0600 Subject: [PATCH] gprs-provision: Refactor provisioning --- src/gprs-provision.c | 29 +++++++++++++---------------- src/ofono.h | 7 ++++--- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/gprs-provision.c b/src/gprs-provision.c index cc1f5895..3cd84e8b 100644 --- a/src/gprs-provision.c +++ b/src/gprs-provision.c @@ -47,34 +47,31 @@ void __ofono_gprs_provision_free_settings( g_free(settings); } -void __ofono_gprs_provision_get_settings(const char *mcc, const char *mnc, - struct ofono_gprs_provision_data **settings, - int *count) +ofono_bool_t __ofono_gprs_provision_get_settings(const char *mcc, + const char *mnc, + struct ofono_gprs_provision_data **settings, + int *count) { GSList *d; - *settings = NULL; - *count = 0; - if (mcc == NULL || strlen(mcc) == 0 || mnc == NULL || strlen(mnc) == 0) - return; + return FALSE; for (d = g_drivers; d != NULL; d = d->next) { const struct ofono_gprs_provision_driver *driver = d->data; + if (driver->get_settings == NULL) + continue; + DBG("Calling provisioning plugin '%s'", driver->name); - driver->get_settings(mcc, mnc, settings, count); + if (driver->get_settings(mcc, mnc, settings, count) < 0) + continue; - if (*count > 0) { - DBG("Plugin '%s' returned %d context settings", - driver->name, *count); - return; - } - - ofono_warn("Provisioning plugin '%s' returned no settings", - driver->name); + return TRUE; } + + return FALSE; } static gint compare_priority(gconstpointer a, gconstpointer b) diff --git a/src/ofono.h b/src/ofono.h index 46bd8cba..df201039 100644 --- a/src/ofono.h +++ b/src/ofono.h @@ -422,9 +422,10 @@ void __ofono_nettime_info_received(struct ofono_modem *modem, #include #include -void __ofono_gprs_provision_get_settings(const char *mcc, const char *mnc, - struct ofono_gprs_provision_data **settings, - int *count); +ofono_bool_t __ofono_gprs_provision_get_settings(const char *mcc, + const char *mnc, + struct ofono_gprs_provision_data **settings, + int *count); void __ofono_gprs_provision_free_settings( struct ofono_gprs_provision_data *settings, int count);