diff options
author | Caolán McNamara <caolan.mcnamara@collabora.com> | 2025-01-27 12:56:26 +0000 |
---|---|---|
committer | Caolán McNamara <caolan.mcnamara@collabora.com> | 2025-02-11 11:51:45 +0100 |
commit | 01a214d9596a595570b08d5e9d0c5776f892aa09 (patch) | |
tree | 3e0d80060a71a9fad3d3cff40cefb30a40d88d45 /desktop | |
parent | ebea5ef578bd919ab10d769d2eb27521d2c15012 (diff) |
allow zero or more xcu files to be installed
Change-Id: Ibcca052697c391794b636606cf590549568821be
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180782
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit e3b6888f9071011fd69e1d15aa8adb0eae5e658c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181411
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/lib/init.cxx | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index b143e8b104b3..ea70d1f186b2 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -5247,15 +5247,13 @@ static void lo_sendDialogEvent(LibreOfficeKit* /*pThis*/, unsigned long long int static void updateConfig(const OUString& rConfigPath) { osl::Directory aScanRootDir(rConfigPath); - osl::FileBase::RC nRetCode = aScanRootDir.open(); - if (nRetCode != osl::Directory::E_None) + if (aScanRootDir.open() != osl::Directory::E_None) { SAL_WARN("lok", "Failed to open config URL: " << rConfigPath); return; } osl::DirectoryItem item; - osl::File::RC errorNext = osl::File::E_None; - while ((errorNext = aScanRootDir.getNextItem(item)) == ::osl::File::E_None) + while (aScanRootDir.getNextItem(item) == ::osl::File::E_None) { osl::FileStatus stat(osl_FileStatus_Mask_FileName | osl_FileStatus_Mask_FileURL); if (item.getFileStatus(stat) != osl::FileBase::E_None) @@ -5267,9 +5265,28 @@ static void updateConfig(const OUString& rConfigPath) OUString sFileName = stat.getFileName(); if (sFileName == "xcu") { - OUString aXcuPath(stat.getFileURL() + "/config.xcu"); + osl::Directory aXCURootDir(stat.getFileURL()); + if (aXCURootDir.open() != osl::Directory::E_None) + { + SAL_WARN("lok", "Failed to open XCU URL: " << stat.getFileURL()); + continue; + } + auto xUpdate(css::configuration::Update::get(comphelper::getProcessComponentContext())); - xUpdate->insertModificationXcuFile(aXcuPath, { u"/"_ustr }, {}); + + osl::DirectoryItem xcu; + while (aXCURootDir.getNextItem(xcu) == ::osl::File::E_None) + { + osl::FileStatus xcustat(osl_FileStatus_Mask_FileName | osl_FileStatus_Mask_FileURL); + if (xcu.getFileStatus(xcustat) != osl::FileBase::E_None) + { + SAL_WARN("lok", "Failed to get xcu item info"); + continue; + } + + SAL_INFO("lok", "Installing XCU Item: " << xcustat.getFileName()); + xUpdate->insertModificationXcuFile(xcustat.getFileURL(), { u"/"_ustr }, {}); + } } else if (sFileName == "wordbook") { |