]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/man/curs_terminfo.3x.html
ncurses 6.4 - patch 20240113
[ncurses.git] / doc / html / man / curs_terminfo.3x.html
1 <!--
2   * t
3   ****************************************************************************
4   * Copyright 2018-2023,2024 Thomas E. Dickey                                *
5   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
6   *                                                                          *
7   * Permission is hereby granted, free of charge, to any person obtaining a  *
8   * copy of this software and associated documentation files (the            *
9   * "Software"), to deal in the Software without restriction, including      *
10   * without limitation the rights to use, copy, modify, merge, publish,      *
11   * distribute, distribute with modifications, sublicense, and/or sell       *
12   * copies of the Software, and to permit persons to whom the Software is    *
13   * furnished to do so, subject to the following conditions:                 *
14   *                                                                          *
15   * The above copyright notice and this permission notice shall be included  *
16   * in all copies or substantial portions of the Software.                   *
17   *                                                                          *
18   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
19   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
20   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
21   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
22   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
23   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
24   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
25   *                                                                          *
26   * Except as contained in this notice, the name(s) of the above copyright   *
27   * holders shall not be used in advertising or otherwise to promote the     *
28   * sale, use or other dealings in this Software without prior written       *
29   * authorization.                                                           *
30   ****************************************************************************
31   * @Id: curs_terminfo.3x,v 1.129 2024/01/13 22:15:55 tom Exp @
32 -->
33 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
34 <HTML>
35 <HEAD>
36 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
37 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
38 <TITLE>curs_terminfo 3x 2024-01-13 ncurses 6.4 Library calls</TITLE>
39 <link rel="author" href="mailto:bug-ncurses@gnu.org">
40
41 </HEAD>
42 <BODY>
43 <H1 class="no-header">curs_terminfo 3x 2024-01-13 ncurses 6.4 Library calls</H1>
44 <PRE>
45 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
46
47
48
49
50 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
51        <STRONG>del_curterm</STRONG>,   <STRONG>mvcur</STRONG>,   <STRONG>putp</STRONG>,   <STRONG>restartterm</STRONG>,   <STRONG>set_curterm</STRONG>,  <STRONG>setupterm</STRONG>,
52        <STRONG>tigetflag</STRONG>,  <STRONG>tigetnum</STRONG>,  <STRONG>tigetstr</STRONG>,  <STRONG>tiparm</STRONG>,  <STRONG>tiparm_s</STRONG>,  <STRONG>tiscan_s</STRONG>,  <STRONG>tparm</STRONG>,
53        <STRONG>tputs</STRONG>,  <STRONG>vid_attr</STRONG>,  <STRONG>vid_puts</STRONG>,  <STRONG>vidattr</STRONG>,  <STRONG>vidputs</STRONG>  - <EM>curses</EM> interfaces to
54        <EM>terminfo</EM> database
55
56
57 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
58        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
59        <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
60
61        <STRONG>TERMINAL</STRONG> <STRONG>*cur_term;</STRONG>
62
63        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolnames[];</STRONG>
64        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolcodes[];</STRONG>
65        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolfnames[];</STRONG>
66        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numnames[];</STRONG>
67        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numcodes[];</STRONG>
68        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numfnames[];</STRONG>
69        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strnames[];</STRONG>
70        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strcodes[];</STRONG>
71        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strfnames[];</STRONG>
72
73        <STRONG>int</STRONG> <STRONG>setupterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
74        <STRONG>TERMINAL</STRONG> <STRONG>*set_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>nterm</EM><STRONG>);</STRONG>
75        <STRONG>int</STRONG> <STRONG>del_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>oterm</EM><STRONG>);</STRONG>
76        <STRONG>int</STRONG> <STRONG>restartterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
77
78        <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> ...<STRONG>);</STRONG>
79             <EM>/*</EM> <EM>or</EM> <EM>*/</EM>
80        <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>long</STRONG> <EM>p1</EM> ... <STRONG>long</STRONG> <EM>p9</EM><STRONG>);</STRONG>
81
82        <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>affcnt</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
83        <STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
84
85        <STRONG>int</STRONG> <STRONG>vidputs(chtype</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
86        <STRONG>int</STRONG> <STRONG>vidattr(chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
87        <STRONG>int</STRONG> <STRONG>vid_puts(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
88        <STRONG>int</STRONG> <STRONG>vid_attr(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
89
90        <STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newcol</EM><STRONG>);</STRONG>
91
92        <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
93        <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
94        <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
95
96        <STRONG>char</STRONG> <STRONG>*tiparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> ...<STRONG>);</STRONG>
97
98        <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
99        <STRONG>char</STRONG> <STRONG>*tiparm_s(int</STRONG> <EM>expected</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>mask</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
100        <STRONG>int</STRONG> <STRONG>tiscan_s(int</STRONG> <STRONG>*</STRONG><EM>expected</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>mask</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
101
102        <EM>/*</EM> <EM>deprecated</EM> <EM>*/</EM>
103        <STRONG>int</STRONG> <STRONG>setterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>);</STRONG>
104
105
106 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
107        These low-level functions must be called by programs that deal directly
108        with  the  <EM>terminfo</EM>  database  to handle certain terminal capabilities,
109        such as programming function keys.  For all other functionality, <EM>curses</EM>
110        functions are more suitable and their use is recommended.
111
112        None  of  these  functions  use  (or  are aware of) multibyte character
113        strings such as UTF-8.
114
115        <STRONG>o</STRONG>   Capability names and codes use the POSIX portable character set.
116
117        <STRONG>o</STRONG>   Capability string values have  no  associated  encoding;  they  are
118            strings of 8-bit characters.
119
120
121 </PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
122        Initially, <STRONG>setupterm</STRONG> should be called.  The high-level <EM>curses</EM> functions
123        <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> call <STRONG>setupterm</STRONG> to initialize the low-level  set  of
124        terminal-dependent variables listed in <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.
125
126        Applications  can  use  the  terminal capabilities either directly (via
127        header  definitions),  or  by  special  functions.   The  header  files
128        <EM>curses.h</EM>  and  <EM>term.h</EM>  should  be  included  (in that order) to get the
129        definitions for these strings, numbers, and flags.
130
131        The <EM>terminfo</EM> variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized  by  <STRONG>setupterm</STRONG>
132        as follows.
133
134        <STRONG>o</STRONG>   If  <STRONG>use_env(FALSE)</STRONG>  has  been  called, values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG>
135            specified in <EM>terminfo</EM> are used.
136
137        <STRONG>o</STRONG>   Otherwise, if the environment variables <EM>LINES</EM>  and  <EM>COLUMNS</EM>  exist,
138            their values are used.  If these environment variables do not exist
139            and the program is running in a window, the current window size  is
140            used.   Otherwise,  if  the environment variables do not exist, the
141            values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the <EM>terminfo</EM> database are
142            used.
143
144        Parameterized  strings  should  be  passed through <STRONG>tparm</STRONG> to instantiate
145        them.  All <EM>terminfo</EM> strings (including the output of <STRONG>tparm</STRONG>)  should  be
146        sent  to the terminal device with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.  Call <STRONG>reset_shell_mode</STRONG>
147        to restore the terminal modes before exiting; see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>.
148
149        Programs that use cursor addressing should
150
151        <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> upon startup and
152
153        <STRONG>o</STRONG>   output <STRONG>exit_ca_mode</STRONG> before exiting.
154
155        Programs that execute shell subprocesses should
156
157        <STRONG>o</STRONG>   call <STRONG>reset_shell_mode</STRONG> and output <STRONG>exit_ca_mode</STRONG> before the  shell  is
158            called and
159
160        <STRONG>o</STRONG>   output  <STRONG>enter_ca_mode</STRONG> and call <STRONG>reset_prog_mode</STRONG> after returning from
161            the shell.
162
163        <STRONG>setupterm</STRONG> reads in the <EM>terminfo</EM>  database,  initializing  the  <EM>terminfo</EM>
164        structures,  but  does  not set up the output virtualization structures
165        used by <EM>curses.</EM>  Its parameters follow.
166
167           <EM>term</EM> is the terminal type, a character string.  If <EM>term</EM> is null, the
168                environment variable <EM>TERM</EM> is read.
169
170           <EM>filedes</EM>
171                is  the  file  descriptor used for getting and setting terminal
172                I/O modes.
173
174                Higher-level applications use  <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>  to  initialize  the
175                terminal,  passing  an  output <EM>stream</EM> rather than a <EM>descriptor.</EM>
176                In  <EM>curses,</EM>  the  two  are  the  same  because  <STRONG>newterm</STRONG>   calls
177                <STRONG>setupterm</STRONG>,  passing the file descriptor derived from its output
178                stream parameter.
179
180           <EM>errret</EM>
181                points to an optional location where an  error  status  can  be
182                returned  to the caller.  If <EM>errret</EM> is not null, then <STRONG>setupterm</STRONG>
183                returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG> and stores a  status  value  in  the  integer
184                pointed  to  by  <EM>errret.</EM>   A  return  value of <STRONG>OK</STRONG> combined with
185                status of <STRONG>1</STRONG> in <EM>errret</EM> is normal.
186
187                If <STRONG>ERR</STRONG> is returned, examine <EM>errret:</EM>
188
189                <STRONG>1</STRONG>    means that the terminal is hardcopy, and  cannot  be  used
190                     for <EM>curses</EM> applications.
191
192                     <STRONG>setupterm</STRONG>  determines  if  the entry is a hardcopy type by
193                     checking the <STRONG>hardcopy</STRONG> (<STRONG>hc</STRONG>) capability.
194
195                <STRONG>0</STRONG>    means that the terminal could not be found, or that it  is
196                     a  generic  type, having too little information for <EM>curses</EM>
197                     applications to run.
198
199                     <STRONG>setupterm</STRONG> determines if the entry is  a  generic  type  by
200                     checking the <STRONG>generic_type</STRONG> (<STRONG>gn</STRONG>) capability.
201
202                <STRONG>-1</STRONG>   means that the <EM>terminfo</EM> database could not be found.
203
204                If  <EM>errret</EM>  is  null,  <STRONG>setupterm</STRONG>  reports an error message upon
205                finding an error and exits.  Thus, the simplest call is:
206
207                       setupterm((char *)0, 1, (int *)0);
208
209                which uses all the defaults and sends the output to <STRONG>stdout</STRONG>.
210
211
212 </PRE><H3><a name="h3-The-Terminal-State">The Terminal State</a></H3><PRE>
213        <STRONG>setupterm</STRONG> stores its information  about  the  terminal  in  a  <EM>TERMINAL</EM>
214        structure pointed to by the global variable <STRONG>cur_term</STRONG>.  If it detects an
215        error,  or  decides  that  the  terminal  is  unsuitable  (hardcopy  or
216        generic),  it  discards  this  information,  making it not available to
217        applications.
218
219        If <STRONG>setupterm</STRONG> is called repeatedly for the same terminal type,  it  will
220        reuse  the  information.   It  maintains  only  one  copy  of  a  given
221        terminal's capabilities in memory.   If  it  is  called  for  different
222        terminal  types,  <STRONG>setupterm</STRONG>  allocates  new  storage  for  each  set of
223        terminal capabilities.
224
225        <STRONG>set_curterm</STRONG> sets <STRONG>cur_term</STRONG> to <EM>nterm,</EM>  and  makes  all  of  the  <EM>terminfo</EM>
226        Boolean,  numeric,  and string variables use the values from <EM>nterm.</EM>  It
227        returns the old value of <STRONG>cur_term</STRONG>.
228
229        <STRONG>del_curterm</STRONG> frees the space pointed to by <EM>oterm</EM> and makes it  available
230        for  further  use.  If <EM>oterm</EM> is the same as <STRONG>cur_term</STRONG>, references to any
231        of the <EM>terminfo</EM> Boolean, numeric, and string variables  thereafter  may
232        refer  to  invalid  memory  locations  until another <STRONG>setupterm</STRONG> has been
233        called.
234
235        <STRONG>restartterm</STRONG> is similar to <STRONG>setupterm</STRONG> and  <STRONG>initscr</STRONG>,  except  that  it  is
236        called  after  restoring  memory to a previous state (for example, when
237        reloading a game saved as a core image dump).  <STRONG>restartterm</STRONG> assumes that
238        the  windows  and  the  input  and  output options are the same as when
239        memory was saved, but the terminal type and baud rate may be different.
240        Accordingly,  <STRONG>restartterm</STRONG>  saves  various  terminal  state  bits, calls
241        <STRONG>setupterm</STRONG>, and then restores the bits.
242
243
244 </PRE><H3><a name="h3-Formatting-Output">Formatting Output</a></H3><PRE>
245        <STRONG>tparm</STRONG> instantiates the string <EM>str</EM> with parameters  <EM>pi.</EM>   A  pointer  is
246        returned to the result of <EM>str</EM> with the parameters applied.  Application
247        developers should keep in mind these quirks of the interface:
248
249        <STRONG>o</STRONG>   Although <STRONG>tparm</STRONG>'s actual parameters may be integers or strings,  the
250            prototype expects <EM>long</EM> (integer) values.
251
252        <STRONG>o</STRONG>   Aside  from  the  <STRONG>set_attributes</STRONG>  (<STRONG>sgr</STRONG>)  capability,  most terminal
253            capabilities require no more than one or two parameters.
254
255        <STRONG>o</STRONG>   Padding information is ignored  by  <STRONG>tparm</STRONG>;  it  is  interpreted  by
256            <STRONG>tputs</STRONG>.
257
258        <STRONG>o</STRONG>   The  capability  string  is  null-terminated.   Use "\200" where an
259            ASCII NUL is needed in the output.
260
261        <STRONG>tiparm</STRONG> is a newer form of <STRONG>tparm</STRONG>  which  uses  <EM>stdarg.h</EM>  rather  than  a
262        fixed-parameter  list.   Its  numeric  parameters  are <EM>int</EM>s rather than
263        <EM>long</EM>s.
264
265        Both <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> assume that  the  application  passes  parameters
266        consistent  with the terminal description.  Two extensions are provided
267        as alternatives to deal with untrusted data.
268
269        <STRONG>o</STRONG>   <STRONG>tiparm_s</STRONG> is an extension which is a safer formatting function  than
270            <STRONG>tparm</STRONG> or <STRONG>tiparm</STRONG>, because it allows the developer to tell the <EM>curses</EM>
271            library how many parameters to expect in the  parameter  list,  and
272            which may be string parameters.
273
274            The  <EM>mask</EM>  parameter has one bit set for each of the parameters (up
275            to 9) passed as <EM>char</EM> pointers rather than numbers.
276
277        <STRONG>o</STRONG>   The  extension  <STRONG>tiscan_s</STRONG>  allows  the  application  to  inspect   a
278            formatting capability to see what the <EM>curses</EM> library would assume.
279
280
281 </PRE><H3><a name="h3-Output-Functions">Output Functions</a></H3><PRE>
282        String  capabilities  can  contain  padding  information,  a time delay
283        (accommodating performance limitations of hardware terminals) expressed
284        as <STRONG>$&lt;</STRONG><EM>n</EM><STRONG>&gt;</STRONG>, where <EM>n</EM> is a nonnegative integral count of milliseconds.  If <EM>n</EM>
285        exceeds 30,000 (thirty seconds), it is capped at that value.
286
287        <STRONG>tputs</STRONG> interprets time-delay information in the string <EM>str</EM>  and  outputs
288        it, executing the delays:
289
290        <STRONG>o</STRONG>   The  <EM>str</EM> parameter must be a <EM>terminfo</EM> string variable or the return
291            value of <STRONG>tparm</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tgetstr</STRONG>, or <STRONG>tgoto</STRONG>.
292
293            The <STRONG>tgetstr</STRONG> and <STRONG>tgoto</STRONG> functions are part of the <EM>termcap</EM>  interface,
294            which happens to share these function names with the <EM>terminfo</EM> API.
295
296        <STRONG>o</STRONG>   <EM>affcnt</EM> is the number of lines affected, or <STRONG>1</STRONG> if not applicable.
297
298        <STRONG>o</STRONG>   <EM>putc</EM> is a <EM>putchar</EM>-like function to which the characters are passed,
299            one at a time.
300
301            If <STRONG>tputs</STRONG> processes  a  time-delay,  it  uses  the  <STRONG><A HREF="curs_util.3x.html">delay_output(3x)</A></STRONG>
302            function,  routing  any  resulting  padding characters through this
303            function.
304
305        <STRONG>putp</STRONG> calls "<STRONG>tputs(</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>putchar)</STRONG>".  The output of <STRONG>putp</STRONG> always goes to
306        <STRONG>stdout</STRONG>, rather than the <EM>filedes</EM> specified in <STRONG>setupterm</STRONG>.
307
308        <STRONG>vidputs</STRONG> displays the string on the terminal in the video attribute mode
309        <EM>attrs,</EM> which is any combination of the attributes listed in <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
310        The characters are passed to the <EM>putchar</EM>-like function <EM>putc.</EM>
311
312        <STRONG>vidattr</STRONG> is like <STRONG>vidputs</STRONG>, except that it outputs through <STRONG>putchar(3)</STRONG>.
313
314        <STRONG>vid_attr</STRONG>  and <STRONG>vid_puts</STRONG> correspond to <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG>, respectively.
315        They use multiple parameters to represent the character attributes  and
316        color; namely,
317
318        <STRONG>o</STRONG>   <EM>attrs,</EM> of type <EM>attr</EM><STRONG>_</STRONG><EM>t,</EM> for the attributes and
319
320        <STRONG>o</STRONG>   <EM>pair,</EM> of type <EM>short,</EM> for the color pair number.
321
322        Use  the  attribute  constants  prefixed  with  "<STRONG>WA_</STRONG>" with <STRONG>vid_attr</STRONG> and
323        <STRONG>vid_puts</STRONG>.
324
325        X/Open Curses reserves the <EM>opts</EM> argument for future  use,  saying  that
326        applications  must  provide  a  null pointer for that argument; but see
327        section "EXTENSIONS" below.
328
329        <STRONG>mvcur</STRONG> provides low-level cursor motion.  It  takes  effect  immediately
330        (rather  than  at the next refresh).  Unlike the other low-level output
331        functions, which either write to the standard output or pass an  output
332        function  parameter,  <STRONG>mvcur</STRONG> uses an output file descriptor derived from
333        the output stream parameter of <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>.
334
335        While <STRONG>putp</STRONG> and <STRONG>mvcur</STRONG> are low-level functions that do not use high-level
336        <EM>curses</EM>  state,  <EM>ncurses</EM>  declares them in <EM>curses.h</EM> because System V did
337        this (see section "HISTORY" below).
338
339
340 </PRE><H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE>
341        <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, and <STRONG>tigetstr</STRONG> return the value  of  the  capability
342        corresponding  to  the <EM>terminfo</EM> <EM>cap-code,</EM> such as <STRONG>xenl</STRONG>, passed to them.
343        The <EM>cap-code</EM> for each capability is given in the table column  entitled
344        <EM>cap-code</EM> code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
345
346        These functions return special values to denote errors.
347
348        <STRONG>tigetflag</STRONG> returns
349
350        <STRONG>-1</STRONG>     if <EM>cap-code</EM> is not a Boolean capability, or
351
352        <STRONG>0</STRONG>      if it is canceled or absent from the terminal description.
353
354        <STRONG>tigetnum</STRONG> returns
355
356        <STRONG>-2</STRONG>     if <EM>cap-code</EM> is not a numeric capability, or
357
358        <STRONG>-1</STRONG>     if it is canceled or absent from the terminal description.
359
360        <STRONG>tigetstr</STRONG> returns
361
362        <STRONG>(char</STRONG> <STRONG>*)-1</STRONG>
363               if <EM>cap-code</EM> is not a string capability, or
364
365        <STRONG>0</STRONG>      if it is canceled or absent from the terminal description.
366
367
368 </PRE><H3><a name="h3-Terminal-Capability-Names">Terminal Capability Names</a></H3><PRE>
369        These null-terminated arrays contain
370
371        <STRONG>o</STRONG>   the short <EM>terminfo</EM> names ("codes"),
372
373        <STRONG>o</STRONG>   the <EM>termcap</EM> names ("names"), and
374
375        <STRONG>o</STRONG>   the long <EM>terminfo</EM> names ("fnames")
376
377        for each of the predefined <EM>terminfo</EM> variables:
378
379               <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG>
380               <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG>
381               <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG>
382
383
384 </PRE><H3><a name="h3-Releasing-Memory">Releasing Memory</a></H3><PRE>
385        Each successful call to <STRONG>setupterm</STRONG> allocates memory to hold the terminal
386        description.  As a side effect, it  sets  <STRONG>cur_term</STRONG>  to  point  to  this
387        memory.  If an application calls
388
389               del_curterm(cur_term);
390
391        the memory will be freed.
392
393        The  formatting functions <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> extend the storage allocated
394        by <STRONG>setupterm</STRONG> as follows.
395
396        <STRONG>o</STRONG>   They add the "static" <EM>terminfo</EM>  variables  [a-z].   Before  <EM>ncurses</EM>
397            6.3, those were shared by all screens.  With <EM>ncurses</EM> 6.3, those are
398            allocated per screen.  See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
399
400        <STRONG>o</STRONG>   To improve performance, <EM>ncurses</EM> 6.3 caches the result of  analyzing
401            <EM>terminfo</EM>  strings  for  their parameter types.  That is stored as a
402            binary tree referenced from the <EM>TERMINAL</EM> structure.
403
404        The higher-level <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> functions use <STRONG>setupterm</STRONG>.  Normally
405        they  do  not free this memory, but it is possible to do that using the
406        <STRONG><A HREF="curs_initscr.3x.html">delscreen(3x)</A></STRONG> function.
407
408
409 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
410        X/Open Curses defines no failure conditions.  In <EM>ncurses,</EM>
411
412        <STRONG>del_curtem</STRONG>
413             fails if its terminal parameter is null.
414
415        <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error codes.
416
417        <STRONG>restartterm</STRONG>
418             fails if the associated call to <STRONG>setupterm</STRONG> returns an error.
419
420        <STRONG>setupterm</STRONG>
421             fails if it cannot allocate enough memory, or create  the  initial
422             windows  (<STRONG>stdscr</STRONG>,  <STRONG>curscr</STRONG>,  and <STRONG>newscr</STRONG>) Other error conditions are
423             documented above.
424
425        <STRONG>tparm</STRONG>
426             returns a null pointer if the capability would require  unexpected
427             parameters;  that  is,  too  many,  too  few,  or  incorrect types
428             (strings where integers are expected, or vice versa).
429
430        <STRONG>tputs</STRONG>
431             fails if the string parameter is null.  It  does  not  detect  I/O
432             errors:  X/Open  Curses states that <STRONG>tputs</STRONG> ignores the return value
433             of the output function <EM>putc</EM>.
434
435
436 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
437        The <STRONG>vid_attr</STRONG> function in <EM>ncurses</EM> is a special case.  It was  originally
438        implemented based on a draft of X/Open Curses, as a macro, before other
439        parts of the <EM>ncurses</EM> wide-character API were developed, and unlike  the
440        other  wide-character  functions,  is  also  provided  in the non-wide-
441        character configuration.
442
443
444 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
445        The functions marked as extensions were designed for <EM>ncurses,</EM>  and  are
446        not  found  in SVr4 <EM>curses</EM>, 4.4BSD <EM>curses</EM>, or any other previous <EM>curses</EM>
447        implementation.
448
449        <EM>ncurses</EM> allows <EM>opts</EM> to be a pointer to <EM>int,</EM> which  overrides  the  <EM>pair</EM>
450        (<EM>short</EM>) argument.
451
452
453 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
454        <STRONG>setterm</STRONG> is not described by X/Open and must be considered non-portable.
455        All other functions are as described by X/Open.
456
457
458 </PRE><H3><a name="h3-Compatibility-Macros">Compatibility Macros</a></H3><PRE>
459        This implementation  provides  a  few  macros  for  compatibility  with
460        systems  before  SVr4  (see  section  "HISTORY"  below).   They include
461        <STRONG>Bcrmode</STRONG>, <STRONG>Bfixterm</STRONG>, <STRONG>Bgettmode</STRONG>,  <STRONG>Bnocrmode</STRONG>,  <STRONG>Bresetterm</STRONG>,  <STRONG>Bsaveterm</STRONG>,  and
462        <STRONG>Bsetterm</STRONG>.
463
464        In  SVr4,  these  are  found  in  <EM>curses.h</EM>, but except for <STRONG>setterm</STRONG>, are
465        likewise macros.  The one function, <STRONG>setterm</STRONG>, is mentioned in the manual
466        page.  It further notes that <STRONG>setterm</STRONG> was replaced by <STRONG>setupterm</STRONG>, stating
467        that the call
468               setupterm(<EM>term</EM>, 1, (int *)0)
469        provides the same  functionality  as  <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>,  discouraging  the
470        latter  for  new programs.  <EM>ncurses</EM> implements each of these symbols as
471        macros for BSD <EM>curses</EM> compatibility.
472
473
474 </PRE><H3><a name="h3-Legacy-Data">Legacy Data</a></H3><PRE>
475        <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>.  This  is  not
476        part of X/Open Curses, but is assumed by some applications.
477
478        Other  implementions  may not declare the capability name arrays.  Some
479        provide them without declaring them.  X/Open does not specify them.
480
481        Extended terminal capability names, as defined by  "<STRONG>tic</STRONG>  <STRONG>-x</STRONG>",  are  not
482        stored in the arrays described here.
483
484
485 </PRE><H3><a name="h3-Output-Buffering">Output Buffering</a></H3><PRE>
486        Older  versions  of  <EM>ncurses</EM> assumed that the file descriptor passed to
487        <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered I/O, and would write to
488        the  corresponding  stream.   In  addition  to  the limitation that the
489        terminal was  left  in  block-buffered  mode  on  exit  (like  System V
490        <EM>curses</EM>),  it  was  problematic because <EM>ncurses</EM> did not allow a reliable
491        way to cleanup on receiving <STRONG>SIGTSTP</STRONG>.
492
493        The current version (ncurses6) uses output buffers managed directly  by
494        <EM>ncurses.</EM>  Some of the low-level functions described in this manual page
495        write to the standard output.  They are  not  signal-safe.   The  high-
496        level functions in <EM>ncurses</EM> employ alternate versions of these functions
497        using the more reliable buffering scheme.
498
499
500 </PRE><H3><a name="h3-Function-Prototypes">Function Prototypes</a></H3><PRE>
501        The X/Open Curses prototypes  are  based  on  the  SVr4  <EM>curses</EM>  header
502        declarations,  which  were  defined at the same time the C language was
503        first standardized in the late 1980s.
504
505        <STRONG>o</STRONG>   X/Open Curses uses <EM>const</EM>  less  effectively  than  a  later  design
506            might,  in  some cases applying it needlessly to values are already
507            constant, and in most cases overlooking parameters  which  normally
508            would  use <EM>const.</EM>  Using constant parameters for functions which do
509            not use <EM>const</EM> may prevent the program from compiling.  On the other
510            hand, "writable strings" are an obsolescent feature.
511
512            As  an  extension,  this implementation can be configured to change
513            the function prototypes to use the <EM>const</EM> keyword.  The <EM>ncurses</EM>  ABI
514            6 enables this feature by default.
515
516        <STRONG>o</STRONG>   X/Open  Curses  prototypes <STRONG>tparm</STRONG> with a fixed number of parameters,
517            rather than a variable argument list.
518
519            This implementation uses a  variable  argument  list,  but  can  be
520            configured  to use the fixed-parameter list.  Portable applications
521            should provide nine parameters after the format;  zeroes  are  fine
522            for this purpose.
523
524            In  response  to review comments by Thomas E. Dickey, X/Open Curses
525            Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
526
527            While <STRONG>tiparm</STRONG> is always provided in <EM>ncurses</EM>, the older form is  only
528            available  as  a build-time configuration option.  If not specially
529            configured, <STRONG>tparm</STRONG> is the same as <STRONG>tiparm</STRONG>.
530
531        Both forms of <STRONG>tparm</STRONG> have drawbacks:
532
533        <STRONG>o</STRONG>   Most of the calls to <STRONG>tparm</STRONG> use only one or two parameters.  Passing
534            nine on each call is awkward.
535
536            Using  <EM>long</EM>  for the numeric parameter type is a workaround to make
537            the parameter use the same amount of  stack  as  a  pointer.   That
538            approach  dates  back  to the mid-1980s, before C was standardized.
539            Since then, there is a standard (and pointers are not  required  to
540            fit in a <EM>long</EM>).
541
542        <STRONG>o</STRONG>   Providing  the  right  number of parameters for a variadic function
543            such  as  <STRONG>tiparm</STRONG>  can  be  a  problem,  in  particular  for  string
544            parameters.   However,  only a few <EM>terminfo</EM> capabilities use string
545            parameters (for instance, the ones used for  programmable  function
546            keys).
547
548            The <EM>ncurses</EM> library checks usage of these capabilities, and returns
549            an error if the capability mishandles string  parameters.   But  it
550            cannot  check  if  a  calling program provides strings in the right
551            places for the <STRONG>tparm</STRONG> calls.
552
553            The <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> program checks its use of  these  capabilities  with  a
554            table, so that it calls <STRONG>tparm</STRONG> correctly.
555
556    <STRONG>Special</STRONG> <EM>TERM</EM> <STRONG>treatment</STRONG>
557        If configured to use the terminal driver, as with the MinGW port,
558
559        <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  interprets  a missing/empty <EM>TERM</EM> variable as the special
560            value "unknown".
561
562            SVr4 <EM>curses</EM> uses the special value "dumb".
563
564            The difference  between  the  two  is  that  the  former  uses  the
565            <STRONG>generic_type</STRONG>  (<STRONG>gn</STRONG>)  <EM>terminfo</EM> capability, while the latter does not.
566            A generic terminal is unsuitable for full-screen applications.
567
568        <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> allows explicit use of the the windows console driver  by
569            checking  if <STRONG>$TERM</STRONG> is set to "#win32con" or an abbreviation of that
570            string.
571
572
573 </PRE><H3><a name="h3-Other-Portability-Issues">Other Portability Issues</a></H3><PRE>
574        In SVr4, <STRONG>set_curterm</STRONG> returns an <EM>int,</EM> <STRONG>OK</STRONG> or  <STRONG>ERR</STRONG>.   We  have  chosen  to
575        implement the X/Open Curses semantics.
576
577        In SVr4, the third argument of <STRONG>tputs</STRONG> has the type "<STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>".
578
579        At  least one implementation of X/Open Curses (Solaris) returns a value
580        other than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>.  It instead returns the length of  the
581        string, and does no error checking.
582
583        X/Open  Curses notes that after calling <STRONG>mvcur</STRONG>, the <EM>curses</EM> state may not
584        match the actual terminal state, and that an application  should  touch
585        and  refresh  the  window  before  resuming  normal <EM>curses</EM> calls.  Both
586        <EM>ncurses</EM> and SVr4 <EM>curses</EM> implement <STRONG>mvcur</STRONG> using the <EM>SCREEN</EM> data allocated
587        in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is documented as a <EM>terminfo</EM>
588        function, <STRONG>mvcur</STRONG> is really a <EM>curses</EM> function that is not well specified.
589
590        X/Open notes that after calling <STRONG>mvcur</STRONG>, the <EM>curses</EM> state may  not  match
591        the  actual  terminal  state,  and that an application should touch and
592        refresh the window before resuming normal <EM>curses</EM> calls.   Both  <EM>ncurses</EM>
593        and  SVr4  <EM>curses</EM>  implement  <STRONG>mvcur</STRONG>  using the <EM>SCREEN</EM> data allocated in
594        either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is documented  as  a  <EM>terminfo</EM>
595        function, <STRONG>mvcur</STRONG> is really a <EM>curses</EM> function that is not well specified.
596
597        X/Open  Curses  states that the old location must be given for <STRONG>mvcur</STRONG> to
598        accommodate terminals that lack absolute cursor  positioning.   <EM>ncurses</EM>
599        allows the caller to use -1 for either or both old coordinates.  The -1
600        tells <EM>ncurses</EM> that the old location is unknown, and that  it  must  use
601        only  absolute  motion,  as  with  the <STRONG>cursor_address</STRONG> (<STRONG>cup</STRONG>) capability,
602        rather than the least  costly  combination  of  absolute  and  relative
603        motion.
604
605
606 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
607        SVr2  (1984)  introduced  the <EM>terminfo</EM> feature.  Its programming manual
608        mentioned the following low-level functions.
609
610        <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
611        ------------------------------------------------------------------------
612
613        <STRONG>fixterm</STRONG>     restore terminal to "in <EM>curses</EM>" state
614        <STRONG>gettmode</STRONG>    establish current terminal modes
615        <STRONG>mvcur</STRONG>       low level cursor motion
616        <STRONG>putp</STRONG>        use <STRONG>tputs</STRONG> to send characters via <EM>putchar</EM>
617        <STRONG>resetterm</STRONG>   set terminal modes to "out of <EM>curses</EM>" state
618        <STRONG>resetty</STRONG>     reset terminal flags to stored value
619        <STRONG>saveterm</STRONG>    save current modes as "in <EM>curses</EM>" state
620        <STRONG>savetty</STRONG>     store current terminal flags
621        <STRONG>setterm</STRONG>     establish terminal with given type
622        <STRONG>setupterm</STRONG>   establish terminal with given type
623        <STRONG>tparm</STRONG>       interpolate parameters into string capability
624        <STRONG>tputs</STRONG>       apply padding information to a string
625        <STRONG>vidattr</STRONG>     like <STRONG>vidputs</STRONG>, but output through <EM>putchar</EM>
626        <STRONG>vidputs</STRONG>     write string to terminal, applying specified attributes
627
628        The programming manual also mentioned functions  provided  for  <EM>termcap</EM>
629        compatibility (commenting that they "may go away at a later date").
630
631        <STRONG>Function</STRONG>   <STRONG>Description</STRONG>
632        ------------------------------------------------------------------------
633        <STRONG>tgetent</STRONG>    look up <EM>termcap</EM> entry for given <EM>name</EM>
634        <STRONG>tgetflag</STRONG>   get Boolean entry for given <EM>id</EM>
635        <STRONG>tgetnum</STRONG>    get numeric entry for given <EM>id</EM>
636        <STRONG>tgetstr</STRONG>    get string entry for given <EM>id</EM>
637        <STRONG>tgoto</STRONG>      apply parameters to given capability
638        <STRONG>tputs</STRONG>      write characters via a function parameter, applying padding
639
640        Early  <EM>terminfo</EM>  programs  obtained capability values from the <EM>TERMINAL</EM>
641        structure initialized by <STRONG>setupterm</STRONG>.
642
643        SVr3  (1987)  extended  <EM>terminfo</EM>  by  adding  functions   to   retrieve
644        capability  values  (like the <EM>termcap</EM> interface), and reusing <STRONG>tgoto</STRONG> and
645        <STRONG>tputs</STRONG>.
646
647        <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
648        ------------------------------------------------------------------------
649        <STRONG>tigetflag</STRONG>   get Boolean entry for given <EM>id</EM>
650        <STRONG>tigetnum</STRONG>    get numeric entry for given <EM>id</EM>
651        <STRONG>tigetstr</STRONG>    get string entry for given <EM>id</EM>
652
653        SVr3 also replaced several of the SVr2 <EM>terminfo</EM> functions that  had  no
654        counterpart in the <EM>termcap</EM> interface, documenting them as obsolete.
655
656        <STRONG>Function</STRONG>    <STRONG>Replaced</STRONG> <STRONG>by</STRONG>
657        ------------------------------------------------------------------------
658        crmode      cbreak
659        fixterm     reset_prog_mode
660        gettmode    <EM>n/a</EM>
661        nocrmode    nocbreak
662        resetterm   reset_shell_mode
663        saveterm    def_prog_mode
664        setterm     setupterm
665
666        SVr3  kept  the <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG>, and <STRONG>vidputs</STRONG> functions, along with <STRONG>putp</STRONG>,
667        <STRONG>tparm</STRONG>, and <STRONG>tputs</STRONG>.  The latter were needed to support  padding,  and  to
668        handle  capabilities  accessed by functions such as <STRONG>vidattr</STRONG> (which used
669        more than the two parameters supported by <STRONG>tgoto</STRONG>).
670
671        SVr3  introduced  the  functions   for   switching   between   terminal
672        descriptions;   for   example,  <STRONG>set_curterm</STRONG>.   Some  changes  reflected
673        incremental improvements to the SVr2 library.
674
675        <STRONG>o</STRONG>   The <EM>TERMINAL</EM> type definition was introduced  in  SVr3.01,  for  the
676            <EM>term</EM> structure provided in SVr2.
677
678        <STRONG>o</STRONG>   Various  global  variables  such as <STRONG>boolnames</STRONG> were mentioned in the
679            programming manual at this point, though  the  variables  had  been
680            provided in SVr2.
681
682        SVr4 (1989) added the <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> functions.
683
684        Other  low-level  functions  are declared in the <EM>curses</EM> header files of
685        Unix systems, but none are documented.  Those noted  as  "obsolete"  by
686        SVr3 remained in use by System V's <STRONG>vi(1)</STRONG> editor.
687
688
689 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
690        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,   <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,   <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>,
691        <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,  <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,   <STRONG>putc(3)</STRONG>,   <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>,
692        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
693
694
695
696 ncurses 6.4                       2024-01-13                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
697 </PRE>
698 <div class="nav">
699 <ul>
700 <li><a href="#h2-NAME">NAME</a></li>
701 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
702 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
703 <ul>
704 <li><a href="#h3-Initialization">Initialization</a></li>
705 <li><a href="#h3-The-Terminal-State">The Terminal State</a></li>
706 <li><a href="#h3-Formatting-Output">Formatting Output</a></li>
707 <li><a href="#h3-Output-Functions">Output Functions</a></li>
708 <li><a href="#h3-Terminal-Capability-Functions">Terminal Capability Functions</a></li>
709 <li><a href="#h3-Terminal-Capability-Names">Terminal Capability Names</a></li>
710 <li><a href="#h3-Releasing-Memory">Releasing Memory</a></li>
711 </ul>
712 </li>
713 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
714 <li><a href="#h2-NOTES">NOTES</a></li>
715 <li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
716 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
717 <ul>
718 <li><a href="#h3-Compatibility-Macros">Compatibility Macros</a></li>
719 <li><a href="#h3-Legacy-Data">Legacy Data</a></li>
720 <li><a href="#h3-Output-Buffering">Output Buffering</a></li>
721 <li><a href="#h3-Function-Prototypes">Function Prototypes</a></li>
722 <li><a href="#h3-Other-Portability-Issues">Other Portability Issues</a></li>
723 </ul>
724 </li>
725 <li><a href="#h2-HISTORY">HISTORY</a></li>
726 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
727 </ul>
728 </div>
729 </BODY>
730 </HTML>