summaryrefslogtreecommitdiff
path: root/src/gloves.zig
blob: 0ef24818c7465c212cc0f37775796a6a7729a5fb (plain) (blame)
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()});
}