Kirill K. Smirnov : kernel32: Add partial stub for NeedCurrentDirectoryForExePath.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Apr 27 06:44:01 CDT 2007


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

Author: Kirill K. Smirnov <lich at math.spbu.ru>
Date:   Wed Apr 25 11:39:02 2007 +0400

kernel32: Add partial stub for NeedCurrentDirectoryForExePath.

---

 dlls/kernel32/kernel32.spec |    2 ++
 dlls/kernel32/path.c        |   37 +++++++++++++++++++++++++++++++++++++
 include/winbase.h           |    3 +++
 3 files changed, 42 insertions(+), 0 deletions(-)

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 @@
 @ 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..eb752f0 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1511,6 +1511,43 @@ UINT WINAPI GetSystemWow64DirectoryA( LPSTR lpBuffer, UINT uSize )
 
 
 /***********************************************************************
+ *           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 mentions some 'registry location'. We do not use registry. */
+    FIXME("(%s): partial stub\n", debugstr_w(name));
+
+    if (strchrW(name, '\\'))
+        return TRUE;
+
+    /* Check the existence of the 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(LPCSTR,LPCSTR,LPPROGRESS_ROUTINE,LPVOID
 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-cvs mailing list