X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fstorage.c;h=b93554d04cf63abd1391c178d753060c017a3c06;hb=54de1195cf2aba7f0577ad4b70f89d8978d205ff;hp=4c00ce0bd14a773427fa7e9290b8207001ad14a1;hpb=e2e36a26363c871a6617be99cb11602115189ba5;p=framework%2Fconnectivity%2Fconnman.git diff --git a/src/storage.c b/src/storage.c index 4c00ce0..b93554d 100644 --- a/src/storage.c +++ b/src/storage.c @@ -147,30 +147,6 @@ GKeyFile *__connman_storage_load_config(const char *ident) return keyfile; } -void __connman_storage_save_config(GKeyFile *keyfile, const char *ident) -{ - gchar *pathname; - - pathname = g_strdup_printf("%s/%s.config", STORAGEDIR, ident); - if(pathname == NULL) - return; - - storage_save(keyfile, pathname); -} - -void __connman_storage_delete_config(const char *ident) -{ - gchar *pathname; - - pathname = g_strdup_printf("%s/%s.config", STORAGEDIR, ident); - if(pathname == NULL) - return; - - storage_delete(pathname); - - g_free(pathname); -} - GKeyFile *__connman_storage_open_service(const char *service_id) { gchar *pathname; @@ -387,21 +363,24 @@ void __connman_storage_migrate() GKeyFile *keyfile_def = NULL; GKeyFile *keyfile = NULL; GError *error = NULL; + connman_bool_t delete_old_config = TRUE; char **services, **keys, *value; int i, k, err; connman_bool_t val; + pathname = g_strdup_printf("%s/%s", STORAGEDIR, DEFAULT); + if (pathname == NULL) + return; + /* If setting file exists, migration has been done. */ keyfile = __connman_storage_load_global(); if (keyfile) { g_key_file_free(keyfile); + unlink(pathname); + g_free(pathname); return; } - pathname = g_strdup_printf("%s/%s", STORAGEDIR, DEFAULT); - if(pathname == NULL) - return; - /* If default.profile exists, create new settings file */ keyfile_def = storage_load(pathname); if (keyfile_def == NULL) @@ -427,6 +406,7 @@ void __connman_storage_migrate() keyfile = g_key_file_new(); if (keyfile == NULL) { connman_warn("Migrating %s failed", services[i]); + delete_old_config = FALSE; continue; } @@ -446,9 +426,11 @@ void __connman_storage_migrate() services[i]); if (err >= 0) DBG("migrated %s", services[i]); - else + else { connman_warn("Migrating %s failed %s", services[i], strerror(-err)); + delete_old_config = FALSE; + } } else DBG("no keys in %s", services[i]); @@ -470,11 +452,19 @@ void __connman_storage_migrate() g_key_file_set_boolean(keyfile, "global", "OfflineMode", val); + /* Migrate Powered/Enable state key/value pairs from legacy + * settings + */ + val = g_key_file_get_boolean(keyfile_def, "WiFi", "Enable", &error); if (error != NULL) { g_clear_error(&error); - val = FALSE; + val = g_key_file_get_boolean(keyfile_def, "device_Wireless", "Powered", &error); + if (error != NULL) { + g_clear_error(&error); + val = FALSE; + } } g_key_file_set_boolean(keyfile, "WiFi", @@ -484,7 +474,11 @@ void __connman_storage_migrate() "Enable", &error); if (error != NULL) { g_clear_error(&error); - val = FALSE; + val = g_key_file_get_boolean(keyfile_def, "device_Bluetooth", "Powered", &error); + if (error != NULL) { + g_clear_error(&error); + val = FALSE; + } } g_key_file_set_boolean(keyfile, "Bluetooth", @@ -494,7 +488,11 @@ void __connman_storage_migrate() "Enable", &error); if (error != NULL) { g_clear_error(&error); - val = FALSE; + val = g_key_file_get_boolean(keyfile_def, "device_Ethernet", "Powered", &error); + if (error != NULL) { + g_clear_error(&error); + val = FALSE; + } } g_key_file_set_boolean(keyfile, "Wired", @@ -504,7 +502,11 @@ void __connman_storage_migrate() "Enable", &error); if (error != NULL) { g_clear_error(&error); - val = FALSE; + val = g_key_file_get_boolean(keyfile_def, "device_Cellular", "Powered", &error); + if (error != NULL) { + g_clear_error(&error); + val = FALSE; + } } g_key_file_set_boolean(keyfile, "Cellular", @@ -514,18 +516,29 @@ void __connman_storage_migrate() "Enable", &error); if (error != NULL) { g_clear_error(&error); - val = FALSE; + val = g_key_file_get_boolean(keyfile_def, "device_WiMAX", "Powered", &error); + if (error != NULL) { + g_clear_error(&error); + val = FALSE; + } } g_key_file_set_boolean(keyfile, "WiMAX", "Enable", val); - __connman_storage_save_global(keyfile); + if (__connman_storage_save_global(keyfile) < 0) { + connman_warn("Migrating global config failed"); + delete_old_config = FALSE; + } g_key_file_free(keyfile); g_key_file_free(keyfile_def); + if (delete_old_config == TRUE) { + DBG("migration done for %s", pathname); + unlink(pathname); + } done: g_free(pathname); }