#include <term.h> /* clear_screen, cup & friends, cur_term */
-MODULE_ID("$Id: lib_newterm.c,v 1.33 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_newterm.c,v 1.41 1999/07/24 20:07:48 tom Exp $")
#ifndef ONLCR /* Allows compilation under the QNX 4.2 OS */
#define ONLCR 0
#else
cur_term->Nttyb.sg_flags &= ~(ECHO|CRMOD);
#endif
- return _nc_set_curterm(&cur_term->Nttyb);
+ return _nc_set_tty_mode(&cur_term->Nttyb);
}
/*
filter_mode = TRUE;
}
-SCREEN * newterm(const char *term, FILE *ofp, FILE *ifp)
+SCREEN * newterm(NCURSES_CONST char *name, FILE *ofp, FILE *ifp)
{
int errret;
+int slk_format = _nc_slk_format;
SCREEN* current;
#ifdef TRACE
-char *t = getenv("NCURSES_TRACE");
+int t = _nc_getenv_num("NCURSES_TRACE");
- if (t)
- trace((unsigned) strtol(t, 0, 0));
+ if (t >= 0)
+ trace(t);
#endif
- T((T_CALLED("newterm(\"%s\",%p,%p)"), term, ofp, ifp));
+ T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));
/* this loads the capability entry, then sets LINES and COLS */
- if (setupterm(term, fileno(ofp), &errret) == ERR)
+ if (setupterm(name, fileno(ofp), &errret) == ERR)
return 0;
- /*
- * Check for mismatched graphic-rendition capabilities. Most SVr4
- * terminfo trees contain entries that have rmul or rmso equated to
- * sgr0 (Solaris curses copes with those entries). We do this only for
- * curses, since many termcap applications assume that smso/rmso and
- * smul/rmul are paired, and will not function properly if we remove
- * rmso or rmul. Curses applications shouldn't be looking at this
- * detail.
- */
- if (exit_attribute_mode) {
-#define SGR0_FIX(mode) if (mode != 0 && !strcmp(mode, exit_attribute_mode)) \
- mode = 0
- SGR0_FIX(exit_underline_mode);
- SGR0_FIX(exit_standout_mode);
- }
-
/* implement filter mode */
if (filter_mode) {
LINES = 1;
-#ifdef init_tabs
if (init_tabs != -1)
TABSIZE = init_tabs;
else
-#endif /* init_tabs */
TABSIZE = 8;
T(("TABSIZE = %d", TABSIZE));
-#ifdef clear_screen
clear_screen = 0;
cursor_down = parm_down_cursor = 0;
cursor_address = 0;
row_address = 0;
cursor_home = carriage_return;
-#endif /* clear_screen */
}
/* If we must simulate soft labels, grab off the line to be used.
We assume that we must simulate, if it is none of the standard
formats (4-4 or 3-2-3) for which there may be some hardware
support. */
-#ifdef num_labels
- if (num_labels <= 0 || !SLK_STDFMT)
-#endif /* num_labels */
- if (_nc_slk_format)
+ if (num_labels <= 0 || !SLK_STDFMT(slk_format))
+ if (slk_format)
{
- if (ERR==_nc_ripoffline(-SLK_LINES, _nc_slk_initialize))
+ if (ERR==_nc_ripoffline(-SLK_LINES(slk_format),
+ _nc_slk_initialize))
return 0;
}
/* this actually allocates the screen structure, and saves the
return 0;
}
-#ifdef num_labels
/* if the terminal type has real soft labels, set those up */
- if (_nc_slk_format && num_labels > 0 && SLK_STDFMT)
+ if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
_nc_slk_initialize(stdscr, COLS);
-#endif /* num_labels */
SP->_ifd = fileno(ifp);
SP->_checkfd = fileno(ifp);
SP->_keytry = 0;
+ /*
+ * Check for mismatched graphic-rendition capabilities. Most SVr4
+ * terminfo trees contain entries that have rmul or rmso equated to
+ * sgr0 (Solaris curses copes with those entries). We do this only for
+ * curses, since many termcap applications assume that smso/rmso and
+ * smul/rmul are paired, and will not function properly if we remove
+ * rmso or rmul. Curses applications shouldn't be looking at this
+ * detail.
+ */
+#define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))
+ SP->_use_rmso = SGR0_TEST(exit_standout_mode);
+ SP->_use_rmul = SGR0_TEST(exit_underline_mode);
+
/* compute movement costs so we can do better move optimization */
_nc_mvcur_init();
- _nc_signal_handler(TRUE);
-
/* initialize terminal to a sane state */
_nc_screen_init();
/* Initialize the terminal line settings. */
_nc_initscr();
+ _nc_signal_handler(TRUE);
+
T((T_RETURN("%p"), SP));
return(SP);
}