From e4ddced4203235c8393369ba3f0a62de1f5e980e Mon Sep 17 00:00:00 2001 From: Philip Flohr Date: Mon, 7 May 2018 19:41:47 +0200 Subject: use gio functions for file copy --- src/common.c | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) (limited to 'src/common.c') diff --git a/src/common.c b/src/common.c index 164523a2..251eddc6 100644 --- a/src/common.c +++ b/src/common.c @@ -46,6 +46,7 @@ #include #include #include +#include #ifdef HAVE_NCURSESW_NCURSES_H #include @@ -105,28 +106,22 @@ mkdir_recursive(const char *dir) } gboolean -copy_file(const char *const sourcepath, const char *const targetpath) +copy_file(const char *const sourcepath, const char *const targetpath, const gboolean overwrite_existing) { - int ch; - FILE *source = fopen(sourcepath, "rb"); - if (source == NULL) { - return FALSE; - } - - FILE *target = fopen(targetpath, "wb"); - if (target == NULL) { - fclose(source); - return FALSE; - } - - while((ch = fgetc(source)) != EOF) { - fputc(ch, target); + GFile *source = g_file_new_for_path(sourcepath); + GFile *dest = g_file_new_for_path(targetpath); + GError *error = NULL; + gboolean success = false; + + if (overwrite_existing) + { + success = g_file_copy (source, dest, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, &error); + } + else + { + success = g_file_copy (source, dest, G_FILE_COPY_NONE, NULL, NULL, NULL, &error); } - - fclose(source); - fclose(target); - - return TRUE; + return success; } char* -- cgit 1.4.1-2-gfad0