diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-11-23 13:24:50 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-11-23 13:24:50 +0100 |
commit | 3ff2030313c116a4bf0421b0b0086e7c252e7ea4 (patch) | |
tree | 4b544d96b02e9d44990c3ec2d99dcdb5766cb0da /src/storage.c | |
parent | bed9f7d567b9a22c3c833f3b40ecd5afdc06d873 (diff) | |
download | connman-3ff2030313c116a4bf0421b0b0086e7c252e7ea4.tar.gz connman-3ff2030313c116a4bf0421b0b0086e7c252e7ea4.tar.bz2 connman-3ff2030313c116a4bf0421b0b0086e7c252e7ea4.zip |
Add support for WiFi Security and Passphrase properties
Diffstat (limited to 'src/storage.c')
-rw-r--r-- | src/storage.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/storage.c b/src/storage.c index 24d0a5c8..06337c78 100644 --- a/src/storage.c +++ b/src/storage.c @@ -37,16 +37,67 @@ void __connman_storage_cleanup(void) DBG(""); } +static int do_load(GKeyFile *keyfile, struct connman_element *element) +{ + const gchar *value; + + DBG("element %p name %s", element, element->name); + + value = g_key_file_get_string(keyfile, element->path, + "WiFi.Security", NULL); + if (value != NULL) + connman_element_set_property(element, + CONNMAN_PROPERTY_ID_WIFI_SECURITY, &value); + + value = g_key_file_get_string(keyfile, element->path, + "WiFi.Passphrase", NULL); + if (value != NULL) + connman_element_set_property(element, + CONNMAN_PROPERTY_ID_WIFI_PASSPHRASE, &value); + + return 0; +} + int __connman_element_load(struct connman_element *element) { + GKeyFile *keyfile; + gchar *pathname, *data = NULL; + gsize length; + DBG("element %p name %s", element, element->name); + pathname = g_strdup_printf("%s/elements.conf", STORAGEDIR); + if (pathname == NULL) + return -ENOMEM; + + keyfile = g_key_file_new(); + + if (g_file_get_contents(pathname, &data, &length, NULL) == FALSE) { + g_free(pathname); + return -ENOENT; + } + + g_free(pathname); + + if (g_key_file_load_from_data(keyfile, data, length, + 0, NULL) == FALSE) { + g_free(data); + return -EILSEQ; + } + + g_free(data); + + do_load(keyfile, element); + + g_key_file_free(keyfile); + return 0; } static void do_update(GKeyFile *keyfile, struct connman_element *element) { GSList *list; + char *value; DBG("element %p name %s", element, element->name); @@ -72,6 +123,16 @@ static void do_update(GKeyFile *keyfile, struct connman_element *element) } connman_element_unlock(element); + + if (connman_element_get_value(element, + CONNMAN_PROPERTY_ID_WIFI_SECURITY, &value) == 0) + g_key_file_set_string(keyfile, element->path, + "WiFi.Security", value); + + if (connman_element_get_value(element, + CONNMAN_PROPERTY_ID_WIFI_PASSPHRASE, &value) == 0) + g_key_file_set_string(keyfile, element->path, + "WiFi.Passphrase", value); } int __connman_element_store(struct connman_element *element) @@ -82,6 +143,10 @@ int __connman_element_store(struct connman_element *element) DBG("element %p name %s", element, element->name); + if (element->type != CONNMAN_ELEMENT_TYPE_DEVICE && + element->type != CONNMAN_ELEMENT_TYPE_NETWORK) + return -EINVAL; + pathname = g_strdup_printf("%s/elements.conf", STORAGEDIR); if (pathname == NULL) return -ENOMEM; |