+static bool redirected = FALSE;
+static bool hascolor = FALSE;
+
+static RETSIGTYPE
+sighndl(int signo)
+{
+ signal(signo, sighndl);
+ sigtermed = signo;
+ if (redirected) {
+ endwin();
+ ExitProgram(EXIT_FAILURE);
+ }
+}
+
+static void
+drawbox(void)
+{
+ chtype bottom[XLENGTH + 1];
+ int n;
+
+ if (hascolor)
+ attrset(COLOR_PAIR(3));
+
+ mvaddch(YBASE - 1, XBASE - 1, ACS_ULCORNER);
+ hline(ACS_HLINE, XLENGTH);
+ mvaddch(YBASE - 1, XBASE + XLENGTH, ACS_URCORNER);
+
+ mvaddch(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER);
+ mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
+ for (n = 0; n < XLENGTH; n++)
+ bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR));
+ mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
+ mvaddch(YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER);
+
+ move(YBASE, XBASE - 1);
+ vline(ACS_VLINE, YDEPTH);