ncurses 6.0 - patch 20170114
[ncurses.git] / doc / html / man / curs_terminfo.3x.html
1 <!-- 
2   ****************************************************************************
3   * Copyright (c) 1999-2013,2016 Free Software Foundation, Inc.              *
4   *                                                                          *
5   * Permission is hereby granted, free of charge, to any person obtaining a  *
6   * copy of this software and associated documentation files (the            *
7   * "Software"), to deal in the Software without restriction, including      *
8   * without limitation the rights to use, copy, modify, merge, publish,      *
9   * distribute, distribute with modifications, sublicense, and/or sell       *
10   * copies of the Software, and to permit persons to whom the Software is    *
11   * furnished to do so, subject to the following conditions:                 *
12   *                                                                          *
13   * The above copyright notice and this permission notice shall be included  *
14   * in all copies or substantial portions of the Software.                   *
15   *                                                                          *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23   *                                                                          *
24   * Except as contained in this notice, the name(s) of the above copyright   *
25   * holders shall not be used in advertising or otherwise to promote the     *
26   * sale, use or other dealings in this Software without prior written       *
27   * authorization.                                                           *
28   ****************************************************************************
29   * @Id: curs_terminfo.3x,v 1.46 2016/10/15 17:27:48 tom Exp @
30   * ***************************************************************************
31   * ***************************************************************************
32   * ***************************************************************************
33   * ***************************************************************************
34   * ***************************************************************************
35 -->
36 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
37 <HTML>
38 <HEAD>
39 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
40 <meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
41 <TITLE>curs_terminfo 3x</TITLE>
42 <link rev=made href="mailto:bug-ncurses@gnu.org">
43 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
44 </HEAD>
45 <BODY>
46 <H1 class="no-header">curs_terminfo 3x</H1>
47 <PRE>
48 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>                                     <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
49
50
51
52
53 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
54        <STRONG>del_curterm</STRONG>, <STRONG>mvcur</STRONG>, <STRONG>putp</STRONG>, <STRONG>restartterm</STRONG>, <STRONG>set_curterm</STRONG>,
55        <STRONG>setterm</STRONG>, <STRONG>setupterm</STRONG>, <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG>, <STRONG>tiparm</STRONG>,
56        <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>vid_attr</STRONG>, <STRONG>vid_puts</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>vidputs</STRONG> -
57        <STRONG>curses</STRONG> interfaces to terminfo database
58
59
60 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
61        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
62        <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
63
64        <STRONG>int</STRONG> <STRONG>setupterm(char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fildes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
65        <STRONG>int</STRONG> <STRONG>setterm(char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>);</STRONG>
66        <STRONG>TERMINAL</STRONG> <STRONG>*set_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>nterm</EM><STRONG>);</STRONG>
67        <STRONG>int</STRONG> <STRONG>del_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>oterm</EM><STRONG>);</STRONG>
68        <STRONG>int</STRONG> <STRONG>restartterm(char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fildes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
69        <STRONG>char</STRONG> <STRONG>*tparm(char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
70        <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>
71        <STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
72        <STRONG>int</STRONG> <STRONG>vidputs(chtype</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
73        <STRONG>int</STRONG> <STRONG>vidattr(chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
74        <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>
75        <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>
76        <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>, int <EM>newcol</EM><STRONG>);</STRONG>
77        <STRONG>int</STRONG> <STRONG>tigetflag(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
78        <STRONG>int</STRONG> <STRONG>tigetnum(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
79        <STRONG>char</STRONG> <STRONG>*tigetstr(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
80        <STRONG>char</STRONG> <STRONG>*tiparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
81
82
83 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
84        These low-level routines must be called by  programs  that
85        have to deal directly with the <STRONG>terminfo</STRONG> database to handle
86        certain terminal capabilities, such as  programming  func-
87        tion  keys.   For all other functionality, <STRONG>curses</STRONG> routines
88        are more suitable and their use is recommended.
89
90
91 </PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
92        Initially, <STRONG>setupterm</STRONG> should  be  called.   Note  that  <STRONG>se-</STRONG>
93        <STRONG>tupterm</STRONG>  is  automatically  called by <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG>.
94        This  defines  the  set  of  terminal-dependent  variables
95        [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].
96
97        Each initialization routine provides applications with the
98        terminal capabilities either directly (via header  defini-
99        tions),  or  by special functions.  The header files <STRONG>curs-</STRONG>
100        <STRONG>es.h</STRONG> and <STRONG>term.h</STRONG> should be included (in this order) to  get
101        the definitions for these strings, numbers, and flags.
102
103        The  <STRONG>terminfo</STRONG>  variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized
104        by <STRONG>setupterm</STRONG> as follows:
105
106        <STRONG>o</STRONG>   If <STRONG>use_env(FALSE)</STRONG> has been called,  values  for  <STRONG>lines</STRONG>
107            and <STRONG>columns</STRONG> specified in <STRONG>terminfo</STRONG> are used.
108
109        <STRONG>o</STRONG>   Otherwise, if the environment variables <STRONG>LINES</STRONG> and <STRONG>COL-</STRONG>
110            <STRONG>UMNS</STRONG> exist, their values are used.  If these  environ-
111            ment variables do not exist and the program is running
112            in a window, the current window size is used.   Other-
113            wise,  if  the environment variables do not exist, the
114            values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the <STRONG>terminfo</STRONG>
115            database are used.
116
117        Parameterized  strings  should  be passed through <STRONG>tparm</STRONG> to
118        instantiate them.  All  <STRONG>terminfo</STRONG>  strings  [including  the
119        output  of  <STRONG>tparm</STRONG>]  should  be printed with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.
120        Call <STRONG>reset_shell_mode</STRONG> to restore the tty modes before  ex-
121        iting [see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>].
122
123        Programs which use cursor addressing should
124
125        <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> upon startup and
126
127        <STRONG>o</STRONG>   output <STRONG>exit_ca_mode</STRONG> before exiting.
128
129        Programs which execute shell subprocesses should
130
131        <STRONG>o</STRONG>   call  <STRONG>reset_shell_mode</STRONG>  and output <STRONG>exit_ca_mode</STRONG> before
132            the shell is called and
133
134        <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> and  call  <STRONG>reset_prog_mode</STRONG>  after
135            returning from the shell.
136
137        The <STRONG>setupterm</STRONG> routine reads in the <STRONG>terminfo</STRONG> database, ini-
138        tializing the <STRONG>terminfo</STRONG> structures, but does not set up the
139        output virtualization structures used by <STRONG>curses</STRONG>.  The ter-
140        minal type is the character string <EM>term</EM>; if <EM>term</EM> is  null,
141        the  environment  variable <STRONG>TERM</STRONG> is used.  All output is to
142        file descriptor <STRONG>fildes</STRONG> which is  initialized  for  output.
143        If  <EM>errret</EM>  is  not null, then <STRONG>setupterm</STRONG> returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>
144        and stores a status value in the integer pointed to by <EM>er-</EM>
145        <EM>rret</EM>.   A  return value of <STRONG>OK</STRONG> combined with status of <STRONG>1</STRONG> in
146        <EM>errret</EM> is normal.  If <STRONG>ERR</STRONG> is returned, examine <EM>errret</EM>:
147
148        <STRONG>1</STRONG>    means that the terminal is hardcopy, cannot  be  used
149             for curses applications.
150
151             <STRONG>setupterm</STRONG>  determines if the entry is a hardcopy type
152             by checking the <STRONG>hc</STRONG> (<STRONG>hardcopy</STRONG>) capability.
153
154        <STRONG>0</STRONG>    means that the terminal could not be found,  or  that
155             it  is  a generic type, having too little information
156             for curses applications to run.
157
158             <STRONG>setupterm</STRONG> determines if the entry is a  generic  type
159             by checking the <STRONG>gn</STRONG> (<STRONG>generic</STRONG>) capability.
160
161        <STRONG>-1</STRONG>   means that the <STRONG>terminfo</STRONG> database could not be found.
162
163        If  <EM>errret</EM> is null, <STRONG>setupterm</STRONG> prints an error message upon
164        finding an error and exits.  Thus, the simplest call is:
165
166              <STRONG>setupterm((char</STRONG> <STRONG>*)0,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0);</STRONG>,
167
168        which uses all the defaults and sends the output  to  <STRONG>std-</STRONG>
169        <STRONG>out</STRONG>.
170
171        The <STRONG>setterm</STRONG> routine was replaced by <STRONG>setupterm</STRONG>.  The call:
172
173              <STRONG>setupterm(</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0)</STRONG>
174
175        provides  the  same  functionality  as <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>.  The
176        <STRONG>setterm</STRONG> routine is provided for BSD compatibility, and  is
177        not recommended for new programs.
178
179
180 </PRE><H3><a name="h3-The-Terminal-State">The Terminal State</a></H3><PRE>
181        The  <STRONG>setupterm</STRONG>  routine  stores  its information about the
182        terminal in a <STRONG>TERMINAL</STRONG> structure pointed to by the  global
183        variable  <STRONG>cur_term</STRONG>.   If  it  detects an error, or decides
184        that the terminal is unsuitable (hardcopy or generic),  it
185        discards  this information, making it not available to ap-
186        plications.
187
188        If <STRONG>setupterm</STRONG> is called repeatedly for  the  same  terminal
189        type,  it  will  reuse the information.  It maintains only
190        one copy of a given terminal's capabilities in memory.  If
191        it is called for different terminal types, <STRONG>setupterm</STRONG> allo-
192        cates new storage for each set of terminal capabilities.
193
194        The <STRONG>set_curterm</STRONG> routine sets <STRONG>cur_term</STRONG> to <EM>nterm</EM>, and  makes
195        all of the <STRONG>terminfo</STRONG> boolean, numeric, and string variables
196        use the values from <EM>nterm</EM>.  It returns the  old  value  of
197        <STRONG>cur_term</STRONG>.
198
199        The  <STRONG>del_curterm</STRONG>  routine  frees  the  space pointed to by
200        <EM>oterm</EM> and makes it available for further use.  If <EM>oterm</EM> is
201        the  same  as  <STRONG>cur_term</STRONG>, references to any of the <STRONG>terminfo</STRONG>
202        boolean, numeric, and string variables thereafter may  re-
203        fer  to  invalid  memory locations until another <STRONG>setupterm</STRONG>
204        has been called.
205
206        The  <STRONG>restartterm</STRONG>  routine  is  similar  to  <STRONG>setupterm</STRONG>  and
207        <STRONG>initscr</STRONG>,  except  that it is called after restoring memory
208        to a previous state (for example, when  reloading  a  game
209        saved as a core image dump).  <STRONG>restartterm</STRONG> assumes that the
210        windows and the input and output options are the  same  as
211        when memory was saved, but the terminal type and baud rate
212        may be different.  Accordingly, <STRONG>restartterm</STRONG> saves  various
213        tty  state  bits,  calls  <STRONG>setupterm</STRONG>, and then restores the
214        bits.
215
216
217 </PRE><H3><a name="h3-Formatting-Output">Formatting Output</a></H3><PRE>
218        The <STRONG>tparm</STRONG> routine instantiates the string <EM>str</EM> with parame-
219        ters  <EM>pi</EM>.  A pointer is returned to the result of <EM>str</EM> with
220        the parameters applied.
221
222        <STRONG>tiparm</STRONG> is a newer form  of  <STRONG>tparm</STRONG>  which  uses  <EM>&lt;stdarg.h&gt;</EM>
223        rather  than  a fixed-parameter list.  Its numeric parame-
224        ters are integers (int) rather than longs.
225
226
227 </PRE><H3><a name="h3-Output-Functions">Output Functions</a></H3><PRE>
228        The <STRONG>tputs</STRONG>  routine  applies  padding  information  to  the
229        string <EM>str</EM> and outputs it:
230
231        <STRONG>o</STRONG>   The  <EM>str</EM> must be a terminfo string variable or the re-
232            turn value from <STRONG>tparm</STRONG>, <STRONG>tgetstr</STRONG>, or <STRONG>tgoto</STRONG>.
233
234        <STRONG>o</STRONG>   <EM>affcnt</EM> is the number of lines affected, or  1  if  not
235            applicable.
236
237        <STRONG>o</STRONG>   <EM>putc</EM> is a <STRONG>putchar</STRONG>-like routine to which the characters
238            are passed, one at a time.
239
240        The <STRONG>putp</STRONG> routine calls <STRONG>tputs(</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>putchar)</STRONG>.  Note  that
241        the  output  of  <STRONG>putp</STRONG>  always  goes  to <STRONG>stdout</STRONG>, not to the
242        <EM>fildes</EM> specified in <STRONG>setupterm</STRONG>.
243
244        The <STRONG>vidputs</STRONG> routine displays the string on the terminal in
245        the  video  attribute mode <EM>attrs</EM>, which is any combination
246        of the attributes listed in  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.   The  characters
247        are passed to the <STRONG>putchar</STRONG>-like routine <EM>putc</EM>.
248
249        The  <STRONG>vidattr</STRONG>  routine  is like the <STRONG>vidputs</STRONG> routine, except
250        that it outputs through <STRONG>putchar</STRONG>.
251
252        The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines correspond  to  vidattr
253        and  vidputs,  respectively.   They use a set of arguments
254        for representing the video attributes  plus  color,  i.e.,
255        one of type attr_t for the attributes and one of short for
256        the color_pair number.  The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines
257        are  designed  to use the attribute constants with the <EM>WA</EM><STRONG>_</STRONG>
258        prefix.  The opts argument is  reserved  for  future  use.
259        Currently,  applications  must  provide a null pointer for
260        that argument.
261
262        The <STRONG>mvcur</STRONG> routine provides low-level  cursor  motion.   It
263        takes  effect  immediately  (rather  than  at the next re-
264        fresh).
265
266
267 </PRE><H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE>
268        The <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG> and <STRONG>tigetstr</STRONG> routines  return  the
269        value of the capability corresponding to the <STRONG>terminfo</STRONG> <EM>cap-</EM>
270        <EM>name</EM> passed to them, such as <STRONG>xenl</STRONG>.  The <EM>capname</EM>  for  each
271        capability  is  given in the table column entitled <EM>capname</EM>
272        code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
273
274        These routines return special values to denote errors.
275
276        The <STRONG>tigetflag</STRONG> routine returns
277
278        <STRONG>-1</STRONG>     if <EM>capname</EM> is not a boolean capability, or
279
280        <STRONG>0</STRONG>      if it is canceled or absent from the  terminal  de-
281               scription.
282
283        The <STRONG>tigetnum</STRONG> routine returns
284
285        <STRONG>-2</STRONG>     if <EM>capname</EM> is not a numeric capability, or
286
287        <STRONG>-1</STRONG>     if  it  is canceled or absent from the terminal de-
288               scription.
289
290        The <STRONG>tigetstr</STRONG> routine returns
291
292        <STRONG>(char</STRONG> <STRONG>*)-1</STRONG>
293               if <EM>capname</EM> is not a string capability, or
294
295        <STRONG>0</STRONG>      if it is canceled or absent from the  terminal  de-
296               scription.
297
298
299 </PRE><H3><a name="h3-Terminal-Capability-Names">Terminal Capability Names</a></H3><PRE>
300        These  null-terminated  arrays  contain the short terminfo
301        names ("codes"), the <STRONG>termcap</STRONG> names, and the long  terminfo
302        names ("fnames") for each of the predefined <STRONG>terminfo</STRONG> vari-
303        ables:
304               <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG>
305
306               <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG>
307
308               <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG>
309
310
311 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
312        Routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure
313        and  <STRONG>OK</STRONG>  (SVr4 only specifies "an integer value other than
314        <STRONG>ERR</STRONG>") upon successful completion, unless  otherwise  noted
315        in the preceding routine descriptions.
316
317        Routines that return pointers always return <STRONG>NULL</STRONG> on error.
318
319        X/Open  defines  no error conditions.  In this implementa-
320        tion
321
322             <STRONG>del_curterm</STRONG>
323                  returns an error if its  terminal  parameter  is
324                  null.
325
326             <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes.
327
328             <STRONG>restartterm</STRONG>
329                  returns  an  error if the associated call to <STRONG>se-</STRONG>
330                  <STRONG>tupterm</STRONG> returns an error.
331
332             <STRONG>setupterm</STRONG>
333                  returns an error if it  cannot  allocate  enough
334                  memory,  or  create the initial windows (stdscr,
335                  curscr, newscr).   Other  error  conditions  are
336                  documented above.
337
338             <STRONG>tputs</STRONG>
339                  returns  an  error  if  the  string parameter is
340                  null.  It does not  detect  I/O  errors:  X/Open
341                  states  that  <STRONG>tputs</STRONG>  ignores the return value of
342                  the output function <EM>putc</EM>.
343
344
345 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
346        X/Open notes that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
347
348        The function <STRONG>setterm</STRONG> is not described by X/Open  and  must
349        be  considered  non-portable.   All other functions are as
350        described by X/Open.
351
352        <STRONG>setupterm</STRONG> copies the terminal name to the  array  <STRONG>ttytype</STRONG>.
353        This  is not part of X/Open Curses, but is assumed by some
354        applications.
355
356        If configured to use the terminal-driver,  e.g.,  for  the
357        MinGW port,
358
359        <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  interprets a missing/empty TERM variable as
360            the special value "unknown".
361
362        <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> allows explicit use of the the windows  con-
363            sole driver by checking if $TERM is set to "#win32con"
364            or an abbreviation of that string.
365
366        Older versions of <STRONG>ncurses</STRONG> assumed that the file descriptor
367        passed  to <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered
368        I/O, and would write to the corresponding stream.  In  ad-
369        dition  to  the  limitation  that the terminal was left in
370        block-buffered mode on exit (like System V curses), it was
371        problematic  because  <STRONG>ncurses</STRONG> did not allow a reliable way
372        to cleanup on receiving SIGTSTP.  The current version uses
373        output  buffers  managed directly by <STRONG>ncurses</STRONG>.  Some of the
374        low-level functions described in this manual page write to
375        the standard output.  They are not signal-safe.  The high-
376        level functions in <STRONG>ncurses</STRONG> use alternate versions of these
377        functions using the more reliable buffering scheme.
378
379        In  System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return type
380        and returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.  We have chosen  to  implement  the
381        X/Open Curses semantics.
382
383        In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the
384        type <STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>.
385
386        At least one implementation of X/Open Curses (Solaris) re-
387        turns  a value other than OK/ERR from <STRONG>tputs</STRONG>.  That returns
388        the length of the string, and does no error-checking.
389
390        X/Open Curses prototypes <STRONG>tparm</STRONG> with a fixed number of  pa-
391        rameters,  rather than a variable argument list.  This im-
392        plementation uses a variable argument  list,  but  can  be
393        configured  to use the fixed-parameter list.  Portable ap-
394        plications should provide 9 parameters after  the  format;
395        zeroes are fine for this purpose.
396
397        In response to comments by Thomas E. Dickey, X/Open Curses
398        Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
399
400        X/Open notes that after calling <STRONG>mvcur</STRONG>,  the  curses  state
401        may  not  match the actual terminal state, and that an ap-
402        plication should touch and refresh the window  before  re-
403        suming normal curses calls.  Both <STRONG>ncurses</STRONG> and System V Re-
404        lease 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN data allo-
405        cated in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is docu-
406        mented as a terminfo function, <STRONG>mvcur</STRONG> is  really  a  curses
407        function which is not well specified.
408
409        X/Open  states  that  the  old  location must be given for
410        <STRONG>mvcur</STRONG>.  This implementation allows the caller to use  -1's
411        for  the old ordinates.  In that case, the old location is
412        unknown.
413
414        Other implementions may not declare  the  capability  name
415        arrays.  Some provide them without declaring them.  X/Open
416        does not specify them.
417
418        Extended terminal capability names, e.g.,  as  defined  by
419        <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not stored in the arrays described here.
420
421
422 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
423        <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>curs_term-</STRONG>
424        <STRONG><A HREF="curs_termcap.3x.html">cap(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>,  <STRONG>putc(3)</STRONG>,
425        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
426
427
428
429                                                       <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
430 </PRE>
431 <div class="nav">
432 <ul>
433 <li><a href="#h2-NAME">NAME</a></li>
434 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
435 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
436 <ul>
437 <li><a href="#h3-Initialization">Initialization</a></li>
438 <li><a href="#h3-The-Terminal-State">The Terminal State</a></li>
439 <li><a href="#h3-Formatting-Output">Formatting Output</a></li>
440 <li><a href="#h3-Output-Functions">Output Functions</a></li>
441 <li><a href="#h3-Terminal-Capability-Functions">Terminal Capability Functions</a></li>
442 <li><a href="#h3-Terminal-Capability-Names">Terminal Capability Names</a></li>
443 </ul>
444 </li>
445 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
446 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
447 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
448 </ul>
449 </div>
450 </BODY>
451 </HTML>