Use GetShortPathName and GetLongPathName to correct the case of the new
path in SetRootPath. GetFullPathName by itself would not work when
there was a space in the name.
Modified: trunk/reactos/subsys/system/cmd/internal.c
_____
Modified: trunk/reactos/subsys/system/cmd/internal.c
--- trunk/reactos/subsys/system/cmd/internal.c 2005-08-25 17:24:11 UTC
(rev 17540)
+++ trunk/reactos/subsys/system/cmd/internal.c 2005-08-25 17:38:15 UTC
(rev 17541)
@@ -215,7 +215,8 @@
{
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 @@
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)
Show replies by date