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