use gio functions for file copy
This commit is contained in:
committed by
Dmitry Podgorny
parent
2795dc487c
commit
e4ddced420
35
src/common.c
35
src/common.c
@@ -46,6 +46,7 @@
|
||||
#include <curl/curl.h>
|
||||
#include <curl/easy.h>
|
||||
#include <glib.h>
|
||||
#include <gio/gio.h>
|
||||
|
||||
#ifdef HAVE_NCURSESW_NCURSES_H
|
||||
#include <ncursesw/ncurses.h>
|
||||
@@ -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;
|
||||
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);
|
||||
}
|
||||
|
||||
FILE *target = fopen(targetpath, "wb");
|
||||
if (target == NULL) {
|
||||
fclose(source);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
while((ch = fgetc(source)) != EOF) {
|
||||
fputc(ch, target);
|
||||
}
|
||||
|
||||
fclose(source);
|
||||
fclose(target);
|
||||
|
||||
return TRUE;
|
||||
return success;
|
||||
}
|
||||
|
||||
char*
|
||||
|
||||
Reference in New Issue
Block a user