}
+GnomeVFSResult captive_gnomevfs_move(GnomeVFSMethod *method,
+ GnomeVFSURI *old_uri,GnomeVFSURI *new_uri,gboolean force_replace,GnomeVFSContext *context)
+{
+GnomeVFSResult errvfsresult;
+CaptiveFileObject *captive_old_file_object;
+
+ g_return_val_if_fail(method==&GnomeVFSMethod_static,GNOME_VFS_ERROR_BAD_PARAMETERS);
+
+ errvfsresult=captive_gnomevfs_uri_parent_init(old_uri);
+ g_return_val_if_fail(errvfsresult==GNOME_VFS_OK,errvfsresult);
+
+ errvfsresult=captive_gnomevfs_uri_parent_init(new_uri);
+ g_return_val_if_fail(errvfsresult==GNOME_VFS_OK,errvfsresult);
+
+ G_LOCK(libcaptive);
+ errvfsresult=captive_file_new_open(&captive_old_file_object,old_uri->text,
+ (GNOME_VFS_OPEN_READ | GNOME_VFS_OPEN_WRITE)); /* mode; is it OK? */
+ G_UNLOCK(libcaptive);
+ if (errvfsresult!=GNOME_VFS_OK)
+ return errvfsresult;
+
+ G_LOCK(libcaptive);
+ errvfsresult=captive_file_move(captive_old_file_object,new_uri->text,force_replace);
+ G_UNLOCK(libcaptive);
+
+ G_LOCK(libcaptive);
+ g_object_unref(captive_old_file_object);
+ G_UNLOCK(libcaptive);
+
+ return errvfsresult;
+}
+
+
/**
* captive_gnomevfs_init:
*
GnomeVFSMethod_static.is_local =captive_gnomevfs_is_local; /* mandatory */
GnomeVFSMethod_static.make_directory =captive_gnomevfs_make_directory;
GnomeVFSMethod_static.remove_directory =captive_gnomevfs_remove_directory;
- /* TODO: GnomeVFSMethodMoveFunc move; */
+ GnomeVFSMethod_static.move =captive_gnomevfs_move;
GnomeVFSMethod_static.unlink =captive_gnomevfs_unlink;
/* TODO: GnomeVFSMethodCheckSameFSFunc check_same_fs; */
/* TODO: GnomeVFSMethodSetFileInfo set_file_info; */
GnomeVFSResult captive_file_remove(CaptiveFileObject *captive_file_object);
GnomeVFSResult captive_file_file_info_get(CaptiveFileObject *captive_file_object,GnomeVFSFileInfo *file_info);
GnomeVFSResult captive_file_truncate(CaptiveFileObject *captive_file_object,GnomeVFSFileSize file_size);
+GnomeVFSResult captive_file_move(CaptiveFileObject *captive_file_object_old,const gchar *pathname_new,gboolean force_replace);
G_END_DECLS