Implemented sub-second W32 filesystem interface by new: CaptiveFileInfoObject
[captive.git] / src / libcaptive / sandbox / parent-File.c
index 46e4889..ca062f5 100644 (file)
@@ -396,15 +396,16 @@ CaptiveVfsParentObject *captive_vfs_parent_object;
 
 
 GnomeVFSResult captive_sandbox_parent_file_file_info_get(CaptiveFileParentObject *captive_file_parent_object,
-               GnomeVFSFileInfo *file_info_captive)
+               CaptiveFileInfoObject **captive_file_info_object_return)
 {
-Captive_GnomeVFSFileInfo *file_info_corba;
+Captive_CaptiveFileInfoObject *file_info_corba;
 GnomeVFSResult r;
 xmlNode *xml_action=NULL;
 CaptiveVfsParentObject *captive_vfs_parent_object;
+CaptiveFileInfoObject *captive_file_info_object;
 
        g_return_val_if_fail(CAPTIVE_FILE_PARENT_IS_OBJECT(captive_file_parent_object),GNOME_VFS_ERROR_BAD_PARAMETERS);
-       g_return_val_if_fail(file_info_captive!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+       g_return_val_if_fail(captive_file_info_object_return!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
 
        captive_vfs_parent_object=CAPTIVE_VFS_PARENT_OBJECT(CAPTIVE_FILE_OBJECT(captive_file_parent_object)->vfs);
 
@@ -420,22 +421,34 @@ CaptiveVfsParentObject *captive_vfs_parent_object;
        if (r!=GNOME_VFS_OK)
                return r;
 
-       r=captive_sandbox_file_info_corba_to_captive(file_info_captive,file_info_corba);
-       Captive_GnomeVFSFileInfo__freekids(file_info_corba,NULL/* 'd'; meaning? */);
+       r=captive_file_info_object_new(&captive_file_info_object);
+       if (xml_action)
+               xmlNewProp(xml_action,BAD_CAST "result",BAD_CAST gnome_vfs_result_to_string(r));
+       if (r!=GNOME_VFS_OK) {
+               Captive_CaptiveFileInfoObject__freekids(file_info_corba,NULL/* 'd'; meaning? */);
+               CORBA_free(file_info_corba);
+               return r;
+               }
+
+       r=captive_sandbox_file_info_corba_to_captive(captive_file_info_object,file_info_corba);
+       Captive_CaptiveFileInfoObject__freekids(file_info_corba,NULL/* 'd'; meaning? */);
        CORBA_free(file_info_corba);
        if (xml_action)
                xmlSetProp(xml_action,BAD_CAST "result",BAD_CAST gnome_vfs_result_to_string(r));
-       if (r!=GNOME_VFS_OK)
+       if (r!=GNOME_VFS_OK) {
+               g_object_unref(captive_file_info_object);
                return r;
+               }
 
+       *captive_file_info_object_return=captive_file_info_object;
        return GNOME_VFS_OK;
 }
 
 
 GnomeVFSResult captive_sandbox_parent_file_file_info_set(CaptiveFileParentObject *captive_file_parent_object,
-    const GnomeVFSFileInfo *file_info_captive,GnomeVFSSetFileInfoMask mask)
+    CaptiveFileInfoObject *file_info_captive,GnomeVFSSetFileInfoMask mask)
 {
-Captive_GnomeVFSFileInfo file_info_corba;
+Captive_CaptiveFileInfoObject file_info_corba;
 GnomeVFSResult r;
 xmlNode *xml_action=NULL;
 CaptiveVfsParentObject *captive_vfs_parent_object;
@@ -461,7 +474,7 @@ CaptiveVfsParentObject *captive_vfs_parent_object;
        if (r!=GNOME_VFS_OK)
                return r;
 
-       Captive_GnomeVFSFileInfo__freekids(&file_info_corba,NULL/* 'd'; meaning? */);
+       Captive_CaptiveFileInfoObject__freekids(&file_info_corba,NULL/* 'd'; meaning? */);
 
        return GNOME_VFS_OK;
 }