2 * CORBA/ORBit server side of GnomeVFSFileInfo handling
3 * Copyright (C) 2003 Jan Kratochvil <project-captive@jankratochvil.net>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; exactly version 2 of June 1991 is required
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include "FileInfo.h" /* self */
23 #include <glib/gmessages.h>
26 GnomeVFSResult captive_sandbox_file_info_corba_to_captive
27 (CaptiveFileInfoObject *file_info_captive,const Captive_CaptiveFileInfoObject *file_info_corba)
29 g_return_val_if_fail(file_info_captive!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
30 g_return_val_if_fail(file_info_corba!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
31 g_return_val_if_fail(file_info_captive->p.valid_fields==0,GNOME_VFS_ERROR_BAD_PARAMETERS);
32 g_return_val_if_fail(file_info_captive->p.name==NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
34 file_info_captive->p.valid_fields=0;
35 file_info_captive->p.name=g_strdup(file_info_corba->name);
36 if (file_info_corba->type_valid) {
37 file_info_captive->p.type=file_info_corba->type;
38 file_info_captive->p.valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_TYPE;
40 if (file_info_corba->permissions_valid) {
41 file_info_captive->p.permissions=file_info_corba->permissions;
42 file_info_captive->p.valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS;
44 if (file_info_corba->size_valid) {
45 file_info_captive->p.size=file_info_corba->size;
46 file_info_captive->p.valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_SIZE;
48 if (file_info_corba->block_count_valid) {
49 file_info_captive->p.block_count=file_info_corba->block_count;
50 file_info_captive->p.valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT;
52 if (file_info_corba->atime) {
53 file_info_captive->p.atime=file_info_corba->atime;
54 file_info_captive->atime_nsec=file_info_corba->atime_nsec;
55 file_info_captive->p.valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_ATIME;
57 if (file_info_corba->mtime) {
58 file_info_captive->p.mtime=file_info_corba->mtime;
59 file_info_captive->mtime_nsec=file_info_corba->mtime_nsec;
60 file_info_captive->p.valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_MTIME;
62 if (file_info_corba->ctime) {
63 file_info_captive->p.ctime=file_info_corba->ctime;
64 file_info_captive->ctime_nsec=file_info_corba->ctime_nsec;
65 file_info_captive->p.valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_CTIME;
67 if (file_info_corba->flags_valid) {
68 file_info_captive->p.flags=file_info_corba->flags;
69 file_info_captive->p.valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_FLAGS;
76 GnomeVFSResult captive_sandbox_file_info_captive_to_corba
77 (Captive_CaptiveFileInfoObject *file_info_corba,const CaptiveFileInfoObject *file_info_captive)
79 g_return_val_if_fail(file_info_corba!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
80 g_return_val_if_fail(file_info_captive!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
82 if (!file_info_captive->p.name)
83 file_info_corba->name=CORBA_string_dup("");
85 file_info_corba->name=CORBA_string_dup(file_info_captive->p.name);
86 if ((file_info_corba->type_valid=!!(file_info_captive->p.valid_fields&GNOME_VFS_FILE_INFO_FIELDS_TYPE)))
87 file_info_corba->type=file_info_captive->p.type;
88 if ((file_info_corba->permissions_valid=!!(file_info_captive->p.valid_fields&GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS)))
89 file_info_corba->permissions=file_info_captive->p.permissions;
90 if ((file_info_corba->size_valid=!!(file_info_captive->p.valid_fields&GNOME_VFS_FILE_INFO_FIELDS_SIZE)))
91 file_info_corba->size=file_info_captive->p.size;
92 if ((file_info_corba->block_count_valid=!!(file_info_captive->p.valid_fields&GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT)))
93 file_info_corba->block_count=file_info_captive->p.block_count;
94 if (!file_info_captive->p.valid_fields&GNOME_VFS_FILE_INFO_FIELDS_ATIME) {
95 file_info_corba->atime =0;
96 file_info_corba->atime_nsec=0;
99 file_info_corba->atime=file_info_captive->p.atime;
100 file_info_corba->atime_nsec=file_info_captive->atime_nsec;
102 if (!file_info_captive->p.valid_fields&GNOME_VFS_FILE_INFO_FIELDS_MTIME) {
103 file_info_corba->mtime =0;
104 file_info_corba->mtime_nsec=0;
107 file_info_corba->mtime=file_info_captive->p.mtime;
108 file_info_corba->mtime_nsec=file_info_captive->mtime_nsec;
110 if (!file_info_captive->p.valid_fields&GNOME_VFS_FILE_INFO_FIELDS_CTIME) {
111 file_info_corba->ctime =0;
112 file_info_corba->ctime_nsec=0;
115 file_info_corba->ctime=file_info_captive->p.ctime;
116 file_info_corba->ctime_nsec=file_info_captive->ctime_nsec;
118 if ((file_info_corba->flags_valid=!!(file_info_captive->p.valid_fields&GNOME_VFS_FILE_INFO_FIELDS_FLAGS)))
119 file_info_corba->flags=file_info_captive->p.flags;
125 GnomeVFSResult captive_sandbox_file_info_set_mask_captive_to_corba
126 (Captive_CaptiveFileInfoObject *file_info_corba,const CaptiveFileInfoObject *file_info_captive,GnomeVFSSetFileInfoMask mask)
128 g_return_val_if_fail(file_info_corba!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
129 g_return_val_if_fail(file_info_captive!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
131 /* uninitialized: file_info_corba->name */
132 file_info_corba->type_valid=CORBA_FALSE;
133 file_info_corba->permissions_valid=CORBA_FALSE;
134 file_info_corba->size_valid=CORBA_FALSE;
135 file_info_corba->block_count_valid=CORBA_FALSE;
136 file_info_corba->atime =0;
137 file_info_corba->atime_nsec=0;
138 file_info_corba->mtime =0;
139 file_info_corba->mtime_nsec=0;
140 file_info_corba->ctime =0;
141 file_info_corba->ctime_nsec=0;
142 file_info_corba->flags_valid=CORBA_FALSE;
144 if (!(mask&GNOME_VFS_SET_FILE_INFO_NAME))
145 file_info_corba->name=CORBA_string_dup("");
147 file_info_corba->name=CORBA_string_dup(file_info_captive->p.name);
148 if ((file_info_corba->permissions_valid=!!(mask&GNOME_VFS_SET_FILE_INFO_PERMISSIONS)))
149 file_info_corba->permissions=file_info_captive->p.permissions;
150 /* Not implemented by libcaptive: GNOME_VFS_SET_FILE_INFO_OWNER */
151 if (mask&GNOME_VFS_SET_FILE_INFO_TIME) {
152 file_info_corba->atime =file_info_captive->p.atime;
153 file_info_corba->atime_nsec=file_info_captive->atime_nsec;
154 file_info_corba->mtime =file_info_captive->p.mtime;
155 file_info_corba->mtime_nsec=file_info_captive->mtime_nsec;
156 file_info_corba->ctime =file_info_captive->p.ctime;
157 file_info_corba->ctime_nsec=file_info_captive->ctime_nsec;