https://git.reactos.org/?p=reactos.git;a=commitdiff;h=87df3b548eb0d0214012a0347c5b61d3f1671d36

commit 87df3b548eb0d0214012a0347c5b61d3f1671d36
Author:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
AuthorDate: Sat Dec 23 18:54:11 2023 +0100
Commit:     Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org>
CommitDate: Thu Feb 8 19:08:46 2024 +0100

    [SETUP:REACTOS] Temporarily use USETUP file/cabinet extraction routines.
    
    Do this until Wine's setupapi cabinet extraction becomes faster...
---
 base/setup/reactos/CMakeLists.txt      |  1 +
 base/setup/reactos/spapisup/fileqsup.c | 25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/base/setup/reactos/CMakeLists.txt 
b/base/setup/reactos/CMakeLists.txt
index 75418ede517..aa862fa236e 100644
--- a/base/setup/reactos/CMakeLists.txt
+++ b/base/setup/reactos/CMakeLists.txt
@@ -20,5 +20,6 @@ add_executable(reactos ${SOURCE} reactos.rc)
 set_module_type(reactos win32gui UNICODE)
 add_pch(reactos reactos.h SOURCE)
 target_link_libraries(reactos uuid setuplib ext2lib vfatlib btrfslib)
+target_link_libraries(reactos zlib_solo) ## We use USETUP's cabinet 
implementation
 add_importlibs(reactos advapi32 gdi32 user32 comctl32 shlwapi setupapi msvcrt 
kernel32 ntdll)
 add_cd_file(TARGET reactos DESTINATION reactos NO_CAB FOR bootcd)
diff --git a/base/setup/reactos/spapisup/fileqsup.c 
b/base/setup/reactos/spapisup/fileqsup.c
index ea46c03f75f..95c789de085 100644
--- a/base/setup/reactos/spapisup/fileqsup.c
+++ b/base/setup/reactos/spapisup/fileqsup.c
@@ -13,6 +13,29 @@
 #define NDEBUG
 #include <debug.h>
 
+#ifndef WINE_SETUPAPI_CAB_EXTRACTION_IS_NOT_SLOW_ANYMORE
+
+#define _USETUP_PCH_ // Disable USetup header inclusion
+
+#define NTOS_MODE_USER
+#include <ndk/mmfuncs.h>
+#include <ndk/obfuncs.h>
+
+#include <ntstrsafe.h>
+
+#include "../../usetup/spapisup/cabinet.h"
+#include "../../usetup/spapisup/cabinet.c"
+
+#define SetupOpenFileQueue      _SetupOpenFileQueue
+#define SetupCloseFileQueue     _SetupCloseFileQueue
+#define SetupQueueDeleteW       _SetupQueueDeleteW
+#define SetupQueueRenameW       _SetupQueueRenameW
+#define SetupCommitFileQueueW   _SetupCommitFileQueueW
+
+#include "../../usetup/spapisup/fileqsup.c"
+
+#else
+
 /* SETUP* API COMPATIBILITY FUNCTIONS ****************************************/
 
 /* A simplified version of SetupQueueCopyW that wraps Cabinet support around */
@@ -157,4 +180,6 @@ pSpFileQueueDelete SpFileQueueDelete = 
SpFileQueueDelete_NtToWin32;
 pSpFileQueueRename SpFileQueueRename = SpFileQueueRename_NtToWin32;
 pSpFileQueueCommit SpFileQueueCommit = SetupCommitFileQueueW;
 
+#endif
+
 /* EOF */

Reply via email to