╭─────────────╮ │scroll to top│ ╰─────────────╯ ╭ ssh.zig ──────────────────────────────────────────────────────╮ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────╯
╭────╮ ╭ clone ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╮ │http│ ssh │ │ ╰────╯ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╯
17 while (true) { 18 const len = try std.posix.read(src, &buffer); 19 if (len == 0) break; 20 try writeAllFd(dst, buffer[0..len]); 21 } 22 } 23 24 pub fn writeAllFd(fd: std.posix.fd_t, bytes: []const u8) !void { 25 var written: usize = 0; 26 while (written < bytes.len) { 27 const rc = std.posix.system.write(fd, bytes[written..].ptr, bytes.len - written); 28 switch (std.posix.errno(rc)) { 29 .SUCCESS => written += @intCast(rc), 30 .INTR => continue, 31 .PIPE => return error.BrokenPipe, 32 else => return error.WriteFailed, 33 } 34 } 35 } 36