Compare commits

...

2 Commits

Author SHA1 Message Date
Michael Krayer cc315c0987 started implementing scrollback buffer 2023-10-13 09:09:59 +02:00
Michael Krayer e7cab4e330 removed some debug output 2023-10-12 18:48:19 +02:00
2 changed files with 22 additions and 2 deletions

View File

@ -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;ii<size;ii++) {
scrollback.buffer[scrollback.position++] = pkt->u.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);

10
splex.c
View File

@ -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;
@ -619,10 +627,8 @@ static bool session_loop() {
} else {
info("session terminated with exit status %d", status);
if (!set_next_session()){
info("could not set next session");
exit(EXIT_SUCCESS);
}
info("set next session to %s",server.next_session);
}
}
}