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