[ros-diffs] [sedwards] 33650: Sync GetTempPathW with current Wine. This should help with some installers the depend on the USERPROFILE variable being present. Does not fix the Word 2003 viewer install but changes the behavior slightly and is more correct.

sedwards at svn.reactos.org sedwards at svn.reactos.org
Thu May 22 23:07:41 CEST 2008


Author: sedwards
Date: Thu May 22 16:07:41 2008
New Revision: 33650

URL: http://svn.reactos.org/svn/reactos?rev=33650&view=rev
Log:
Sync GetTempPathW with current Wine. This should help with some
installers the depend on the USERPROFILE variable being present. Does
not fix the Word 2003 viewer install but changes the behavior slightly
and is more correct.


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

Modified: trunk/reactos/dll/win32/kernel32/file/curdir.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/file/curdir.c?rev=33650&r1=33649&r2=33650&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/file/curdir.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/file/curdir.c [iso-8859-1] Thu May 22 16:07:41 2008
@@ -166,16 +166,19 @@
    LPWSTR   path
 	)
 {
-   WCHAR tmp_path[MAX_PATH];
-   WCHAR tmp_full_path[MAX_PATH];
-   UINT ret;
-
-   TRACE("GetTempPathW(%lu,%p)\n", count, path);
-
-   if (!(ret = GetEnvironmentVariableW( L"TMP", tmp_path, MAX_PATH )))
-     if (!(ret = GetEnvironmentVariableW( L"TEMP", tmp_path, MAX_PATH )))
-         if (!(ret = GetCurrentDirectoryW( MAX_PATH, tmp_path )))
-             return 0;
+    static const WCHAR tmp[]  = { 'T', 'M', 'P', 0 };
+    static const WCHAR temp[] = { 'T', 'E', 'M', 'P', 0 };
+    static const WCHAR userprofile[] = { 'U','S','E','R','P','R','O','F','I','L','E',0 };
+    WCHAR tmp_path[MAX_PATH];
+    UINT ret;
+
+    TRACE("%u,%p\n", count, path);
+
+    if (!(ret = GetEnvironmentVariableW( tmp, tmp_path, MAX_PATH )) &&
+        !(ret = GetEnvironmentVariableW( temp, tmp_path, MAX_PATH )) &&
+        !(ret = GetEnvironmentVariableW( userprofile, tmp_path, MAX_PATH )) &&
+        !(ret = GetWindowsDirectoryW( tmp_path, MAX_PATH )))
+        return 0;
 
    if (ret > MAX_PATH)
    {
@@ -183,7 +186,7 @@
      return 0;
    }
 
-   ret = GetFullPathNameW(tmp_path, MAX_PATH, tmp_full_path, NULL);
+   ret = GetFullPathNameW(tmp_path, MAX_PATH, tmp_path, NULL);
    if (!ret) return 0;
 
    if (ret > MAX_PATH - 2)
@@ -192,17 +195,17 @@
      return 0;
    }
 
-   if (tmp_full_path[ret-1] != '\\')
-   {
-     tmp_full_path[ret++] = '\\';
-     tmp_full_path[ret]   = '\0';
+   if (tmp_path[ret-1] != '\\')
+   {
+     tmp_path[ret++] = '\\';
+     tmp_path[ret]   = '\0';
    }
 
    ret++; /* add space for terminating 0 */
 
    if (count)
    {
-     lstrcpynW(path, tmp_full_path, count);
+     lstrcpynW(path, tmp_path, count);
      if (count >= ret)
          ret--; /* return length without 0 */
      else if (count < 4)



More information about the Ros-diffs mailing list