.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_terminfo.3x,v 1.129 2024/01/13 22:15:55 tom Exp $
-.TH curs_terminfo 3X 2024-01-13 "ncurses 6.4" "Library calls"
+.\" $Id: curs_terminfo.3x,v 1.144 2024/09/14 20:06:50 tom Exp $
+.TH curs_terminfo 3X 2024-09-14 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
.
.SH NAME
\fB\%del_curterm\fP,
-\fB\%mvcur\fP,
\fB\%putp\fP,
\fB\%restartterm\fP,
\fB\%set_curterm\fP,
\fBint vid_puts(attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP, int (*\fIputc\fP)(int));
\fBint vid_attr(attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP);
.PP
-\fBint mvcur(int \fIoldrow\fP, int \fIoldcol\fP, int \fInewrow\fP, int \fInewcol\fP);
-.PP
\fBint tigetflag(const char *\fIcap-code\fP);
\fBint tigetnum(const char *\fIcap-code\fP);
\fBchar *tigetstr(const char *\fIcap-code\fP);
.I \%term\%info
structures,
but does not set up the output virtualization structures used by
-.I curses.
+.IR curses .
Its parameters follow.
.RS 3
.TP 5
passing an output
.I stream
rather than a
-.I descriptor.
+.IR descriptor .
In
-.I curses,
+.IR curses ,
the two are the same because \fB\%newterm\fP calls \fB\%setupterm\fP,
passing the file descriptor derived from its output stream parameter.
.TP 5
or
.B ERR
and stores a status value in the integer pointed to by
-.I errret.
+.IR errret .
A return value of
.B OK
combined with status of
.RE
.\" ********************************************************************
.SS "The Terminal State"
-\fB\%setupterm\fP stores its information about the terminal in a
+.B \%setupterm
+stores its information about the terminal in a
.I \%TERMINAL
-structure pointed to by the global variable \fB\%cur_term\fP.
+structure pointed to by the global variable
+.BR \%cur_term "."
If it detects an error,
or decides that the terminal is unsuitable
(hardcopy or generic),
it discards this information,
-making it not available to applications.
-.PP
-If \fB\%setupterm\fP is called repeatedly for the same terminal type,
-it will reuse the information.
-It maintains only one copy of a given terminal's capabilities in memory.
-If it is called for different terminal types,
-\fB\%setupterm\fP allocates new storage for each set of terminal
-capabilities.
+making it unavailable to applications.
.PP
-\fB\%set_curterm\fP sets \fB\%cur_term\fP to
-.I \%nterm,
-and makes all of the
+If
+.B \%setupterm
+is called repeatedly for the same terminal type,
+it reuses the information.
+It maintains only one copy of a given type's capabilities in memory.
+If called for different types,
+.B \%setupterm
+allocates new storage for each set of terminal capabilities.
+.PP
+.B \%set_curterm
+sets
+.B \%cur_term
+to
+.IR \%nterm ","
+making all of the
.I \%term\%info
Boolean,
numeric,
-and string variables use the values from
-.I \%nterm.
-It returns the old value of \fB\%cur_term\fP.
-.PP
-\fB\%del_curterm\fP frees the space pointed to by
-.I \%oterm
-and makes it available for further use.
+and string capabilities use the values from
+.IR \%nterm "."
+It returns the old value of
+.BR \%cur_term "."
+.PP
+.B \%del_curterm
+frees the memory pointed to by
+.BR \%oterm ","
+making it available for further use.
If
-.I \%oterm
+.B \%oterm
is
-the same as \fB\%cur_term\fP,
+the same as
+.BR \%cur_term ","
references to any of the
.I \%term\%info
Boolean,
numeric,
-and string variables thereafter may refer to invalid memory locations
-until another \fB\%setupterm\fP has been called.
-.PP
-\fB\%restartterm\fP is similar to \fB\%setupterm\fP and \fB\%initscr\fP,
-except that it is called after restoring memory to a previous state
+and string capabilities thereafter may refer to invalid memory locations
+until
+.B \%setupterm
+is called again.
+.PP
+.B \%restartterm
+is similar to
+.BR \%setupterm ","
+but is intended for use after restoring program memory
+to a previous state
(for example,
-when reloading a game saved as a core image dump).
-\fB\%restartterm\fP 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.
+when reloading an application that has been suspended from one terminal
+session and restored in another).
+.B \%restartterm
+assumes that the display dimensions
+and the input and output options are the same as when memory was saved,
+but the terminal type and line speed may differ.
Accordingly,
-\fB\%restartterm\fP saves various terminal state bits,
-calls \fB\%setupterm\fP,
-and then restores the bits.
+.B \%restartterm
+saves relevant terminal state,
+calls
+.BR \%setupterm ","
+then restores that state.
.\" ********************************************************************
.SS "Formatting Output"
\fB\%tparm\fP instantiates the string
.I str
with parameters
-.I pi.
+.IR pi .
A pointer is returned to the result of
.I str
with the parameters applied.
Its numeric parameters are
.IR int s
rather than
-.IR long s.
+.IR long "s."
.PP
Both \fB\%tparm\fP and \fB\%tiparm\fP assume that the application passes
parameters consistent with the terminal description.
parameter must be a
.I \%term\%info
string variable or the return value of
-\fB\%tparm\fP,
-\fB\%tiparm\fP,
-\fB\%tgetstr\fP,
-or \fB\%tgoto\fP.
-.IP
-The \fB\%tgetstr\fP and \fB\%tgoto\fP functions are part of the
-.I termcap
-interface,
-which happens to share these function names with the
-.I \%term\%info
-API.
+.B \%tparm
+or
+.BR \%tiparm "."
.bP
.I affcnt
is the number of lines affected,
.PP
\fB\%vidputs\fP displays the string on the terminal in the video
attribute mode
-.I attrs,
+.IR attrs ,
which is any combination of the attributes listed in \fB\%curses\fP(3X).
The characters are passed to the
.IR \%putchar -like
function
-.I putc.
+.IR putc .
.PP
\fB\%vidattr\fP is like \fB\%vidputs\fP,
except that it outputs through \fI\%putchar\fP(3).
color;
namely,
.bP
-.I \%attrs,
+.IR \%attrs ,
of type
-.I \%attr_t,
+.IR \%attr_t ,
for the attributes and
.bP
-.I pair,
+.IR pair ,
of type
-.I short,
+.IR short ,
for the color pair number.
.PP
Use the attribute constants prefixed with
saying that applications must provide a null pointer for that argument;
but see section \*(``EXTENSIONS\*('' below.
.PP
-\fB\%mvcur\fP provides low-level cursor motion.
-It takes effect immediately
-(rather than at the next refresh).
-Unlike the other low-level output functions,
-which either write to the standard output or pass an output function
-parameter,
-\fB\%mvcur\fP uses an output file descriptor derived from
-the output stream parameter of \fB\%newterm\fP(3X).
-.PP
-While \fB\%putp\fP and \fB\%mvcur\fP are low-level functions that do not
-use high-level
+While \fB\%putp\fP is a low-level function that does not use high-level
.I curses
state,
.I \%ncurses
-declares them in
+declares it in
.I \%curses.h
because System\ V did this
(see section \*(``HISTORY\*('' below).
and \fB\%tigetstr\fP return the value of the capability corresponding to
the
.I \%term\%info
-.I cap-code,
+.IR cap-code ,
such as
.BR xenl ,
passed to them.
.SH RETURN VALUE
X/Open Curses defines no failure conditions.
In
-.I \%ncurses,
+.IR \%ncurses ,
.TP 5
.B del_curtem
fails if its terminal parameter is null.
returning the same error codes.
.TP 5
.B restartterm
-fails if the associated call to \fB\%setupterm\fP returns an error.
+fails if the associated call to \fB\%setupterm\fP returns
+.BR ERR "."
.TP 5
.B setupterm
fails if it cannot allocate enough memory,
or create the initial windows
-.RB ( \%stdscr ,
+.RB \%( stdscr ,
.BR \%curscr ,
and
.BR \%newscr )
.\" ********************************************************************
.SH EXTENSIONS
The functions marked as extensions were designed for
-.I \%ncurses,
+.IR \%ncurses ,
and are not found in SVr4
.IR curses ,
4.4BSD
allows
.I opts
to be a pointer to
-.I int,
+.IR int ,
which overrides the
.I pair
.RI ( short )
.PP
Other implementions may not declare the capability name arrays.
Some provide them without declaring them.
-X/Open does not specify them.
+X/Open Curses does not specify them.
.PP
Extended terminal capability names,
as defined by
.IR curses ),
it was problematic because
.I \%ncurses
-did not allow a reliable way to cleanup on receiving
+did not allow a reliable way to clean up on receiving
.BR SIGTSTP .
.PP
The current version (ncurses6)
uses output buffers managed directly by
-.I \%ncurses.
+.IR \%ncurses .
Some of the low-level functions described in this manual page write
to the standard output.
They are not signal-safe.
X/Open Curses uses
.I \%const
less effectively than a later design might,
-in some cases applying it needlessly to values are already constant,
-and in most cases overlooking parameters which normally would use
-.I \%const.
-Using constant parameters for functions which do not use
+sometimes applying it needlessly to values that are already constant,
+and in most cases overlooking parameters that normally would use
+.IR \%const .
+Passing
+.IR \%const -qualified
+parameters to functions that do not declare them
.I \%const
may prevent the program from compiling.
On the other hand,
the ones used for programmable function keys).
.IP
The \fI\%ncurses\fP library checks usage of these capabilities,
-and returns an error if the capability mishandles string parameters.
+and returns
+.B ERR
+if the capability mishandles string parameters.
But it cannot check if a calling program provides strings in the right
places for the \fB\%tparm\fP calls.
.IP
\*(``#win32con\*('' or an abbreviation of that string.
.SS "Other Portability Issues"
In SVr4,
-\fB\%set_curterm\fP returns an
-.I int,
+.I \%set_curterm
+returns an
+.IR int ","
.B OK
or
-.BR ERR .
+.BR ERR "."
We have chosen to implement the X/Open Curses semantics.
.PP
In SVr4,
-the third argument of \fB\%tputs\fP has the type
+the third argument of
+.I \%tputs
+has the type
.RB \*(`` "int (*putc)(char)" \*(''.
.PP
At least one implementation of X/Open Curses (Solaris) returns a value
.B OK
or
.B ERR
-from \fB\%tputs\fP.
+from
+.IR \%tputs "."
It instead returns the length of the string,
and does no error checking.
-.PP
-X/Open Curses notes that after calling \fB\%mvcur\fP,
-the
-.I curses
-state may not match the actual terminal state,
-and that an application should touch and refresh the window before
-resuming normal
-.I curses
-calls.
-Both
-.I \%ncurses
-and SVr4
-.I curses
-implement \fB\%mvcur\fP using the
-.I SCREEN
-data allocated in either \fB\%initscr\fP or \fB\%newterm\fP.
-So though it is documented as a
-.I \%term\%info
-function,
-\fB\%mvcur\fP is really a
-.I curses
-function that is not well specified.
-.PP
-X/Open notes that after calling \fB\%mvcur\fP,
-the
-.I curses
-state may not match the actual terminal state,
-and that an application should touch and refresh the window before
-resuming normal
-.I curses
-calls.
-Both
-.I \%ncurses
-and SVr4
-.I curses
-implement \fB\%mvcur\fP using the
-.I SCREEN
-data allocated in either \fB\%initscr\fP or \fB\%newterm\fP.
-So though it is documented as a
-.I \%term\%info
-function,
-\fB\%mvcur\fP is really a
-.I curses
-function that is not well specified.
-.PP
-X/Open Curses states that the old location must be given for
-\fB\%mvcur\fP to accommodate terminals that lack absolute cursor
-positioning.
-.\" X/Open Curses Issue 7, p. 161
-.I \%ncurses
-allows the caller to use \-1 for either or both old coordinates.
-The \-1 tells
-.I \%ncurses
-that the old location is unknown,
-and that it must use only absolute motion,
-as with the
-.B \%cursor_address
-.RB ( cup )
-capability,
-rather than the least costly combination of absolute and relative
-motion.
.\" ********************************************************************
.SH HISTORY
SVr2 (1984) introduced the
interface),
and reusing \fB\%tgoto\fP and \fB\%tputs\fP.
.PP
+.ne 4v
.TS
lB lB
lB lx.