fix a small bug in cd, it did make all char lower case. done by me and Brandon Turner. clean up CD source bit more. Bug fix GetRootPath. it did not accepted upper case as driver letter. done by me
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-04 21:55:43 UTC (rev 17050)
+++ trunk/reactos/subsys/system/cmd/internal.c	2005-08-04 22:08:16 UTC (rev 17051)
@@ -170,13 +170,8 @@
   {
     if (InPath[1]==_T(':'))    
     {   
-      TCHAR num[2];
       INT t=0;
-
-      num[1] = _T('\0');
-      num[0] = InPath[0];
-      _tcslwr(num);
-
+     
       if ((InPath[0] >= _T('0')) && (InPath[0] <= _T('9')))
       {
           t = (InPath[0] - _T('0')) +28;
@@ -185,7 +180,13 @@
       if ((InPath[0] >= _T('a')) && (InPath[0] <= _T('z')))
       {
           t = (InPath[0] - _T('a')) +1;
+          InPath[0] = t + _T('A') - 1;
       }
+
+       if ((InPath[0] >= _T('A')) && (InPath[0] <= _T('Z')))
+      {
+          t = (InPath[0] - _T('A')) +1;
+      }
                 
       if (_tgetdcwd(t,OutPath,size) != NULL) 
       {                 
@@ -214,8 +215,10 @@
 {
   TCHAR oldpath[MAX_PATH];
   TCHAR OutPath[MAX_PATH];
+  TCHAR OutPathUpper[MAX_PATH];
   BOOL fail;
   
+  
   /* Get The current directory path and save it */
   fail = GetCurrentDirectory(MAX_PATH,oldpath);
   if (!fail)   
@@ -225,18 +228,23 @@
   
   if (_tcsncicmp(&InPath[1],_T(":\\"),2)!=0)
   {
-      if (!GetRootPath(InPath,OutPath,MAX_PATH))
-         _tcscpy(OutPath,InPath);
+      if (!GetRootPath(InPath,OutPathUpper,MAX_PATH))
+         _tcscpy(OutPathUpper,InPath);
   }
   else 
   {
-    _tcscpy(OutPath,InPath);
+    _tcscpy(OutPathUpper,InPath);
   }
   
+   _tcsupr(OutPathUpper); 
+  GetLongPathName(OutPathUpper, OutPath, MAX_PATH);  
+
   fail = SetCurrentDirectory(OutPath);
   if (!fail) 
       return 1;
+
   
+    
   SetCurrentDirectory(OutPath);
   GetCurrentDirectory(MAX_PATH,OutPath);
   _tchdir(OutPath);
@@ -302,7 +310,6 @@
 		}
 		ConOutPuts(szCurrent);
 		return 0;
- 
 	}
  
 	/* Get Current Directory */
@@ -376,17 +383,22 @@
 			else
 				break;
  
-		_tcscat(szFinalPath,f.cFileName);
+		_tcscat(szFinalPath,f.cFileName);      
 		
-		if(IsExistingDirectory(szFinalPath))
-		{
+		if ((f.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ==  FILE_ATTRIBUTE_DIRECTORY)
+    {  		       
 			if(!SetRootPath(szFinalPath))
 			{
 				/* Change for /D */
 				if(bChangeDrive)
-					SetCurrentDirectory(szFinalPath);
+        {   
+           _tcsupr(szFinalPath); 
+           GetLongPathName(szFinalPath, szPath, MAX_PATH);  
+					 SetCurrentDirectory(szPath);
+        }
 				return 0;
 			}
+      
 		}
 	}while(FindNextFile (hFile, &f));