diff --git a/server.c b/server.c index e57773a..53cb9b2 100644 --- a/server.c +++ b/server.c @@ -98,6 +98,20 @@ static bool server_write_pty(Packet *pkt) { return false; } +static bool server_write_scrollback(Packet *pkt) { + print_packet("server-write-scrollback:", pkt); + size_t size = pkt->len; + uint32_t ii; + for (ii=0;iiu.msg[ii]; + if (scrollback.position>SCROLLBACK_SIZE) { + scrollback.position = 0; + scrollback.wrap = true; + } + } + return true; +} + static bool server_recv_packet(Client *c, Packet *pkt) { if (recv_packet(c->socket, pkt)) { print_packet("server-recv:", pkt); diff --git a/splex.c b/splex.c index d65f621..5980d6b 100644 --- a/splex.c +++ b/splex.c @@ -125,8 +125,16 @@ typedef struct { char next_session[2]; } Server; +#define SCROLLBACK_SIZE 8192 +typedef struct { + char buffer[SCROLLBACK_SIZE]; + uint32_t position; + bool wrap; +} Scrollback; + static Server server = { .running = true, .exit_status = -1, .host = "@localhost" , .next_session = { '\0', '\0' } }; static Client client; +static Scrollback scrollback = { .buffer = {}, .position = 0, .wrap = false }; static struct termios orig_term, cur_term; static bool has_term, alternate_buffer, quiet;