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.

svn path=/trunk/; revision=17541
This commit is contained in:
Brandon Turner 2005-08-25 17:38:15 +00:00
parent 9010800221
commit 06c225119d

View 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)