/* $Id$
- * CORBA/ORBit server side of Directory object of sandbox_parent()
+ * CORBA/ORBit client side of Directory object of sandbox_parent()
* Copyright (C) 2003 Jan Kratochvil <project-captive@jankratochvil.net>
*
* This program is free software; you can redistribute it and/or modify
GnomeVFSResult captive_sandbox_parent_directory_new_open
(CaptiveDirectoryObject *captive_directory_object,const gchar *pathname)
{
+gboolean retried=FALSE;
+
g_return_val_if_fail(captive_directory_object!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
g_return_val_if_fail(pathname!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
g_return_val_if_fail(captive_directory_object->dir_Handle==NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+retry:
captive_directory_object->corba_Directory_object=Captive_Vfs_directory_new_open(
captive_directory_object->vfs->corba_Vfs_object,pathname,&captive_corba_ev);
+ if (!retried && captive_sandbox_parent_query_vfs_retry(&captive_corba_ev,captive_directory_object->vfs)) {
+ retried=TRUE;
+ goto retry;
+ }
+
return captive_sandbox_parent_return_from_CORBA_Environment(&captive_corba_ev);
}
GnomeVFSResult captive_sandbox_parent_directory_new_make
(CaptiveDirectoryObject *captive_directory_object,const gchar *pathname,guint perm)
{
+gboolean retried=FALSE;
+
g_return_val_if_fail(captive_directory_object!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
g_return_val_if_fail(pathname!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
g_return_val_if_fail(captive_directory_object->dir_Handle==NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+retry:
captive_directory_object->corba_Directory_object=Captive_Vfs_directory_new_make(
captive_directory_object->vfs->corba_Vfs_object,pathname,perm,&captive_corba_ev);
+ if (!retried && captive_sandbox_parent_query_vfs_retry(&captive_corba_ev,captive_directory_object->vfs)) {
+ retried=TRUE;
+ goto retry;
+ }
+
return captive_sandbox_parent_return_from_CORBA_Environment(&captive_corba_ev);
}
GnomeVFSResult captive_sandbox_parent_directory_close(CaptiveDirectoryObject *captive_directory_object)
{
+GnomeVFSResult r;
+
g_return_val_if_fail(captive_directory_object!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
g_return_val_if_fail(captive_directory_object->dir_Handle==NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
+ Captive_Directory_shutdown(captive_directory_object->corba_Directory_object,&captive_corba_ev);
+ if (GNOME_VFS_OK!=(r=captive_sandbox_parent_return_from_CORBA_Environment(&captive_corba_ev)))
+ return r;
+
CORBA_Object_release((CORBA_Object)captive_directory_object->corba_Directory_object,&captive_corba_ev);
captive_directory_object->corba_Directory_object=CORBA_OBJECT_NIL;