summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorCaolán McNamara <caolan.mcnamara@collabora.com>2025-01-27 12:56:26 +0000
committerCaolán McNamara <caolan.mcnamara@collabora.com>2025-02-11 11:51:45 +0100
commit01a214d9596a595570b08d5e9d0c5776f892aa09 (patch)
tree3e0d80060a71a9fad3d3cff40cefb30a40d88d45 /desktop
parentebea5ef578bd919ab10d769d2eb27521d2c15012 (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.cxx29
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")
{