[PATCH v3 28/42] storage: Add function to remove provider files

Jukka Rissanen jukka.rissanen at linux.intel.com
Wed Nov 7 03:48:54 PST 2012


---
 src/connman.h |  1 +
 src/storage.c | 40 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/src/connman.h b/src/connman.h
index bfe1c11..f925899 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -212,6 +212,7 @@ GKeyFile *__connman_storage_open_service(const char *ident);
 int __connman_storage_save_service(GKeyFile *keyfile, const char *ident);
 GKeyFile *__connman_storage_load_provider(const char *identifier);
 void __connman_storage_save_provider(GKeyFile *keyfile, const char *identifier);
+gboolean __connman_storage_remove_provider(const char *identifier);
 char **__connman_storage_get_providers(void);
 gboolean __connman_storage_remove_service(const char *service_id);
 
diff --git a/src/storage.c b/src/storage.c
index 8c06ffe..3c3ce41 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -372,6 +372,46 @@ void __connman_storage_save_provider(GKeyFile *keyfile, const char *identifier)
 	g_free(pathname);
 }
 
+static gboolean remove_all(const char *id)
+{
+	gboolean removed;
+
+	remove_file(id, SETTINGS);
+	remove_file(id, "data");
+
+	removed = remove_dir(id);
+	if (removed == FALSE)
+		return FALSE;
+
+	return TRUE;
+}
+
+gboolean __connman_storage_remove_provider(const char *identifier)
+{
+	gboolean removed;
+	gchar *id;
+
+	id = g_strdup_printf("%s_%s", "provider", identifier);
+	if (id == NULL)
+		return FALSE;
+
+	if (remove_all(id) == TRUE)
+		DBG("Removed provider dir %s/%s", STORAGEDIR, id);
+
+	g_free(id);
+
+	id = g_strdup_printf("%s_%s", "vpn", identifier);
+	if (id == NULL)
+		return FALSE;
+
+	if ((removed = remove_all(id)) == TRUE)
+		DBG("Removed vpn dir %s/%s", STORAGEDIR, id);
+
+	g_free(id);
+
+	return removed;
+}
+
 gchar **__connman_storage_get_providers(void)
 {
 	GSList *list = NULL;
-- 
1.7.11.4




More information about the connman mailing list