Back to index

tetex-bin  3.0
Defines | Functions | Variables
lib_newterm.c File Reference
#include <curses.priv.h>
#include <term.h>
#include <tic.h>

Go to the source code of this file.

Defines

#define ONLCR   0
#define SGR0_TEST(mode)   (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))

Functions

static int _nc_initscr (void)
 filter (void)
 newterm (NCURSES_CONST char *name, FILE *ofp, FILE *ifp)

Variables

static int filter_mode = FALSE

Define Documentation

#define ONLCR   0

Definition at line 54 of file lib_newterm.c.

#define SGR0_TEST (   mode)    (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))

Function Documentation

static int _nc_initscr ( void  ) [inline, static]

Definition at line 66 of file lib_newterm.c.

{
    int result = ERR;

    /* for extended XPG4 conformance requires cbreak() at this point */
    /* (SVr4 curses does this anyway) */
    if (cbreak() == OK) {
       TTY buf;

       buf = cur_term->Nttyb;
#ifdef TERMIOS
       buf.c_lflag &= ~(ECHO | ECHONL);
       buf.c_iflag &= ~(ICRNL | INLCR | IGNCR);
       buf.c_oflag &= ~(ONLCR);
#else
       buf.sg_flags &= ~(ECHO | CRMOD);
#endif
       if ((result = _nc_set_tty_mode(&buf)) == OK)
           cur_term->Nttyb = buf;
    }
    return result;
}

Here is the call graph for this function:

Here is the caller graph for this function:

filter ( void  )

Definition at line 98 of file lib_newterm.c.

{
    T((T_CALLED("filter")));
    filter_mode = TRUE;
    returnVoid;
}
newterm ( NCURSES_CONST char *  name,
FILE ofp,
FILE ifp 
)

Definition at line 106 of file lib_newterm.c.

{
    int errret;
    int slk_format = _nc_slk_format;
    SCREEN *current;

    START_TRACE();
    T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));

    /* this loads the capability entry, then sets LINES and COLS */
    if (setupterm(name, fileno(ofp), &errret) == ERR)
       returnSP(0);

    /* implement filter mode */
    if (filter_mode) {
       LINES = 1;

       clear_screen = 0;
       cursor_down = parm_down_cursor = 0;
       cursor_address = 0;
       cursor_up = parm_up_cursor = 0;
       row_address = 0;

       cursor_home = carriage_return;
    }

    /* 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. */
    if (num_labels <= 0 || !SLK_STDFMT(slk_format))
       if (slk_format) {
           if (ERR == _nc_ripoffline(-SLK_LINES(slk_format),
                                  _nc_slk_initialize))
              returnSP(0);
       }
    /* this actually allocates the screen structure, and saves the
     * original terminal settings.
     */
    current = SP;
    _nc_set_screen(0);
    if (_nc_setupscreen(LINES, COLS, ofp) == ERR) {
       _nc_set_screen(current);
       returnSP(0);
    }

    /* if the terminal type has real soft labels, set those up */
    if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
       _nc_slk_initialize(stdscr, COLS);

    SP->_ifd = fileno(ifp);
    typeahead(fileno(ifp));
#ifdef TERMIOS
    SP->_use_meta = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
                   !(cur_term->Ottyb.c_iflag & ISTRIP));
#else
    SP->_use_meta = FALSE;
#endif
    SP->_endwin = FALSE;

    /* Check whether we can optimize scrolling under dumb terminals in case
     * we do not have any of these capabilities, scrolling optimization
     * will be useless.
     */
    SP->_scrolling = ((scroll_forward && scroll_reverse) ||
                    ((parm_rindex || parm_insert_line || insert_line) &&
                     (parm_index || parm_delete_line || delete_line)));

    baudrate();                    /* sets a field in the SP structure */

    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();

    /* initialize terminal to a sane state */
    _nc_screen_init();

    /* Initialize the terminal line settings. */
    _nc_initscr();

    _nc_signal_handler(TRUE);

#if USE_SIZECHANGE
    /*
     * Pretend we received a SIGWINCH, just in case we're starting up in a
     * terminal that cannot initialize its size properly (Debian #265631).
     */
    SP->_sig_winch = TRUE;
#endif

    returnSP(SP);
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

int filter_mode = FALSE [static]

Definition at line 95 of file lib_newterm.c.