Skip to content

Instantly share code, notes, and snippets.

@jiacai2050
Created July 17, 2022 13:13
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jiacai2050/a4f7d2112424966b6e4ec608f0eedd77 to your computer and use it in GitHub Desktop.
Save jiacai2050/a4f7d2112424966b6e4ec608f0eedd77 to your computer and use it in GitHub Desktop.
const std = @import("std");
const fs = std.fs;
const log = std.log;
const os = std.os;
fn walk(dir: fs.Dir) anyerror!void {
var it = dir.iterate();
loop: {
while (it.next()) |entry| {
if (entry) |e| {
if (e.kind == fs.File.Kind.Directory) {
log.info("find dir, go deep... {s}", .{e.name});
const sub_dir = try dir.openDir(e.name, .{});
try walk(sub_dir);
} else {
log.info("find file: {s}", .{e.name});
}
} else {
break :loop;
}
} else |err| {
log.err("err: {s}", .{err});
break :loop;
}
}
}
pub fn main() !void {
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
defer arena.deinit();
const allocator = arena.allocator();
const argv = try std.process.argsAlloc(allocator);
if (argv.len < 2) {
log.err("Usage: {s} <root-dir>", .{argv[0]});
return error.ArgsMissing;
}
log.info("Walk {s}", .{argv[1]});
const dir = try fs.openDirAbsolute(argv[1], .{});
try walk(dir);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment