summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2013-03-14 17:01:07 +0100
committerStephan Bergmann <sbergman@redhat.com>2013-03-14 17:08:47 +0100
commit112d3287a9424e0baaa8d956e6aff8932d48658e (patch)
treedd6cf5abfb0bf30b8118c1b2e66ff648c8488bdf
parent6d2f041a6569671a98f42272b1798171af211c75 (diff)
fdo#54275: Fix GVFS UCP, so saving docs works again
Similar to 8722f0e7ef690205d042c8a6b1fdf342a34ecbe1 "rhbz#895690: Make GIO UCP less brittle, so saving docs works again" the alternative, older GVFS UCP (--enable-gnome-vfs --disable-gio, as used e.g. in distro-configs/LibreOfficeLinux.conf) no longer works well in LO 3.6 and later: * For one, "getPropertyValues" did not work for non-existing files, just like in the GIO UCP case. * For another, creating the .~XXX# lock file uses "insert" with !bReplaceExisting, which apparently never worked for the GVFS UCP. Change-Id: Ie4dc032225697ff7b866a75327891c796d559392
-rw-r--r--ucb/source/ucp/gvfs/gvfs_content.cxx22
1 files changed, 13 insertions, 9 deletions
diff --git a/ucb/source/ucp/gvfs/gvfs_content.cxx b/ucb/source/ucp/gvfs/gvfs_content.cxx
index 760715a9c937..29e328f27274 100644
--- a/ucb/source/ucp/gvfs/gvfs_content.cxx
+++ b/ucb/source/ucp/gvfs/gvfs_content.cxx
@@ -569,11 +569,9 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
const uno::Reference< ucb::XCommandEnvironment >& xEnv )
{
int nProps;
- GnomeVFSResult result;
uno::Sequence< beans::Property > allProperties;
- if( ( result = getInfo( xEnv ) ) != GNOME_VFS_OK )
- cancelCommandExecution( result, xEnv, sal_False );
+ getInfo( xEnv );
const beans::Property* pProps;
@@ -594,10 +592,13 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
const beans::Property& rProp = pProps[ n ];
if ( rProp.Name == "Title" ) {
- if (m_info.name && m_info.name[0] == '/')
- g_warning ("Odd NFS title on item '%s' == '%s'",
- getURI(), m_info.name);
- xRow->appendString( rProp, GnomeToOUString( m_info.name ) );
+ if ( m_info.name ) {
+ if (m_info.name[0] == '/')
+ g_warning ("Odd NFS title on item '%s' == '%s'",
+ getURI(), m_info.name);
+ xRow->appendString( rProp, GnomeToOUString( m_info.name ) );
+ } else
+ xRow->appendVoid( rProp );
}
else if ( rProp.Name == "ContentType" )
@@ -643,7 +644,10 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
xRow->appendVoid( rProp );
}
else if ( rProp.Name == "IsHidden" )
- xRow->appendBoolean( rProp, ( m_info.name && m_info.name[0] == '.' ) );
+ if ( m_info.name )
+ xRow->appendBoolean( rProp, m_info.name[0] == '.' );
+ else
+ xRow->appendVoid( rProp );
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsVolume" ) ) ||
rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsCompactDisk" ) ) )
@@ -965,7 +969,7 @@ void Content::insert(
GnomeVFSHandle *handle = NULL;
::rtl::OString aURI = getOURI();
- result = GNOME_VFS_OK;
+ result = GNOME_VFS_ERROR_GENERIC;
if ( bReplaceExisting ) {
Authentication aAuth( xEnv );
result = gnome_vfs_open( &handle, aURI.getStr(), GNOME_VFS_OPEN_WRITE );