char printcmd[SIZ]; /* print command */
int editor_pid = (-1);
char fullname[USERNAME_SIZE];
-int screenwidth;
-int screenheight;
unsigned room_flags;
unsigned room_flags2;
int entmsg_ok = 0;
long highest_msg_read; /* used for <A>bandon room cmd */
long maxmsgnum; /* used for <G>oto */
char sigcaught = 0;
-char have_xterm = 0; /* are we running on an xterm? */
char rc_username[USERNAME_SIZE];
char rc_password[32];
char hostbuf[SIZ];
}
-/*
- * Figure out the physical screen dimensions, if we can
- * WARNING: this is now called from a signal handler!
- */
-void check_screen_dims(void)
-{
-#ifdef TIOCGWINSZ
- struct {
- unsigned short height; /* rows */
- unsigned short width; /* columns */
- unsigned short xpixels;
- unsigned short ypixels; /* pixels */
- } xwinsz;
-
- if (have_xterm) { /* dynamically size screen if on an xterm */
- if (ioctl(0, TIOCGWINSZ, &xwinsz) == 0) {
- if (xwinsz.height)
- screenheight = (int) xwinsz.height;
- if (xwinsz.width)
- screenwidth = (int) xwinsz.width;
- }
- }
-#endif
-}
-
-
/*
* set floor mode depending on client, server, and user settings
*/
screen_new();
+ /* Get screen dimensions. First we go to a default of 80x24.
+ * Then attempt to read the actual screen size from the terminal.
+ */
+ check_screen_dims();
+
#ifdef __CYGWIN__
newprompt("Connect to (return for local server): ", hostbuf, 64);
scr_printf("%-24s\n%s\n%s\n", ipc->ServInfo.software, ipc->ServInfo.humannode,
ipc->ServInfo.site_location);
- screenwidth = 80; /* default screen dimensions */
- screenheight = 24;
-
scr_printf(" pause next stop\n");
scr_printf(" ctrl-s ctrl-o ctrl-c\n\n");
formout(ipc, "hello"); /* print the opening greeting */
CtdlMakeTempFileName(temp2, sizeof temp2);
CtdlMakeTempFileName(tempdir, sizeof tempdir);
- /* Get screen dimensions. First we go to a default of 80x24. Then
- * we try to get the user's actual screen dimensions off the server.
- * However, if we're running on an xterm, all this stuff is
- * irrelevant because we're going to dynamically size the screen
- * during the session.
- */
- screenwidth = 80;
- screenheight = 24;
r = CtdlIPCGetConfig(ipc, &myself, aaa);
- if (getenv("TERM") != NULL)
- if (!strcmp(getenv("TERM"), "xterm")) {
- have_xterm = 1;
- }
- check_screen_dims();
-
set_floor_mode(ipc);
/* Enter the lobby */
mcmd = getcmd(ipc, argbuf); /* Get keyboard command */
#ifdef TIOCGWINSZ
- check_screen_dims(); /* if xterm, get screen size */
+ check_screen_dims(); /* get screen size */
#endif
if (termn8 == 0)
#include <stdarg.h>
#include <ctype.h>
#include <sys/types.h>
+#include <sys/ioctl.h>
#include "sysdep.h"
#ifndef HAVE_SNPRINTF
#include "snprintf.h"
/* the default paginator prompt will be replaced by the server's prompt when we learn it */
char *moreprompt = " -- more -- ";
-extern int screenheight;
-extern int screenwidth;
+int screenheight = 24;
+int screenwidth = 80;
int lines_printed = 0;
int cols_printed = 0;
extern int rc_ansi_color;
extern int rc_prompt_control;
-extern void check_screen_dims(void);
-
void do_keepalive(void);
+/*
+ * Attempt to discover the screen dimensions.
+ * WARNING: This is sometimes called from a signal handler.
+ */
+void check_screen_dims(void)
+{
+#ifdef TIOCGWINSZ
+ struct {
+ unsigned short height; /* rows */
+ unsigned short width; /* columns */
+ unsigned short xpixels;
+ unsigned short ypixels; /* pixels */
+ } xwinsz;
+
+ if (ioctl(0, TIOCGWINSZ, &xwinsz) == 0) {
+ if (xwinsz.height)
+ screenheight = (int) xwinsz.height;
+ if (xwinsz.width)
+ screenwidth = (int) xwinsz.width;
+ }
+#endif
+}
+
+
/*
* Initialize the screen
*/
/* if we receive this signal, we must be running
* in a terminal that supports resizing.
*/
- have_xterm = 1;
caught_sigwinch = 1;
check_screen_dims();
signal(SIGWINCH, scr_winch);