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")
         {

Reply via email to