setup_native/Library_instooofiltmsi.mk                                         
   |    1 
 
setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx
 |   58 +---------
 2 files changed, 12 insertions(+), 47 deletions(-)

New commits:
commit 3bd63cc5d6e24139d41f029993dc54d7b2e07e87
Author: Mike Kaganski <mike.kagan...@collabora.com>
Date:   Fri Apr 13 06:52:14 2018 +0100

    I guess it's time to remove some Win9x code
    
    Change-Id: I921207fb73b2dc1e0f55836fa87c3338ff4fe1a9
    Reviewed-on: https://gerrit.libreoffice.org/52807
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/setup_native/Library_instooofiltmsi.mk 
b/setup_native/Library_instooofiltmsi.mk
index 4d0ae63679f3..36e2e2a6b81c 100644
--- a/setup_native/Library_instooofiltmsi.mk
+++ b/setup_native/Library_instooofiltmsi.mk
@@ -32,6 +32,7 @@ $(eval $(call 
gb_Library_use_system_win32_libs,instooofiltmsi,\
        libucrt \
        libvcruntime \
        kernel32 \
+       advapi32 \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git 
a/setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx
 
b/setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx
index 4fad91039c7e..783198fdf08a 100644
--- 
a/setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx
+++ 
b/setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx
@@ -30,34 +30,16 @@
 #include <windows.h>
 #include <msiquery.h>
 
-/*
-    Advapi.dll needs to be loaded dynamically because the service
-    control functions are not available under Windows 9x.
-*/
-typedef BOOL (__stdcall * CloseServiceHandle_t)(SC_HANDLE);
-typedef BOOL (__stdcall * ControlService_t)(SC_HANDLE, DWORD, 
LPSERVICE_STATUS);
-typedef SC_HANDLE (__stdcall * OpenSCManager_t)(LPCWSTR, LPCWSTR, DWORD);
-typedef SC_HANDLE (__stdcall * OpenService_t)(SC_HANDLE, LPCWSTR, DWORD);
-typedef BOOL (__stdcall * QueryServiceStatus_t)(SC_HANDLE, LPSERVICE_STATUS);
-typedef BOOL (__stdcall * StartService_t)(SC_HANDLE, DWORD, LPCWSTR*);
-
-static CloseServiceHandle_t CloseServiceHandle_ = nullptr;
-static ControlService_t ControlService_ = nullptr;
-static OpenSCManager_t OpenSCManager_ = nullptr;
-static OpenService_t OpenService_ = nullptr;
-static QueryServiceStatus_t QueryServiceStatus_ = nullptr;
-static StartService_t StartService_ = nullptr;
-
 const wchar_t * const INDEXING_SERVICE_NAME = L"cisvc";
 
 bool StopIndexingService(SC_HANDLE hService)
 {
     SERVICE_STATUS status;
 
-    if (ControlService_(hService, SERVICE_CONTROL_STOP, &status))
+    if (ControlService(hService, SERVICE_CONTROL_STOP, &status))
     {
         // Check the status until the service is no longer stop pending.
-        if (QueryServiceStatus_(hService, &status))
+        if (QueryServiceStatus(hService, &status))
         {
             DWORD startTime = GetTickCount();
             DWORD oldCheckPoint = status.dwCheckPoint;
@@ -77,7 +59,7 @@ bool StopIndexingService(SC_HANDLE hService)
                 Sleep(waitTime);
 
                 // Check the status again.
-                if (!QueryServiceStatus_(hService, &status) ||
+                if (!QueryServiceStatus(hService, &status) ||
                     (status.dwCurrentState == SERVICE_STOPPED))
                     break;
 
@@ -98,12 +80,12 @@ bool StopIndexingService(SC_HANDLE hService)
 
 void StartIndexingService(SC_HANDLE hService)
 {
-    if (StartService_(hService, 0, nullptr))
+    if (StartServiceW(hService, 0, nullptr))
     {
         SERVICE_STATUS status;
 
         // Check the status until the service is no longer stop pending.
-        if (QueryServiceStatus_(hService, &status))
+        if (QueryServiceStatus(hService, &status))
         {
             DWORD startTime = GetTickCount();
             DWORD oldCheckPoint = status.dwCheckPoint;
@@ -123,7 +105,7 @@ void StartIndexingService(SC_HANDLE hService)
                 Sleep(waitTime);
 
                 // Check the status again.
-                if (!QueryServiceStatus_(hService, &status) ||
+                if (!QueryServiceStatus(hService, &status) ||
                     (status.dwCurrentState == SERVICE_STOPPED))
                     break;
 
@@ -144,32 +126,14 @@ void StartIndexingService(SC_HANDLE hService)
 
 extern "C" UINT __stdcall RestartIndexingService(MSIHANDLE)
 {
-    HMODULE hAdvapi32 = LoadLibraryW(L"advapi32.dll");
-
-    if (hAdvapi32)
-    {
-        CloseServiceHandle_ = 
reinterpret_cast<CloseServiceHandle_t>(GetProcAddress(hAdvapi32, 
"CloseServiceHandle"));
-        ControlService_ = 
reinterpret_cast<ControlService_t>(GetProcAddress(hAdvapi32, "ControlService"));
-        OpenSCManager_ = 
reinterpret_cast<OpenSCManager_t>(GetProcAddress(hAdvapi32, "OpenSCManagerW"));
-        OpenService_ = 
reinterpret_cast<OpenService_t>(GetProcAddress(hAdvapi32, "OpenServiceW"));
-        QueryServiceStatus_ = 
reinterpret_cast<QueryServiceStatus_t>(GetProcAddress(hAdvapi32, 
"QueryServiceStatus"));
-        StartService_ = 
reinterpret_cast<StartService_t>(GetProcAddress(hAdvapi32, "StartServiceW"));
-    }
-
-    /* On systems other than Windows 2000/XP the service API
-       functions might not be available */
-    if (!hAdvapi32 ||
-        !(CloseServiceHandle_ && ControlService_ && OpenSCManager_ && 
OpenService_ && QueryServiceStatus_ && StartService_))
-        return ERROR_SUCCESS;
-
-    SC_HANDLE hSCManager = OpenSCManager_(
+    SC_HANDLE hSCManager = OpenSCManagerW(
         nullptr, // local machine
         nullptr, // ServicesActive database
         SC_MANAGER_ALL_ACCESS);
 
     if (hSCManager != nullptr)
     {
-        SC_HANDLE hIndexingService = OpenService_(
+        SC_HANDLE hIndexingService = OpenServiceW(
             hSCManager, INDEXING_SERVICE_NAME, SERVICE_QUERY_STATUS | 
SERVICE_START | SERVICE_STOP);
 
         if (hIndexingService)
@@ -177,15 +141,15 @@ extern "C" UINT __stdcall 
RestartIndexingService(MSIHANDLE)
             SERVICE_STATUS status;
             ZeroMemory(&status, sizeof(status));
 
-            if (QueryServiceStatus_(hIndexingService, &status) &&
+            if (QueryServiceStatus(hIndexingService, &status) &&
                 (status.dwCurrentState == SERVICE_RUNNING))
             {
                 if (StopIndexingService(hIndexingService))
                     StartIndexingService(hIndexingService);
             }
-            CloseServiceHandle_(hIndexingService);
+            CloseServiceHandle(hIndexingService);
         }
-        CloseServiceHandle_(hSCManager);
+        CloseServiceHandle(hSCManager);
     }
     return ERROR_SUCCESS;
 }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to