Skip to content

Commit cf54c77

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

1 file changed

Lines changed: 23 additions & 8 deletions

File tree

Source/ZenLib/Dir.cpp

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

Comments
 (0)