Skip to content

Commit dbea2b5

Browse files
committed
Dir: Apply Include_Hidden option also to directories
+ Handle Include_Dirs option on Unix Signed-off-by: Maxime Gervais <gervais.maxime@gmail.com>
1 parent 2566972 commit dbea2b5

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

Source/ZenLib/Dir.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)