diff options
author | Vladimir Glazunov <vg@openoffice.org> | 2010-02-12 15:41:38 +0100 |
---|---|---|
committer | Vladimir Glazunov <vg@openoffice.org> | 2010-02-12 15:41:38 +0100 |
commit | d0ba772044bce89644839e9eb2451f67045fd057 (patch) | |
tree | bae37492757db4cd1bf76f20cc12c1fc7bf86a13 /ucb/source/ucp/gvfs | |
parent | e82f5f7eff50cd0ae00e8ccf8b6531c9e93657e7 (diff) | |
parent | 46e81a69d5a3791742997fefd96a9ea3cf1302f3 (diff) |
CWS-TOOLING: integrate CWS tkr32
Diffstat (limited to 'ucb/source/ucp/gvfs')
-rw-r--r-- | ucb/source/ucp/gvfs/gvfs_content.cxx | 36 | ||||
-rw-r--r-- | ucb/source/ucp/gvfs/gvfs_directory.cxx | 24 |
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 |