}
+static GnomeVFSResult captive_gnomevfs_create(GnomeVFSMethod *method,
+ GnomeVFSMethodHandle **method_handle_return,GnomeVFSURI *uri,GnomeVFSOpenMode mode,gboolean exclusive,guint perm,
+ GnomeVFSContext *context)
+{
+GnomeVFSResult errvfsresult;
+CaptiveFileObject *captive_file_object;
+
+ g_return_val_if_fail(method==&GnomeVFSMethod_static,GNOME_VFS_ERROR_BAD_PARAMETERS);
+ g_return_val_if_fail(method_handle_return!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+
+ errvfsresult=captive_gnomevfs_uri_parent_init(uri);
+ g_return_val_if_fail(errvfsresult==GNOME_VFS_OK,errvfsresult);
+
+ G_LOCK(libcaptive);
+ errvfsresult=captive_file_new_create(&captive_file_object,uri->text,mode,exclusive,perm);
+ G_UNLOCK(libcaptive);
+
+ *method_handle_return=(GnomeVFSMethodHandle *)captive_file_object;
+ return errvfsresult;
+}
+
+
static GnomeVFSResult captive_gnomevfs_close(GnomeVFSMethod *method,
GnomeVFSMethodHandle *method_handle,GnomeVFSContext *context)
{
}
+static GnomeVFSResult captive_gnomevfs_write(GnomeVFSMethod *method,GnomeVFSMethodHandle *method_handle,
+ gconstpointer buffer,GnomeVFSFileSize num_bytes,GnomeVFSFileSize *bytes_written_return,GnomeVFSContext *context)
+{
+GnomeVFSResult errvfsresult;
+CaptiveFileObject *captive_file_object;
+
+ g_return_val_if_fail(method==&GnomeVFSMethod_static,GNOME_VFS_ERROR_BAD_PARAMETERS);
+ captive_file_object=(CaptiveFileObject *)method_handle;
+ g_return_val_if_fail(CAPTIVE_FILE_IS_OBJECT(captive_file_object),GNOME_VFS_ERROR_BAD_PARAMETERS);
+ g_return_val_if_fail(buffer!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+ g_return_val_if_fail(bytes_written_return!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+
+ G_LOCK(libcaptive);
+ errvfsresult=captive_file_write(captive_file_object,buffer,num_bytes,bytes_written_return);
+ G_UNLOCK(libcaptive);
+
+ return errvfsresult;
+}
+
+
static GnomeVFSResult captive_gnomevfs_seek(GnomeVFSMethod *method,
GnomeVFSMethodHandle *method_handle,GnomeVFSSeekPosition whence,GnomeVFSFileOffset offset,GnomeVFSContext *context)
{
}
-static GnomeVFSResult captive_gnomevfs_create(GnomeVFSMethod *method,
- GnomeVFSMethodHandle **method_handle_return,GnomeVFSURI *uri,GnomeVFSOpenMode mode,gboolean exclusive,guint perm,
- GnomeVFSContext *context)
-{
- g_return_val_if_reached(GNOME_VFS_ERROR_NOT_SUPPORTED); /* FIXME: NOT IMPLEMENTED YET */
-}
-
-
static gboolean captive_gnomevfs_is_local(GnomeVFSMethod *method,const GnomeVFSURI *uri)
{
g_return_val_if_fail(method==&GnomeVFSMethod_static,GNOME_VFS_ERROR_BAD_PARAMETERS);
GnomeVFSMethod_static.open =captive_gnomevfs_open; /* mandatory */
GnomeVFSMethod_static.close =captive_gnomevfs_close;
GnomeVFSMethod_static.read =captive_gnomevfs_read;
+ GnomeVFSMethod_static.write =captive_gnomevfs_write;
GnomeVFSMethod_static.seek =captive_gnomevfs_seek;
GnomeVFSMethod_static.tell =captive_gnomevfs_tell;
GnomeVFSMethod_static.create =captive_gnomevfs_create; /* mandatory */