desktop/source/lib/init.cxx | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-)
New commits: commit 01a214d9596a595570b08d5e9d0c5776f892aa09 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Mon Jan 27 12:56:26 2025 +0000 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Tue Feb 11 11:51:45 2025 +0100 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 <jenkinscollaboraoff...@gmail.com> Reviewed-by: Miklos Vajna <vmik...@collabora.com> (cherry picked from commit e3b6888f9071011fd69e1d15aa8adb0eae5e658c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181411 Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> Tested-by: Jenkins 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") {