+setsize()
+{
+ register int l, i;
+ struct winsize win;
+
+ if (ioctl(0, TIOCGWINSZ, &win) < 0) {
+ i = LINES = tgetnum("li");
+ COLUMNS = tgetnum("co");
+ } else {
+ if ((LINES = winsz.ws_row = win.ws_row) == 0)
+ LINES = tgetnum("li");
+ i = LINES;
+ if ((COLUMNS = winsz.ws_col = win.ws_col) == 0)
+ COLUMNS = tgetnum("co");
+ }
+ if (LINES <= 5)
+ LINES = 24;
+ if (LINES > TUBELINES)
+ LINES = TUBELINES;
+ l = LINES;
+ if (ospeed < B1200)
+ l = 9; /* including the message line at the bottom */
+ else if (ospeed < B2400)
+ l = 17;
+ if (l > LINES)
+ l = LINES;
+ if (COLUMNS <= 4)
+ COLUMNS = 1000;
+ options[WINDOW].ovalue = options[WINDOW].odefault = l - 1;
+ if (defwind) options[WINDOW].ovalue = defwind;
+ options[SCROLL].ovalue = options[SCROLL].odefault = HC ? 11 : ((l-1) / 2);
+ if (i <= 0)
+ LINES = 2;
+}
+