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