Detlef Riekenberg : krnl386: The 16bit system directory is <windir>\SYSTEM.

Alexandre Julliard julliard at winehq.org
Wed Jan 6 13:00:57 CST 2010


Module: wine
Branch: master
Commit: 220af426b3f55fa2297fdc969f416ed701f3461c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=220af426b3f55fa2297fdc969f416ed701f3461c

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Wed Jan  6 14:37:52 2010 +0100

krnl386: The 16bit system directory is <windir>\SYSTEM.

---

 dlls/krnl386.exe16/file.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/dlls/krnl386.exe16/file.c b/dlls/krnl386.exe16/file.c
index e4f703d..507b28d 100644
--- a/dlls/krnl386.exe16/file.c
+++ b/dlls/krnl386.exe16/file.c
@@ -190,14 +190,14 @@ static char *get_search_path(void)
     }
 
     len = (2 +                                              /* search order: first current dir */
-           GetSystemDirectoryA( NULL, 0 ) + 1 +             /* then system dir */
+           GetSystemDirectory16( NULL, 0 ) + 1 +            /* then system dir */
            GetWindowsDirectoryA( NULL, 0 ) + 1 +            /* then windows dir */
            strlen( module ) + 1 +                           /* then module path */
            GetEnvironmentVariableA( "PATH", NULL, 0 ) + 1); /* then look in PATH */
     if (!(ret = HeapAlloc( GetProcessHeap(), 0, len ))) return NULL;
     strcpy( ret, ".;" );
     p = ret + 2;
-    GetSystemDirectoryA( p, ret + len - p );
+    GetSystemDirectory16( p, ret + len - p );
     p += strlen( p );
     *p++ = ';';
     GetWindowsDirectoryA( p, ret + len - p );
@@ -629,7 +629,18 @@ UINT16 WINAPI GetWindowsDirectory16( LPSTR path, UINT16 count )
  */
 UINT16 WINAPI GetSystemDirectory16( LPSTR path, UINT16 count )
 {
-    return GetSystemDirectoryA( path, count );
+    static const char * system16 = "\\SYSTEM";
+    char windir[MAX_PATH];
+    UINT16 len;
+
+    len = GetWindowsDirectory16(windir, sizeof(windir) - sizeof(system16)) + sizeof(system16);
+    if (count >= len)
+    {
+        lstrcpyA(path, windir);
+        lstrcatA(path, system16);
+        len--;  /* space for the terminating zero is not included on success */
+    }
+    return len;
 }
 
 




More information about the wine-cvs mailing list