From 30d696d0a1b43b279a92d387557ade33b9212880 Mon Sep 17 00:00:00 2001 From: Takeshi Abe Date: Thu, 28 Mar 2019 19:04:30 +0900 Subject: [PATCH] tdf#119890 followup: Forbid HOME to be the default dir ... of user templates This is kludgy yet better than making innocent users waiting for the template dialog ~forever as pointed out in the comments in . Change-Id: I6dfdc0408effb06cc9175cd976ea6687e52a7136 --- .../backends/desktopbe/desktopbackend.cxx | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/shell/source/backends/desktopbe/desktopbackend.cxx b/shell/source/backends/desktopbe/desktopbackend.cxx index 5923c6583fb7..4b1d0c44b182 100644 --- a/shell/source/backends/desktopbe/desktopbackend.cxx +++ b/shell/source/backends/desktopbe/desktopbackend.cxx @@ -127,7 +127,7 @@ void Default::setPropertyValue(OUString const &, css::uno::Any const &) static_cast< cppu::OWeakObject * >(this), -1); } -OUString xdg_user_dir_lookup (const char *type) +OUString xdg_user_dir_lookup (const char *type, bool bAllowHomeDir) { size_t nLenType = strlen(type); char *config_home; @@ -218,16 +218,20 @@ OUString xdg_user_dir_lookup (const char *type) if (aUserDirBuf.getLength()>0 && !bError) { aDocumentsDirURL = aUserDirBuf.makeStringAndClear(); - osl::Directory aDocumentsDir( aDocumentsDirURL ); - if( osl::FileBase::E_None == aDocumentsDir.open() ) - return aDocumentsDirURL; + if ( bAllowHomeDir || + (aDocumentsDirURL != aHomeDirURL && aDocumentsDirURL != aHomeDirURL + "/") ) + { + osl::Directory aDocumentsDir( aDocumentsDirURL ); + if( osl::FileBase::E_None == aDocumentsDir.open() ) + return aDocumentsDirURL; + } } /* Use fallbacks historical compatibility if nothing else exists */ return aHomeDirURL + "/" + OUString::createFromAscii(type); } -css::uno::Any xdgDirectoryIfExists(char const * type) { - auto url = xdg_user_dir_lookup(type); +css::uno::Any xdgDirectoryIfExists(char const * type, bool bAllowHomeDir) { + auto url = xdg_user_dir_lookup(type, bAllowHomeDir); return css::uno::Any( osl::Directory(url).open() == osl::FileBase::E_None ? css::beans::Optional(true, css::uno::Any(url)) @@ -238,12 +242,13 @@ css::uno::Any Default::getPropertyValue(OUString const & PropertyName) { if (PropertyName == "TemplatePathVariable") { - return xdgDirectoryIfExists("Templates"); + // Never pick up the HOME directory as the default location of user's templates + return xdgDirectoryIfExists("Templates", false); } if (PropertyName == "WorkPathVariable") { - return xdgDirectoryIfExists("Documents"); + return xdgDirectoryIfExists("Documents", true); } if ( PropertyName == "EnableATToolSupport" || -- 2.20.1