From 89cdc1a1e3b57d83e1017d2462f1082bac7fc415 Mon Sep 17 00:00:00 2001 From: cozis Date: Sat, 23 May 2026 17:53:43 +0200 Subject: [PATCH] examples: Implement directories.zig, an example that uses directory operations --- examples/directories.zig | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 examples/directories.zig diff --git a/examples/directories.zig b/examples/directories.zig new file mode 100644 index 0000000..d3b1912 --- /dev/null +++ b/examples/directories.zig @@ -0,0 +1,38 @@ +const std = @import("std"); +const Io = std.Io; + +const Simulator = @import("zigmulator"); + +fn directoriesProgram(init: std.process.Init) anyerror!void { + try Io.Dir.cwd().createDir(init.io, "logs", .default_dir); + + const logs_dir = try Io.Dir.cwd().openDir(init.io, "logs", .{}); + defer logs_dir.close(init.io); + + const created_file = try logs_dir.createFile(init.io, "message.txt", .{}); + var writer = created_file.writerStreaming(init.io, &.{}); + try writer.interface.writeAll("created inside an opened directory"); + try writer.interface.flush(); + created_file.close(init.io); + + const opened_file = try logs_dir.openFile(init.io, "message.txt", .{}); + defer opened_file.close(init.io); + + var buffer: [128]u8 = undefined; + const read_len = try opened_file.readPositionalAll(init.io, &buffer, 0); + + var stdout = Io.File.stdout().writerStreaming(init.io, &.{}); + try stdout.interface.print("logs/message.txt: {s}\n", .{buffer[0..read_len]}); + try stdout.interface.flush(); +} + +pub fn main(init: std.process.Init) !void { + var sim: Simulator = undefined; + sim.init(std.heap.page_allocator, init.io); + defer sim.deinit(); + + try sim.addExecutable("directories", directoriesProgram); + try sim.spawn("directories", .{}); + + while (sim.scheduleOne()) {} +}