@@ -298,6 +298,22 @@ ZtringList Dir::GetAllFileNames(const Ztring &Dir_Name_, dirlist_t Options)
298298 #endif // UNICODE
299299 if (File_Name!=__T (" ." ) && File_Name!=__T (" .." )) // Avoid . an ..
300300 {
301+ if (!(Options&Include_Hidden) && ((!File_Name.empty () && File_Name[0 ]==__T (' .' )) ||
302+ #ifdef UNICODE
303+ (FindFileDataW.dwFileAttributes &FILE_ATTRIBUTE_HIDDEN)
304+ #else
305+ (FindFileData.dwFileAttributes &FILE_ATTRIBUTE_HIDDEN)
306+ #endif // UNICODE
307+ ))
308+ {
309+ #ifdef UNICODE
310+ ReturnValue=FindNextFileW (hFind, &FindFileDataW);
311+ #else
312+ ReturnValue=FindNextFile (hFind, &FindFileData);
313+ #endif // UNICODE
314+ continue ;
315+ }
316+
301317 Ztring File_Name_Complete=Path+__T (" \\ " )+File_Name;
302318 if (Exists (File_Name_Complete))
303319 {
@@ -306,13 +322,7 @@ ZtringList Dir::GetAllFileNames(const Ztring &Dir_Name_, dirlist_t Options)
306322 if (Options&Parse_SubDirs)
307323 ToReturn+=GetAllFileNames (File_Name_Complete, Options); // A SubDir
308324 }
309- else if ((Options&Include_Files) && ((Options&Include_Hidden) || ((!File_Name.empty () && File_Name[0 ]!=__T (' .' )) &&
310- #ifdef UNICODE
311- (FindFileDataW.dwFileAttributes &FILE_ATTRIBUTE_HIDDEN)==0
312- #else
313- (FindFileData.dwFileAttributes &FILE_ATTRIBUTE_HIDDEN)==0
314- #endif // UNICODE
315- )))
325+ else if (Options&Include_Files)
316326 ToReturn.push_back (File_Name_Complete); // A file
317327 }
318328 #ifdef UNICODE
@@ -358,15 +368,20 @@ ZtringList Dir::GetAllFileNames(const Ztring &Dir_Name_, dirlist_t Options)
358368 {
359369 // A file
360370 Ztring File_Name (DirEnt->d_name );
371+ if (!(Options&Include_Hidden) && (!File_Name.empty () && File_Name[0 ]==__T (' .' )))
372+ continue ;
373+
361374 if (File_Name!=__T (" ." ) && File_Name!=__T (" .." )) // Avoid . an ..
362375 {
363376 Ztring File_Name_Complete=Dir_Name+File_Name;
364377 if (Exists (File_Name_Complete))
365378 {
379+ if (Options&Include_Dirs)
380+ ToReturn.push_back (File_Name_Complete); // A dir
366381 if (Options&Parse_SubDirs)
367382 ToReturn+=GetAllFileNames (File_Name_Complete, Options); // A SubDir
368383 }
369- else if (( Options&Include_Hidden) || (!File_Name. empty () && File_Name[ 0 ]!= __T ( ' . ' )) )
384+ else if (Options&Include_Files )
370385 ToReturn.push_back (File_Name_Complete); // A file
371386 }
372387 }
0 commit comments