commit 37c86c13b4735719aa14390b70c0a104e3184271
parent f2952c9fb89697290384a97cd27ab6c538430b54
Author: Andrej Kacian <ticho@claws-mail.org>
Date: Fri, 6 Nov 2015 20:05:00 +0100
Do not use chdir() in remove_all_files().
Diffstat:
1 file changed, 8 insertions(+), 23 deletions(-)
diff --git a/src/common/utils.c b/src/common/utils.c
@@ -2195,38 +2195,23 @@ gint make_dir_hier(const gchar *dir)
gint remove_all_files(const gchar *dir)
{
GDir *dp;
- const gchar *dir_name;
- gchar *prev_dir;
-
- prev_dir = g_get_current_dir();
-
- if (g_chdir(dir) < 0) {
- FILE_OP_ERROR(dir, "chdir");
- g_free(prev_dir);
- return -1;
- }
+ const gchar *file_name;
+ gchar *tmp;
- if ((dp = g_dir_open(".", 0, NULL)) == NULL) {
+ if ((dp = g_dir_open(dir, 0, NULL)) == NULL) {
g_warning("failed to open directory: %s", dir);
- g_free(prev_dir);
return -1;
}
- while ((dir_name = g_dir_read_name(dp)) != NULL) {
- if (claws_unlink(dir_name) < 0)
- FILE_OP_ERROR(dir_name, "unlink");
+ while ((file_name = g_dir_read_name(dp)) != NULL) {
+ tmp = g_strconcat(dir, G_DIR_SEPARATOR_S, file_name, NULL);
+ if (claws_unlink(tmp) < 0)
+ FILE_OP_ERROR(tmp, "unlink");
+ g_free(tmp);
}
g_dir_close(dp);
- if (g_chdir(prev_dir) < 0) {
- FILE_OP_ERROR(prev_dir, "chdir");
- g_free(prev_dir);
- return -1;
- }
-
- g_free(prev_dir);
-
return 0;
}