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 (GnomeVFSFileInfo *file_info_captive,const Captive_GnomeVFSFileInfo *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);
32 file_info_captive->valid_fields=0;
33 file_info_captive->name=g_strdup(file_info_corba->name);
34 if (file_info_corba->type_valid) {
35 file_info_captive->type=file_info_corba->type;
36 file_info_captive->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_TYPE;
38 if (file_info_corba->permissions_valid) {
39 file_info_captive->permissions=file_info_corba->permissions;
40 file_info_captive->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS;
42 if (file_info_corba->size_valid) {
43 file_info_captive->size=file_info_corba->size;
44 file_info_captive->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_SIZE;
46 if (file_info_corba->block_count_valid) {
47 file_info_captive->block_count=file_info_corba->block_count;
48 file_info_captive->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT;
50 if (file_info_corba->atime) {
51 file_info_captive->atime=file_info_corba->atime;
52 file_info_captive->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_ATIME;
54 if (file_info_corba->mtime) {
55 file_info_captive->mtime=file_info_corba->mtime;
56 file_info_captive->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_MTIME;
58 if (file_info_corba->ctime) {
59 file_info_captive->ctime=file_info_corba->ctime;
60 file_info_captive->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_CTIME;
62 if (file_info_corba->flags_valid) {
63 file_info_captive->flags=file_info_corba->flags;
64 file_info_captive->valid_fields|=GNOME_VFS_FILE_INFO_FIELDS_FLAGS;
71 GnomeVFSResult captive_sandbox_file_info_captive_to_corba
72 (Captive_GnomeVFSFileInfo *file_info_corba,const GnomeVFSFileInfo *file_info_captive)
74 g_return_val_if_fail(file_info_corba!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
75 g_return_val_if_fail(file_info_captive!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
77 if (!file_info_captive->name)
78 file_info_corba->name=CORBA_string_dup("");
80 file_info_corba->name=CORBA_string_dup(file_info_captive->name);
81 if ((file_info_corba->type_valid=!!(file_info_captive->valid_fields&GNOME_VFS_FILE_INFO_FIELDS_TYPE)))
82 file_info_corba->type=file_info_captive->type;
83 if ((file_info_corba->permissions_valid=!!(file_info_captive->valid_fields&GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS)))
84 file_info_corba->permissions=file_info_captive->permissions;
85 if ((file_info_corba->size_valid=!!(file_info_captive->valid_fields&GNOME_VFS_FILE_INFO_FIELDS_SIZE)))
86 file_info_corba->size=file_info_captive->size;
87 if ((file_info_corba->block_count_valid=!!(file_info_captive->valid_fields&GNOME_VFS_FILE_INFO_FIELDS_BLOCK_COUNT)))
88 file_info_corba->block_count=file_info_captive->block_count;
89 file_info_corba->atime=(!(file_info_captive->valid_fields&GNOME_VFS_FILE_INFO_FIELDS_ATIME) ? 0 : file_info_captive->atime);
90 file_info_corba->mtime=(!(file_info_captive->valid_fields&GNOME_VFS_FILE_INFO_FIELDS_MTIME) ? 0 : file_info_captive->mtime);
91 file_info_corba->ctime=(!(file_info_captive->valid_fields&GNOME_VFS_FILE_INFO_FIELDS_CTIME) ? 0 : file_info_captive->ctime);
92 if ((file_info_corba->flags_valid=!!(file_info_captive->valid_fields&GNOME_VFS_FILE_INFO_FIELDS_FLAGS)))
93 file_info_corba->flags=file_info_captive->flags;
99 GnomeVFSResult captive_sandbox_file_info_set_mask_captive_to_corba
100 (Captive_GnomeVFSFileInfo *file_info_corba,const GnomeVFSFileInfo *file_info_captive,GnomeVFSSetFileInfoMask mask)
102 g_return_val_if_fail(file_info_corba!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
103 g_return_val_if_fail(file_info_captive!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
105 /* uninitialized: file_info_corba->name */
106 file_info_corba->type_valid=CORBA_FALSE;
107 file_info_corba->permissions_valid=CORBA_FALSE;
108 file_info_corba->size_valid=CORBA_FALSE;
109 file_info_corba->block_count_valid=CORBA_FALSE;
110 file_info_corba->atime=0;
111 file_info_corba->mtime=0;
112 file_info_corba->ctime=0;
113 file_info_corba->flags_valid=CORBA_FALSE;
115 if (!(mask&GNOME_VFS_SET_FILE_INFO_NAME))
116 file_info_corba->name=CORBA_string_dup("");
118 file_info_corba->name=CORBA_string_dup(file_info_captive->name);
119 if ((file_info_corba->permissions_valid=!!(mask&GNOME_VFS_SET_FILE_INFO_PERMISSIONS)))
120 file_info_corba->permissions=file_info_captive->permissions;
121 /* Not implemented by libcaptive: GNOME_VFS_SET_FILE_INFO_OWNER */
122 if (mask&GNOME_VFS_SET_FILE_INFO_TIME) {
123 file_info_corba->atime=file_info_captive->atime;
124 file_info_corba->mtime=file_info_captive->mtime;
125 file_info_corba->ctime=file_info_captive->ctime;