[PATCH 12/12] CMD.exe: for loop by default only matches files
Jason Edmeades
jason.edmeades at googlemail.com
Thu Jun 14 17:06:48 CDT 2007
---
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 add4cce..0433f61 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);
--
1.5.0
More information about the wine-patches
mailing list