summaryrefslogtreecommitdiff
path: root/doc/html/man/curs_termcap.3x.html
blob: 00e1e8125bd7313edbdfa869ee72762a45e712a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
<!--
  ****************************************************************************
  * Copyright 2018-2024,2025 Thomas E. Dickey                                *
  * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  * "Software"), to deal in the Software without restriction, including      *
  * without limitation the rights to use, copy, modify, merge, publish,      *
  * distribute, distribute with modifications, sublicense, and/or sell       *
  * copies of the Software, and to permit persons to whom the Software is    *
  * furnished to do so, subject to the following conditions:                 *
  *                                                                          *
  * The above copyright notice and this permission notice shall be included  *
  * in all copies or substantial portions of the Software.                   *
  *                                                                          *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
  *                                                                          *
  * Except as contained in this notice, the name(s) of the above copyright   *
  * holders shall not be used in advertising or otherwise to promote the     *
  * sale, use or other dealings in this Software without prior written       *
  * authorization.                                                           *
  ****************************************************************************
  * @Id: curs_termcap.3x,v 1.107 2025/08/16 19:09:12 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
<TITLE>curs_termcap 3x 2025-08-16 ncurses 6.6 Library calls</TITLE>
<link rel="author" href="mailto:bug-ncurses@gnu.org">

</HEAD>
<BODY>
<H1 class="no-header">curs_termcap 3x 2025-08-16 ncurses 6.6 Library calls</H1>
<PRE>
<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>


</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
       <STRONG>PC</STRONG>, <STRONG>UP</STRONG>, <STRONG>BC</STRONG>, <STRONG>ospeed</STRONG>, <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, <STRONG>tgetstr</STRONG>, <STRONG>tgoto</STRONG>, <STRONG>tputs</STRONG> -
       <EM>curses</EM> emulation of <EM>termcap</EM>


</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
       <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>

       <STRONG>char</STRONG> <STRONG>PC;</STRONG>
       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>UP;</STRONG>
       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>BC;</STRONG>
       <STRONG>short</STRONG> <STRONG>ospeed;</STRONG>

       <STRONG>int</STRONG> <STRONG>tgetent(char</STRONG> <STRONG>*</STRONG> <EM>bp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <EM>name</EM><STRONG>);</STRONG>
       <STRONG>int</STRONG> <STRONG>tgetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <EM>id</EM><STRONG>);</STRONG>
       <STRONG>int</STRONG> <STRONG>tgetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <EM>id</EM><STRONG>);</STRONG>
       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>tgetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <EM>id</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>**</STRONG> <EM>sbuf</EM><STRONG>);</STRONG>
       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>tgoto(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <EM>cap</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>col</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>row</EM><STRONG>);</STRONG>
       <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>


</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
       <EM>ncurses</EM>   provides   the   foregoing   variables  and  functions  as  a
       compatibility layer for programs that use the <EM>termcap</EM> library.  The API
       is the same, but behavior is  emulated  using  the  <EM>terminfo</EM>  database.
       Thus,  it  can  be  used  only  to  query  the capabilities of terminal
       database entries for which a <EM>terminfo</EM> entry has been compiled.


</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
       <STRONG>tgetent</STRONG> loads the terminal database entry for <EM>name</EM>; see <STRONG><A HREF="term.7.html">term(7)</A></STRONG>.   This
       must be done before calling any of the other functions.  It returns

          <STRONG>1</STRONG>    on success,

          <STRONG>0</STRONG>    if there is no such entry (or if the matching entry describes a
               generic  terminal,  having  too  little  information for <EM>curses</EM>
               applications to run), and

          <STRONG>-1</STRONG>   if the <EM>terminfo</EM> database could not be found.

       This implementation differs from those of historical <EM>termcap</EM> libraries.

       <STRONG>o</STRONG>   <EM>ncurses</EM>  ignores  the  buffer  pointer  <EM>bp</EM>,  as  do  other  <EM>termcap</EM>
           implementations   conforming  to  portions  of  X/Open  Curses  now
           withdrawn.  The BSD <EM>termcap</EM> library  would  store  a  copy  of  the
           terminal type description in the buffer referenced by this pointer.
           <EM>terminfo</EM>  stores terminal type descriptions in compiled form, which
           is not the same thing.

       <STRONG>o</STRONG>   The meanings of the return values differ.  The BSD <EM>termcap</EM>  library
           does  not  check whether the terminal type description includes the
           <STRONG>generic</STRONG> (<STRONG>gn</STRONG>) capability, nor whether the terminal type  description
           supports an addressable cursor, a property essential for any <EM>curses</EM>
           implementation to operate.


</PRE><H3><a name="h3-Retrieving-Capability-Values">Retrieving Capability Values</a></H3><PRE>
       <STRONG>tgetflag</STRONG>  reports  the  Boolean  entry  for  <EM>id</EM>,  or  zero if it is not
       available.

       <STRONG>tgetnum</STRONG> obtains the numeric entry for <EM>id</EM>, or -1 if it is not available.

       <STRONG>tgetstr</STRONG> returns the  string  entry  for  <EM>id</EM>,  or  <EM>NULL</EM>  if  it  is  not
       available.   Use  <STRONG>tputs</STRONG>  to  output  the  string  returned.   The  <EM>sbuf</EM>
       parameter is used as follows.

       <STRONG>o</STRONG>   It is assumed to be the address of a pointer to a buffer managed by
           the calling application.

       <STRONG>o</STRONG>   However, <EM>ncurses</EM> checks to ensure that <EM>sbuf</EM> is not <EM>NULL</EM>,  and  that
           the  pointer  obtained  by dereferencing <EM>sbuf</EM> is also not <EM>NULL</EM>.  If
           either check fails, <EM>ncurses</EM> ignores <EM>sbuf</EM>.

       <STRONG>o</STRONG>   If the checks succeed, <EM>ncurses</EM> also copies the return value to  the
           buffer  pointed  to  by <EM>sbuf</EM>, and the library updates <EM>sbuf</EM> to point
           past the null character terminating this value.

       <STRONG>o</STRONG>   The return  value  itself  is  an  address  in  the  terminal  type
           description loaded into memory.


</PRE><H3><a name="h3-Applying-String-Capabilities">Applying String Capabilities</a></H3><PRE>
       String capabilities can be parameterized; see subsection "Parameterized
       Strings" in  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  <STRONG>tgoto</STRONG> applies its second and third arguments
       to  the  parametric  placeholders in the capability stored in the first
       argument.

       <STRONG>o</STRONG>   The capability may contain padding specifications;  see  subsection
           "Delays  and  Padding"  of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  The output of <STRONG>tgoto</STRONG> should
           thus be passed to <STRONG>tputs</STRONG> rather than some other output function such
           as <STRONG>printf(3)</STRONG>.

       <STRONG>o</STRONG>   While <STRONG>tgoto</STRONG> is assumed to be  used  for  the  two-parameter  cursor
           positioning  capability,  <EM>termcap</EM>  applications  also  use  it  for
           single-parameter capabilities.

           Doing so reveals a quirk in  <STRONG>tgoto</STRONG>:  most  hardware  terminals  use
           cursor  addressing  with  <EM>row</EM> first, but the original developers of
           the <EM>termcap</EM> interface chose  to  put  the  <EM>col</EM>  (column)  parameter
           first.   The  <STRONG>tgoto</STRONG> function swaps the order of its parameters.  It
           does this even for calls requiring only  a  single  parameter.   In
           that case, the first parameter is merely a placeholder.

       <STRONG>o</STRONG>   Normally  the  <EM>ncurses</EM>  library  is  compiled  without full <EM>termcap</EM>
           support.  In that case, <STRONG>tgoto</STRONG> uses an internal version of <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>
           (a more capable function).

           Because it uses <STRONG>tparm</STRONG> internally, <STRONG>tgoto</STRONG> is able to use  some  <EM>term-</EM>
           <EM>info</EM>  features, but not all.  In particular, it allows only numeric
           parameters; <STRONG>tparm</STRONG> supports string parameters.

           However, <STRONG>tparm</STRONG> is not  a  <EM>termcap</EM>  feature,  and  portable  <EM>termcap</EM>
           applications should not rely upon its availability.

       <STRONG>tputs</STRONG>  is described in <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>.  It can retrieve capabilities
       by either <EM>termcap</EM> or <EM>terminfo</EM> code.


</PRE><H3><a name="h3-Global-Variables">Global Variables</a></H3><PRE>
       <STRONG>tgetent</STRONG> sets the variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG>, and <STRONG>BC</STRONG> to the <EM>terminfo</EM> entry's  data
       for  <STRONG>pad_char</STRONG>  (<STRONG>pad</STRONG>), <STRONG>cursor_up</STRONG> (<STRONG>cuu1</STRONG>), and <STRONG>backspace_if_not_bs</STRONG> (<STRONG>OTbs</STRONG>),
       respectively.    <EM>ncurses</EM>   does    not    employ    <STRONG>cuu1</STRONG>    internally.
       <STRONG><A HREF="curs_util.3x.html">delay_output(3x)</A></STRONG>  uses  <STRONG>pad</STRONG>,  while  <STRONG>tgoto</STRONG>  emulation uses the obsolete
       <EM>termcap</EM> capability <STRONG>bs</STRONG>,  represented  in  <EM>ncurses</EM>  <EM>terminfo</EM>  as  "OTbs".
       <EM>ncurses</EM>  assigns  the variable <STRONG>ospeed</STRONG> a system-specific value to encode
       the terminal's data rate.


</PRE><H3><a name="h3-Releasing-Memory">Releasing Memory</a></H3><PRE>
       The <EM>termcap</EM> functions provide  no  means  of  freeing  memory,  because
       legacy  <EM>termcap</EM>  implementations  used only the storage provided by the
       caller via <STRONG>tgetent</STRONG> and <STRONG>tgetstr</STRONG>.  Those buffers are unused in <EM>terminfo</EM>.

       By contrast, <EM>terminfo</EM>  allocates  memory.   It  uses  <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>  to
       obtain  the  data  used  by  <STRONG>tgetent</STRONG>  and  the  functions that retrieve
       capability values.  One could use
              del_curterm(cur_term);
       to free this memory, but  there  is  an  additional  complication  with
       <EM>ncurses</EM>.  It uses a fixed-size pool of storage locations, one per value
       of the terminal name parameter given to <STRONG>tgetent</STRONG>.  The <STRONG>screen(1)</STRONG> program
       relies upon this arrangement to improve its performance.

       An  application  that  uses only the <EM>termcap</EM> functions, not the higher-
       level <EM>curses</EM> API,  could  release  the  memory  using  <STRONG><A HREF="curs_terminfo.3x.html">del_curterm(3x)</A></STRONG>,
       because the pool is freed using other functions; see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>.


</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
       The  return  values  of  <STRONG>tgetent</STRONG>,  <STRONG>tgetflag</STRONG>,  <STRONG>tgetname</STRONG>, and <STRONG>tgetstr</STRONG> are
       documented above.

       <STRONG>tgoto</STRONG> returns <EM>NULL</EM> on error.  Error conditions include:

       <STRONG>o</STRONG>   uninitialized state (<STRONG>tgetent</STRONG> was not called successfully),

       <STRONG>o</STRONG>   <EM>cap</EM> being a null pointer,

       <STRONG>o</STRONG>   <EM>cap</EM> referring to a canceled capability,

       <STRONG>o</STRONG>   <EM>cap</EM> being a  capability  with  string-valued  parameters  (a  <EM>term-</EM>
           <EM>info</EM>-only feature), and

       <STRONG>o</STRONG>   <EM>cap</EM> being a capability with more than two parameters.

       See <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> regarding <STRONG>tputs</STRONG>.


</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
       <EM>ncurses</EM>  compares  only the first two characters of the <EM>id</EM> parameter of
       <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, and <STRONG>tgetstr</STRONG> to the capability names in the database.


</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
       These functions are no longer standardized  (and  the  variables  never
       were);  see  section "HISTORY" below.  <EM>ncurses</EM> provides them to support
       legacy applications; they should not be used in new programs.

       SVr4 describes a successful return value  only  as  "an  integer  value
       other than <EM>ERR</EM>".

       Neither  X/Open  Curses  nor  the  SVr4 man pages documented the return
       values of <EM>tgetent</EM> correctly, though all three shown here were  in  fact
       returned  ever  since  SVr1.   In particular, an omission in the X/Open
       Curses specification has  been  misinterpreted  to  mean  that  <EM>tgetent</EM>
       returns  <EM>OK</EM>  or  <EM>ERR</EM>.   Because  the  purpose  of these functions is to
       provide compatibility with the <EM>termcap</EM> library, that  is  a  defect  in
       X/Open Curses Issue 4 Version 2 rather than in <EM>ncurses</EM>.


</PRE><H3><a name="h3-Compatibility-with-BSD-termcap">Compatibility with BSD termcap</a></H3><PRE>
       <EM>ncurses</EM>  provides  externally  visible  variables  to  support  certain
       <EM>termcap</EM>  applications.   However,  their  correct   usage   is   poorly
       documented; for example, it is unclear when reading and writing them is
       meaningful.   In  particular, some applications are reported to declare
       and/or modify <EM>ospeed</EM>.

       The constraint that only the first two characters of the  <EM>id</EM>  parameter
       are  looked  up  in  the  terminal  database  escapes  many application
       developers.  The BSD <EM>termcap</EM> library did not require  a  trailing  null
       character  after  the capability identifier passed to <EM>tgetstr</EM>, <EM>tgetnum</EM>,
       and <EM>tgetflag</EM>.  Some applications thus assume that the <EM>termcap</EM> interface
       does not  require  the  trailing  null  character  for  the  capability
       identifier.  <EM>ncurses</EM> disallows matches by the <EM>termcap</EM> interface against
       extended  capability  names  that  are  longer than two characters; see
       <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.

       The BSD <EM>termcap</EM> function <EM>tgetent</EM> returns the text of a <EM>termcap</EM> entry in
       the buffer  passed  as  an  argument.   <EM>ncurses</EM>,  like  other  <EM>terminfo</EM>
       implementations, does not store terminal type descriptions as text.  It
       sets the buffer contents to a null-terminated string.


</PRE><H3><a name="h3-Header-File">Header File</a></H3><PRE>
       <EM>ncurses</EM>  includes  a <EM>termcap.h</EM> header file for compatibility with other
       implementations,  but   it   is   rarely   used   because   the   other
       implementations are not mutually compatible; see below.


</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
       Bill  Joy  originated  a  forerunner  of <EM>termcap</EM> called "ttycap", dated
       September 1977, and released in 1BSD (March 1978).  It used many of the
       same function names as the later <EM>termcap</EM>, such  as  <EM>tgetent</EM>,  <EM>tgetflag</EM>,
       <EM>tgetnum</EM>, and <EM>tgetstr</EM>.

       A  clear  descendant, the <EM>termlib</EM> library, followed in 2BSD (May 1979),
       adding <EM>tgoto</EM> and <EM>tputs</EM>.  The former applied at that time only to cursor
       positioning  capabilities,  thus  the  overly  specific  name.   Little
       changed  in 3BSD (late 1979) except the addition of test programs and a
       <EM>termlib</EM> man page, which documented the API shown in section  "SYNOPSIS"
       above.

       4BSD  (November 1980) renamed <EM>termlib</EM> to <EM>termcap</EM> and added another test
       program.  The library remained  much  the  same  through  4.3BSD  (June
       1986).    4.4BSD-Lite  (June  1994)  refactored  it,  leaving  the  API
       unchanged.

       Function prototypes were a feature of ANSI C (1989).  The library  long
       antedated the standard and thus provided no header file declaring them.
       Nevertheless,  the  BSD sources included two different <EM>termcap.h</EM> header
       files over time.

       <STRONG>o</STRONG>   One was used internally by <STRONG>jove(1)</STRONG> from 4.3BSD onward.  It declared
           global symbols for the <EM>termcap</EM> variables that it used.

       <STRONG>o</STRONG>   The other appeared in 4.4BSD-Lite Release 2 (June 1995) as part  of
           <EM>libedit</EM>  (also known as the <EM>editline</EM> library).  CSRG source history
           shows that this was added in mid-1992.  The <EM>libedit</EM> header file was
           used  internally  as  a  convenience  for  compiling  the  <EM>editline</EM>
           library.  It declared function prototypes, but no global variables.
           NetBSD's <EM>termcap</EM> library added this header file in mid-1994.

       Meanwhile,  GNU  <EM>termcap</EM>  began development in 1990.  Its first release
       (1.0) in 1991 included a  <EM>termcap.h</EM>  header  file.   Its  second  (1.1)
       release  in  September  1992  modified  the  file  to use <EM>const</EM> for the
       function prototypes in the header where one would expect parameters  to
       be  read-only.   BSD  <EM>termcap</EM>  did  not.   The prototype for <EM>tputs</EM> also
       differed, but in that instance, it was <EM>libedit</EM> that differed  from  BSD
       <EM>termcap</EM>.

       GNU  <STRONG>bash(1)</STRONG>  has bundled GNU <EM>termcap</EM> 1.3 since mid-1993 to support its
       <STRONG>readline(3)</STRONG> library, and continues to use it if configured to do so.

       <EM>ncurses</EM> 1.8.1 (November 1993) provided a <EM>termcap.h</EM> file.  It  reflected
       influence   from  GNU  <EM>termcap</EM>  and  <STRONG>emacs(1)</STRONG>  (rather  than  <STRONG>jove(1)</STRONG>),
       providing the following interface:

       <STRONG>o</STRONG>   global symbols used by <EM>emacs</EM>,

       <STRONG>o</STRONG>   <EM>const</EM>-qualified function prototypes, and

       <STRONG>o</STRONG>   a prototype for <EM>tparam</EM>, a GNU <EM>termcap</EM> feature.

       Later (in mid-1996) the <EM>tparam</EM> function was removed from <EM>ncurses</EM>.   Any
       two  of  the four implementations thus differ, and programs that intend
       to work with all <EM>termcap</EM> library interfaces must account for that fact.

       X/Open Curses Issue 4, Version 2  (1996),  describes  these  functions,
       marking them as "TO BE WITHDRAWN".

       X/Open Curses Issue 7 (2009) withdrew the <EM>termcap</EM> interface (along with
       the <EM>vwprintw</EM> and <EM>vwscanw</EM> functions).


</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
       If  you  call  <STRONG>tgetstr</STRONG>  to  fetch  <STRONG>column_address</STRONG>  (<STRONG>ch</STRONG>)  or  any  other
       parameterized string capability, be aware that it is returned in  <EM>term-</EM>
       <EM>info</EM> notation, not the older and not-quite-compatible <EM>termcap</EM> notation.
       This  does  not  cause  problems if all you do with it is call <STRONG>tgoto</STRONG> or
       <STRONG>tparm</STRONG>,  which  both   parametrically   expand   <EM>terminfo</EM>-style   string
       capabilities  as  <EM>terminfo</EM>  does.  (If <EM>ncurses</EM> is configured to support
       <EM>termcap,</EM> <STRONG>tgoto</STRONG> checks whether the string is <EM>terminfo</EM>-style  by  looking
       for  "<STRONG>%p</STRONG>"  parameters  or  "<STRONG>&lt;</STRONG>...<STRONG>&gt;</STRONG>"  delays, and invokes a <EM>termcap</EM>-style
       parser if the string appears not to use <EM>terminfo</EM> syntax.)

       Because <EM>terminfo</EM>'s syntax for padding in  string  capabilities  differs
       from <EM>termcap</EM>'s, users can be surprised.

       <STRONG>o</STRONG>   <STRONG>tputs("50")</STRONG>  in  a <EM>terminfo</EM> system transmits "50" rather than busy-
           waiting for 50 milliseconds.

           However, if <EM>ncurses</EM> is configured to support <EM>termcap</EM>, it  may  also
           have  been  configured to support BSD-style padding.  In that case,
           <STRONG>tputs</STRONG> inspects strings passed to it,  looking  for  digits  at  the
           beginning of the string.

       <STRONG>o</STRONG>   <STRONG>tputs("50")</STRONG>  in  a <EM>termcap</EM> system may busy-wait for 50 milliseconds
           rather than transmitting "50".

       <EM>termcap</EM>  has  nothing  analogous  to  <EM>terminfo</EM>'s  <STRONG>set_attributes</STRONG>  (<STRONG>sgr</STRONG>)
       capability.   One  consequence is that <EM>termcap</EM> applications assume that
       "<STRONG>me</STRONG>" (equivalent to <EM>terminfo</EM>'s <STRONG>exit_attribute_mode</STRONG>  (<STRONG>sgr0</STRONG>)  capability)
       does  not reset the alternate character set.  <EM>ncurses</EM> inspects the data
       shared with the <EM>termcap</EM> interface  and  modifies  it  as  necessary  to
       accommodate the latter's limitation in this respect.


</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
       <EM>TCTEST</EM> <EM>--</EM> <EM>A</EM> <EM>Termcap</EM> <EM>Test</EM> <EM>Utility</EM>

       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>

ncurses 6.6                       2025-08-16                  <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
</PRE>
<div class="nav">
<ul>
<li><a href="#h2-NAME">NAME</a></li>
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
<ul>
<li><a href="#h3-Initialization">Initialization</a></li>
<li><a href="#h3-Retrieving-Capability-Values">Retrieving Capability Values</a></li>
<li><a href="#h3-Applying-String-Capabilities">Applying String Capabilities</a></li>
<li><a href="#h3-Global-Variables">Global Variables</a></li>
<li><a href="#h3-Releasing-Memory">Releasing Memory</a></li>
</ul>
</li>
<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
<li><a href="#h2-NOTES">NOTES</a></li>
<li><a href="#h2-PORTABILITY">PORTABILITY</a>
<ul>
<li><a href="#h3-Compatibility-with-BSD-termcap">Compatibility with BSD termcap</a></li>
<li><a href="#h3-Header-File">Header File</a></li>
</ul>
</li>
<li><a href="#h2-HISTORY">HISTORY</a></li>
<li><a href="#h2-BUGS">BUGS</a></li>
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
</ul>
</div>
</BODY>
</HTML>