Skip to content

Instantly share code, notes, and snippets.

@neeraj9
Created October 25, 2023 04:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save neeraj9/77b29dadaf5a4be5b81775532e3f23b6 to your computer and use it in GitHub Desktop.
Save neeraj9/77b29dadaf5a4be5b81775532e3f23b6 to your computer and use it in GitHub Desktop.
List directory recursively in Zig programming language
const std = @import("std");
pub fn main() !void {
var buf: [std.fs.MAX_PATH_BYTES]u8 = undefined;
const cwd = std.os.getcwd(&buf) catch |err| {
std.debug.print("> [error] detecting current working directory, err={}\n", .{err});
return;
};
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer if (gpa.deinit() == std.heap.Check.leak) {
std.debug.print("> [error] memory leaked\n", .{});
};
var dir = std.fs.openIterableDirAbsolute(cwd, .{}) catch |err| {
std.debug.print("> [error] cannot open directory={s}, err={}", .{ cwd, err });
return;
};
defer dir.close();
const allocator = gpa.allocator();
var walker = try dir.walk(allocator);
defer walker.deinit();
while (try walker.next()) |entry| {
try std.debug.print("{s}\n", .{entry.path});
}
try bw.flush(); // don't forget to flush!
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment