diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-09-10 21:51:57 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-10 21:51:57 +0300 |
| commit | 425c86179791cd32e2d4ce0ae7f269940b4b0663 (patch) | |
| tree | e52c4383a6d69216cbe2a32638bf90841d7e2189 /vendor/libghostty-vt/src/lib/compat/reader.zig | |
| parent | 90e947a6e26e02f10ec7f1694c4eb5b78a86406b (diff) | |
chore: upgrade libghostty and preserve terminal behavior (#3906)
Diffstat (limited to 'vendor/libghostty-vt/src/lib/compat/reader.zig')
| -rw-r--r-- | vendor/libghostty-vt/src/lib/compat/reader.zig | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/src/lib/compat/reader.zig b/vendor/libghostty-vt/src/lib/compat/reader.zig new file mode 100644 index 00000000..28813440 --- /dev/null +++ b/vendor/libghostty-vt/src/lib/compat/reader.zig @@ -0,0 +1,64 @@ +//! Code taken from older reader implementations, still may be useful to keep +//! around in general. See README.md for license and details. +const std = @import("std"); + +/// Pulled from old stdlib as this function has been removed. +pub fn readSkipUntilDelimiterOrEof(reader: *std.Io.Reader, delimiter: u8) std.Io.Reader.Error!void { + while (true) { + const byte = readByte(reader) catch |err| switch (err) { + error.EndOfStream => return, + else => |e| return e, + }; + if (byte == delimiter) return; + } +} + +/// Pulled from old stdlib as this function has been removed. +pub fn readStructEndian( + reader: *std.Io.Reader, + comptime T: type, + endian: std.builtin.Endian, +) std.Io.Reader.Error!T { + var result: [1]T = undefined; + try reader.readSliceEndian(T, &result, endian); + return result[0]; +} + +/// Pulled from old stdlib as this function has been removed. +pub fn readerInt(reader: *std.Io.Reader, comptime T: type, endian: std.builtin.Endian) std.Io.Reader.Error!T { + const bytes = try readBytesNoEof(reader, @divExact(@typeInfo(T).int.bits, 8)); + return std.mem.readInt(T, &bytes, endian); +} + +/// Pulled from old stdlib as this function has been removed. +pub fn readByteSigned(reader: *std.Io.Reader) std.Io.Reader.Error!i8 { + return @as(i8, @bitCast(try readByte(reader))); +} + +/// Pulled from old stdlib as this function has been removed. +pub fn readByte(reader: *std.Io.Reader) std.Io.Reader.Error!u8 { + var result: [1]u8 = undefined; + try reader.readSliceAll(&result); + return result[0]; +} + +/// Pulled from old stdlib as this function has been removed. +pub fn readSkipBytes(reader: *std.Io.Reader, num_bytes: u64) std.Io.Reader.Error!void { + const buf_size = 512; + + var buf: [buf_size]u8 = undefined; + var remaining = num_bytes; + + while (remaining > 0) { + const amt = @min(remaining, buf_size); + try reader.readSliceAll(buf[0..amt]); + remaining -= amt; + } +} + +/// Pulled from old stdlib as this function has been removed. +fn readBytesNoEof(reader: *std.Io.Reader, comptime num_bytes: usize) std.Io.Reader.Error![num_bytes]u8 { + var bytes: [num_bytes]u8 = undefined; + try reader.readSliceAll(&bytes); + return bytes; +} |
