-/*
- * Screen output handling
- *
- * Copyright (c) 1987-2018 by the citadel.org team
- *
- * This program is open source software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
+// Screen output handling
+//
+// Copyright (c) 1987-2021 by the citadel.org team
+//
+// This program is open source software. Use, duplication, or disclosure is subject to the GNU General Public License version 3.
#include "textclient.h"
-
int enable_status_line = 0;
char status_line[1024] = " ";
* Attempt to discover the screen dimensions.
* WARNING: This is sometimes called from a signal handler.
*/
-void check_screen_dims(void)
-{
+void check_screen_dims(void) {
#ifdef TIOCGWINSZ
struct {
unsigned short height; /* rows */
/*
* Initialize the screen
*/
-void screen_new(void)
-{
+void screen_new(void) {
send_ansi_detect();
look_for_ansi();
cls(0);
}
-
/*
* Beep.
*/
-void ctdl_beep(void)
-{
+void ctdl_beep(void) {
putc(7, stdout);
}
-
-
/*
* scr_printf() outputs to the terminal
*/
-int scr_printf(char *fmt, ...)
-{
+int scr_printf(char *fmt, ...) {
static char outbuf[4096]; /* static for performance -- not re-entrant -- change if needed */
va_list ap;
int retval;
/*
* Read one character from the terminal
*/
-int scr_getc(int delay)
-{
+int scr_getc(int delay) {
unsigned char buf;
scr_flush();
return buf;
}
+
/*
* Issue the paginator prompt (more / hit any key to continue)
*/
-void hit_any_key(void)
-{
+void hit_any_key(void) {
int a, b;
color(COLOR_PUSH);
/*
* Output one character to the terminal
*/
-int scr_putc(int c)
-{
+int scr_putc(int c) {
/* handle tabs normally */
if (c == '\t') {
do {
if (c == '\n') {
++lines_printed;
cols_printed = 0;
- } else if (c == '\r') {
+ }
+ else if (c == '\r') {
cols_printed = 0;
- } else if (isprint(c)) {
+ }
+ else if (isprint(c)) {
++cols_printed;
if ((screenwidth > 0) && (cols_printed > screenwidth)) {
++lines_printed;
return c;
}
-void scr_flush(void)
-{
+
+void scr_flush(void) {
if ((enable_color) && (screenwidth > 0) && (enable_status_line)) {
if (strlen(status_line) < screenwidth) {
memset(&status_line[strlen(status_line)], 32, screenwidth - strlen(status_line));
* scr_winch() handles window size changes from SIGWINCH
* resizes all our windows for us
*/
-sighandler_t scr_winch(int signum)
-{
+void scr_winch(int signum) {
/* if we receive this signal, we must be running
* in a terminal that supports resizing.
*/
}
-
/*
* Display a 3270-style "wait" indicator at the bottom of the screen
*/
-void scr_wait_indicator(int state)
-{
+void scr_wait_indicator(int state) {
int sp = (screenwidth - 2);
if (!enable_status_line)
if (screenwidth > 0) {
switch (state) {
default:
- case 0: /* Idle */
+ case 0: // Idle
status_line[sp] = ' ';
break;
- case 1: /* Waiting */
+ case 1: // Waiting
status_line[sp] = 'X';
break;
- case 2: /* Receiving */
+ case 2: // Receiving
status_line[sp] = '<';
break;
- case 3: /* Sending */
+ case 3: // Sending
status_line[sp] = '>';
break;
}