X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fncurses.3x.html;h=bda5c0ccd28e723041dc734a06c8b08fdb972581;hp=ddf5d2a05e5f2864829726d6771e60aad28027ad;hb=c0f109a299a82a33c16bd7af942a12ce9aefaaf0;hpb=84cf9f63bf604413fa5714ef91f83076ac8f236b;ds=inline diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html index ddf5d2a0..bda5c0cc 100644 --- a/doc/html/man/ncurses.3x.html +++ b/doc/html/man/ncurses.3x.html @@ -28,7 +28,7 @@ * sale, use or other dealings in this Software without prior written * * authorization. * **************************************************************************** - * @Id: ncurses.3x,v 1.144 2020/02/02 23:34:34 tom Exp @ + * @Id: ncurses.3x,v 1.146 2020/03/14 23:13:18 tom Exp @ --> @@ -60,7 +60,7 @@ method of updating character screens with reasonable optimization. This implementation is "new curses" (ncurses) and is the approved replacement for 4.4BSD classic curses, which has been discontinued. - This describes ncurses version 6.2 (patch 20200215). + This describes ncurses version 6.2 (patch 20200314). The ncurses library emulates the curses library of System V Release 4 UNIX, and XPG4 (X/Open Portability Guide) curses (also known as XSI @@ -1277,28 +1277,37 @@ between the XSI Curses and ncurses calls) are described in PORTABILITY sections of the library man pages. + +

Error checking

+       In many cases, X/Open Curses is vague about error conditions,  omitting
+       some of the SVr4 documentation.
+
        Unlike other implementations, this one checks parameters such as point-
-       ers  to WINDOW structures to ensure they are not null.  The main reason
-       for providing this behavior is to guard against programmer error.   The
-       standard  interface  does  not provide a way for the library to tell an
+       ers to WINDOW structures to ensure they are not null.  The main  reason
+       for  providing this behavior is to guard against programmer error.  The
+       standard interface does not provide a way for the library  to  tell  an
        application which of several possible errors were detected.  Relying on
        this (or some other) extension will adversely affect the portability of
        curses applications.
 
-       This implementation also contains several extensions:
+
+

Extensions versus portability

+       Most  of the extensions provided by ncurses have not been standardized.
+       Some  have  been  incorporated  into  other  implementations,  such  as
+       PDCurses or NetBSD curses.  Here are a few to consider:
 
        o   The routine has_key is not part of XPG4, nor is it present in SVr4.
            See the curs_getch(3x) manual page for details.
 
-       o   The  routine  slk_attr  is  not  part of XPG4, nor is it present in
+       o   The routine slk_attr is not part of XPG4,  nor  is  it  present  in
            SVr4.  See the curs_slk(3x) manual page for details.
 
-       o   The routines getmouse, mousemask,  ungetmouse,  mouseinterval,  and
-           wenclose  relating  to  mouse interfacing are not part of XPG4, nor
-           are they present in SVr4.  See the curs_mouse(3x) manual  page  for
+       o   The  routines  getmouse,  mousemask, ungetmouse, mouseinterval, and
+           wenclose relating to mouse interfacing are not part  of  XPG4,  nor
+           are  they  present in SVr4.  See the curs_mouse(3x) manual page for
            details.
 
-       o   The  routine  mcprint was not present in any previous curses imple-
+       o   The routine mcprint was not present in any previous  curses  imple-
            mentation.  See the curs_print(3x) manual page for details.
 
        o   The routine wresize is not part of XPG4, nor is it present in SVr4.
@@ -1308,28 +1317,118 @@
            tion programs.  See curs_opaque(3x) for the discussion of is_scrol-
            lok, etc.
 
-       o   This  implementation  can be configured to provide rudimentary sup-
-           port for multi-threaded  applications.   See  curs_threads(3x)  for
+       o   This implementation can be configured to provide  rudimentary  sup-
+           port  for  multi-threaded  applications.   See curs_threads(3x) for
            details.
 
-       o   This  implementation  can  also  be  configured to provide a set of
-           functions which improve the ability  to  manage  multiple  screens.
+       o   This implementation can also be configured  to  provide  a  set  of
+           functions  which  improve  the  ability to manage multiple screens.
            See curs_sp_funcs(3x) for details.
 
-       In  historic  curses  versions, delays embedded in the capabilities cr,
-       ind, cub1, ff and tab activated corresponding delay bits  in  the  UNIX
+
+

Padding differences

+       In historic curses versions, delays embedded in  the  capabilities  cr,
+       ind,  cub1,  ff  and tab activated corresponding delay bits in the UNIX
        tty driver.  In this implementation, all padding is done by sending NUL
-       bytes.  This method is slightly more expensive, but narrows the  inter-
-       face  to  the  UNIX  kernel  significantly  and increases the package's
+       bytes.   This method is slightly more expensive, but narrows the inter-
+       face to the UNIX  kernel  significantly  and  increases  the  package's
        portability correspondingly.
 
 
-

NOTES

-       The header file <curses.h>  automatically  includes  the  header  files
+

Header files

+       The  header  file  <curses.h>  automatically  includes the header files
        <stdio.h> and <unctrl.h>.
 
-       If  standard  output from a ncurses program is re-directed to something
-       which is not a tty, screen updates will be directed to standard  error.
+       X/Open Curses has more to say, but does not finish the story:
+
+           The inclusion of <curses.h> may make visible all symbols  from  the
+           headers <stdio.h>, <term.h>, <termios.h>, and <wchar.h>.
+
+       Here is a more complete story:
+
+       o   Starting   with  BSD  curses,  all  implementations  have  included
+           <stdio.h>.
+
+           BSD curses included <curses.h>  and  <unctrl.h>  from  an  internal
+           header "curses.ext" ("ext" was a short name for externs).
+
+           BSD  curses  used  <stdio.h> internally (for printw and scanw), but
+           nothing in <curses.h> itself relied upon <stdio.h>.
+
+       o   SVr2 curses added newterm(3x), which relies upon  <stdio.h>.   That
+           is, the function prototype uses FILE.
+
+           SVr4 curses added putwin and getwin, which also use <stdio.h>.
+
+           X/Open Curses documents all three of these functions.
+
+           SVr4  curses  and  X/Open  Curses  do  not require the developer to
+           include  <stdio.h>  before  including  <curses.h>.   Both  document
+           curses showing <curses.h> as the only required header.
+
+           As a result, standard <curses.h> will always include <stdio.h>.
+
+       o   X/Open  Curses is inconsistent with respect to SVr4 regarding <unc-
+           trl.h>.
+
+           As  noted  in  curs_util(3x),  ncurses  includes  <unctrl.h>   from
+           <curses.h> (like SVr4).
+
+       o   X/Open's comments about <term.h> and <termios.h> may refer to HP-UX
+           and AIX:
+
+           HP-UX curses includes <term.h> from <curses.h> to declare setupterm
+           in curses.h, but ncurses (and Solaris curses) do not.
+
+           AIX  curses includes <term.h> and <termios.h>.  Again, ncurses (and
+           Solaris curses) do not.
+
+       o   X/Open says that <curses.h> may include <term.h>, but there  is  no
+           requirement that it do that.
+
+           Some  programs  use  functions  declared  in  both  <curses.h>  and
+           <term.h>, and must include both headers in the same  module.   Very
+           old  versions  of  AIX  curses required including <curses.h> before
+           including <term.h>.
+
+           Because ncurses header files include the headers needed  to  define
+           datatypes used in the headers, ncurses header files can be included
+           in any order.  But for portability, you should  include  <curses.h>
+           before <term.h>.
+
+       o   X/Open  Curses  says  "may make visible" because including a header
+           file does not necessarily make all symbols in it visible (there are
+           ifdef's to consider).
+
+           For  instance,  in  ncurses <wchar.h> may be included if the proper
+           symbol is defined, and if ncurses is configured for  wide-character
+           support.   If the header is included, its symbols may be made visi-
+           ble.  That depends on the value used for _XOPEN_SOURCE feature test
+           macro.
+
+       o   X/Open  Curses  documents  one  required header, in a special case:
+           <stdarg.h>  before  <curses.h>  to  prototype  the  vw_printw   and
+           vw_scanw  functions  (as well as the obsolete the vwprintw and vws-
+           canw functions).  Each of those uses a va_list parameter.
+
+           The two obsolete functions were  introduced  in  SVr3.   The  other
+           functions  were  introduced  in  X/Open  Curses.   In between, SVr4
+           curses provided for  the  possibility  that  an  application  might
+           include either <varargs.h> or <stdarg.h>.  Initially, that was done
+           by using void* for the va_list parameter.  Later,  a  special  type
+           (defined  in <stdio.h>) was introduced, to allow for compiler type-
+           checking.  That special type is always available, because <stdio.h>
+           is always included by <curses.h>.
+
+           None of the X/Open Curses implementations require an application to
+           include <stdarg.h>  before  <curses.h>  because  they  either  have
+           allowed  for  a  special type, or (like ncurses) include <stdarg.h>
+           directly to provide a portable interface.
+
+
+

NOTES

+       If standard output from a ncurses program is re-directed  to  something
+       which  is not a tty, screen updates will be directed to standard error.
        This was an undocumented feature of AT&T System V Release 3 curses.
 
 
@@ -1384,7 +1483,14 @@
 
  • FILES
  • SEE ALSO
  • EXTENSIONS
  • -
  • PORTABILITY
  • +
  • PORTABILITY + +
  • NOTES
  • AUTHORS