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

diff --git a/src/connman.h b/src/connman.h
index 8a33ba7..8a1a62c 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 29291dc..54078fd 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -372,6 +372,53 @@ void __connman_storage_save_provider(GKeyFile *keyfile, 
const char *identifier)
        g_free(pathname);
 }
 
+static gboolean remove_dir_and_files(const char *id)
+{
+       gboolean removed;
+
+       removed = remove_file(id, SETTINGS);
+       if (removed == FALSE)
+               return FALSE;
+
+       /*
+        * VPN dir does not have data file so do not check the
+        * return value.
+        */
+       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_dir_and_files(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_dir_and_files(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

_______________________________________________
connman mailing list
connman@connman.net
http://lists.connman.net/listinfo/connman

Reply via email to