diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2008-01-25 12:30:28 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2008-01-25 12:30:28 (GMT) |
commit | e912e532fd67211aa87ac79414efb30f30a00fab (patch) | |
tree | 7a4a5fd318af1bcae3659ffea4e0cd3ed0eae4a8 /libdocument/ev-file-helpers.c | |
parent | efb48b86f60fbaa6ab7e6cb1edb9b1994f5575b3 (diff) |
Port to gio and drop gnome-vfs dependency. Fixes bug #510401. Based on
2008-01-25 Carlos Garcia Campos <carlosgc@gnome.org>
* configure.ac:
* backend/comics/comics-document.c: (comics_document_load):
* libdocument/ev-attachment.[ch]: (ev_attachment_finalize),
(ev_attachment_set_property), (ev_attachment_init),
(ev_attachment_save), (ev_attachment_launch_app),
(ev_attachment_open):
* libdocument/ev-document-factory.c: (get_document_from_uri):
* libdocument/ev-file-helpers.[ch]: (ev_tmp_file_get),
(ev_tmp_file_unlink), (ev_tmp_uri_unlink), (ev_xfer_uri_simple),:
* shell/ev-jobs.c:
* shell/ev-password.c: (ev_password_dialog_set_property),
(ev_password_dialog_save_password):
* shell/ev-sidebar-attachments.c:
(ev_sidebar_attachments_drag_data_get):
* shell/ev-window-title.c: (get_filename_from_uri):
* shell/ev-window.c: (ev_window_clear_temp_file),
(ev_window_load_job_cb), (window_open_file_copy_ready_cb),
(ev_window_open_uri), (window_save_file_copy_ready_cb),
(ev_window_save_remote), (ev_window_cmd_save_as), (launch_action),
(launch_external_uri), (image_save_dialog_response_cb),
(attachment_save_dialog_response_cb):
* shell/main.c: (load_files), (load_files_remote), (main):
* thumbnailer/evince-thumbnailer.c: (main):
Port to gio and drop gnome-vfs dependency. Fixes bug
#510401. Based on patch by Cosimo Cecchi.
svn path=/trunk/; revision=2858
Diffstat (limited to 'libdocument/ev-file-helpers.c')
-rw-r--r-- | libdocument/ev-file-helpers.c | 92 |
1 files changed, 57 insertions, 35 deletions
diff --git a/libdocument/ev-file-helpers.c b/libdocument/ev-file-helpers.c index dd3b3e1..20c7bc4 100644 --- a/libdocument/ev-file-helpers.c +++ b/libdocument/ev-file-helpers.c @@ -29,10 +29,6 @@ #include <glib.h> #include <glib/gstdio.h> #include <errno.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> #if WITH_GNOME #include <libgnome/gnome-init.h> @@ -122,6 +118,20 @@ ev_file_helpers_shutdown (void) tmp_dir = NULL; } +GFile * +ev_tmp_file_get (const gchar *prefix) +{ + gchar *path; + GFile *file; + + path = ev_tmp_filename (prefix); + file = g_file_new_for_path (path); + + g_free (path); + + return file; +} + gchar * ev_tmp_filename (const gchar *prefix) { @@ -161,25 +171,40 @@ ev_tmp_filename_unlink (const gchar *filename) } void +ev_tmp_file_unlink (GFile *file) +{ + gboolean res; + + if (!file) + return; + + res = g_file_delete (file, NULL, NULL); + if (!res) { + char *uri; + + uri = g_file_get_uri (file); + g_warning ("Unable to delete temp file %s\n", uri); + g_free (uri); + } +} + +void ev_tmp_uri_unlink (const gchar *uri) { - GnomeVFSURI *vfs_uri; - gchar *filename; + GFile *file; if (!uri) return; - vfs_uri = gnome_vfs_uri_new (uri); - if (!gnome_vfs_uri_is_local (vfs_uri)) { - g_warning ("Attempting to delete non local uri: %s\n", uri); - gnome_vfs_uri_unref (vfs_uri); + file = g_file_new_for_uri (uri); + if (!g_file_is_native (file)) { + g_warning ("Attempting to delete non native uri: %s\n", uri); + g_object_unref (file); return; } - gnome_vfs_uri_unref (vfs_uri); - - filename = g_filename_from_uri (uri, NULL, NULL); - ev_tmp_filename_unlink (filename); - g_free (filename); + + ev_tmp_file_unlink (file); + g_object_unref (file); } gboolean @@ -187,31 +212,28 @@ ev_xfer_uri_simple (const char *from, const char *to, GError **error) { - GnomeVFSResult result; - GnomeVFSURI *source_uri; - GnomeVFSURI *target_uri; + GFile *source_file; + GFile *target_file; + GError *ioerror; + gboolean result; 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); + source_file = g_file_new_for_uri (from); + target_file = g_file_new_for_uri (to); + + result = g_file_copy (source_file, target_file, + G_FILE_COPY_OVERWRITE, + NULL, NULL, NULL, &ioerror); + + g_object_unref (target_file); + g_object_unref (source_file); - 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); + if (!result) { + g_propagate_error (error, ioerror); + } + return result; } |