summaryrefslogtreecommitdiff
path: root/ucb/source/ucp/gvfs
diff options
context:
space:
mode:
authorVladimir Glazunov <vg@openoffice.org>2010-02-12 15:41:38 +0100
committerVladimir Glazunov <vg@openoffice.org>2010-02-12 15:41:38 +0100
commitd0ba772044bce89644839e9eb2451f67045fd057 (patch)
treebae37492757db4cd1bf76f20cc12c1fc7bf86a13 /ucb/source/ucp/gvfs
parente82f5f7eff50cd0ae00e8ccf8b6531c9e93657e7 (diff)
parent46e81a69d5a3791742997fefd96a9ea3cf1302f3 (diff)
CWS-TOOLING: integrate CWS tkr32
Diffstat (limited to 'ucb/source/ucp/gvfs')
-rw-r--r--ucb/source/ucp/gvfs/gvfs_content.cxx36
-rw-r--r--ucb/source/ucp/gvfs/gvfs_directory.cxx24
2 files changed, 31 insertions, 29 deletions
diff --git a/ucb/source/ucp/gvfs/gvfs_content.cxx b/ucb/source/ucp/gvfs/gvfs_content.cxx
index cdfc313a5c8f..7be8fab75e14 100644
--- a/ucb/source/ucp/gvfs/gvfs_content.cxx
+++ b/ucb/source/ucp/gvfs/gvfs_content.cxx
@@ -629,38 +629,38 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
else
xRow->appendVoid( rProp );
}
-
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsFolder" ) ) ) {
if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE)
xRow->appendBoolean( rProp, ( m_info.type == GNOME_VFS_FILE_TYPE_DIRECTORY ) );
else
xRow->appendVoid( rProp );
}
+ else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsReadOnly" ) ) ) {
- else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Size" ) ) ) {
- if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
- xRow->appendLong( rProp, m_info.size );
- else
- xRow->appendVoid( rProp );
- }
+ GnomeVFSFileInfo* fileInfo = gnome_vfs_file_info_new ();
- else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsReadOnly" ) ) ) {
- if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) {
+ ::rtl::OString aURI = getOURI();
+ gnome_vfs_get_file_info
+ ( (const sal_Char *)aURI, fileInfo,
+ GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS );
+
+ if (fileInfo->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_ACCESS) {
bool read_only = true;
- if (m_info.uid == getuid () &&
- m_info.permissions & GNOME_VFS_PERM_USER_WRITE)
- read_only = false;
- else if (m_info.gid == getgid () &&
- m_info.permissions & GNOME_VFS_PERM_GROUP_WRITE)
- read_only = false;
- else if (m_info.permissions & GNOME_VFS_PERM_OTHER_WRITE)
- read_only = false;
+ if (fileInfo->permissions & GNOME_VFS_PERM_ACCESS_WRITABLE)
+ read_only = false;
+
xRow->appendBoolean( rProp, read_only );
} else
xRow->appendVoid( rProp );
+ gnome_vfs_file_info_unref (fileInfo);
+ }
+ else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Size" ) ) ) {
+ if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
+ xRow->appendLong( rProp, m_info.size );
+ else
+ xRow->appendVoid( rProp );
}
-
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsHidden" ) ) )
xRow->appendBoolean( rProp, ( m_info.name && m_info.name[0] == '.' ) );
diff --git a/ucb/source/ucp/gvfs/gvfs_directory.cxx b/ucb/source/ucp/gvfs/gvfs_directory.cxx
index d8357a060a3e..2b8328886c38 100644
--- a/ucb/source/ucp/gvfs/gvfs_directory.cxx
+++ b/ucb/source/ucp/gvfs/gvfs_directory.cxx
@@ -360,25 +360,24 @@ sal_Bool DataSupplier::getData()
g_free( uri );
}
+ GnomeVFSFileInfo* fileInfo = gnome_vfs_file_info_new ();
- GnomeVFSFileInfo fileInfo;
- fileInfo.name = 0;
- while ((result = gnome_vfs_directory_read_next (dirHandle, &fileInfo)) == GNOME_VFS_OK) {
- if( fileInfo.name && fileInfo.name[0] == '.' &&
- ( fileInfo.name[1] == '\0' ||
- ( fileInfo.name[1] == '.' && fileInfo.name[2] == '\0' ) ) )
+ while ((result = gnome_vfs_directory_read_next (dirHandle, fileInfo)) == GNOME_VFS_OK) {
+ if( fileInfo->name && fileInfo->name[0] == '.' &&
+ ( fileInfo->name[1] == '\0' ||
+ ( fileInfo->name[1] == '.' && fileInfo->name[2] == '\0' ) ) )
continue;
switch ( m_pImpl->m_nOpenMode ) {
case ucb::OpenMode::FOLDERS:
- if ( !(fileInfo.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) ||
- fileInfo.type != GNOME_VFS_FILE_TYPE_DIRECTORY )
+ if ( !(fileInfo->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) ||
+ fileInfo->type != GNOME_VFS_FILE_TYPE_DIRECTORY )
continue;
break;
case ucb::OpenMode::DOCUMENTS:
- if ( !(fileInfo.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) ||
- fileInfo.type != GNOME_VFS_FILE_TYPE_REGULAR )
+ if ( !(fileInfo->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) ||
+ fileInfo->type != GNOME_VFS_FILE_TYPE_REGULAR )
continue;
break;
@@ -387,8 +386,11 @@ sal_Bool DataSupplier::getData()
break;
}
- m_pImpl->m_aResults.push_back( new ResultListEntry( &fileInfo ) );
+ m_pImpl->m_aResults.push_back( new ResultListEntry( fileInfo ) );
}
+
+ gnome_vfs_file_info_unref (fileInfo);
+
#ifdef DEBUG
g_warning ("Got %d directory entries", result);
#endif