fix a bug in 'if exsist', it was only reading to the first space for the file name, ignoring quotes and there fore searching for bad file names. Modified: trunk/reactos/subsys/system/cmd/if.c _____
Modified: trunk/reactos/subsys/system/cmd/if.c --- trunk/reactos/subsys/system/cmd/if.c 2005-09-16 14:50:25 UTC (rev 17879) +++ trunk/reactos/subsys/system/cmd/if.c 2005-09-16 15:00:22 UTC (rev 17880) @@ -69,15 +69,36 @@
param++;
pp = param; - while (*pp && !_istspace (*pp)) + + INT i; + BOOL bInside = FALSE; + /* find the whole path to the file */ + for(i = 0; i < _tcslen(param); i++) + { + if(param[i] == _T('"')) + bInside = !bInside; + if((param[i] == _T(' ')) && !bInside) + { + break; + } pp++; + } + *pp++ = _T('\0'); + i = 0; + /* remove quotes */ + while(i < _tcslen(param)) + { + if(param[i] == _T('"')) + memmove(¶m[i],¶m[i + 1], _tcslen(¶m[i]) * sizeof(TCHAR)); + else + i++; + }
if (*pp) - { + { WIN32_FIND_DATA f; HANDLE hFind; - - *pp++ = _T('\0'); + hFind = FindFirstFile (param, &f); x_flag ^= (hFind == INVALID_HANDLE_VALUE) ? 0 : X_EXEC; if (hFind != INVALID_HANDLE_VALUE)