summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mladek <pmladek@suse.cz>2012-01-27 18:07:03 +0100
committerMichael Meeks <michael.meeks@suse.com>2012-01-30 12:43:52 +0000
commit147450b13db625359c4c34046477f753fe8b4950 (patch)
treee7db268df65bc127c81d0aa9b7dd0b46525b6697
parentAvoid accidental linking with GetShortPathNameW from uwinapi.dll (diff)
downloadcore-147450b13db625359c4c34046477f753fe8b4950.tar.gz
core-147450b13db625359c4c34046477f753fe8b4950.zip
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. Signed-off-by: Noel Power <nopower@suse.com> Signed-off-by: Stephan Bergmann <sbergman@redhat.com> Signed-off-by: Michael Meeks <michael.meeks@suse.com>
-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(