diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ev-file-helpers.c | 39 | ||||
-rw-r--r-- | lib/ev-file-helpers.h | 4 |
2 files changed, 42 insertions, 1 deletions
diff --git a/lib/ev-file-helpers.c b/lib/ev-file-helpers.c index 247e511..130c62b 100644 --- a/lib/ev-file-helpers.c +++ b/lib/ev-file-helpers.c @@ -23,9 +23,13 @@ #endif #include <sys/stat.h> +#include <unistd.h> #include <glib.h> #include <libgnome/gnome-init.h> -#include <unistd.h> +#include <libgnomevfs/gnome-vfs-uri.h> +#include <libgnomevfs/gnome-vfs-utils.h> +#include <libgnomevfs/gnome-vfs-ops.h> +#include <libgnomevfs/gnome-vfs-xfer.h> #include "ev-file-helpers.h" @@ -124,3 +128,36 @@ ev_tmp_filename (void) return filename; } + +gboolean +ev_xfer_uri_simple (const char *from, + const char *to, + GError **error) +{ + GnomeVFSResult result; + GnomeVFSURI *source_uri; + GnomeVFSURI *target_uri; + + if (!from) + return FALSE; + + source_uri = gnome_vfs_uri_new (from); + target_uri = gnome_vfs_uri_new (to); + + result = gnome_vfs_xfer_uri (source_uri, target_uri, + GNOME_VFS_XFER_DEFAULT | GNOME_VFS_XFER_FOLLOW_LINKS, + GNOME_VFS_XFER_ERROR_MODE_ABORT, + GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, + NULL, + NULL); + gnome_vfs_uri_unref (target_uri); + gnome_vfs_uri_unref (source_uri); + + if (result != GNOME_VFS_OK) + g_set_error (error, + G_FILE_ERROR, + G_FILE_ERROR_FAILED, + gnome_vfs_result_to_string (result)); + return (result == GNOME_VFS_OK); + +} diff --git a/lib/ev-file-helpers.h b/lib/ev-file-helpers.h index 1d19c6d..2cc817a 100644 --- a/lib/ev-file-helpers.h +++ b/lib/ev-file-helpers.h @@ -33,6 +33,10 @@ void ev_file_helpers_shutdown (void); gchar* ev_tmp_filename (void); +gboolean ev_xfer_uri_simple (const char *from, + const char *to, + GError **error); + G_END_DECLS #endif /* EPHY_FILE_HELPERS_H */ |