mirror of
https://github.com/ThomasDickey/ncurses-snapshots.git
synced 2026-01-26 11:04:35 +00:00
400 lines
25 KiB
HTML
400 lines
25 KiB
HTML
<!--
|
|
****************************************************************************
|
|
* 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><curses.h></STRONG>
|
|
<STRONG>#include</STRONG> <STRONG><term.h></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><</STRONG>...<STRONG>></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>
|