#include "FileInfo.h"
#include "captive/macros.h"
#include "../client/vfs-parent.h"
+#include "captive/client-file-info.h"
GnomeVFSResult captive_sandbox_parent_directory_new_open
return r;
}
-static GnomeVFSResult captive_sandbox_parent_directory_read_fill1
- (CaptiveDirectoryParentObject *captive_directory_parent_object,GnomeVFSFileInfo *file_info_captive)
+static GnomeVFSResult captive_sandbox_parent_directory_read_get1
+ (CaptiveDirectoryParentObject *captive_directory_parent_object,CaptiveFileInfoObject **file_info_captive_return)
{
xmlNode *xml_action=NULL;
-Captive_GnomeVFSFileInfo *file_info_corba;
+Captive_CaptiveFileInfoObject *file_info_corba;
GnomeVFSResult r;
CaptiveVfsParentObject *captive_vfs_parent_object;
+CaptiveFileInfoObject *file_info_captive;
g_return_val_if_fail(CAPTIVE_DIRECTORY_PARENT_IS_OBJECT(captive_directory_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(file_info_captive_return!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
captive_vfs_parent_object=CAPTIVE_VFS_PARENT_OBJECT(CAPTIVE_DIRECTORY_OBJECT(captive_directory_parent_object)->vfs);
if (r!=GNOME_VFS_OK)
return r;
- r=captive_sandbox_file_info_corba_to_captive(file_info_captive,file_info_corba);
+ r=captive_file_info_object_new(&file_info_captive);
if (xml_action)
xmlSetProp(xml_action,BAD_CAST "result",BAD_CAST gnome_vfs_result_to_string(r));
if (r!=GNOME_VFS_OK)
return r; /* 'file_info_corba' leak */
- Captive_GnomeVFSFileInfo__freekids(file_info_corba,NULL/* 'd'; meaning? */);
+ r=captive_sandbox_file_info_corba_to_captive(file_info_captive,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) {
+ g_object_unref(file_info_captive);
+ return r; /* 'file_info_corba' leak */
+ }
+
+ Captive_CaptiveFileInfoObject__freekids(file_info_corba,NULL/* 'd'; meaning? */);
CORBA_free(file_info_corba);
+ *file_info_captive_return=file_info_captive;
return GNOME_VFS_OK;
}
static GnomeVFSResult captive_sandbox_parent_directory_read_filldir(CaptiveDirectoryParentObject *captive_directory_parent_object)
{
-GnomeVFSFileInfo *file_info_captive;
+CaptiveFileInfoObject *file_info_captive;
GnomeVFSResult r;
g_return_val_if_fail(CAPTIVE_DIRECTORY_PARENT_IS_OBJECT(captive_directory_parent_object),GNOME_VFS_ERROR_BAD_PARAMETERS);
g_return_val_if_fail(captive_directory_parent_object->corba_Directory_file_info_list==NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
for (;;) {
- file_info_captive=gnome_vfs_file_info_new();
- r=captive_sandbox_parent_directory_read_fill1(captive_directory_parent_object,file_info_captive);
- if (r==GNOME_VFS_ERROR_EOF) {
- gnome_vfs_file_info_unref(file_info_captive);
+ r=captive_sandbox_parent_directory_read_get1(captive_directory_parent_object,&file_info_captive);
+ if (r==GNOME_VFS_ERROR_EOF)
break;
- }
if (r!=GNOME_VFS_OK) {
- gnome_vfs_file_info_unref(file_info_captive);
gnome_vfs_file_info_list_free(captive_directory_parent_object->corba_Directory_file_info_list);
captive_directory_parent_object->corba_Directory_file_info_list=NULL;
return r;
/* We have to read the whole directory atomically
* as during valid child restart we would loose our reading position.
+ * Returned 'CaptiveFileInfoObject' has 1 reference for yourself, you must g_object_unref() it.
*/
GnomeVFSResult captive_sandbox_parent_directory_read
- (CaptiveDirectoryParentObject *captive_directory_parent_object,GnomeVFSFileInfo *file_info_captive)
+ (CaptiveDirectoryParentObject *captive_directory_parent_object,CaptiveFileInfoObject **file_info_captive_return)
{
GnomeVFSResult r;
g_return_val_if_fail(CAPTIVE_DIRECTORY_PARENT_IS_OBJECT(captive_directory_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(file_info_captive_return!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
if (!captive_directory_parent_object->corba_Directory_file_info_list)
if (GNOME_VFS_OK!=(r=captive_sandbox_parent_directory_read_filldir(captive_directory_parent_object)))
}
else {
/* Cut first list item. */
- gnome_vfs_file_info_copy(
- file_info_captive, /* dest */
- captive_directory_parent_object->corba_Directory_file_info_list->data); /* src */
- gnome_vfs_file_info_unref(captive_directory_parent_object->corba_Directory_file_info_list->data);
+ *file_info_captive_return=captive_directory_parent_object->corba_Directory_file_info_list->data;
captive_directory_parent_object->corba_Directory_file_info_list=g_list_delete_link(
captive_directory_parent_object->corba_Directory_file_info_list,
captive_directory_parent_object->corba_Directory_file_info_list);