[TCPSVCS] Remove hardcoded C drive letter (#800)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Tue, 28 Aug 2018 10:45:03 +0000 (19:45 +0900)
committerHermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Tue, 28 Aug 2018 10:45:03 +0000 (12:45 +0200)
CORE-13228, CORE-13235

For USETUP, add a comment about why the code uses it when adding a boot-sector boot entry to NTLDR. CORE-13226

base/services/tcpsvcs/log.c
base/services/tcpsvcs/tcpsvcs.h
base/setup/usetup/bootsup.c

index 3b2d467..ef25909 100644 (file)
@@ -12,7 +12,7 @@
 #define DEBUG
 
 static LPWSTR lpEventSource = L"tcpsvcs";
-static LPCWSTR lpLogFileName = L"C:\\tcpsvcs_log.log";
+static WCHAR szLogFileName[MAX_PATH];
 static HANDLE hLogFile = NULL;
 
 static OVERLAPPED olWrite;
@@ -47,7 +47,7 @@ LogToEventLog(LPCWSTR lpMsg,
 static BOOL
 OpenLogFile()
 {
-    hLogFile = CreateFileW(lpLogFileName,
+    hLogFile = CreateFileW(szLogFileName,
                            GENERIC_WRITE,
                            FILE_SHARE_READ,
                            NULL,
@@ -212,13 +212,19 @@ InitLogging()
 #ifdef DEBUG
     BOOL bRet = FALSE;
 
+    if (!GetEnvironmentVariableW(L"SystemDrive", szLogFileName, ARRAYSIZE(szLogFileName)))
+    {
+        StringCchCopyW(szLogFileName, ARRAYSIZE(szLogFileName), L"C:");
+    }
+    StringCchCatW(szLogFileName, ARRAYSIZE(szLogFileName), L"\\tcpsvcs_log.log");
+
     ZeroMemory(&olWrite, sizeof(OVERLAPPED));
     olWrite.Offset = 0xFFFFFFFF;
     olWrite.OffsetHigh = 0xFFFFFFFF;
     olWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
     if (olWrite.hEvent)
     {
-        DeleteFileW(lpLogFileName);
+        DeleteFileW(szLogFileName);
 
         if (OpenLogFile())
         {
index b024e7c..9c5b16b 100644 (file)
@@ -9,6 +9,7 @@
 #define _INC_WINDOWS
 #include <winsock2.h>
 #include <tchar.h>
+#include <strsafe.h>
 
 #define LOG_FILE 1
 #define LOG_EVENTLOG 2
index 309e096..37cd680 100644 (file)
@@ -2378,6 +2378,8 @@ InstallFatBootcodeToPartition(
         /* Update 'boot.ini' */
         CombinePaths(DstPath, ARRAYSIZE(DstPath), 2, SystemRootPath->Buffer, L"boot.ini");
 
+        /* Windows' NTLDR loads an external bootsector file when the specified drive
+           letter is C:, otherwise it will interpret it as a boot DOS path specifier. */
         DPRINT1("Update 'boot.ini': %S\n", DstPath);
         Status = UpdateBootIni(DstPath,
                                L"C:\\bootsect.ros",