ncurses 6.0 - patch 20160130
[ncurses.git] / doc / html / man / curs_terminfo.3x.html
1 <!-- 
2   ****************************************************************************
3   * Copyright (c) 1999-2011,2013 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.43 2013/07/20 19:29:59 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 <EM>hc</EM> (<EM>hardcopy</EM>) 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 <EM>gn</EM> (<EM>generic</EM>) 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.  The <EM>str</EM> must be a terminfo
230        string variable or the return value from  <STRONG>tparm</STRONG>,  <STRONG>tgetstr</STRONG>,
231        or <STRONG>tgoto</STRONG>.  <EM>affcnt</EM> is the number of lines affected, or 1 if
232        not applicable.  <EM>putc</EM> is a <STRONG>putchar</STRONG>-like routine  to  which
233        the characters are passed, one at a time.
234
235        The  <STRONG>putp</STRONG> routine calls <STRONG>tputs(</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>putchar)</STRONG>.  Note that
236        the output of <STRONG>putp</STRONG> always  goes  to  <STRONG>stdout</STRONG>,  not  to  the
237        <EM>fildes</EM> specified in <STRONG>setupterm</STRONG>.
238
239        The <STRONG>vidputs</STRONG> routine displays the string on the terminal in
240        the video attribute mode <EM>attrs</EM>, which is  any  combination
241        of  the  attributes  listed in <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.  The characters
242        are passed to the <STRONG>putchar</STRONG>-like routine <EM>putc</EM>.
243
244        The <STRONG>vidattr</STRONG> routine is like the  <STRONG>vidputs</STRONG>  routine,  except
245        that it outputs through <STRONG>putchar</STRONG>.
246
247        The  <STRONG>vid_attr</STRONG>  and <STRONG>vid_puts</STRONG> routines correspond to vidattr
248        and vidputs, respectively.  They use a  set  of  arguments
249        for  representing  the  video attributes plus color, i.e.,
250        one of type attr_t for the attributes and one of short for
251        the color_pair number.  The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines
252        are designed to use the attribute constants with  the  <EM>WA</EM><STRONG>_</STRONG>
253        prefix.   The  opts  argument  is reserved for future use.
254        Currently, applications must provide a  null  pointer  for
255        that argument.
256
257        The  <STRONG>mvcur</STRONG>  routine  provides low-level cursor motion.  It
258        takes effect immediately (rather  than  at  the  next  re-
259        fresh).
260
261
262 </PRE><H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE>
263        The  <STRONG>tigetflag</STRONG>,  <STRONG>tigetnum</STRONG> and <STRONG>tigetstr</STRONG> routines return the
264        value of the capability corresponding to the <STRONG>terminfo</STRONG> <EM>cap-</EM>
265        <EM>name</EM>  passed  to them, such as <STRONG>xenl</STRONG>.  The <EM>capname</EM> for each
266        capability is given in the table column  entitled  <EM>capname</EM>
267        code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
268
269        These routines return special values to denote errors.
270
271        The <STRONG>tigetflag</STRONG> routine returns
272
273        <STRONG>-1</STRONG>     if <EM>capname</EM> is not a boolean capability, or
274
275        <STRONG>0</STRONG>      if  it  is canceled or absent from the terminal de-
276               scription.
277
278        The <STRONG>tigetnum</STRONG> routine returns
279
280        <STRONG>-2</STRONG>     if <EM>capname</EM> is not a numeric capability, or
281
282        <STRONG>-1</STRONG>     if it is canceled or absent from the  terminal  de-
283               scription.
284
285        The <STRONG>tigetstr</STRONG> routine returns
286
287        <STRONG>(char</STRONG> <STRONG>*)-1</STRONG>
288               if <EM>capname</EM> is not a string capability, or
289
290        <STRONG>0</STRONG>      if  it  is canceled or absent from the terminal de-
291               scription.
292
293
294 </PRE><H3><a name="h3-Terminal-Capability-Names">Terminal Capability Names</a></H3><PRE>
295        These null-terminated arrays contain  the  short  terminfo
296        names  ("codes"), the <STRONG>termcap</STRONG> names, and the long terminfo
297        names ("fnames") for each of the predefined <STRONG>terminfo</STRONG> vari-
298        ables:
299               <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG>
300
301               <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG>
302
303               <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG>
304
305
306 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
307        Routines  that  return  an integer return <STRONG>ERR</STRONG> upon failure
308        and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value  other  than
309        <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise noted
310        in the preceding routine descriptions.
311
312        Routines that return pointers always return <STRONG>NULL</STRONG> on error.
313
314        X/Open defines no error conditions.  In  this  implementa-
315        tion
316
317             <STRONG>del_curterm</STRONG>
318                  returns  an  error  if its terminal parameter is
319                  null.
320
321             <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes.
322
323             <STRONG>restartterm</STRONG>
324                  returns an error if the associated call  to  <STRONG>se-</STRONG>
325                  <STRONG>tupterm</STRONG> returns an error.
326
327             <STRONG>setupterm</STRONG>
328                  returns  an  error  if it cannot allocate enough
329                  memory, or create the initial  windows  (stdscr,
330                  curscr,  newscr).   Other  error  conditions are
331                  documented above.
332
333             <STRONG>tputs</STRONG>
334                  returns an error  if  the  string  parameter  is
335                  null.   It  does  not  detect I/O errors: X/Open
336                  states that <STRONG>tputs</STRONG> ignores the  return  value  of
337                  the output function <EM>putc</EM>.
338
339
340 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
341        X/Open notes that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
342
343        The  function  <STRONG>setterm</STRONG> is not described by X/Open and must
344        be considered non-portable.  All other  functions  are  as
345        described by X/Open.
346
347        <STRONG>setupterm</STRONG>  copies  the terminal name to the array <STRONG>ttytype</STRONG>.
348        This is not part of X/Open Curses, but is assumed by  some
349        applications.
350
351        If  configured  to  use the terminal-driver, e.g., for the
352        MinGW port,
353
354        <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> interprets a missing/empty TERM variable  as
355            the special value "unknown".
356
357        <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  allows explicit use of the the windows con-
358            sole driver by checking if $TERM is set to "#win32con"
359            or an abbreviation of that string.
360
361        Older versions of <STRONG>ncurses</STRONG> assumed that the file descriptor
362        passed to <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses  buffered
363        I/O,  and would write to the corresponding stream.  In ad-
364        dition to the limitation that the  terminal  was  left  in
365        block-buffered  mode on exit (like SystemV curses), it was
366        problematic because <STRONG>ncurses</STRONG> did not allow a  reliable  way
367        to cleanup on receiving SIGTSTP.  The current version uses
368        output buffers managed directly by <STRONG>ncurses</STRONG>.  Some  of  the
369        low-level functions described in this manual page write to
370        the standard output.  They are not signal-safe.  The high-
371        level functions in <STRONG>ncurses</STRONG> use alternate versions of these
372        functions using the more reliable buffering scheme.
373
374        In System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return  type
375        and  returns  <STRONG>OK</STRONG>  or <STRONG>ERR</STRONG>.  We have chosen to implement the
376        X/Open Curses semantics.
377
378        In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the
379        type <STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>.
380
381        At least one implementation of X/Open Curses (Solaris) re-
382        turns a value other than OK/ERR from <STRONG>tputs</STRONG>.  That  returns
383        the length of the string, and does no error-checking.
384
385        X/Open  Curses prototypes <STRONG>tparm</STRONG> with a fixed number of pa-
386        rameters, rather than a variable argument list.  This  im-
387        plementation  uses  a  variable  argument list, but can be
388        configured to use the fixed-parameter list.  Portable  ap-
389        plications  should  provide 9 parameters after the format;
390        zeroes are fine for this purpose.
391
392        In response to comments by Thomas E. Dickey, X/Open Curses
393        Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
394
395        X/Open  notes  that  after calling <STRONG>mvcur</STRONG>, the curses state
396        may not match the actual terminal state, and that  an  ap-
397        plication  should  touch and refresh the window before re-
398        suming normal curses calls.  Both <STRONG>ncurses</STRONG> and System V Re-
399        lease 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN data allo-
400        cated in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is docu-
401        mented  as  a  terminfo function, <STRONG>mvcur</STRONG> is really a curses
402        function which is not well specified.
403
404        X/Open states that the old  location  must  be  given  for
405        <STRONG>mvcur</STRONG>.   This implementation allows the caller to use -1's
406        for the old ordinates.  In that case, the old location  is
407        unknown.
408
409        Other  implementions  may  not declare the capability name
410        arrays.  Some provide them without declaring them.  X/Open
411        does not specify them.
412
413        Extended  terminal  capability  names, e.g., as defined by
414        <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not stored in the arrays described here.
415
416
417 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
418        <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>
419        <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>,
420        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
421
422
423
424                                                       <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
425 </PRE>
426 <div class="nav">
427 <ul>
428 <li><a href="#h2-NAME">NAME</a></li>
429 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
430 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
431 <ul>
432 <li><a href="#h3-Initialization">Initialization</a></li>
433 <li><a href="#h3-The-Terminal-State">The Terminal State</a></li>
434 <li><a href="#h3-Formatting-Output">Formatting Output</a></li>
435 <li><a href="#h3-Output-Functions">Output Functions</a></li>
436 <li><a href="#h3-Terminal-Capability-Functions">Terminal Capability Functions</a></li>
437 <li><a href="#h3-Terminal-Capability-Names">Terminal Capability Names</a></li>
438 </ul>
439 </li>
440 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
441 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
442 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
443 </ul>
444 </div>
445 </BODY>
446 </HTML>