aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/lib/compat/reader.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-10 21:51:57 +0300
committerGitHub <noreply@github.com>2026-09-10 21:51:57 +0300
commit425c86179791cd32e2d4ce0ae7f269940b4b0663 (patch)
treee52c4383a6d69216cbe2a32638bf90841d7e2189 /vendor/libghostty-vt/src/lib/compat/reader.zig
parent90e947a6e26e02f10ec7f1694c4eb5b78a86406b (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.zig64
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;
+}