TERMINFO(3) | Library Functions Manual | TERMINFO(3)

# NAME

`setupterm`, `set_curterm`, `del_curterm`, `termname`, `longname`, `tigetflag`, `tigetnum`, `tigetstr`, `tparm`, `tputs`, `putp`, `ti_setupterm`, `ti_getflag`, `ti_getnum`, `ti_getstr`, `tiparm`, `ti_tiparm`, `ti_puts`, `ti_putp` —
terminal independent operation routines

# LIBRARY

Terminal Information Library (libterminfo, -lterminfo)

# SYNOPSIS

`#include <term.h>`

char PC;
short ospeed;
TERMINAL *cur_term;

int
`setupterm`(const char *name, int fildes, int *errret);

TERMINAL *
`set_curterm`(TERMINAL *nterm);

int
`del_curterm`(TERMINAL *oterm);

char *
`termname`(void);

char *
`longname`(void);

int
`tigetnum`(const char *id);

int
`tigetflag`(const char *id);

char *
`tigetstr`(const char *id);

char *
`tparm`(const char *cm, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9);

int
`tputs`(const char *cp, int affcnt, int (*outc)(int));

int
`putp`(const char *cp);

int
`ti_setupterm`(TERMINAL **, const char *name, int fildes, int *error);

int
`ti_getflag`(const TERMINAL *, const char *id);

int
`ti_getnum`(const TERMINAL *, const char *id);

const char *
`ti_getstr`(const TERMINAL *, const char *id);

char *
`tiparm`(const char *cm, ...);

char *
`ti_tiparm`(TERMINAL *, const char *cm, ...);

int
`ti_puts`(const TERMINAL *term, const char *str, int affcnt, int (*outc)(int ch, void *arg), void *arg);

int
`ti_putp`(const TERMINAL *term, const char *str);

# DESCRIPTION

These functions extract and use capabilities from a terminal capability database, usually /usr/share/misc/terminfo, the format of which is described in terminfo(5). These are low level routines; see curses(3) for a higher level package.

The `setupterm`() function extracts the entry for terminal name and then calls `set_curterm`() to set cur_term to it. If name is `NULL` then it is replaced by the environment variable `TERM`. The `setupterm`() function returns 0 on success and -1 on error. errret is set to -1 if the `terminfo` database could not be opened, 0 if the terminal could not be found in the database, and 1 if all went well.

The `set_curterm`() function sets the variable cur_term to nterm and makes all of the `terminfo` boolean, numeric and string variables use the values from nterm. The global variables PC and ospeed are then set. The old value of cur_term is returned. The `del_curterm`() function frees space pointed to by oterm.

The `termname`() function returns the name of cur_term. The `longname`() function returns the description of cur_term.

The `tigetflag`() function gets the boolean value of capability id, returning -1 if it is not a valid capability. The `tigetnum`() function gets the numeric value of the capability id, returning -2 if it is not a valid capability. The `tigetstr`() function returns the string value of the capability id, returning (char *)-1 if it is not a valid capability.

The `tparm`() function returns a string decoded from cm with the parameters p1 ... p9 applied. Some capabilities require string parameters and only platforms that can fit a char * pointer inside a long can use them. For platforms which don't support this, `NULL` is returned and errno is set to `ENOTSUPP`. The string encoding and parameter application is described in terminfo(5).

The `tputs`() function applies padding information to the string cp; affcnt gives the number of lines affected by the operation, or 1 if this is not applicable; outc is a function which is called by each character in turn. The external variable ospeed controls how many padding characters are sent in relation to the terminal speed. The `putp`() function calls tputs(str, 1, putchar). The output from `putp`() always goes to stdout.

## NetBSD Extensions To Terminfo

The `tiparm`() function allows variadic parameters instead of 9 fixed longs. Numeric parameters must be passed as int. String parameters must be passed as char * and works on all platforms, unlike `tparm`().

The `ti_*`() functions correspond to the standard `t*`() functions but take an additional TERMINAL * parameter so that the terminal can be specified instead of assuming cur_term. These functions use private variables to the TERMINAL instead of the global variables, such as PC and ospeed.

# SEE ALSO

ex(1), curses(3), terminfo(5)

# AUTHORS

Roy Marples <roy@NetBSD.org>

November 23, 2015 | NetBSD 9.5