summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorNoel Power <noel.power@novell.com>2011-06-13 10:38:18 +0100
committerNoel Power <noel.power@novell.com>2011-06-13 10:45:45 +0100
commit6b522673373797bbf53d795d53e0ec45175a5d67 (patch)
tree1f68cf37619300fd5ffe518c077b00590d6c5ebf /desktop
parentd1e8ef8c46b0f3409396eaadd0a3743feb6a5f44 (diff)
default config location has changed, look in old config dir when migrating
A previous patch (boostrap:25bd2eec77ed774a37d1cddd0d72312e23d5e9fd) changed the default configuration directory location ( on unix ) When evaluating user configurations for migration we need to search the old default config dir and not the new default config directory,
Diffstat (limited to 'desktop')
-rw-r--r--desktop/source/migration/migration.cxx19
1 files changed, 19 insertions, 0 deletions
diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx
index be970b1e432d..2cade3a5faac 100644
--- a/desktop/source/migration/migration.cxx
+++ b/desktop/source/migration/migration.cxx
@@ -88,6 +88,9 @@ static const ::rtl::OUString MENU_SEPERATOR(RTL_CONSTASCII_USTRINGPARAM(" | "));
static const ::rtl::OUString MENU_SUBMENU(RTL_CONSTASCII_USTRINGPARAM("..."));
static const ::rtl::OUString MIGRATION_STAMP_NAME(RTL_CONSTASCII_USTRINGPARAM("/MIGRATED"));
+
+static const char XDG_CONFIG_PART[] = "/.config";
+
::rtl::OUString retrieveLabelFromCommand(const ::rtl::OUString& sCommand, const ::rtl::OUString& sModuleIdentifier)
{
::rtl::OUString sLabel;
@@ -553,6 +556,22 @@ install_info MigrationImpl::findInstallation(const strings_v& rVersions)
{
::rtl::OUString aUserInst;
osl::Security().getConfigDir( aUserInst );
+#if defined UNX && ! defined MACOSX
+ const char* pXDGCfgHome = getenv("XDG_CONFIG_HOME");
+ // cater for XDG_CONFIG_HOME change
+ // If XDG_CONFIG_HOME is set then we;
+ // assume the user knows what they are doing ( room for improvement here, we could
+ // of course search the default config dir etc. also - but this is more complex,
+ // we would need to weigh results from the current config dir against matches in
+ // the 'old' config dir etc. ) - currently we just use the returned config dir.
+ // If XDG_CONFIG_HOME is NOT set;
+ // assume then we should now using the default $HOME/,config config location for
+ // our user profiles, however *all* previous libreoffice and openoffice.org
+ // configurations will be in the 'old' config directory and that's where we need
+ // to search - we convert the returned config dir to the 'old' dir
+ if ( !pXDGCfgHome && aUserInst.endsWithAsciiL( XDG_CONFIG_PART, sizeof( XDG_CONFIG_PART ) - 1 ) )
+ aUserInst = aUserInst.copy( 0, aUserInst.getLength() - sizeof( XDG_CONFIG_PART ) + 2 ); // remove trailing '.config' ( but leave the terminating '/' )
+#endif
if ( aUserInst.getLength() && aUserInst[ aUserInst.getLength()-1 ] != '/' )
aUserInst += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/"));
#if defined UNX && ! defined MACOSX