diff options
Diffstat (limited to 'doc/html/man/curs_termcap.3x.html')
| -rw-r--r-- | doc/html/man/curs_termcap.3x.html | 290 |
1 files changed, 144 insertions, 146 deletions
diff --git a/doc/html/man/curs_termcap.3x.html b/doc/html/man/curs_termcap.3x.html index c2763afe3b94..00e1e8125bd7 100644 --- a/doc/html/man/curs_termcap.3x.html +++ b/doc/html/man/curs_termcap.3x.html @@ -1,6 +1,6 @@ <!-- **************************************************************************** - * Copyright 2018-2023,2024 Thomas E. Dickey * + * 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 * @@ -27,25 +27,23 @@ * sale, use or other dealings in this Software without prior written * * authorization. * **************************************************************************** - * @Id: curs_termcap.3x,v 1.85 2024/04/20 19:13:12 tom Exp @ + * @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 2024-04-20 ncurses 6.5 Library calls</TITLE> +<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 2024-04-20 ncurses 6.5 Library calls</H1> +<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> @@ -60,16 +58,16 @@ <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>*tgetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>id</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>**</STRONG><EM>area</EM><STRONG>);</STRONG> - <STRONG>char</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> + <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 + <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 @@ -80,53 +78,53 @@ <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 - 1 on success, + <STRONG>1</STRONG> on success, - 0 if there is no such entry (or if the matching entry describes a - generic terminal, having too little information for <EM>curses</EM> + <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 - -1 if the <EM>terminfo</EM> database could not be found. + <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 area referenced by this - pointer. <EM>terminfo</EM> stores terminal type descriptions in compiled - form, which is not the same thing. + <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. + <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 + <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 <STRONG>NULL</STRONG> if it is not - available. Use <STRONG>tputs</STRONG> to output the string returned. The <EM>area</EM> + <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> 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>area</EM> is not <STRONG>NULL</STRONG>, and - also that the resulting buffer pointer is not <STRONG>NULL</STRONG>. If either - check fails, <EM>area</EM> is ignored. + <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>area</EM>, and the library updates <EM>area</EM> to - point past the null character terminating this value. + <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. + <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> @@ -140,18 +138,18 @@ 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 + <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 + 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> + <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). @@ -167,38 +165,39 @@ </PRE><H3><a name="h3-Global-Variables">Global Variables</a></H3><PRE> - The variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG> and <STRONG>BC</STRONG> are set by <STRONG>tgetent</STRONG> to the <EM>terminfo</EM> entry's - data for <STRONG>pad_char</STRONG>, <STRONG>cursor_up</STRONG> and <STRONG>backspace_if_not_bs</STRONG>, respectively. <STRONG>UP</STRONG> - is not used by <EM>ncurses</EM>. <STRONG>PC</STRONG> is used by <STRONG><A HREF="curs_util.3x.html">delay_output(3x)</A></STRONG>. <STRONG>BC</STRONG> is used by - <STRONG>tgoto</STRONG> emulation. The variable <STRONG>ospeed</STRONG> is set by <EM>ncurses</EM> using a system- - specific encoding to indicate the terminal's data rate. + <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 buffer areas provided by - the caller via <STRONG>tgetent</STRONG> and <STRONG>tgetstr</STRONG>. Those buffers are unused in <EM>term-</EM> - <EM>info</EM>. + 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 + 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 + 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>, + 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 + The return values of <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, <STRONG>tgetname</STRONG>, and <STRONG>tgetstr</STRONG> are documented above. - <STRONG>tgoto</STRONG> returns <STRONG>NULL</STRONG> on error. Error conditions include: + <STRONG>tgoto</STRONG> returns <EM>NULL</EM> on error. Error conditions include: <STRONG>o</STRONG> uninitialized state (<STRONG>tgetent</STRONG> was not called successfully), @@ -206,7 +205,7 @@ <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> + <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. @@ -215,79 +214,75 @@ </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 + <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); <EM>ncurses</EM> provides them to support legacy applications. They - should not be used in new programs. - + 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. -</PRE><H3><a name="h3-Standards">Standards</a></H3><PRE> - <STRONG>o</STRONG> X/Open Curses, Issue 4, Version 2 (1996), describes these - functions, marking them as "TO BE WITHDRAWN". - - <STRONG>o</STRONG> X/Open Curses, Issue 7 (2009) marks the <EM>termcap</EM> interface (along - with <STRONG>vwprintw</STRONG> and <STRONG>vwscanw</STRONG>) as withdrawn. + 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 <STRONG>tgetent</STRONG> correctly, though all three shown here were in fact + 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 <STRONG>tgetent</STRONG> - returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>. Because the purpose of these functions is to + 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>. + X/Open Curses Issue 4 Version 2 rather than in <EM>ncurses</EM>. + - <STRONG>Compatibility</STRONG> <STRONG>with</STRONG> <STRONG>BSD</STRONG> <EM>termcap</EM> - Externally visible variables are provided for support of certain +</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 <STRONG>ospeed</STRONG>. - - The constraint that only the first two characters of the <EM>id</EM> parameter - are used escapes many application developers. The BSD <EM>termcap</EM> library - did not require a trailing null character on the capability identifier - passed to <STRONG>tgetstr</STRONG>, <STRONG>tgetnum</STRONG>, and <STRONG>tgetflag</STRONG>. Some applications thus - assume that the <EM>termcap</EM> interface does not require the trailing null - character for the capability identifier. - - <STRONG>o</STRONG> <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 <STRONG>tgetent</STRONG> returns the text of a <EM>termcap</EM> entry in - the buffer passed as an argument. This library, like other <EM>terminfo</EM> + 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> - This library includes a <EM>termcap.h</EM> header for compatibility with other - implementations, but the header is rarely used because the other - implementations are not strictly compatible. + <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 <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, - <STRONG>tgetnum</STRONG>, and <STRONG>tgetstr</STRONG>. + 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 <STRONG>tgoto</STRONG> and <STRONG>tputs</STRONG>. The former applied at that time only to cursor + 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 though 4.3BSD (June 1986). - 4.4BSD-Lite (June 1994) refactored it, leaving the API unchanged. + 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 + 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. @@ -295,81 +290,84 @@ <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 + <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. - This header file was added to NetBSD's <EM>termcap</EM> library 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. Its second (1.1) in - September 1992 modified the header to use <EM>const</EM> for the function - prototypes in the header where one would expect the parameters to be - read-only. BSD <EM>termcap</EM> did not. The prototype for <STRONG>tputs</STRONG> also - differed, but in that instance, it was <EM>libedit</EM> that differed from BSD + 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 <EM>termcap</EM> 1.3 was bundled with <STRONG>bash(1)</STRONG> in mid-1993 to support the - <STRONG>readline(3)</STRONG> library. + 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>), + <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 <STRONG>tparam</STRONG>, a GNU <EM>termcap</EM> feature. + <STRONG>o</STRONG> a prototype for <EM>tparam</EM>, a GNU <EM>termcap</EM> feature. - Later (in mid-1996) the <STRONG>tparam</STRONG> function was removed from <EM>ncurses</EM>. Any - two of the four implementations thus differ, and programs that intend + 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 + 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 + 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- + <STRONG>o</STRONG> <STRONG>tputs("50")</STRONG> in a <EM>terminfo</EM> system transmits "50" rather than busy- waiting for 50 milliseconds. - <STRONG>o</STRONG> 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. + 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>tputs("50")</STRONG> in a <EM>termcap</EM> system may busy-wait for 50 milliseconds + <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> checks for, and - modifies the data shared with, the <EM>termcap</EM> interface to accommodate the - latter's limitation in this respect. + 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> - <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> - - https://invisible-island.net/ncurses/tctest.html - + <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.5 2024-04-20 <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</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> @@ -388,7 +386,7 @@ ncurses 6.5 2024-04-20 <STRONG><A HREF="c <li><a href="#h2-NOTES">NOTES</a></li> <li><a href="#h2-PORTABILITY">PORTABILITY</a> <ul> -<li><a href="#h3-Standards">Standards</a></li> +<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> |
