Module: wine Branch: master Commit: 196fb10c327241f3a27a96faa44e149160395c85 URL: http://source.winehq.org/git/wine.git/?a=commit;h=196fb10c327241f3a27a96faa4...
Author: Jason Edmeades jason.edmeades@googlemail.com Date: Fri Jun 15 20:59:29 2007 +0100
cmd.exe: for loop by default only matches files.
---
programs/cmd/builtins.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index a764228..2a075c5 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -593,6 +593,7 @@ void WCMD_for (WCHAR *p, CMD_LIST **cmdList) { WCHAR variable[4]; WCHAR *firstCmd; int thisDepth; + BOOL isDirs = FALSE;
/* Check: the first line includes the % variable name as first parm @@ -667,10 +668,15 @@ void WCMD_for (WCHAR *p, CMD_LIST **cmdList) { hff = FindFirstFile (item, &fd); if (hff != INVALID_HANDLE_VALUE) { do { - thisCmdStart = cmdStart; - WINE_TRACE("Processing FOR filename %s\n", wine_dbgstr_w(fd.cFileName)); - WCMD_part_execute (&thisCmdStart, firstCmd, variable, - fd.cFileName, FALSE, TRUE); + BOOL isDirectory = (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); + if ((isDirs && isDirectory) || + (!isDirs && !isDirectory)) + { + thisCmdStart = cmdStart; + WINE_TRACE("Processing FOR filename %s\n", wine_dbgstr_w(fd.cFileName)); + WCMD_part_execute (&thisCmdStart, firstCmd, variable, + fd.cFileName, FALSE, TRUE); + }
} while (FindNextFile(hff, &fd) != 0); FindClose (hff);