talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

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:
Msrc/common/utils.c | 31++++++++-----------------------
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; }