| ... | @@ -109,13 +109,31 @@ pub fn main() !void { | ... | @@ -109,13 +109,31 @@ pub fn main() !void { |
| 109 | | 109 | |
| 110 | { | 110 | { |
| 111 | // Also add all new def and def.in files. | 111 | // Also add all new def and def.in files. |
| 112 | var walker = try src_crt_dir.walk(arena); | 112 | var walker = try src_crt_dir.walkSelectively(arena); |
| 113 | defer walker.deinit(); | 113 | defer walker.deinit(); |
| 114 | | 114 | |
| 115 | var fail = false; | 115 | var fail = false; |
| 116 | | 116 | |
| 117 | while (try walker.next()) |entry| { | 117 | while (try walker.next()) |entry| { |
| 118 | if (entry.kind != .file) continue; | 118 | switch (entry.kind) { |
| | 119 | .directory => { |
| | 120 | switch (walker.depth()) { |
| | 121 | 1 => for (def_dirs) |p| { |
| | 122 | if (std.mem.eql(u8, entry.basename, p)) { |
| | 123 | try walker.enter(entry); |
| | 124 | continue; |
| | 125 | } |
| | 126 | }, |
| | 127 | else => { |
| | 128 | // The top-level directory was already validated |
| | 129 | try walker.enter(entry); |
| | 130 | continue; |
| | 131 | }, |
| | 132 | } |
| | 133 | }, |
| | 134 | .file => {}, |
| | 135 | else => continue, |
| | 136 | } |
| 119 | | 137 | |
| 120 | const ok_ext = for (def_exts) |ext| { | 138 | const ok_ext = for (def_exts) |ext| { |
| 121 | if (std.mem.endsWith(u8, entry.path, ext)) break true; | 139 | if (std.mem.endsWith(u8, entry.path, ext)) break true; |
| ... | @@ -123,12 +141,6 @@ pub fn main() !void { | ... | @@ -123,12 +141,6 @@ pub fn main() !void { |
| 123 | | 141 | |
| 124 | if (!ok_ext) continue; | 142 | if (!ok_ext) continue; |
| 125 | | 143 | |
| 126 | const ok_prefix = for (def_dirs) |p| { | | |
| 127 | if (std.mem.startsWith(u8, entry.path, p)) break true; | | |
| 128 | } else false; | | |
| 129 | | | |
| 130 | if (!ok_prefix) continue; | | |
| 131 | | | |
| 132 | const blacklisted = for (blacklisted_defs) |item| { | 144 | const blacklisted = for (blacklisted_defs) |item| { |
| 133 | if (std.mem.eql(u8, entry.basename, item)) break true; | 145 | if (std.mem.eql(u8, entry.basename, item)) break true; |
| 134 | } else false; | 146 | } else false; |