summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2019-03-28 19:04:30 +0900
committerCaolán McNamara <caolanm@redhat.com>2019-04-13 14:59:48 +0200
commit88d46ba32e4a03d848d82210071c42208e0d6eca (patch)
treea3376cdf7ef8a294c7b0211571724f10abc6a8b0 /shell
parentbf9f0b2973138652946f2480ede72c54602b854a (diff)
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 <https://gerrit.libreoffice.org/#/c/67741/>. Change-Id: I6dfdc0408effb06cc9175cd976ea6687e52a7136 Reviewed-on: https://gerrit.libreoffice.org/69883 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/source/backends/desktopbe/desktopbackend.cxx21
1 files changed, 13 insertions, 8 deletions
diff --git a/shell/source/backends/desktopbe/desktopbackend.cxx b/shell/source/backends/desktopbe/desktopbackend.cxx
index 4f3c2940869b..14b22b033fb1 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<css::uno::Any>(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" ||