X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_newterm.c;fp=ncurses%2Flib_newterm.c;h=9a4919bf5292480e2c61f87df1d2d19d78062036;hp=ea5333d898ea6dfecbd0d8d7377d96b0b56917a0;hb=0eb88fc5281804773e2a0c7a488a4452463535ce;hpb=661078ddbde3ce0f3b06e95642fbb9b5fef7dca1 diff --git a/ncurses/lib_newterm.c b/ncurses/base/lib_newterm.c similarity index 87% rename from ncurses/lib_newterm.c rename to ncurses/base/lib_newterm.c index ea5333d8..9a4919bf 100644 --- a/ncurses/lib_newterm.c +++ b/ncurses/base/lib_newterm.c @@ -48,7 +48,7 @@ #include /* 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 @@ -75,7 +75,7 @@ static inline int _nc_initscr(void) #else cur_term->Nttyb.sg_flags &= ~(ECHO|CRMOD); #endif - return _nc_set_curterm(&cur_term->Nttyb); + return _nc_set_tty_mode(&cur_term->Nttyb); } /* @@ -91,53 +91,35 @@ void filter(void) 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; @@ -145,19 +127,17 @@ char *t = getenv("NCURSES_TRACE"); 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 @@ -170,11 +150,9 @@ char *t = getenv("NCURSES_TRACE"); 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); @@ -199,17 +177,30 @@ char *t = getenv("NCURSES_TRACE"); 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); }