[ros-diffs] [gedmurphy] 34644: - Fix NeedCurrentDirectoryForExePath. Based on Wine code - Passes all kernel32:path winetests

gedmurphy at svn.reactos.org gedmurphy at svn.reactos.org
Mon Jul 21 21:54:51 CEST 2008


Author: gedmurphy
Date: Mon Jul 21 14:54:50 2008
New Revision: 34644

URL: http://svn.reactos.org/svn/reactos?rev=34644&view=rev
Log:
- Fix NeedCurrentDirectoryForExePath. Based on Wine code
- Passes all kernel32:path winetests

Modified:
    trunk/reactos/dll/win32/kernel32/file/dir.c

Modified: trunk/reactos/dll/win32/kernel32/file/dir.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/file/dir.c?rev=34644&r1=34643&r2=34644&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/file/dir.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/file/dir.c [iso-8859-1] Mon Jul 21 14:54:50 2008
@@ -1268,8 +1268,23 @@
 BOOL STDCALL
 NeedCurrentDirectoryForExePathW(LPCWSTR ExeName)
 {
-  return (wcschr(ExeName,
-                 L'\\') != NULL);
+    static const WCHAR env_name[] = {'N','o','D','e','f','a','u','l','t',
+                                     'C','u','r','r','e','n','t',
+                                     'D','i','r','e','c','t','o','r','y',
+                                     'I','n','E','x','e','P','a','t','h',0};
+    WCHAR env_val;
+
+    /* MSDN mentions some 'registry location'. We do not use registry. */
+    FIXME("(%s): partial stub\n", debugstr_w(ExeName));
+
+    if (wcschr(ExeName, L'\\'))
+        return TRUE;
+
+    /* Check the existence of the variable, not value */
+    if (!GetEnvironmentVariableW( env_name, &env_val, 1 ))
+        return TRUE;
+
+    return FALSE;
 }
 
 
@@ -1279,8 +1294,12 @@
 BOOL STDCALL
 NeedCurrentDirectoryForExePathA(LPCSTR ExeName)
 {
-  return (strchr(ExeName,
-                 '\\') != NULL);
+    WCHAR *ExeNameW;
+
+    if (!(ExeNameW = FilenameA2W(ExeName, FALSE)))
+        return TRUE;
+
+    return NeedCurrentDirectoryForExePathW(ExeNameW);
 }
 
 



More information about the Ros-diffs mailing list