authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-17 20:59:36-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-25 18:54:35-07:00
logd9881466382093f3c29ebe3f36a7d09d72407837
tree6527fd55e26db51385a496f7b4efe400606aeaff
parent5fb120a3c0e1b252fb85e8259b481c28b9dba465

std.process.Child: add format and success methods


2 files changed, 27 insertions(+), 0 deletions(-)

lib/std/process.zig+7
......@@ -1113,3 +1113,10 @@ test protectMemory {
11131113 protectMemory(&test_page, .{}) catch return error.SkipZigTest;
11141114 protectMemory(&test_page, .{ .read = true, .write = true }) catch return error.SkipZigTest;
11151115}
1116
1117test {
1118 _ = Child;
1119 _ = Args;
1120 _ = Environ;
1121 _ = Preopens;
1122}
lib/std/process/Child.zig+20
......@@ -96,6 +96,22 @@ pub const Term = union(enum) {
9696 signal: std.posix.SIG,
9797 stopped: std.posix.SIG,
9898 unknown: u32,
99
100 pub fn success(t: Term) bool {
101 return switch (t) {
102 .exited => |code| code == 0,
103 else => false,
104 };
105 }
106
107 pub fn format(t: Term, w: *Io.Writer) Io.Writer.Error!void {
108 switch (t) {
109 .exited => |code| return w.print("exited with code {d}", .{code}),
110 .signal => |sig| return w.print("terminated with signal {t}", .{sig}),
111 .stopped => |sig| return w.print("stopped with signal {t}", .{sig}),
112 .unknown => return w.writeAll("terminated unexpectedly"),
113 }
114 }
99115};
100116
101117pub const Cwd = union(enum) {
......@@ -135,3 +151,7 @@ pub fn wait(child: *Child, io: Io) WaitError!Term {
135151 assert(child.id != null);
136152 return io.vtable.childWait(io.userdata, child);
137153}
154
155test {
156 _ = Term;
157}