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