aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorIan Johnson <ian@ianjohnson.dev>2023-06-24 22:50:28 -0400
committerAndrew Kelley <andrew@ziglang.org>2023-07-24 19:41:59 -0700
commit9892ec31a06d2c5806ccfbdf4cd03f1a40de3ab8 (patch)
treefd3f77739ed46bc04f0be0f836f97196a0be4390 /src/main.zig
parent10d940d7f4c081f4dd7e15513b972940335b465c (diff)
downloadzig-9892ec31a06d2c5806ccfbdf4cd03f1a40de3ab8.tar.gz
zig-9892ec31a06d2c5806ccfbdf4cd03f1a40de3ab8.zip
zig fmt: make `--exclude` work on files
Closes #16178
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/main.zig b/src/main.zig
index ffe5a9c8ea..d939eebc68 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -4752,13 +4752,16 @@ pub fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void
// Mark any excluded files/directories as already seen,
// so that they are skipped later during actual processing
for (excluded_files.items) |file_path| {
- var dir = fs.cwd().openDir(file_path, .{}) catch |err| switch (err) {
+ const stat = fs.cwd().statFile(file_path) catch |err| switch (err) {
error.FileNotFound => continue,
+ // On Windows, statFile does not work for directories
+ error.IsDir => dir: {
+ var dir = try fs.cwd().openDir(file_path, .{});
+ defer dir.close();
+ break :dir try dir.stat();
+ },
else => |e| return e,
};
- defer dir.close();
-
- const stat = try dir.stat();
try fmt.seen.put(stat.inode, {});
}