]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/curs_terminfo.3x.html
ncurses 6.5 - patch 20240525
[ncurses.git] / doc / html / man / curs_terminfo.3x.html
index 9ee551e509c13479863f5c7458a8e2d501feb4fb..ebb9251ca07e93371b45ed3a1bacaef8fb82c4c9 100644 (file)
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_terminfo.3x,v 1.134 2024/03/23 20:41:15 tom Exp @
+  * @Id: curs_terminfo.3x,v 1.138 2024/05/25 21:02:40 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_terminfo 3x 2024-03-23 ncurses 6.4 Library calls</TITLE>
+<TITLE>curs_terminfo 3x 2024-05-25 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_terminfo 3x 2024-03-23 ncurses 6.4 Library calls</H1>
+<H1 class="no-header">curs_terminfo 3x 2024-05-25 ncurses 6.5 Library calls</H1>
 <PRE>
 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>del_curterm</STRONG>,   <STRONG>mvcur</STRONG>,   <STRONG>putp</STRONG>,   <STRONG>restartterm</STRONG>,   <STRONG>set_curterm</STRONG>,  <STRONG>setupterm</STRONG>,
-       <STRONG>tigetflag</STRONG>,  <STRONG>tigetnum</STRONG>,  <STRONG>tigetstr</STRONG>,  <STRONG>tiparm</STRONG>,  <STRONG>tiparm_s</STRONG>,  <STRONG>tiscan_s</STRONG>,  <STRONG>tparm</STRONG>,
-       <STRONG>tputs</STRONG>,  <STRONG>vid_attr</STRONG>,  <STRONG>vid_puts</STRONG>,  <STRONG>vidattr</STRONG>,  <STRONG>vidputs</STRONG>  - <EM>curses</EM> interfaces to
-       <EM>terminfo</EM> database
+       <STRONG>del_curterm</STRONG>,  <STRONG>putp</STRONG>,  <STRONG>restartterm</STRONG>,  <STRONG>set_curterm</STRONG>,  <STRONG>setupterm</STRONG>,  <STRONG>tigetflag</STRONG>,
+       <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tiparm_s</STRONG>, <STRONG>tiscan_s</STRONG>, <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>vid_attr</STRONG>,
+       <STRONG>vid_puts</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>vidputs</STRONG> - <EM>curses</EM> interfaces to <EM>terminfo</EM> database
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -87,8 +86,6 @@
        <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>
        <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>
 
-       <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><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newcol</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These low-level functions must be called by programs that deal directly
-       with  the  <EM>terminfo</EM>  database  to handle certain terminal capabilities,
+       with the <EM>terminfo</EM> database to  handle  certain  terminal  capabilities,
        such as programming function keys.  For all other functionality, <EM>curses</EM>
        functions are more suitable and their use is recommended.
 
-       None  of  these  functions  use  (or  are aware of) multibyte character
+       None of these functions use  (or  are  aware  of)  multibyte  character
        strings such as UTF-8.
 
        <STRONG>o</STRONG>   Capability names and codes use the POSIX portable character set.
 
-       <STRONG>o</STRONG>   Capability string values have  no  associated  encoding;  they  are
+       <STRONG>o</STRONG>   Capability  string  values  have  no  associated encoding; they are
            strings of 8-bit characters.
 
 
 </PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
        Initially, <STRONG>setupterm</STRONG> should be called.  The high-level <EM>curses</EM> functions
-       <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> call <STRONG>setupterm</STRONG> to initialize the low-level  set  of
+       <STRONG>initscr</STRONG>  and  <STRONG>newterm</STRONG> call <STRONG>setupterm</STRONG> to initialize the low-level set of
        terminal-dependent variables listed in <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.
 
-       Applications  can  use  the  terminal capabilities either directly (via
+       Applications can use the terminal  capabilities  either  directly  (via
        header  definitions),  or  by  special  functions.   The  header  files
-       <EM>curses.h</EM>  and  <EM>term.h</EM>  should  be  included  (in that order) to get the
+       <EM>curses.h</EM> and <EM>term.h</EM> should be included  (in  that  order)  to  get  the
        definitions for these strings, numbers, and flags.
 
-       The <EM>terminfo</EM> variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized  by  <STRONG>setupterm</STRONG>
+       The  <EM>terminfo</EM>  variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized by <STRONG>setupterm</STRONG>
        as follows.
 
-       <STRONG>o</STRONG>   If  <STRONG>use_env(FALSE)</STRONG>  has  been  called, values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG>
+       <STRONG>o</STRONG>   If <STRONG>use_env(FALSE)</STRONG> has been called, values  for  <STRONG>lines</STRONG>  and  <STRONG>columns</STRONG>
            specified in <EM>terminfo</EM> are used.
 
-       <STRONG>o</STRONG>   Otherwise, if the environment variables <EM>LINES</EM>  and  <EM>COLUMNS</EM>  exist,
+       <STRONG>o</STRONG>   Otherwise,  if  the  environment variables <EM>LINES</EM> and <EM>COLUMNS</EM> exist,
            their values are used.  If these environment variables do not exist
-           and the program is running in a window, the current window size  is
-           used.   Otherwise,  if  the environment variables do not exist, the
+           and  the program is running in a window, the current window size is
+           used.  Otherwise, if the environment variables do  not  exist,  the
            values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the <EM>terminfo</EM> database are
            used.
 
-       Parameterized  strings  should  be  passed through <STRONG>tparm</STRONG> to instantiate
-       them.  All <EM>terminfo</EM> strings (including the output of <STRONG>tparm</STRONG>)  should  be
-       sent  to the terminal device with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.  Call <STRONG>reset_shell_mode</STRONG>
+       Parameterized strings should be passed  through  <STRONG>tparm</STRONG>  to  instantiate
+       them.   All  <EM>terminfo</EM> strings (including the output of <STRONG>tparm</STRONG>) should be
+       sent to the terminal device with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.  Call  <STRONG>reset_shell_mode</STRONG>
        to restore the terminal modes before exiting; see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>.
 
        Programs that use cursor addressing should
 
        Programs that execute shell subprocesses should
 
-       <STRONG>o</STRONG>   call <STRONG>reset_shell_mode</STRONG> and output <STRONG>exit_ca_mode</STRONG> before the  shell  is
+       <STRONG>o</STRONG>   call  <STRONG>reset_shell_mode</STRONG>  and output <STRONG>exit_ca_mode</STRONG> before the shell is
            called and
 
-       <STRONG>o</STRONG>   output  <STRONG>enter_ca_mode</STRONG> and call <STRONG>reset_prog_mode</STRONG> after returning from
+       <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> and call <STRONG>reset_prog_mode</STRONG> after returning  from
            the shell.
 
-       <STRONG>setupterm</STRONG> reads in the <EM>terminfo</EM>  database,  initializing  the  <EM>terminfo</EM>
-       structures,  but  does  not set up the output virtualization structures
+       <STRONG>setupterm</STRONG>  reads  in  the  <EM>terminfo</EM> database, initializing the <EM>terminfo</EM>
+       structures, but does not set up the  output  virtualization  structures
        used by <EM>curses</EM>.  Its parameters follow.
 
           <EM>term</EM> is the terminal type, a character string.  If <EM>term</EM> is null, the
                environment variable <EM>TERM</EM> is read.
 
           <EM>filedes</EM>
-               is  the  file  descriptor used for getting and setting terminal
+               is the file descriptor used for getting  and  setting  terminal
                I/O modes.
 
-               Higher-level applications use  <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>  to  initialize  the
-               terminal,  passing  an  output <EM>stream</EM> rather than a <EM>descriptor</EM>.
-               In  <EM>curses</EM>,  the  two  are  the  same  because  <STRONG>newterm</STRONG>   calls
-               <STRONG>setupterm</STRONG>,  passing the file descriptor derived from its output
+               Higher-level  applications  use  <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>  to initialize the
+               terminal, passing an output <EM>stream</EM> rather  than  a  <EM>descriptor</EM>.
+               In   <EM>curses</EM>,  the  two  are  the  same  because  <STRONG>newterm</STRONG>  calls
+               <STRONG>setupterm</STRONG>, passing the file descriptor derived from its  output
                stream parameter.
 
           <EM>errret</EM>
-               points to an optional location where an  error  status  can  be
-               returned  to the caller.  If <EM>errret</EM> is not null, then <STRONG>setupterm</STRONG>
-               returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG> and stores a  status  value  in  the  integer
-               pointed  to  by  <EM>errret</EM>.   A  return  value of <STRONG>OK</STRONG> combined with
+               points  to  an  optional  location where an error status can be
+               returned to the caller.  If <EM>errret</EM> is not null, then  <STRONG>setupterm</STRONG>
+               returns  <STRONG>OK</STRONG>  or  <STRONG>ERR</STRONG>  and  stores a status value in the integer
+               pointed to by <EM>errret</EM>.  A  return  value  of  <STRONG>OK</STRONG>  combined  with
                status of <STRONG>1</STRONG> in <EM>errret</EM> is normal.
 
                If <STRONG>ERR</STRONG> is returned, examine <EM>errret:</EM>
 
-               <STRONG>1</STRONG>    means that the terminal is hardcopy, and  cannot  be  used
+               <STRONG>1</STRONG>    means  that  the  terminal is hardcopy, and cannot be used
                     for <EM>curses</EM> applications.
 
-                    <STRONG>setupterm</STRONG>  determines  if  the entry is a hardcopy type by
+                    <STRONG>setupterm</STRONG> determines if the entry is a  hardcopy  type  by
                     checking the <STRONG>hardcopy</STRONG> (<STRONG>hc</STRONG>) capability.
 
-               <STRONG>0</STRONG>    means that the terminal could not be found, or that it  is
-                    a  generic  type, having too little information for <EM>curses</EM>
+               <STRONG>0</STRONG>    means  that the terminal could not be found, or that it is
+                    a generic type, having too little information  for  <EM>curses</EM>
                     applications to run.
 
-                    <STRONG>setupterm</STRONG> determines if the entry is  a  generic  type  by
+                    <STRONG>setupterm</STRONG>  determines  if  the  entry is a generic type by
                     checking the <STRONG>generic_type</STRONG> (<STRONG>gn</STRONG>) capability.
 
                <STRONG>-1</STRONG>   means that the <EM>terminfo</EM> database could not be found.
 
-               If  <EM>errret</EM>  is  null,  <STRONG>setupterm</STRONG>  reports an error message upon
+               If <EM>errret</EM> is null, <STRONG>setupterm</STRONG>  reports  an  error  message  upon
                finding an error and exits.  Thus, the simplest call is:
 
                       setupterm((char *)0, 1, (int *)0);
 
 
 </PRE><H3><a name="h3-The-Terminal-State">The Terminal State</a></H3><PRE>
-       <STRONG>setupterm</STRONG> stores its information  about  the  terminal  in  a  <EM>TERMINAL</EM>
+       <STRONG>setupterm</STRONG>  stores  its  information  about  the  terminal in a <EM>TERMINAL</EM>
        structure pointed to by the global variable <STRONG>cur_term</STRONG>.  If it detects an
        error,  or  decides  that  the  terminal  is  unsuitable  (hardcopy  or
-       generic),  it  discards  this  information,  making it not available to
+       generic), it discards this information,  making  it  not  available  to
        applications.
 
-       If <STRONG>setupterm</STRONG> is called repeatedly for the same terminal type,  it  will
+       If  <STRONG>setupterm</STRONG>  is called repeatedly for the same terminal type, it will
        reuse  the  information.   It  maintains  only  one  copy  of  a  given
-       terminal's capabilities in memory.   If  it  is  called  for  different
-       terminal  types,  <STRONG>setupterm</STRONG>  allocates  new  storage  for  each  set of
+       terminal's  capabilities  in  memory.   If  it  is called for different
+       terminal types,  <STRONG>setupterm</STRONG>  allocates  new  storage  for  each  set  of
        terminal capabilities.
 
-       <STRONG>set_curterm</STRONG> sets <STRONG>cur_term</STRONG> to <EM>nterm</EM>,  and  makes  all  of  the  <EM>terminfo</EM>
-       Boolean,  numeric,  and string variables use the values from <EM>nterm</EM>.  It
+       <STRONG>set_curterm</STRONG>  sets  <STRONG>cur_term</STRONG>  to  <EM>nterm</EM>,  and  makes all of the <EM>terminfo</EM>
+       Boolean, numeric, and string variables use the values from  <EM>nterm</EM>.   It
        returns the old value of <STRONG>cur_term</STRONG>.
 
-       <STRONG>del_curterm</STRONG> frees the space pointed to by <EM>oterm</EM> and makes it  available
-       for  further  use.  If <EM>oterm</EM> is the same as <STRONG>cur_term</STRONG>, references to any
-       of the <EM>terminfo</EM> Boolean, numeric, and string variables  thereafter  may
-       refer  to  invalid  memory  locations  until another <STRONG>setupterm</STRONG> has been
+       <STRONG>del_curterm</STRONG>  frees the space pointed to by <EM>oterm</EM> and makes it available
+       for further use.  If <EM>oterm</EM> is the same as <STRONG>cur_term</STRONG>, references  to  any
+       of  the  <EM>terminfo</EM> Boolean, numeric, and string variables thereafter may
+       refer to invalid memory locations  until  another  <STRONG>setupterm</STRONG>  has  been
        called.
 
-       <STRONG>restartterm</STRONG> is similar to <STRONG>setupterm</STRONG> and  <STRONG>initscr</STRONG>,  except  that  it  is
-       called  after  restoring  memory to a previous state (for example, when
+       <STRONG>restartterm</STRONG>  is  similar  to  <STRONG>setupterm</STRONG>  and <STRONG>initscr</STRONG>, except that it is
+       called after restoring memory to a previous state  (for  example,  when
        reloading a game saved as a core image dump).  <STRONG>restartterm</STRONG> assumes that
-       the  windows  and  the  input  and  output options are the same as when
+       the windows and the input and output  options  are  the  same  as  when
        memory was saved, but the terminal type and baud rate may be different.
-       Accordingly,  <STRONG>restartterm</STRONG>  saves  various  terminal  state  bits, calls
+       Accordingly, <STRONG>restartterm</STRONG>  saves  various  terminal  state  bits,  calls
        <STRONG>setupterm</STRONG>, and then restores the bits.
 
 
 </PRE><H3><a name="h3-Formatting-Output">Formatting Output</a></H3><PRE>
-       <STRONG>tparm</STRONG> instantiates the string <EM>str</EM> with parameters  <EM>pi</EM>.   A  pointer  is
+       <STRONG>tparm</STRONG>  instantiates  the  string  <EM>str</EM> with parameters <EM>pi</EM>.  A pointer is
        returned to the result of <EM>str</EM> with the parameters applied.  Application
        developers should keep in mind these quirks of the interface:
 
-       <STRONG>o</STRONG>   Although <STRONG>tparm</STRONG>'s actual parameters may be integers or strings,  the
+       <STRONG>o</STRONG>   Although  <STRONG>tparm</STRONG>'s actual parameters may be integers or strings, the
            prototype expects <EM>long</EM> (integer) values.
 
-       <STRONG>o</STRONG>   Aside  from  the  <STRONG>set_attributes</STRONG>  (<STRONG>sgr</STRONG>)  capability,  most terminal
+       <STRONG>o</STRONG>   Aside from  the  <STRONG>set_attributes</STRONG>  (<STRONG>sgr</STRONG>)  capability,  most  terminal
            capabilities require no more than one or two parameters.
 
-       <STRONG>o</STRONG>   Padding information is ignored  by  <STRONG>tparm</STRONG>;  it  is  interpreted  by
+       <STRONG>o</STRONG>   Padding  information  is  ignored  by  <STRONG>tparm</STRONG>;  it is interpreted by
            <STRONG>tputs</STRONG>.
 
-       <STRONG>o</STRONG>   The  capability  string  is  null-terminated.   Use "\200" where an
+       <STRONG>o</STRONG>   The capability string is  null-terminated.   Use  "\200"  where  an
            ASCII NUL is needed in the output.
 
-       <STRONG>tiparm</STRONG> is a newer form of <STRONG>tparm</STRONG>  which  uses  <EM>stdarg.h</EM>  rather  than  a
-       fixed-parameter  list.   Its  numeric  parameters  are <EM>int</EM>s rather than
+       <STRONG>tiparm</STRONG>  is  a  newer  form  of  <STRONG>tparm</STRONG> which uses <EM>stdarg.h</EM> rather than a
+       fixed-parameter list.  Its numeric  parameters  are  <EM>int</EM>s  rather  than
        <EM>long</EM>s.
 
-       Both <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> assume that  the  application  passes  parameters
-       consistent  with the terminal description.  Two extensions are provided
+       Both  <STRONG>tparm</STRONG>  and  <STRONG>tiparm</STRONG>  assume that the application passes parameters
+       consistent with the terminal description.  Two extensions are  provided
        as alternatives to deal with untrusted data.
 
-       <STRONG>o</STRONG>   <STRONG>tiparm_s</STRONG> is an extension which is a safer formatting function  than
+       <STRONG>o</STRONG>   <STRONG>tiparm_s</STRONG>  is an extension which is a safer formatting function than
            <STRONG>tparm</STRONG> or <STRONG>tiparm</STRONG>, because it allows the developer to tell the <EM>curses</EM>
-           library how many parameters to expect in the  parameter  list,  and
+           library  how  many  parameters to expect in the parameter list, and
            which may be string parameters.
 
-           The  <EM>mask</EM>  parameter has one bit set for each of the parameters (up
+           The <EM>mask</EM> parameter has one bit set for each of the  parameters  (up
            to 9) passed as <EM>char</EM> pointers rather than numbers.
 
-       <STRONG>o</STRONG>   The  extension  <STRONG>tiscan_s</STRONG>  allows  the  application  to  inspect   a
+       <STRONG>o</STRONG>   The   extension  <STRONG>tiscan_s</STRONG>  allows  the  application  to  inspect  a
            formatting capability to see what the <EM>curses</EM> library would assume.
 
 
 </PRE><H3><a name="h3-Output-Functions">Output Functions</a></H3><PRE>
-       String  capabilities  can  contain  padding  information,  a time delay
+       String capabilities can  contain  padding  information,  a  time  delay
        (accommodating performance limitations of hardware terminals) expressed
        as <STRONG>$&lt;</STRONG><EM>n</EM><STRONG>&gt;</STRONG>, where <EM>n</EM> is a nonnegative integral count of milliseconds.  If <EM>n</EM>
        exceeds 30,000 (thirty seconds), it is capped at that value.
 
-       <STRONG>tputs</STRONG> interprets time-delay information in the string <EM>str</EM>  and  outputs
+       <STRONG>tputs</STRONG>  interprets  time-delay information in the string <EM>str</EM> and outputs
        it, executing the delays:
 
-       <STRONG>o</STRONG>   The  <EM>str</EM> parameter must be a <EM>terminfo</EM> string variable or the return
-           value of <STRONG>tparm</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tgetstr</STRONG>, or <STRONG>tgoto</STRONG>.
-
-           The <STRONG>tgetstr</STRONG> and <STRONG>tgoto</STRONG> functions are part of the <EM>termcap</EM>  interface,
-           which happens to share these function names with the <EM>terminfo</EM> API.
+       <STRONG>o</STRONG>   The <EM>str</EM> parameter must be a <EM>terminfo</EM> string variable or the  return
+           value of <STRONG>tparm</STRONG> or <STRONG>tiparm</STRONG>.
 
        <STRONG>o</STRONG>   <EM>affcnt</EM> is the number of lines affected, or <STRONG>1</STRONG> if not applicable.
 
        applications  must  provide  a  null pointer for that argument; but see
        section "EXTENSIONS" below.
 
-       <STRONG>mvcur</STRONG> provides low-level cursor motion.  It  takes  effect  immediately
-       (rather  than  at the next refresh).  Unlike the other low-level output
-       functions, which either write to the standard output or pass an  output
-       function  parameter,  <STRONG>mvcur</STRONG> uses an output file descriptor derived from
-       the output stream parameter of <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>.
-
-       While <STRONG>putp</STRONG> and <STRONG>mvcur</STRONG> are low-level functions that do not use high-level
-       <EM>curses</EM>  state,  <EM>ncurses</EM>  declares them in <EM>curses.h</EM> because System V did
-       this (see section "HISTORY" below).
+       While <STRONG>putp</STRONG> is a low-level function that does not use high-level  <EM>curses</EM>
+       state,  <EM>ncurses</EM>  declares it in <EM>curses.h</EM> because System V did this (see
+       section "HISTORY" below).
 
 
 </PRE><H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE>
        <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error codes.
 
        <STRONG>restartterm</STRONG>
-            fails if the associated call to <STRONG>setupterm</STRONG> returns an error.
+            fails if the associated call to <STRONG>setupterm</STRONG> returns <STRONG>ERR</STRONG>.
 
        <STRONG>setupterm</STRONG>
             fails if it cannot allocate enough memory, or create  the  initial
        first standardized in the late 1980s.
 
        <STRONG>o</STRONG>   X/Open  Curses  uses  <EM>const</EM>  less  effectively  than a later design
-           might, in some cases applying it needlessly to values  are  already
-           constant,  and  in most cases overlooking parameters which normally
-           would use <EM>const</EM>.  Using constant parameters for functions which  do
-           not use <EM>const</EM> may prevent the program from compiling.  On the other
-           hand, "writable strings" are an obsolescent feature.
-
-           As an extension, this implementation can be  configured  to  change
-           the  function prototypes to use the <EM>const</EM> keyword.  The <EM>ncurses</EM> ABI
+           might, sometimes applying it needlessly to values that are  already
+           constant,  and  in  most cases overlooking parameters that normally
+           would use <EM>const</EM>.  Passing <EM>const</EM>-qualified parameters  to  functions
+           that  do  not  declare  them  <EM>const</EM>  may  prevent  the program from
+           compiling.   On  the  other  hand,  "writable   strings"   are   an
+           obsolescent feature.
+
+           As  an  extension,  this implementation can be configured to change
+           the function prototypes to use the <EM>const</EM> keyword.  The <EM>ncurses</EM>  ABI
            6 enables this feature by default.
 
-       <STRONG>o</STRONG>   X/Open Curses prototypes <STRONG>tparm</STRONG> with a fixed number  of  parameters,
+       <STRONG>o</STRONG>   X/Open  Curses  prototypes <STRONG>tparm</STRONG> with a fixed number of parameters,
            rather than a variable argument list.
 
-           This  implementation  uses  a  variable  argument  list, but can be
-           configured to use the fixed-parameter list.  Portable  applications
-           should  provide  nine  parameters after the format; zeroes are fine
+           This implementation uses a  variable  argument  list,  but  can  be
+           configured  to use the fixed-parameter list.  Portable applications
+           should provide nine parameters after the format;  zeroes  are  fine
            for this purpose.
 
-           In response to review comments by Thomas E. Dickey,  X/Open  Curses
+           In  response  to review comments by Thomas E. Dickey, X/Open Curses
            Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
 
-           While  <STRONG>tiparm</STRONG> is always provided in <EM>ncurses</EM>, the older form is only
-           available as a build-time configuration option.  If  not  specially
+           While <STRONG>tiparm</STRONG> is always provided in <EM>ncurses</EM>, the older form is  only
+           available  as  a build-time configuration option.  If not specially
            configured, <STRONG>tparm</STRONG> is the same as <STRONG>tiparm</STRONG>.
 
        Both forms of <STRONG>tparm</STRONG> have drawbacks:
        <STRONG>o</STRONG>   Most of the calls to <STRONG>tparm</STRONG> use only one or two parameters.  Passing
            nine on each call is awkward.
 
-           Using <EM>long</EM> for the numeric parameter type is a workaround  to  make
-           the  parameter  use  the  same  amount of stack as a pointer.  That
-           approach dates back to the mid-1980s, before  C  was  standardized.
-           Since  then,  there is a standard (and pointers are not required to
+           Using  <EM>long</EM>  for the numeric parameter type is a workaround to make
+           the parameter use the same amount of  stack  as  a  pointer.   That
+           approach  dates  back  to the mid-1980s, before C was standardized.
+           Since then, there is a standard (and pointers are not  required  to
            fit in a <EM>long</EM>).
 
-       <STRONG>o</STRONG>   Providing the right number of parameters for  a  variadic  function
+       <STRONG>o</STRONG>   Providing  the  right  number of parameters for a variadic function
            such  as  <STRONG>tiparm</STRONG>  can  be  a  problem,  in  particular  for  string
-           parameters.  However, only a few <EM>terminfo</EM> capabilities  use  string
-           parameters  (for  instance, the ones used for programmable function
+           parameters.   However,  only a few <EM>terminfo</EM> capabilities use string
+           parameters (for instance, the ones used for  programmable  function
            keys).
 
            The <EM>ncurses</EM> library checks usage of these capabilities, and returns
-           an  error  if  the capability mishandles string parameters.  But it
-           cannot check if a calling program provides  strings  in  the  right
-           places for the <STRONG>tparm</STRONG> calls.
+           <STRONG>ERR</STRONG> if the capability mishandles string parameters.  But it  cannot
+           check if a calling program provides strings in the right places for
+           the <STRONG>tparm</STRONG> calls.
 
-           The  <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>  program  checks  its use of these capabilities with a
+           The <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> program checks its use of  these  capabilities  with  a
            table, so that it calls <STRONG>tparm</STRONG> correctly.
 
    <STRONG>Special</STRONG> <EM>TERM</EM> <STRONG>treatment</STRONG>
        If configured to use the terminal driver, as with the MinGW port,
 
-       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> interprets a missing/empty <EM>TERM</EM> variable as  the  special
+       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  interprets  a missing/empty <EM>TERM</EM> variable as the special
            value "unknown".
 
            SVr4 <EM>curses</EM> uses the special value "dumb".
 
-           The  difference  between  the  two  is  that  the  former  uses the
-           <STRONG>generic_type</STRONG> (<STRONG>gn</STRONG>) <EM>terminfo</EM> capability, while the latter  does  not.
+           The difference  between  the  two  is  that  the  former  uses  the
+           <STRONG>generic_type</STRONG>  (<STRONG>gn</STRONG>)  <EM>terminfo</EM> capability, while the latter does not.
            A generic terminal is unsuitable for full-screen applications.
 
-       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  allows explicit use of the the windows console driver by
-           checking if <STRONG>$TERM</STRONG> is set to "#win32con" or an abbreviation of  that
+       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> allows explicit use of the the windows console driver  by
+           checking  if <STRONG>$TERM</STRONG> is set to "#win32con" or an abbreviation of that
            string.
 
 
 </PRE><H3><a name="h3-Other-Portability-Issues">Other Portability Issues</a></H3><PRE>
-       In  SVr4,  <STRONG>set_curterm</STRONG>  returns  an  <EM>int</EM>, <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.  We have chosen to
+       In SVr4, <STRONG>set_curterm</STRONG> returns an <EM>int</EM>, <STRONG>OK</STRONG> or  <STRONG>ERR</STRONG>.   We  have  chosen  to
        implement the X/Open Curses semantics.
 
        In SVr4, the third argument of <STRONG>tputs</STRONG> has the type "<STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>".
 
-       At least one implementation of X/Open Curses (Solaris) returns a  value
-       other  than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>.  It instead returns the length of the
+       At  least one implementation of X/Open Curses (Solaris) returns a value
+       other than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>.  It instead returns the length of  the
        string, and does no error checking.
 
-       X/Open Curses notes that after calling <STRONG>mvcur</STRONG>, the <EM>curses</EM> state may  not
-       match  the  actual terminal state, and that an application should touch
-       and refresh the window  before  resuming  normal  <EM>curses</EM>  calls.   Both
-       <EM>ncurses</EM> and SVr4 <EM>curses</EM> implement <STRONG>mvcur</STRONG> using the <EM>SCREEN</EM> data allocated
-       in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is documented as a <EM>terminfo</EM>
-       function, <STRONG>mvcur</STRONG> is really a <EM>curses</EM> function that is not well specified.
-
-       X/Open  notes  that after calling <STRONG>mvcur</STRONG>, the <EM>curses</EM> state may not match
-       the actual terminal state, and that an  application  should  touch  and
-       refresh  the  window before resuming normal <EM>curses</EM> calls.  Both <EM>ncurses</EM>
-       and SVr4 <EM>curses</EM> implement <STRONG>mvcur</STRONG> using  the  <EM>SCREEN</EM>  data  allocated  in
-       either  <STRONG>initscr</STRONG>  or  <STRONG>newterm</STRONG>.  So though it is documented as a <EM>terminfo</EM>
-       function, <STRONG>mvcur</STRONG> is really a <EM>curses</EM> function that is not well specified.
-
-       X/Open Curses states that the old location must be given for  <STRONG>mvcur</STRONG>  to
-       accommodate  terminals  that lack absolute cursor positioning.  <EM>ncurses</EM>
-       allows the caller to use -1 for either or both old coordinates.  The -1
-       tells  <EM>ncurses</EM>  that  the old location is unknown, and that it must use
-       only absolute motion, as  with  the  <STRONG>cursor_address</STRONG>  (<STRONG>cup</STRONG>)  capability,
-       rather  than  the  least  costly  combination  of absolute and relative
-       motion.
-
 
 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       SVr2 (1984) introduced the <EM>terminfo</EM> feature.   Its  programming  manual
+       SVr2  (1984)  introduced  the <EM>terminfo</EM> feature.  Its programming manual
        mentioned the following low-level functions.
 
        <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
        <STRONG>vidattr</STRONG>     like <STRONG>vidputs</STRONG>, but output through <EM>putchar</EM>
        <STRONG>vidputs</STRONG>     write string to terminal, applying specified attributes
 
-       The  programming  manual  also mentioned functions provided for <EM>termcap</EM>
+       The programming manual also mentioned functions  provided  for  <EM>termcap</EM>
        compatibility (commenting that they "may go away at a later date").
 
        <STRONG>Function</STRONG>   <STRONG>Description</STRONG>
        <STRONG>tgoto</STRONG>      apply parameters to given capability
        <STRONG>tputs</STRONG>      write characters via a function parameter, applying padding
 
-       Early <EM>terminfo</EM> programs obtained capability values  from  the  <EM>TERMINAL</EM>
+       Early  <EM>terminfo</EM>  programs  obtained capability values from the <EM>TERMINAL</EM>
        structure initialized by <STRONG>setupterm</STRONG>.
 
-       SVr3   (1987)   extended  <EM>terminfo</EM>  by  adding  functions  to  retrieve
-       capability values (like the <EM>termcap</EM> interface), and reusing  <STRONG>tgoto</STRONG>  and
+       SVr3  (1987)  extended  <EM>terminfo</EM>  by  adding  functions   to   retrieve
+       capability  values  (like the <EM>termcap</EM> interface), and reusing <STRONG>tgoto</STRONG> and
        <STRONG>tputs</STRONG>.
 
        <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
        <STRONG>tigetnum</STRONG>    get numeric entry for given <EM>id</EM>
        <STRONG>tigetstr</STRONG>    get string entry for given <EM>id</EM>
 
-       SVr3  also  replaced several of the SVr2 <EM>terminfo</EM> functions that had no
+       SVr3 also replaced several of the SVr2 <EM>terminfo</EM> functions that  had  no
        counterpart in the <EM>termcap</EM> interface, documenting them as obsolete.
 
        <STRONG>Function</STRONG>    <STRONG>Replaced</STRONG> <STRONG>by</STRONG>
        saveterm    def_prog_mode
        setterm     setupterm
 
-       SVr3 kept the <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG>, and <STRONG>vidputs</STRONG> functions, along  with  <STRONG>putp</STRONG>,
-       <STRONG>tparm</STRONG>,  and  <STRONG>tputs</STRONG>.   The latter were needed to support padding, and to
-       handle capabilities accessed by functions such as <STRONG>vidattr</STRONG>  (which  used
+       SVr3  kept  the <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG>, and <STRONG>vidputs</STRONG> functions, along with <STRONG>putp</STRONG>,
+       <STRONG>tparm</STRONG>, and <STRONG>tputs</STRONG>.  The latter were needed to support  padding,  and  to
+       handle  capabilities  accessed by functions such as <STRONG>vidattr</STRONG> (which used
        more than the two parameters supported by <STRONG>tgoto</STRONG>).
 
-       SVr3   introduced   the   functions   for  switching  between  terminal
-       descriptions;  for  example,  <STRONG>set_curterm</STRONG>.   Some   changes   reflected
+       SVr3  introduced  the  functions   for   switching   between   terminal
+       descriptions;   for   example,  <STRONG>set_curterm</STRONG>.   Some  changes  reflected
        incremental improvements to the SVr2 library.
 
-       <STRONG>o</STRONG>   The  <EM>TERMINAL</EM>  type  definition  was introduced in SVr3.01, for the
+       <STRONG>o</STRONG>   The <EM>TERMINAL</EM> type definition was introduced  in  SVr3.01,  for  the
            <EM>term</EM> structure provided in SVr2.
 
-       <STRONG>o</STRONG>   Various global variables such as <STRONG>boolnames</STRONG> were  mentioned  in  the
-           programming  manual  at  this  point, though the variables had been
+       <STRONG>o</STRONG>   Various  global  variables  such as <STRONG>boolnames</STRONG> were mentioned in the
+           programming manual at this point, though  the  variables  had  been
            provided in SVr2.
 
        SVr4 (1989) added the <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> functions.
 
-       Other low-level functions are declared in the <EM>curses</EM>  header  files  of
-       Unix  systems,  but  none are documented.  Those noted as "obsolete" by
+       Other  low-level  functions  are declared in the <EM>curses</EM> header files of
+       Unix systems, but none are documented.  Those noted  as  "obsolete"  by
        SVr3 remained in use by System V's <STRONG>vi(1)</STRONG> editor.
 
 
 </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_initscr.3x.html">curs_initscr(3x)</A></STRONG>,   <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,   <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,   <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,   <STRONG>putc(3)</STRONG>,  <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,  <STRONG><A HREF="curs_variables.3x.html">curs_variables(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.4                       2024-03-23                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+ncurses 6.5                       2024-05-25                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>