diff options
Diffstat (limited to 'src/gprs-provision.c')
-rw-r--r-- | src/gprs-provision.c | 29 |
1 files changed, 13 insertions, 16 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; - DBG("Calling provisioning plugin '%s'", driver->name); + if (driver->get_settings == NULL) + continue; - driver->get_settings(mcc, mnc, settings, count); + DBG("Calling provisioning plugin '%s'", driver->name); - if (*count > 0) { - DBG("Plugin '%s' returned %d context settings", - driver->name, *count); - return; - } + if (driver->get_settings(mcc, mnc, settings, count) < 0) + continue; - ofono_warn("Provisioning plugin '%s' returned no settings", - driver->name); + return TRUE; } + + return FALSE; } static gint compare_priority(gconstpointer a, gconstpointer b) |