technology: Save technology state if entry is missing from file
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Fri, 27 Apr 2012 13:01:51 +0000 (16:01 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 27 Apr 2012 13:14:16 +0000 (15:14 +0200)
So we save the technology status if the settings file does not
contain it.

src/technology.c

index 26a4cc9..9892e2b 100644 (file)
@@ -292,6 +292,34 @@ static const char *get_name(enum connman_service_type type)
        return NULL;
 }
 
+static void save_state(struct connman_technology *technology)
+{
+       GKeyFile *keyfile;
+       gchar *identifier;
+
+       DBG("technology %p", technology);
+
+       keyfile = __connman_storage_load_global();
+       if (keyfile == NULL)
+               keyfile = g_key_file_new();
+
+       identifier = g_strdup_printf("%s", get_name(technology->type));
+       if (identifier == NULL)
+               goto done;
+
+       g_key_file_set_boolean(keyfile, identifier, "Enable",
+                               technology->enable_persistent);
+
+done:
+       g_free(identifier);
+
+       __connman_storage_save_global(keyfile);
+
+       g_key_file_free(keyfile);
+
+       return;
+}
+
 static void load_state(struct connman_technology *technology)
 {
        GKeyFile *keyfile;
@@ -324,6 +352,8 @@ static void load_state(struct connman_technology *technology)
                        technology->enable_persistent = TRUE;
                else
                        technology->enable_persistent = FALSE;
+
+               save_state(technology);
                g_clear_error(&error);
        }
 done:
@@ -334,34 +364,6 @@ done:
        return;
 }
 
-static void save_state(struct connman_technology *technology)
-{
-       GKeyFile *keyfile;
-       gchar *identifier;
-
-       DBG("technology %p", technology);
-
-       keyfile = __connman_storage_load_global();
-       if (keyfile == NULL)
-               keyfile = g_key_file_new();
-
-       identifier = g_strdup_printf("%s", get_name(technology->type));
-       if (identifier == NULL)
-               goto done;
-
-       g_key_file_set_boolean(keyfile, identifier, "Enable",
-                               technology->enable_persistent);
-
-done:
-       g_free(identifier);
-
-       __connman_storage_save_global(keyfile);
-
-       g_key_file_free(keyfile);
-
-       return;
-}
-
 connman_bool_t __connman_technology_get_offlinemode(void)
 {
        return global_offlinemode;