First phase of multifilesystem enhancement
[captive.git] / src / libcaptive / client / file.c
index 2f41332..ff2da21 100644 (file)
@@ -96,6 +96,7 @@ static const GTypeInfo captive_file_object_info={
 
 
 static GnomeVFSResult captive_file_new_internal(CaptiveFileObject **captive_file_object_return,
+               CaptiveVfsObject *captive_vfs_object,
                const gchar *pathname,GnomeVFSOpenMode mode,gboolean create,gboolean create_exclusive,guint create_perm)
 {
 IO_STATUS_BLOCK file_IoStatusBlock;
@@ -109,6 +110,7 @@ NTSTATUS err;
                return captive_sandbox_parent_file_new_open(captive_file_object_return,pathname,mode);
 
        g_return_val_if_fail(captive_file_object_return!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+       g_return_val_if_fail(captive_vfs_object!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
        g_return_val_if_fail(pathname!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
 
        *captive_file_object_return=NULL;
@@ -156,6 +158,7 @@ NTSTATUS err;
                        CAPTIVE_FILE_TYPE_OBJECT,       /* object_type */
                        NULL);  /* first_property_name; FIXME: support properties */
 
+       captive_file_object->vfs=captive_vfs_object;
        captive_file_object->file_Handle=file_Handle;
        captive_file_object->offset=0;
 
@@ -164,15 +167,16 @@ NTSTATUS err;
 }
 
 
-GnomeVFSResult captive_file_new_open
-               (CaptiveFileObject **captive_file_object_return,const gchar *pathname,GnomeVFSOpenMode mode)
+GnomeVFSResult captive_file_new_open(CaptiveFileObject **captive_file_object_return,
+               CaptiveVfsObject *captive_vfs_object,const gchar *pathname,GnomeVFSOpenMode mode)
 {
 GnomeVFSResult r;
 
        g_return_val_if_fail(captive_file_object_return!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+       g_return_val_if_fail(captive_vfs_object!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
        g_return_val_if_fail(pathname!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
 
-       r=captive_file_new_internal(captive_file_object_return,pathname,mode,
+       r=captive_file_new_internal(captive_file_object_return,captive_vfs_object,pathname,mode,
                        FALSE,  /* create */
                        FALSE,  /* create_exclusive; ignored */
                        0);     /* create_perm; ignored */
@@ -184,15 +188,16 @@ GnomeVFSResult r;
 }
 
 
-GnomeVFSResult captive_file_new_create
-               (CaptiveFileObject **captive_file_object_return,const gchar *pathname,GnomeVFSOpenMode mode,gboolean exclusive,guint perm)
+GnomeVFSResult captive_file_new_create(CaptiveFileObject **captive_file_object_return,
+               CaptiveVfsObject *captive_vfs_object,const gchar *pathname,GnomeVFSOpenMode mode,gboolean exclusive,guint perm)
 {
 GnomeVFSResult r;
 
        g_return_val_if_fail(captive_file_object_return!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+       g_return_val_if_fail(captive_vfs_object!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
        g_return_val_if_fail(pathname!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
 
-       r=captive_file_new_internal(captive_file_object_return,pathname,mode,
+       r=captive_file_new_internal(captive_file_object_return,captive_vfs_object,pathname,mode,
                        TRUE,   /* create */
                        exclusive,      /* create_exclusive */
                        perm);  /* create_perm */