From e372071ad755be34fd22f5267e07fd4f76e6832a Mon Sep 17 00:00:00 2001 From: deuce <> Date: Mon, 7 Jun 2004 06:30:40 +0000 Subject: [PATCH] Add backscroll buffer (Still no way of actually SEEING it though) --- src/syncterm/term.c | 15 ++++++++++++--- src/syncterm/term.h | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/syncterm/term.c b/src/syncterm/term.c index 0626f4afe6..1b9836759d 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -37,6 +37,12 @@ void scrollup(void) char *buf; int i,j; + term.backpos++; + if(term.backpos>backlines) { + memmove(term.scrollback,term.scrollback+term.width*2,term.width*2*(backlines-1)); + term.packpos--; + } + gettext(term.x+1,term.y+1,term.x+term.width,term.y+1,term.scrollback+(term.backpos-1)*term.width*2); buf=(char *)malloc(term.width*(term.height-1)*2); gettext(term.x+1,term.y+2,term.x+term.width,term.y+term.height,buf); puttext(term.x+1,term.y+1,term.x+term.width,term.y+term.height-1,buf); @@ -492,12 +498,13 @@ void doterm(void) term.escbuf[0]=0; term.sequence=0; term.music=0; - + term.backpos=0; + term.scrollback=malloc(term.width*2*backlines); ch[1]=0; - /* Main input loop */ gotoxy(term.xpos,term.ypos); textattr(term.attr); _setcursortype(_NORMALCURSOR); + /* Main input loop */ for(;;) { /* Get remote input */ i=rlogin_recv(ch,1,100); @@ -586,8 +593,10 @@ void doterm(void) /* Get local input */ if(kbhit()) { key=getch(); - if(key==17) + if(key==17) { + free(term.scrollback); return; + } if(key<256) { ch[0]=key; rlogin_send(ch,1,100); diff --git a/src/syncterm/term.h b/src/syncterm/term.h index 2c3e5bb17b..012995eb72 100644 --- a/src/syncterm/term.h +++ b/src/syncterm/term.h @@ -15,6 +15,8 @@ struct terminal { char escbuf[1024]; int sequence; int music; + char *scrollback; + int backpos; }; extern struct terminal term; -- GitLab