00423 {
00424 HANDLE hFind;
00425 WIN32_FIND_DATA w32fd;
00426 INT Ret = 0;
00427
00428 if (BufPos[-1] != _T('\\'))
00429 {
00430 *BufPos++ = _T('\\');
00431 *BufPos = _T('\0');
00432 }
00433
00434 Ret = ForDir(Cmd, List, Buffer, BufPos);
00435
00436 _tcscpy(BufPos, _T("*"));
00437 hFind = FindFirstFile(Buffer, &w32fd);
00438 if (hFind == INVALID_HANDLE_VALUE)
00439 return Ret;
00440 do
00441 {
00442 if (!(w32fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
00443 continue;
00444 if (_tcscmp(w32fd.cFileName, _T(".")) == 0 ||
00445 _tcscmp(w32fd.cFileName, _T("..")) == 0)
00446 continue;
00447 Ret = ForRecursive(Cmd, List, Buffer, _stpcpy(BufPos, w32fd.cFileName));
00448 } while (!Exiting(Cmd) && FindNextFile(hFind, &w32fd));
00449 FindClose(hFind);
00450 return Ret;
00451 }