NAME¶
del_curterm, 
mvcur, 
putp, 
restartterm,
  
set_curterm, 
setterm, 
setupterm, 
tigetflag,
  
tigetnum, 
tigetstr, 
tiparm, 
tparm, 
tputs,
  
vid_attr, 
vid_puts, 
vidattr, 
vidputs -
  
curses interfaces to terminfo database
SYNOPSIS¶
#include <curses.h>
 
#include <term.h>
int setupterm(char *term, int fildes, int *errret);
 
int setterm(char *term);
 
TERMINAL *set_curterm(TERMINAL *nterm);
 
int del_curterm(TERMINAL *oterm);
 
int restartterm(char *term, int fildes, int *errret);
 
char *tparm(char *str, ...);
 
int tputs(const char *str, int affcnt, int (*putc)(int));
 
int putp(const char *str);
 
int vidputs(chtype attrs, int (*putc)(int));
 
int vidattr(chtype attrs);
 
int vid_puts(attr_t attrs, short pair, void *opts, int (*putc)(char));
 
int vid_attr(attr_t attrs, short pair, void *opts);
 
int mvcur(int oldrow, int oldcol, int newrow, int newcol);
 
int tigetflag(char *capname);
 
int tigetnum(char *capname);
 
char *tigetstr(char *capname);
 
char *tiparm(const char *str, ...);
 
DESCRIPTION¶
These low-level routines must be called by programs that have to deal directly
  with the 
terminfo database to handle certain terminal capabilities,
  such as programming function keys. For all other functionality, 
curses
  routines are more suitable and their use is recommended.
Initially, 
setupterm should be called. Note that 
setupterm is
  automatically called by 
initscr and 
newterm. This defines the
  set of terminal-dependent variables [listed in 
terminfo(5)]. The
  
terminfo variables 
lines and 
columns are initialized by
  
setupterm as follows:
If 
use_env(FALSE) has been called, values for 
lines and
  
columns specified in 
terminfo are used.
Otherwise, if the environment variables 
LINES and 
COLUMNS exist,
  their values are used. If these environment variables do not exist and the
  program is running in a window, the current window size is used. Otherwise, if
  the environment variables do not exist, the values for 
lines and
  
columns specified in the 
terminfo database are used.
 
The header files 
curses.h and 
term.h should be included (in this
  order) to get the definitions for these strings, numbers, and flags.
  Parameterized strings should be passed through 
tparm to instantiate
  them. All 
terminfo strings [including the output of 
tparm]
  should be printed with 
tputs or 
putp. Call the
  
reset_shell_mode to restore the tty modes before exiting [see
  
kernel(3NCURSES)]. Programs which use cursor addressing should output
  
enter_ca_mode upon startup and should output 
exit_ca_mode before
  exiting. Programs desiring shell escapes should call
reset_shell_mode and output 
exit_ca_mode before the shell is
  called and should output 
enter_ca_mode and call 
reset_prog_mode
  after returning from the shell.
The 
setupterm routine reads in the 
terminfo database, initializing
  the 
terminfo structures, but does not set up the output virtualization
  structures used by 
curses. The terminal type is the character string
  
term; if 
term is null, the environment variable 
TERM is
  used. All output is to file descriptor 
fildes which is initialized for
  output. If 
errret is not null, then 
setupterm returns 
OK
  or 
ERR and stores a status value in the integer pointed to by
  
errret. A return value of 
OK combined with status of 
1 in
  
errret is normal. If 
ERR is returned, examine 
errret:
  - 1
 
  - means that the terminal is hardcopy, cannot be used for
      curses applications.
 
  - 0
 
  - means that the terminal could not be found, or that it is a
      generic type, having too little information for curses applications to
      run.
 
  - -1
 
  - means that the terminfo database could not be
    found.
 
 
If 
errret is null, 
setupterm prints an error message upon finding
  an error and exits. Thus, the simplest call is:
 
 setupterm((char *)0, 1, (int *)0);,
 
which uses all the defaults and sends the output to 
stdout.
The 
setterm routine is being replaced by 
setupterm. The call:
 
 setupterm(term, 1, (int *)0)
 
provides the same functionality as 
setterm(term). The
  
setterm routine is included here for BSD compatibility, and is not
  recommended for new programs.
The 
set_curterm routine sets the variable 
cur_term to
  
nterm, and makes all of the 
terminfo boolean, numeric, and
  string variables use the values from 
nterm. It returns the old value of
  
cur_term.
The 
del_curterm routine frees the space pointed to by 
oterm and
  makes it available for further use. If 
oterm is the same as
  
cur_term, references to any of the 
terminfo boolean, numeric,
  and string variables thereafter may refer to invalid memory locations until
  another 
setupterm has been called.
The 
restartterm routine is similar to 
setupterm and
  
initscr, except that it is called after restoring memory to a previous
  state (for example, when reloading a game saved as a core image dump). It
  assumes that the windows and the input and output options are the same as when
  memory was saved, but the terminal type and baud rate may be different.
  Accordingly, it saves various tty state bits, calls 
setupterm, and then
  restores the bits.
The 
tparm routine instantiates the string 
str with parameters
  
pi. A pointer is returned to the result of 
str with the
  parameters applied.
tiparm is a newer form of 
tparm which uses 
<stdarg.h>
  rather than a fixed-parameter list. Its numeric parameters are integers (int)
  rather than longs.
The 
tputs routine applies padding information to the string 
str
  and outputs it. The 
str must be a terminfo string variable or the
  return value from 
tparm, 
tgetstr, or 
tgoto. 
affcnt
  is the number of lines affected, or 1 if not applicable. 
putc is a
  
putchar-like routine to which the characters are passed, one at a time.
The 
putp routine calls 
tputs(str, 1, putchar). Note
  that the output of 
putp always goes to 
stdout, not to the
  
fildes specified in 
setupterm.
The 
vidputs routine displays the string on the terminal in the video
  attribute mode 
attrs, which is any combination of the attributes listed
  in 
ncurses(3NCURSES). The characters are passed to the
  
putchar-like routine 
putc.
The 
vidattr routine is like the 
vidputs routine, except that it
  outputs through 
putchar.
The 
vid_attr and 
vid_puts routines correspond to vidattr and
  vidputs, respectively. They use a set of arguments for representing the video
  attributes plus color, i.e., one of type attr_t for the attributes and one of
  short for the color_pair number. The 
vid_attr and 
vid_puts
  routines are designed to use the attribute constants with the 
WA_
  prefix. The opts argument is reserved for future use. Currently, applications
  must provide a null pointer for that argument.
The 
mvcur routine provides low-level cursor motion. It takes effect
  immediately (rather than at the next refresh).
The 
tigetflag, 
tigetnum and 
tigetstr routines return the
  value of the capability corresponding to the 
terminfo capname
  passed to them, such as 
xenl.
The 
tigetflag routine returns the value 
-1 if 
capname is
  not a boolean capability, or 
0 if it is canceled or absent from the
  terminal description.
The 
tigetnum routine returns the value 
-2 if 
capname is not
  a numeric capability, or 
-1 if it is canceled or absent from the
  terminal description.
The 
tigetstr routine returns the value 
(char *)-1 if
  
capname is not a string capability, or 
0 if it is canceled or
  absent from the terminal description.
The 
capname for each capability is given in the table column entitled
  
capname code in the capabilities section of 
terminfo(5).
 
char *boolnames[], 
*boolcodes[],
  
*boolfnames[]
 
char *numnames[], 
*numcodes[], 
*numfnames[]
 
char *strnames[], 
*strcodes[], 
*strfnames[] 
These null-terminated arrays contain the 
capnames, the 
termcap
  codes, and the full C names, for each of the 
terminfo variables.
RETURN VALUE¶
Routines that return an integer return 
ERR upon failure and 
OK
  (SVr4 only specifies "an integer value other than 
ERR") upon
  successful completion, unless otherwise noted in the preceding routine
  descriptions.
Routines that return pointers always return 
NULL on error.
X/Open defines no error conditions. In this implementation
  - del_curterm
 
  - returns an error if its terminal parameter is null.
 
  - putp
 
  - calls tputs, returning the same error-codes.
 
  - restartterm
 
  - returns an error if the associated call to setupterm
      returns an error.
 
  - setupterm
 
  - returns an error if it cannot allocate enough memory, or
      create the initial windows (stdscr, curscr, newscr). Other error
      conditions are documented above.
 
  - tputs
 
  - returns an error if the string parameter is null. It does
      not detect I/O errors: X/Open states that tputs ignores the return
      value of the output function putc.
 
 
NOTES¶
The 
setupterm routine should be used in place of 
setterm. It may
  be useful when you want to test for terminal capabilities without committing
  to the allocation of storage involved in 
initscr.
Note that 
vidattr and 
vidputs may be macros.
PORTABILITY¶
The function 
setterm is not described by X/Open and must be considered
  non-portable. All other functions are as described by X/Open.
setupterm copies the terminal name to the array 
ttytype. This is
  not part of X/Open Curses, but is assumed by some applications.
In System V Release 4, 
set_curterm has an 
int return type and
  returns 
OK or 
ERR. We have chosen to implement the X/Open Curses
  semantics.
In System V Release 4, the third argument of 
tputs has the type 
int
  (*putc)(char).
At least one implementation of X/Open Curses (Solaris) returns a value other
  than OK/ERR from 
tputs. That returns the length of the string, and does
  no error-checking.
X/Open Curses prototypes 
tparm with a fixed number of parameters, rather
  than a variable argument list. This implementation uses a variable argument
  list, but can be configured to use the fixed-parameter list. Portable
  applications should provide 9 parameters after the format; zeroes are fine for
  this purpose.
In response to comments by Thomas E. Dickey, X/Open Curses Issue 7 proposed the
  
tiparam function in mid-2009.
X/Open notes that after calling 
mvcur, the curses state may not match the
  actual terminal state, and that an application should touch and refresh the
  window before resuming normal curses calls. Both ncurses and System V Release
  4 curses implement 
mvcur using the SCREEN data allocated in either
  
initscr or 
newterm. So though it is documented as a terminfo
  function, 
mvcur is really a curses function which is not well
  specified.
X/Open states that the old location must be given for 
mvcur. This
  implementation allows the caller to use -1's for the old ordinates. In that
  case, the old location is unknown.
Extended terminal capability names, e.g., as defined by 
tic -x, are
  not stored in the arrays described in this section.
SEE ALSO¶
ncurses(3NCURSES), 
initscr(3NCURSES), 
kernel(3NCURSES),
  
termcap(3NCURSES), 
curses_variables(3NCURSES),
  
terminfo_variables(3NCURSES), 
putc(3), 
terminfo(5)