+file move
authorshort <>
Mon, 3 Feb 2003 14:36:33 +0000 (14:36 +0000)
committershort <>
Mon, 3 Feb 2003 14:36:33 +0000 (14:36 +0000)
src/client/libcaptive-gnomevfs/gnome-vfs-method.c
src/libcaptive/include/captive/client-file.h

index 25c44c4..8410c1d 100644 (file)
@@ -463,6 +463,39 @@ CaptiveFileObject *captive_file_object;
 }
 
 
+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:
  *
@@ -493,7 +526,7 @@ GnomeVFSMethod *captive_gnomevfs_method_init(const gchar *fs_path)
        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; */
index 81b3d86..a7fd5a0 100644 (file)
@@ -65,6 +65,7 @@ GnomeVFSResult captive_file_tell(CaptiveFileObject *captive_file_object,GnomeVFS
 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