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)
Show replies by date