diff --git a/reactos/subsys/system/cmd/internal.c b/reactos/subsys/system/cmd/internal.c index 7b1cb904896..03e1617e70b 100644 --- a/reactos/subsys/system/cmd/internal.c +++ b/reactos/subsys/system/cmd/internal.c @@ -148,10 +148,10 @@ VOID FreeLastPath (VOID) free (lpLastPath); } -/* help functions for getting current path from driver - without changing driver. Return code 0 = ok, 1 = fail. +/* help functions for getting current path from drive + without changing drive. Return code 0 = ok, 1 = fail. INT GetRootPath("C:",outbuffer,chater size of outbuffer); - the frist param can have any size, if the the two frist + the first param can have any size, if the the two frist letter are not a drive with : it will get Currentpath on current drive exacly as GetCurrentDirectory does. */ @@ -161,17 +161,23 @@ INT GetRootPath(TCHAR *InPath,TCHAR *OutPath,INT size) INT retcode = 1; INT t; - for (t=0;t<32;t++) - { - if (_tgetdcwd(t,OutPath,size) != NULL) - { - if (_tcsncicmp(InPath,OutPath,2)) - { - retcode = 0; - return retcode; - } - } - } + if (_tcslen(InPath)>1) + { + if (InPath[1]==_T(':')) + { + for (t=0;t<32;t++) + { + if (_tgetdcwd(t,OutPath,size) != NULL) + { + if (_tcsncicmp(InPath,OutPath,2)) + { + retcode = 0; + return retcode; + } + } + } + } + } /* fail to getting path devic did not exists */ if (_tcslen(InPath)>1)