@@ -298,6 +298,15 @@ 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)==1
304+ #else
305+ (FindFileData.dwFileAttributes &FILE_ATTRIBUTE_HIDDEN)==1
306+ #endif // UNICODE
307+ ))
308+ continue ;
309+
301310 Ztring File_Name_Complete=Path+__T (" \\ " )+File_Name;
302311 if (Exists (File_Name_Complete))
303312 {
@@ -306,13 +315,7 @@ ZtringList Dir::GetAllFileNames(const Ztring &Dir_Name_, dirlist_t Options)
306315 if (Options&Parse_SubDirs)
307316 ToReturn+=GetAllFileNames (File_Name_Complete, Options); // A SubDir
308317 }
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- )))
318+ else if (Options&Include_Files)
316319 ToReturn.push_back (File_Name_Complete); // A file
317320 }
318321 #ifdef UNICODE
@@ -358,15 +361,20 @@ ZtringList Dir::GetAllFileNames(const Ztring &Dir_Name_, dirlist_t Options)
358361 {
359362 // A file
360363 Ztring File_Name (DirEnt->d_name );
364+ if (!(Options&Include_Hidden) && (!File_Name.empty () && File_Name[0 ]==__T (' .' )))
365+ continue ;
366+
361367 if (File_Name!=__T (" ." ) && File_Name!=__T (" .." )) // Avoid . an ..
362368 {
363369 Ztring File_Name_Complete=Dir_Name+File_Name;
364370 if (Exists (File_Name_Complete))
365371 {
372+ if (Options&Include_Dirs)
373+ ToReturn.push_back (File_Name_Complete); // A dir
366374 if (Options&Parse_SubDirs)
367375 ToReturn+=GetAllFileNames (File_Name_Complete, Options); // A SubDir
368376 }
369- else if (( Options&Include_Hidden) || (!File_Name. empty () && File_Name[ 0 ]!= __T ( ' . ' )) )
377+ else if (Options&Include_Files )
370378 ToReturn.push_back (File_Name_Complete); // A file
371379 }
372380 }
0 commit comments