Kaydet (Commit) dcd1171c authored tarafından Stephan Bergmann's avatar Stephan Bergmann Kaydeden (comit) Fridrich Strba

fdo#54275: Fix GVFS UCP, so saving docs works again

Similar to 8722f0e7 "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
(cherry picked from commit 112d3287)
Reviewed-on: https://gerrit.libreoffice.org/2730Reviewed-by: 's avatarFridrich Strba <fridrich@documentfoundation.org>
Tested-by: 's avatarFridrich Strba <fridrich@documentfoundation.org>
üst d87160b8
......@@ -577,11 +577,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;
......@@ -602,10 +600,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" )
......@@ -651,7 +652,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" ) ) )
......@@ -973,7 +977,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 );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment