Recently Written · git

sacc

Mirror of git://bitreich.org/sacc, the sacc gopher client from bitreich.org.

git clone https://github.com/equwal/sacc

Log | Files | Refs


commit d9488c74f50b137dc91851437ffa4cbaf64c1d00
Julian Schweinsberg <pazz0@0xfa.de>
2025-03-31 17:55:39 +0200

Some sort of maintenance of ui_rogue

- Add Rainer Holzner's fix, regarding Ctrl+D in uiprompt, to ui_rogue
- Change tparm to tiparm
- Add something important to the ui_rogue_readme

 ui_rogue.c      | 122 ++++++++++++++++++++++++++++----------------------------
 ui_rogue_readme |   1 +
 2 files changed, 62 insertions(+), 61 deletions(-)
diff --git a/ui_rogue.c b/ui_rogue.c
index 0ddd2e7..c81f9d8 100644
--- a/ui_rogue.c
+++ b/ui_rogue.c
@@ -651,10 +651,10 @@ dla(struct rect *rects, size_t l, uint32_t prng) {
 void
 rendermapchar(size_t i, size_t j) {
 	if (map[i][j].tile->flags & Standout)
-		putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+		putp(tiparm(enter_standout_mode));
 	putchar(map[i][j].tile->c);
 	if (map[i][j].tile->flags & Standout)
-		putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+		putp(tiparm(exit_standout_mode));
 }
 
 void
@@ -687,7 +687,7 @@ rendermap(void)
 
 	for (i = oy; i < min(MAPHEIGHT, oy + (lines - 2)); i++) {
 		if (i != oy)
-			putp(tparm(cursor_down, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+			putp(tiparm(cursor_down));
 		rendermapline(i);
 	}
 }
@@ -970,7 +970,7 @@ uisetup(void)
 	if (termset != OK)
 		/* setupterm call exits on error */
 		termset = setupterm(NULL, 1, NULL);
-	putp(tparm(clear_screen, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(clear_screen));
 	fflush(stdout);
 }
 
@@ -982,8 +982,8 @@ uicleanup(void)
 	if (termset != OK)
 		return;
 
-	putp(tparm(change_scroll_region, 0, lines-1, 0, 0, 0, 0, 0, 0, 0));
-	putp(tparm(clear_screen, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(change_scroll_region, 0, lines-1));
+	putp(tiparm(clear_screen));
 	fflush(stdout);
 }
 
@@ -995,10 +995,10 @@ uiprompt(char *fmt, ...)
 	size_t n;
 	ssize_t r;
 
-	putp(tparm(save_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(save_cursor));
 
-	putp(tparm(cursor_address, lines-1, 0, 0, 0, 0, 0, 0, 0, 0));
-	putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, lines-1, 0));
+	putp(tiparm(clr_eol));
 
 	va_start(ap, fmt);
 	vsnprintf(bufout, sizeof(bufout), fmt, ap);
@@ -1006,9 +1006,9 @@ uiprompt(char *fmt, ...)
 
 	n = mbsprint(bufout, columns);
 
-	putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(clr_eol));
 
-	putp(tparm(cursor_address, lines-1, n, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, lines-1, n));
 
 	tsacc.c_lflag |= (ECHO|ICANON);
 	tcsetattr(0, TCSANOW, &tsacc);
@@ -1019,10 +1019,10 @@ uiprompt(char *fmt, ...)
 
 	tsacc.c_lflag &= ~(ECHO|ICANON);
 	tcsetattr(0, TCSANOW, &tsacc);
-	putp(tparm(restore_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(restore_cursor));
 	fflush(stdout);
 
-	if (r == -1) {
+	if (r == -1 || feof(stdin)) {
 		clearerr(stdin);
 		clear(&input);
 	} else if (input[r - 1] == '\n') {
@@ -1036,35 +1036,35 @@ void
 displaybar(char *s) {
 	size_t n;
 
-	putp(tparm(save_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(save_cursor));
 
-	putp(tparm(cursor_address, lines-2, 0, 0, 0, 0, 0, 0, 0, 0));
-	putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, lines-2, 0));
+	putp(tiparm(enter_standout_mode));
 
 	n = mbsprint(s, columns);
 	for (n = columns - n; n; n--)
 		putchar(' ');
 
-	putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(exit_standout_mode));
 
-	putp(tparm(restore_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(restore_cursor));
 	fflush(stdout);
 }
 
 void
 vdisplayinfoline(char *fmt, va_list ap)
 {
-	putp(tparm(save_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(save_cursor));
 
-	putp(tparm(cursor_address, lines-1, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, lines-1, 0));
 
 	vsnprintf(bufout, sizeof(bufout), fmt, ap);
 
 	mbsprint(bufout, columns);
 
-	putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(clr_eol));
 
-	putp(tparm(restore_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(restore_cursor));
 	fflush(stdout);
 }
 
@@ -1074,9 +1074,9 @@ uistatus(char *fmt, ...)
 	va_list ap;
 	size_t n;
 
-	putp(tparm(save_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(save_cursor));
 
-	putp(tparm(cursor_address, lines-1, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, lines-1, 0));
 
 	va_start(ap, fmt);
 	n = vsnprintf(bufout, sizeof(bufout), fmt, ap);
@@ -1089,9 +1089,9 @@ uistatus(char *fmt, ...)
 
 	mbsprint(bufout, columns);
 
-	putp(tparm(clr_eol, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(clr_eol));
 
-	putp(tparm(restore_cursor, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(restore_cursor));
 	fflush(stdout);
 
 	mygetchar();
@@ -1118,25 +1118,25 @@ menudraw(void)
 {
 	size_t i, n;
 
-	putp(tparm(change_scroll_region, 1, lines-1, 0, 0, 0, 0, 0, 0, 0));
-	putp(tparm(clear_screen, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(change_scroll_region, 1, lines-1));
+	putp(tiparm(clear_screen));
 
-	putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(enter_standout_mode));
 	puts(menutitle);
-	putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(exit_standout_mode));
 
 	if (menuselected - menuoffset >= lines - 1)
 		menuoffset = menuselected - (lines - 1) + 1;
 
 	for (i = menuoffset, n = 0; i < menunitems && n < lines - 1; i++, n++) {
 		if (i != menuoffset)
-			putp(tparm(cursor_down, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+			putp(tiparm(cursor_down));
 		if (i == menuselected)
-			putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+			putp(tiparm(enter_standout_mode));
 		mbsprint(menuitems[i]->username, columns);
 		if (i == menuselected)
-			putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-		putp(tparm(column_address, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+			putp(tiparm(exit_standout_mode));
+		putp(tiparm(column_address, 0));
 	}
 	fflush(stdout);
 }
@@ -1159,36 +1159,36 @@ showmenu(char *title, Item **item, size_t l)
 		switch (mygetchar()) {
 		case 'j':
 			if (menuselected + 1 < menunitems) {
-				putp(tparm(cursor_address, 1 + menuselected - menuoffset, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(cursor_address, 1 + menuselected - menuoffset, 0));
 				mbsprint(menuitems[menuselected]->username, columns);
 				menuselected++;
-				putp(tparm(column_address, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(column_address, 0));
 				if (menuselected - menuoffset >= lines - 1) {
 					menuoffset++;
-					putp(tparm(scroll_forward, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+					putp(tiparm(scroll_forward));
 				} else {
-					putp(tparm(cursor_down, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+					putp(tiparm(cursor_down));
 				}
-				putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(enter_standout_mode));
 				mbsprint(menuitems[menuselected]->username, columns);
-				putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(exit_standout_mode));
 			}
 			break;
 		case 'k':
 			if (menuselected > 0) {
-				putp(tparm(cursor_address, 1 + menuselected - menuoffset, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(cursor_address, 1 + menuselected - menuoffset, 0));
 				mbsprint(menuitems[menuselected]->username, columns);
 				menuselected--;
-				putp(tparm(column_address, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(column_address, 0));
 				if (menuselected < menuoffset) {
 					menuoffset = menuselected;
-					putp(tparm(scroll_reverse, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+					putp(tiparm(scroll_reverse));
 				} else {
-					putp(tparm(cursor_up, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+					putp(tiparm(cursor_up));
 				}
-				putp(tparm(enter_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(enter_standout_mode));
 				mbsprint(menuitems[menuselected]->username, columns);
-				putp(tparm(exit_standout_mode, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(exit_standout_mode));
 			}
 			break;
 		case ' ':
@@ -1259,14 +1259,14 @@ describe(size_t x, size_t y, int verbose)
 void
 dungeondraw(void)
 {
-	putp(tparm(change_scroll_region, 0, lines-3, 0, 0, 0, 0, 0, 0, 0));
-	putp(tparm(clear_screen, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(change_scroll_region, 0, lines-3));
+	putp(tiparm(clear_screen));
 
 	rendermap();
 
-	putp(tparm(cursor_address, py - oy, px - ox, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, py - oy, px - ox));
 	putchar('@');
-	putp(tparm(cursor_address, py - oy, px - ox, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, py - oy, px - ox));
 
 	if (curentry->entry != curentry) {
 		displaybar(curentry->username);
@@ -1305,14 +1305,14 @@ move(ssize_t dx, ssize_t dy)
 			nox = x - columns / 2;
 
 		if (ox != nox) {
-			putp(tparm(cursor_address, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+			putp(tiparm(cursor_address, 0, 0));
 			rendermap();
 		} else {
-			putp(tparm(cursor_address, py - oy, px - ox, 0, 0, 0, 0, 0, 0, 0));
+			putp(tiparm(cursor_address, py - oy, px - ox));
 			rendermapchar(py, px);
 		}
 	} else if (dy) {
-		putp(tparm(cursor_address, py - oy, px - ox, 0, 0, 0, 0, 0, 0, 0));
+		putp(tiparm(cursor_address, py - oy, px - ox));
 		rendermapchar(py, px);
 
 		if (y < maplines / 2 || MAPHEIGHT <= maplines) {
@@ -1324,18 +1324,18 @@ move(ssize_t dx, ssize_t dy)
 		}
 
 		if (noy < oy) {
-			putp(tparm(cursor_address, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+			putp(tiparm(cursor_address, 0, 0));
 			for (i = (ssize_t)oy - 1; i >= (ssize_t)noy; i--) {
-				putp(tparm(scroll_reverse, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(scroll_reverse));
 				rendermapline(i);
-				putp(tparm(column_address, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(column_address, 0));
 			}
 		} else if (noy > oy) {
-			putp(tparm(cursor_address, lines-3, 0, 0, 0, 0, 0, 0, 0, 0));
+			putp(tiparm(cursor_address, lines-3, 0));
 			for (i = oy + 1; i <= noy; i++) {
-				putp(tparm(scroll_forward, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(scroll_forward));
 				rendermapline(i + maplines - 1);
-				putp(tparm(column_address, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+				putp(tiparm(column_address, 0));
 			}
 		}
 		oy = noy;
@@ -1343,9 +1343,9 @@ move(ssize_t dx, ssize_t dy)
 
 	py = y;
 	px = x;
-	putp(tparm(cursor_address, py - oy, px - ox, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, py - oy, px - ox));
 	putchar('@');
-	putp(tparm(cursor_address, py - oy, px - ox, 0, 0, 0, 0, 0, 0, 0));
+	putp(tiparm(cursor_address, py - oy, px - ox));
 
 	describe(px, py, 0);
 }
diff --git a/ui_rogue_readme b/ui_rogue_readme
index b091b2a..e37ca45 100644
--- a/ui_rogue_readme
+++ b/ui_rogue_readme
@@ -17,6 +17,7 @@ space:      interact (in dungeon), select (in menu)
 ESC or q:   exit (in dungeon), close menu
 
 # Map explanation
+@:          That's you!
 E or ?:     bookshelf/book (gopher type '0')
 L or >:     elevator/staircase down/staircase up (gopher type '1' on the current server)
 O or 0:     portal machine/portal (gopher type '1' on another server)