Use GetShortPathName and GetLongPathName to correct the case of the new path in SetRo...
authorBrandon Turner <turnerb7@msu.edu>
Thu, 25 Aug 2005 17:38:15 +0000 (17:38 +0000)
committerBrandon Turner <turnerb7@msu.edu>
Thu, 25 Aug 2005 17:38:15 +0000 (17:38 +0000)
svn path=/trunk/; revision=17541

reactos/subsys/system/cmd/internal.c

index 32e7777..f3c0f69 100644 (file)
@@ -215,7 +215,8 @@ BOOL SetRootPath(TCHAR *InPath)
 {
   TCHAR oldpath[MAX_PATH];
   TCHAR OutPath[MAX_PATH];
-  TCHAR OutPathUpper[MAX_PATH];
+  TCHAR OutPathTemp[MAX_PATH];
+  TCHAR OutPathTemp2[MAX_PATH];
   BOOL fail;
   
   
@@ -228,16 +229,20 @@ BOOL SetRootPath(TCHAR *InPath)
   
   if (_tcsncicmp(&InPath[1],_T(":\\"),2)!=0)
   {
-      if (!GetRootPath(InPath,OutPathUpper,MAX_PATH))
-         _tcscpy(OutPathUpper,InPath);
+      if (!GetRootPath(InPath,OutPathTemp,MAX_PATH))
+         _tcscpy(OutPathTemp,InPath);
   }
   else 
   {
-    _tcscpy(OutPathUpper,InPath);
+    _tcscpy(OutPathTemp,InPath);
   }
   
-   _tcsupr(OutPathUpper); 
-  GetLongPathName(OutPathUpper, OutPath, MAX_PATH);  
+   _tcsupr(OutPathTemp); 
+  /* The use of both of these together will correct the case of a path
+     where as one alone or GetFullPath will not.  Exameple:
+         c:\windows\SYSTEM32 => C:\WINDOWS\system32 */
+  GetShortPathName(OutPathTemp, OutPathTemp2, MAX_PATH);
+  GetLongPathName(OutPathTemp2, OutPath, MAX_PATH);  
 
   fail = SetCurrentDirectory(OutPath);
   if (!fail)