@@ -56,16 +56,37 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST
5656 // do nothing here, just iterate to count the items
5757 if (found)
5858 {
59- if (isDirectory && ((fileData.Attributes & FileAttributes::FileAttributes_Directory) ==
60- FileAttributes::FileAttributes_Directory))
59+ // skip entries that are not directories when looking for directories
60+ // skip also directories with hidden and system attribute
61+ if (isDirectory &&
62+ ((fileData.Attributes & FileAttributes::FileAttributes_Directory) ==
63+ FileAttributes::FileAttributes_Directory) &&
64+ ((fileData.Attributes & FileAttributes::FileAttributes_Hidden) !=
65+ FileAttributes::FileAttributes_Hidden) &&
66+ ((fileData.Attributes & FileAttributes::FileAttributes_System) !=
67+ FileAttributes::FileAttributes_System))
6168 {
6269 itemsCount++;
6370 }
71+ // skip entries that are directories when looking for files
72+ // skip also files with hidden and system attribute along with extension 'sys'
6473 else if (
65- !isDirectory && ((fileData.Attributes & FileAttributes::FileAttributes_Directory) !=
66- FileAttributes::FileAttributes_Directory))
74+ !isDirectory &&
75+ ((fileData.Attributes & FileAttributes::FileAttributes_Directory) !=
76+ FileAttributes::FileAttributes_Directory) &&
77+ ((fileData.Attributes & FileAttributes::FileAttributes_Hidden) !=
78+ FileAttributes::FileAttributes_Hidden) &&
79+ ((fileData.Attributes & FileAttributes::FileAttributes_System) !=
80+ FileAttributes::FileAttributes_System))
6781 {
68- itemsCount++;
82+ const char *fileName = (const char *)fileData.FileName ;
83+ const char *extension = strrchr (fileName, ' .' );
84+
85+ if (extension == NULL || strcmp (extension, " .sys" ) != 0 )
86+ {
87+ // file does not have a .sys extension, OK to add to list
88+ itemsCount++;
89+ }
6990 }
7091 }
7192
@@ -99,16 +120,36 @@ HRESULT Library_nf_sys_io_filesystem_System_IO_Directory::NativeGetChildren___ST
99120 // do nothing here, just iterate to count the items
100121 if (found)
101122 {
102- if (isDirectory && ((fileData.Attributes & FileAttributes::FileAttributes_Directory) !=
103- FileAttributes::FileAttributes_Directory))
123+ // skip entries that are not directories when looking for directories
124+ // skip also directories with hidden and system attribute
125+ if (isDirectory &&
126+ ((fileData.Attributes & FileAttributes::FileAttributes_Directory) !=
127+ FileAttributes::FileAttributes_Directory) &&
128+ ((fileData.Attributes & FileAttributes::FileAttributes_Hidden) !=
129+ FileAttributes::FileAttributes_Hidden) &&
130+ ((fileData.Attributes & FileAttributes::FileAttributes_System) !=
131+ FileAttributes::FileAttributes_System))
104132 {
105133 continue ;
106134 }
135+ // skip entries that are directories when looking for files
136+ // skip also files with hidden and system attribute along with extension 'sys'
107137 else if (
108- !isDirectory && ((fileData.Attributes & FileAttributes::FileAttributes_Directory) ==
109- FileAttributes::FileAttributes_Directory))
138+ !isDirectory &&
139+ ((fileData.Attributes & FileAttributes::FileAttributes_Directory) ==
140+ FileAttributes::FileAttributes_Directory) &&
141+ ((fileData.Attributes & FileAttributes::FileAttributes_Hidden) ==
142+ FileAttributes::FileAttributes_Hidden) &&
143+ ((fileData.Attributes & FileAttributes::FileAttributes_System) ==
144+ FileAttributes::FileAttributes_System))
110145 {
111- continue ;
146+ const char *fileName = (const char *)fileData.FileName ;
147+ const char *extension = strrchr (fileName, ' .' );
148+ if (extension != NULL && strcmp (extension, " .sys" ) == 0 )
149+ {
150+ // file has a .sys extension, skip it
151+ continue ;
152+ }
112153 }
113154
114155 // compose file path
0 commit comments