[try2] kernel32: Add partial stub for NeedCurrentDirectoryForExePath

Kirill K. Smirnov lich at math.spbu.ru
Wed Apr 18 06:54:42 CDT 2007


Please, ignore my previous attempt.
-------------- next part --------------
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index a675386..4d3d083 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -799,6 +799,8 @@ # @ stub MapUserPhysicalPagesScatter
 @ stdcall MoveFileWithProgressW(wstr wstr ptr ptr long)
 @ stdcall MulDiv(long long long)
 @ stdcall MultiByteToWideChar(long long str long ptr long)
+@ stdcall NeedCurrentDirectoryForExePathA(str)
+@ stdcall NeedCurrentDirectoryForExePathW(wstr)
 # @ stub NlsConvertIntegerToString
 # @ stub NlsGetCacheUpdateCount
 # @ stub NlsResetProcessLocale
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index b195435..7219a28 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1511,6 +1511,44 @@ UINT WINAPI GetSystemWow64DirectoryA( LP
 
 
 /***********************************************************************
+ *           NeedCurrentDirectoryForExePathW   (KERNEL32.@)
+ */
+BOOL WINAPI NeedCurrentDirectoryForExePathW( LPCWSTR name )
+{
+    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 page at http://msdn2.microsoft.com/en-us/library/ms684269.aspx
+     * mentions some 'registry location'. We do not use register.
+     */
+    FIXME("(%s): partial stub\n", debugstr_w(name));
+
+    /* Check name first */
+    if (strchrW(name, '\\'))
+        return TRUE;
+
+    /* Then check the existence of variable, not value */
+    if (!GetEnvironmentVariableW( env_name, &env_val, 1 ))
+        return TRUE;
+
+    return FALSE;
+}
+
+
+/***********************************************************************
+ *           NeedCurrentDirectoryForExePathA   (KERNEL32.@)
+ */
+BOOL WINAPI NeedCurrentDirectoryForExePathA( LPCSTR name )
+{
+    WCHAR *nameW;
+
+    if (!(nameW = FILE_name_AtoW( name, FALSE ))) return TRUE;
+    return NeedCurrentDirectoryForExePathW( nameW );
+}
+
+
+/***********************************************************************
  *           wine_get_unix_file_name (KERNEL32.@) Not a Windows API
  *
  * Return the full Unix file name for a given path.
diff --git a/include/winbase.h b/include/winbase.h
index 59e7718..da9c547 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -1839,6 +1839,9 @@ BOOL        WINAPI MoveFileWithProgressA
 BOOL        WINAPI MoveFileWithProgressW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,DWORD);
 #define     MoveFileWithProgress WINELIB_NAME_AW(MoveFileWithProgress)
 INT         WINAPI MulDiv(INT,INT,INT);
+BOOL        WINAPI NeedCurrentDirectoryForExePathA(LPCSTR);
+BOOL        WINAPI NeedCurrentDirectoryForExePathW(LPCWSTR);
+#define     NeedCurrentDirectoryForExePath WINELIB_NAME_AW(NeedCurrentDirectoryForExePath)
 BOOL        WINAPI NotifyChangeEventLog(HANDLE,HANDLE);
 BOOL        WINAPI ObjectCloseAuditAlarmA(LPCSTR,LPVOID,BOOL);
 BOOL        WINAPI ObjectCloseAuditAlarmW(LPCWSTR,LPVOID,BOOL);


More information about the wine-patches mailing list