summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorPetr Mladek <pmladek@suse.cz>2012-01-27 18:07:03 +0100
committerNoel Power <noel.power@novell.com>2012-01-30 10:54:04 +0000
commit305d20133c1418405418a6c698b48eb8114ade5b (patch)
treea69e528fd9fe8b2b7c0424f028dd81dd86098463 /desktop
parent08adeedce926bac1a010c26f2a4ae2d5fb761376 (diff)
allow to migrate the shared registrymodifications.xcu
LO-3.3 and older wrote configuration into many files under user/registry/data. LO-3.4 spped up startup by moving these files into a single /user/registrymodifications.xcu. officecfg/registry/data/org/openoffice/Setup.xcu defines what registry nodes are migrated and what are excluded. Finally, the old migration code detected the name of the .xcu file by the first entry in IncludedNodes. This fix allows to search the data in the single registrymodifications.xcu when available.
Diffstat (limited to 'desktop')
-rw-r--r--desktop/source/migration/migration.cxx62
1 files changed, 40 insertions, 22 deletions
diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx
index 7520eb8f58bd..d7f9765d05c6 100644
--- a/desktop/source/migration/migration.cxx
+++ b/desktop/source/migration/migration.cxx
@@ -773,33 +773,51 @@ void MigrationImpl::copyConfig() {
}
}
}
+
+ // check if the shared registrymodifications.xcu file exists
+ bool bRegistryModificationsXcuExists = false;
+ rtl::OUString regFilePath(m_aInfo.userdata);
+ regFilePath += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/user/registrymodifications.xcu"));
+ File regFile(regFilePath);
+ ::osl::FileBase::RC nError = regFile.open(osl_File_OpenFlag_Read);
+ if ( nError == ::osl::FileBase::E_None ) {
+ bRegistryModificationsXcuExists = true;
+ regFile.close();
+ }
+
for (Components::const_iterator i(comps.begin()); i != comps.end(); ++i) {
if (!i->second.includedPaths.empty()) {
- rtl::OUStringBuffer buf(m_aInfo.userdata);
- buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/user/registry/data"));
- sal_Int32 n = 0;
- do {
- rtl::OUString seg(i->first.getToken(0, '.', n));
- rtl::OUString enc(
- rtl::Uri::encode(
- seg, rtl_UriCharClassPchar, rtl_UriEncodeStrict,
- RTL_TEXTENCODING_UTF8));
- if (enc.getLength() == 0 && seg.getLength() != 0) {
- OSL_TRACE(
- ("configuration migration component %s ignored (cannot"
- " be encoded as file path)"),
- rtl::OUStringToOString(
- i->first, RTL_TEXTENCODING_UTF8).getStr());
- goto next;
- }
- buf.append(sal_Unicode('/'));
- buf.append(enc);
- } while (n >= 0);
- buf.appendAscii(RTL_CONSTASCII_STRINGPARAM(".xcu"));
+ if (!bRegistryModificationsXcuExists) {
+ // shared registrymodifications.xcu does not exists
+ // the configuration is split in many registry files
+ // determine the file names from the first element in included paths
+ rtl::OUStringBuffer buf(m_aInfo.userdata);
+ buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/user/registry/data"));
+ sal_Int32 n = 0;
+ do {
+ rtl::OUString seg(i->first.getToken(0, '.', n));
+ rtl::OUString enc(
+ rtl::Uri::encode(
+ seg, rtl_UriCharClassPchar, rtl_UriEncodeStrict,
+ RTL_TEXTENCODING_UTF8));
+ if (enc.getLength() == 0 && seg.getLength() != 0) {
+ OSL_TRACE(
+ ("configuration migration component %s ignored (cannot"
+ " be encoded as file path)"),
+ rtl::OUStringToOString(
+ i->first, RTL_TEXTENCODING_UTF8).getStr());
+ goto next;
+ }
+ buf.append(sal_Unicode('/'));
+ buf.append(enc);
+ } while (n >= 0);
+ buf.appendAscii(RTL_CONSTASCII_STRINGPARAM(".xcu"));
+ regFilePath = buf.toString();
+ }
configuration::Update::get(
comphelper::getProcessComponentContext())->
insertModificationXcuFile(
- buf.makeStringAndClear(), setToSeq(i->second.includedPaths),
+ regFilePath, setToSeq(i->second.includedPaths),
setToSeq(i->second.excludedPaths));
} else {
OSL_TRACE(