+ if (job->error) {
+ g_error_free (job->error);
+ job->error = NULL;
+ }
+
+ source_uri = gnome_vfs_uri_new (job->uri);
+ if (!gnome_vfs_uri_is_local (source_uri) && !job->local_uri) {
+ char *tmp_name;
+ char *base_name;
+
+ tmp_name = ev_tmp_filename ();
+ base_name = g_path_get_basename (job->uri);
+ job->local_uri = g_strconcat ("file:", tmp_name, base_name, NULL);
+ g_free (tmp_name);
+
+ target_uri = gnome_vfs_uri_new (job->local_uri);
+
+ 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,
+ job);
+ gnome_vfs_uri_unref (target_uri);
+ }
+ gnome_vfs_uri_unref (source_uri);
+
+ EV_JOB(job)->document = ev_document_factory_get_document (job->local_uri ? job->local_uri : job->uri, &job->error);