+gboolean handle_reset_wifi_config(Wifi *wifi, GDBusMethodInvocation *context)
+{
+ DIR *dir_ptr = NULL;
+ struct dirent *file = NULL;
+ struct stat buf;
+ char dir_name[512] = { 0, };
+ char file_name[1024] = { 0, };
+
+ g_return_val_if_fail(wifi != NULL, TRUE);
+
+ DBG("Try to remove connman Wi-Fi config files...");
+
+ if ((dir_ptr = opendir(CONNMAN_STORAGE)) != NULL) {
+ while ((file = readdir(dir_ptr)) != NULL) {
+ if (strncmp(file->d_name, ".", 1) == 0 || strncmp(file->d_name, "..", 2) == 0 ||
+ strncmp(file->d_name, WIFI_CONFIG_PREFIX, strlen(WIFI_CONFIG_PREFIX)) != 0) {
+ continue;
+ }
+
+ snprintf(dir_name, 512, CONNMAN_STORAGE"/%s", file->d_name);
+
+ if (lstat(dir_name, &buf) == -1)
+ continue;
+
+ DBG("Remove wifi config: %s", file->d_name);
+
+ if (S_ISDIR(buf.st_mode)) {
+ memset(file_name, 0, 1024);
+ snprintf(file_name, 1024, "%s/data", dir_name);
+ unlink(file_name);
+ memset(file_name, 0, 1024);
+ snprintf(file_name, 1024, "%s/settings", dir_name);
+ unlink(file_name);
+ }
+ rmdir(dir_name);
+ }
+
+ closedir(dir_ptr);
+ sync();
+ }
+
+ wifi_complete_reset_wifi_config(wifi, context);
+
+ return TRUE;
+}
+