Implemented sub-second W32 filesystem interface by new: CaptiveFileInfoObject
[captive.git] / src / client / fuse / op_chmod.c
index e09e6c3..3813a67 100644 (file)
 #include <captive/client-file.h>
 #include <sys/stat.h>
 #include <captive/macros.h>
+#include <captive/client-file-info.h>
 
 #include "op_chmod.h"  /* self */
 #include "main.h"
 #include "gnomevfsresult.h"
-#include "gnomevfsfileinfo.h"
 
 
 int op_chmod(const char *path,mode_t mode)
 {
 CaptiveFileObject *captive_file_object;
 GnomeVFSResult errvfsresult;
-GnomeVFSFileInfo file_info;
+CaptiveFileInfoObject *captive_file_info_object;
 
        g_return_val_if_fail(path!=NULL,-EINVAL);
 
@@ -51,12 +51,18 @@ GnomeVFSFileInfo file_info;
        if (GNOME_VFS_OK!=(errvfsresult=captive_file_new_open(&captive_file_object,capfuse_captive_vfs_object,path,0)))
                return -gnomevfsresult_to_errno(errvfsresult);
 
-       file_info.valid_fields=0
+       if (GNOME_VFS_OK!=(errvfsresult=captive_file_info_object_new(&captive_file_info_object))) {
+               g_object_unref(captive_file_object);
+               return -gnomevfsresult_to_errno(errvfsresult);
+               }
+
+       captive_file_info_object->p.valid_fields=0
                        |GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS
                        |GNOME_VFS_FILE_INFO_FIELDS_ACCESS;
-       file_info.permissions=mode;
-       errvfsresult=captive_file_file_info_set(captive_file_object,&file_info,GNOME_VFS_SET_FILE_INFO_PERMISSIONS);
+       captive_file_info_object->p.permissions=mode;
+       errvfsresult=captive_file_file_info_set(captive_file_object,captive_file_info_object,GNOME_VFS_SET_FILE_INFO_PERMISSIONS);
 
+       g_object_unref(captive_file_info_object);
        g_object_unref(captive_file_object);
        if (GNOME_VFS_OK!=errvfsresult)
                return -gnomevfsresult_to_errno(errvfsresult);