1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
const std = @import("std");
// https://github.com/ghostty-org/ghostty/blob/9fb03ba55c9e53901193187d5c43341f5b1b430d/src/pty.zig#L11
pub const winsize = extern struct {
ws_row: u16 = 100,
ws_col: u16 = 80,
ws_xpixel: u16 = 800,
ws_ypixel: u16 = 600,
};
var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init;
const alloc = gpa.allocator();
const ArrayList = std.ArrayList;
pub fn main() !void {
// // var child = std.process.Child.init(&.{ "cat", "-" }, alloc);
// var child = std.process.Child.init(&.{"./study-samples/split"}, alloc);
// child.stdin_behavior = .Pipe;
// child.stdout_behavior = .Pipe;
// child.stderr_behavior = .Pipe;
// var stdin_buf: [0x100]u8 = undefined;
// var stdin = std.fs.File.stdin().readerStreaming(&stdin_buf);
// var stdout: ArrayList(u8) = .empty;
// defer stdout.deinit(alloc);
// var stderr: ArrayList(u8) = .empty;
// defer stderr.deinit(alloc);
// try child.spawn();
// errdefer {
// _ = child.kill() catch {};
// }
// var child_writer_buf: [0x100]u8 = undefined;
// var child_stdin_writer = child.stdin.?.writer(&child_writer_buf);
// while (true) {
// if (stdin.interface.streamDelimiter(&child_stdin_writer.interface, '\n')) |_| {} else |e| {
// switch (e) {
// error.EndOfStream => {
// std.debug.print("end of stream\n", .{});
// break;
// },
// else => {},
// }
// break;
// }
// _ = try child_stdin_writer.interface.writeByte('\n');
// if (child_stdin_writer.interface.flush()) |_| {} else |_| {
// break;
// }
// }
// child.collectOutput(alloc, &stdout, &stderr, 0x1000) catch {};
// std.debug.print("{s}\n {s}\n", .{ stdout.items, stderr.items });
// const term = try child.wait();
// switch (term) {
// .Signal => |s| {
// inline for (@typeInfo(std.os.linux.SIG).@"struct".decls) |f| {
// const field = @field(std.os.linux.SIG, f.name);
// const t = @TypeOf(field);
// if (t == comptime_int) {
// if (field == s)
// std.debug.print("Returned with Signal: {s} ({d})\n", .{ f.name, s });
// }
// }
// },
// else => std.debug.print("{any}\n", .{ .term = term }),
// }
// // std.debug.print("*** If you this message alone... Something probably went wrong\nIs this leaking? {any}\n", .{gpa.detectLeaks()});
}
|