storage: Add default values to settings file.
authorAlok Barsode <alok.barsode@linux.intel.com>
Thu, 29 Sep 2011 10:53:04 +0000 (13:53 +0300)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 24 Nov 2011 11:33:11 +0000 (12:33 +0100)
On a clean start (without default.profile) create the settings file
with default values. Here is a list of default values:

Offlinemode = off.
Wifi = disabled.
bluetooth = disabled.
ethernet = disabled.
3G = disabled.
WiMAX = disabled.

The reason for offlinemode to be off here is that any changes to
the technology will not be recorded if we start in offlinemode.

Fixes BMC#24285

src/storage.c

index 1d14e13..51404c8 100644 (file)
@@ -351,73 +351,106 @@ void __connman_storage_migrate()
        if(pathname == NULL)
                return;
 
-       /* If default.profile doesn't exists, no need to migrate. */
+       /* Copy global settings from default.profile to settings. */
+       keyfile = g_key_file_new();
+
+       /* If default.profile doesn't exists, create settings with defaults. */
        keyfile_def = storage_load(pathname);
        if (keyfile_def == NULL) {
-               g_free(pathname);
-               return;
-       }
+               g_key_file_set_boolean(keyfile, "global",
+                                       "OfflineMode", FALSE);
 
-       /* Copy global settings from default.profile to settings. */
-       keyfile = g_key_file_new();
+               g_key_file_set_boolean(keyfile, "WiFi",
+                                       "Enable", FALSE);
+
+               g_key_file_set_boolean(keyfile, "Bluetooth",
+                                       "Enable", FALSE);
+
+               g_key_file_set_boolean(keyfile, "Wired",
+                                       "Enable", FALSE);
+
+               g_key_file_set_boolean(keyfile, "3G",
+                                       "Enable", FALSE);
+
+               g_key_file_set_boolean(keyfile, "WiMAX",
+                                       "Enable", FALSE);
+
+               goto done;
+       }
 
        /* offline mode */
        val = g_key_file_get_boolean(keyfile_def, "global",
                                        "OfflineMode", &error);
-       if (error != NULL)
+       if (error != NULL) {
                g_clear_error(&error);
-       else
-               g_key_file_set_boolean(keyfile, "global",
+               val = FALSE;
+       }
+
+       g_key_file_set_boolean(keyfile, "global",
                                        "OfflineMode", val);
 
        /* wifi */
        val = g_key_file_get_boolean(keyfile_def, "WiFi",
                                        "Enable", &error);
-       if (error != NULL)
+       if (error != NULL) {
                g_clear_error(&error);
-       else
-               g_key_file_set_boolean(keyfile, "WiFi",
+               val = FALSE;
+       }
+
+       g_key_file_set_boolean(keyfile, "WiFi",
                                        "Enable", val);
 
        /* bluetooth */
        val = g_key_file_get_boolean(keyfile_def, "Bluetooth",
                                        "Enable", &error);
-       if (error != NULL)
+       if (error != NULL) {
                g_clear_error(&error);
-       else
-               g_key_file_set_boolean(keyfile, "Bluetooth",
+               val = FALSE;
+       }
+
+       g_key_file_set_boolean(keyfile, "Bluetooth",
                                        "Enable", val);
 
        /* wired */
        val = g_key_file_get_boolean(keyfile_def, "Wired",
                                        "Enable", &error);
-       if (error != NULL)
+       if (error != NULL) {
                g_clear_error(&error);
-       else
-               g_key_file_set_boolean(keyfile, "Wired",
+               val = FALSE;
+       }
+
+       g_key_file_set_boolean(keyfile, "Wired",
                                        "Enable", val);
 
        /* 3G */
        val = g_key_file_get_boolean(keyfile_def, "3G",
                                        "Enable", &error);
-       if (error != NULL)
+       if (error != NULL) {
                g_clear_error(&error);
-       else
-               g_key_file_set_boolean(keyfile, "3G",
+               val = FALSE;
+       }
+
+       g_key_file_set_boolean(keyfile, "3G",
                                        "Enable", val);
 
        /* WiMAX */
        val = g_key_file_get_boolean(keyfile_def, "WiMAX",
                                        "Enable", &error);
-       if (error != NULL)
+       if (error != NULL) {
                g_clear_error(&error);
-       else
-               g_key_file_set_boolean(keyfile, "WiMAX",
+               val = FALSE;
+       }
+
+       g_key_file_set_boolean(keyfile, "WiMAX",
                                        "Enable", val);
 
+done:
        __connman_storage_save_global(keyfile);
 
        g_key_file_free(keyfile);
-       g_key_file_free(keyfile_def);
+
+       if (keyfile_def)
+               g_key_file_free(keyfile_def);
+
        g_free(pathname);
 }