Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Aug 28, 2015
  1. cleanup SunOS workarounds in ncurses and ncursesw since update to ncu…

    richard authored
    …rses 6.0
    resolve for PR pkg/50175
Commits on Aug 17, 2015
  1. Update to 6.0:

    wiz authored
       This  release  is  designed  to  be source-compatible with ncurses 5.0
       through  5.9;  providing  a  new  application  binary interface (ABI).
       Although  the  source can still be configured to support the ncurses 5
       ABI,  the  intent  of  the  release is to provide extensions which are
       generally useful, but binary-incompatible with ncurses 5:
         * Extend  the  cchar_t  structure to allow more than 16 colors to be
         * Modify  the  encoding  of mouse state to make room for a 5th mouse
           button.  That  allows  one  to use ncurses with a wheel mouse with
           xterm or similar X terminal emulators.
       There are, of course, numerous other improvements, including
         * fixes made based on the Clang and Coverity static analyzers.
         * memory leak fixes using Valgrind
       The  release  notes  mention  some  bug-fixes,  but are focused on new
       features  and  improvements to existing features log since ncurses 5.9
       While  the intent of the release is to provide a new stable ABI, there
       are other development activities which are summarized below.
         * The  original  release  plan,  e.g., for "5.10" was to improve the
           MinGW port. Ultimately that was completed (wide-character support,
           mouse,  etc),  but  was  deferred  to focus on termcap support and
           performance  issues.  Also, pinpointing the problems with Console2
           took a while.
         * A  review  of  termcap  compatibility in 2011 led to several minor
           fixes  in  the  library  and improvements to utilities. To do this
           properly,  a  review of the various extent termcap implementations
           was needed.
           The [11]termcap library checker (tctest) (not part of ncurses) was
           one    result.    A   followup   review   of   performance   using
           [12]ncurses-examples in 2014 led to additional improvements.
         * Output buffering provided a further, but worthwhile distraction. A
           bug  report  in  2012  regarding  the  use  of  signal handlers in
           ncurses)  pointed  out  [13]a  problem  with  the  use  of  unsafe
           functions  for  handling SIGTSTP. Other signals could be addressed
           with workarounds; repairing SIGTSTP required a different approach.
           The  solution  required changing internal behavior of the library:
           how it handles output buffering.
           Now  ncurses buffers its own output, independently of the standard
           output.  A few applications relied upon the library's direct reuse
           of  the  standard  output  buffering;  however that is unspecified
           behavior  and  has  never been a recommended practice. Identifying
           these  applications  as  well  as  refining  the  change to permit
           low-level applications to work consistently took time.
         * Since  the introduction of the experimental support for 256 colors
           early  in  [14]2005  (released in [15]ncurses 5.5), there has been
           increased  user  interest. Almost all packagers continue providing
           the ncurses ABI 5 which cannot support 256 colors.
         * Symbol  versioning,  or  the  lack  of  it in ncurses, is the main
           reason why packagers would be reluctant to add a new ncurses ABI.
           This  release  provides  the  new  ABI along with script-generated
           lists  of versioned symbols which can be used for both ABI 5 and 6
           (with  distinct names to keep the two separate). This took time to
           development, as reported in [16]Symbol versioning in ncurses.
      Library improvements
      Output buffering
       X/Open curses provides more than one initialization function:
         * [17]initscr (the simplest) accepts no parameters.
         * [18]newterm accepts parameters for the stream input and output
         * [19]setupterm (the low-level function) accepts a parameter for the
           file descriptor of the output.
       They are documented in X/Open as if initscr calls newterm using stdout
       for   output  stream,  and  in  turn  newterm  calls  setupterm  using
       fileno(stdout)  for  the file descriptor. As long as an implementation
       acts  as if it does this, it conforms. In practice, implementations do
       what  is  implied.  This  creates  a  problem: the low-level setupterm
       function's  file  descriptor  is  unbuffered,  while  newterm  implies
       buffered  output.  X/Open  Curses says that all output is done through
       the  file  descriptor,  and  does  not  say  how  the output stream is
       actually used.
       Initially,  ncurses used the file descriptor (obtained from the output
       stream  passed to newterm) for changing the terminal modes, and relied
       upon  the  output  parameter of newterm for buffered output. Later (to
       avoid  using  unsafe  buffered  I/O  in  signal handlers), ncurses was
       modified  to use the file descriptor (unbuffered output) when cleaning
       up  on receipt of a signal. Otherwise (when not handling a signal), it
       continued to use the buffered output.
       That  approach  worked reasonably well and as a side effect, using the
       same buffered output as an application might use for printf meant that
       no   flushing   was   needed   when   switching  between  normal-  and
       There were a couple of problems:
         * to get good performance, curses (not only ncurses, but SVr4 curses
           in general) set an output buffer using setbuf or similar function.
           There  is no standard (or portable) way to turn that output buffer
           off,  and  revert  to  line-buffering.  The  [20]NCURSES_NO_SETBUF
           environment variable did make it optional.
         * to  handle SIGTSTP (the "stop" signal), ncurses relied upon unsafe
           functions.  That  is,  due  to  the  complexity of the feature, it
           relied  upon reusing existing functions which should not have been
           called via the signal handler.
       Conveniently, solving the second problem (by making ncurses do its own
       output  buffering)  also  fixed  the first one. But there were special
       cases to resolve: [21]low-level functions such as mvcur, putp, vidattr
       explicitly  use  the  standard  output.  Those  functions  were reused
       internally, and required modification to distinguish whether they were
       used by the high-level or low-level interfaces.
       Finally, there may still be a few programs which should be modified to
       improve their portability, e.g., adding an
       when  switching  from "[22]shell" mode to "[23]program" (curses) mode.
       Those are fairly rare because most programmers have learned not to mix
       printf and [24]printw.
      Symbol versioning
       This  release  introduces symbol-versioning to ncurses because without
       it,  the  change of ABI would be less successful. A lengthy discussion
       will  be  presented  in  [25]Symbol versioning in ncurses. These notes
       summarize what has changed, and what can be done with the new release.
       Symbol-versioning  allows  the  developers  of  a library to mark each
       public  symbol  (both  data and functions) with an identifier denoting
       the  library  name  and  the  version for which it was built. By doing
       this, users of the library have a way to help ensure that applications
       do not accidentally load an incompatible library. In addition, private
       symbols can be hidden entirely.
       This   release   provides   sample   files   for  the  four  principal
       configurations  of  ncurses libraries: ncurses, ncursesw, ncursest and
       ncursestw. Each sample is given in two forms:
              These list all public symbols, together with version names.
              These list all public symbols, without version names.
       The  sample  files  are generated by scripts which take into account a
       few special cases such as [26]tack to omit many of the ncurses private
       symbols  (beginning with "_nc_"). Here are counts of globals versus
          Config   Symbols Globals Locals "_nc_"
         ncurses       976     796    180    332
         ncursesw     1089     905    184    343
         ncursest      979     804    175    358
         ncursestw    1098     914    184    372
       Although only four sample configurations are presented, each is formed
       by  merging  symbols  from  several  combinations  of configure-script
       options, taking into account advice from downstream packagers. Because
       they  are  formed by merging, the sample files may list a symbol which
       is  not  in  a  given package. That is expected. The samples have been
       tested  and  are  working  with  systems  (such as Fedora, FreeBSD and
       Debian)  which  fully  support  this  feature. There are other systems
       which  do  not  support the feature, and a few (such as Solaris) which
       provide incomplete support.
       The  version-naming convention used allows these sample files to build
       distinct libraries for ABI 5 and 6. Version names consist of
         * configuration   name,  e.g.,  "NCURSESW"  for  the  wide-character
         * ABI version (if not 5)
         * library  name  for two special cases which have the same interface
           across configurations: "TINFO" and "TIC"
         * release version
         * patch date (for the release version)
       For  example,  running  nm  -D  on  the libraries in the ncurses6 test
       package shows these symbol-versions:
    0000000000000000 A NCURSES6_TIC_5.0.19991023
    0000000000000000 A NCURSES6_TIC_5.1.20000708
    0000000000000000 A NCURSES6_TIC_5.5.20051010
    0000000000000000 A NCURSES6_TIC_5.7.20081102
    0000000000000000 A NCURSES6_TIC_5.9.20150530
    0000000000000000 A NCURSES6_TINFO_5.0.19991023
    0000000000000000 A NCURSES6_TINFO_5.1.20000708
    0000000000000000 A NCURSES6_TINFO_5.2.20001021
    0000000000000000 A NCURSES6_TINFO_5.3.20021019
    0000000000000000 A NCURSES6_TINFO_5.4.20040208
    0000000000000000 A NCURSES6_TINFO_5.5.20051010
    0000000000000000 A NCURSES6_TINFO_5.6.20061217
    0000000000000000 A NCURSES6_TINFO_5.7.20081102
    0000000000000000 A NCURSES6_TINFO_5.8.20110226
    0000000000000000 A NCURSES6_TINFO_5.9.20150530
    0000000000000000 A NCURSESW6_5.1.20000708
    0000000000000000 A NCURSESW6_5.3.20021019
    0000000000000000 A NCURSESW6_5.4.20040208
    0000000000000000 A NCURSESW6_5.5.20051010
    0000000000000000 A NCURSESW6_5.6.20061217
    0000000000000000 A NCURSESW6_5.7.20081102
    0000000000000000 A NCURSESW6_5.8.20110226
    0000000000000000 A NCURSESW6_5.9.20150530
       As  a special case, this release (which makes the final change for ABI
       5) is marked with release version 5.9 and patch date 20150530.
       The new release has several improvements for performance and building.
       For instance:
         * several  files  in ncurses- and progs-directories were modified to
           allow  const  data used in internal tables to be put by the linker
           into the readonly text segment.
         * various improvements were made to building the Ada95 binding, both
           in simplifying the generated files as well as improving the way it
           uses gnatmake
       There are also new features in the libraries:
         * added [27]use_tioctl function
         * added  [28]wgetdelay  to  retrieve  _delay  member of WINDOW if it
           happens to be opaque, e.g., in the pthread configuration.
         * added [29]A_ITALIC extension.
         * added  form  library  extension [30]O_DYNAMIC_JUSTIFY option which
           can  be  used to override the different treatment of justification
           for static versus dynamic fields .
         * rewrote  [31]putwin  and  [32]getwin,  making  an extended version
           which  is  capable of reading screen-dumps between the wide/normal
           ncurses  configurations.  These are text files, except for a magic
           code at the beginning:
    0       string          \210\210        Screen-dump (ncurses)
         * several changes to mouse support include:
              + added decoder for xterm SGR 1006 mouse mode.
              + added experimental support for "%u" format to terminfo.
              + improved  behavior  of  wheel-mice for xterm protocol: noting
                that  there  are only button-presses for buttons "4" and "5",
                so   there  is  no  need  to  wait  to  combine  events  into
                double-clicks .
       There   are   a   few  new  configure  options  dealing  with  library
         * add "--enable-ext-putwin" configure option to turn on the extended
           putwin/getwin.  By default, this is enabled for ABI 6 and disabled
           with ABI 5.
         * add  "--enable-string-hacks" option to control whether strlcat and
           strlcpy  may  be  used. Because ncurses already does the requisite
           buffer-limit  checks,  this feature is mainly of interest to quiet
           compiler-warnings on a few systems.
         * add  configure  option  "--with-tparm-arg"  to  allow  [33]tparm's
           parameters  to  be  something more likely to be the same size as a
           pointer, e.g., intptr_t (again, the default is set for ABI 6).
      Program improvements
       Most of the termcap-related changes based on development of [34]tctest
       (termcap  library  checker)  are  implemented  in  the tic and infocmp
       programs   rather   than  affecting  the  library.  As  noted  in  the
       [35]discussion  of  tctest,  ncurses's  ability  to  translate between
       terminfo and termcap formats has been improved at different times, but
       subject  to  feedback from "real" termcap users. There are very few of
       those.  Nowadays,  virtually  all  termcap users are using ncurses (or
       NetBSD, with its own terminfo library) and their programs are actually
       using terminfo rather than termcap data.
       Still,  there  are a few. A comment about the translation of the ASCII
       NUL character prompted a review:
         * Both   terminfo   and   termcap   store   string  capabilities  as
           NUL-terminated strings.
         * In terminfo, a \0 in a terminal description is stored as \200.
         * There are no (known) terminals which would behave differently when
           sent \0 or \200.
         * When  translating  to  terminfo  format (or displaying a printable
           version of an entry using infocmp), ncurses shows \200 as \0.
         * It has done this since 1998 (quoting from the NEWS file):
            + modify _nc_tic_expand() to generate \0 rather than \200.
            + correct translation of terminfo "^@", to \200, like \0.
         * However,  the  _nc_tic_expand  function (which optionally produces
           terminfo  or termcap format) did not address this special case for
           termcap.  Even  the  later  4.4BSD  [37]cgetstr  interprets  a  \0
           literally,  ending  that  string  (rather  than using the terminfo
       As  a  result of the review, several improvements were made to ncurses
       translation to/from termcap format -- and improving the checks made in
       tic  for  consistency  of  entries.  Most  of these are not of general
       interest, except for two new command-line options for tic and infocmp:
         * the  "-0"  option  generates  termcap/terminfo  source on a single
         * the  "-K"  option  provides stricter BSD-compatibility for termcap
       Other user-visible improvements and new features include:
         * added  "-D"  option  to  tic  and  infocmp,  to  show the database
           locations that it could use.
         * added "-s" option to toe, to sort its output.
         * extended  "-c" and "-n" options of infocmp to allow comparing more
           than two entries.
         * modified  toe's report when "-a" and "-s" options are combined, to
           add a column showing which entries belong to a given database.
         * modified  the clear program to take into account the "E3" extended
           capability to clear the terminal's scrollback buffer.
       Along  with  the library and utilities, many improvements were made to
       the  [38]ncurses-examples.  Some  were  made  to  allow  building (and
       comparison-testing) against NetBSD curses and PDCurses. Both lack some
       of  the  X/Open Curses features, necessitating customization. But this
       activity  was  useful  because  it  showed  some remaining performance
       issues (which have been resolved in this release).
       These changes were made to verify compatibility or compare performance
       of ncurses:
         * made  workarounds  for compiling test-programs with NetBSD curses,
           though it lacks some common functions such as [39]use_env.
         * added dots_termcap test-program
         * added  dots_curses test-program, for comparison with the low-level
         * added   test_setupterm  test-proram  to  demonstrate  normal/error
           returns from the setupterm and restartterm functions.
         * added  "-d",  "-e"  and  "-q"  options  to  the  demo_terminfo and
           demo_termcap test-programs.
         * added   "-y"   option   to   demo_termcap  and  test/demo_terminfo
           test-programs   to   demonstrate  behavior  with/without  extended
         * modified  demo_termcap  and  demo_terminfo  test-programs  to make
           their  options  more  directly  comparable, and add "-i" option to
           specify  a  terminal  description  filename  to parse for names to
         * rewrote   the  tests  for  [40]mvderwin  and  test  for  recursive
           [41]mvwin in the movewindow test-program.
       These changes were made to help with the MinGW port:
         * added   test-screens   to   the   ncurses   test-program  to  show
           256-characters at a time, to help with MinGW port.
         * modified the view test-program to load UTF-8 when built with MinGW
           by  using  regular win32 API because the MinGW functions mblen and
           mbtowc do not work.
         * added "-s" option to the view test-program to allow it to start in
           single-step mode, reducing size of trace files when it is used for
           debugging MinGW changes.
       These changes were made to verify new extensions in ncurses:
         * added   [42]form_driver_w   entrypoint   to  wide-character  forms
           library, as well as form_driver_w test-program.
         * modified  ncurses  test-program's  b/B tests to display lines only
           for  the  attributes which a given terminal supports, to make room
           for an italics test.
         * modified  ncurses  test-program,  adding  "-E" and "-T" options to
           demonstrate use_env versus use_tioctl.
         * modified ncurses test-program's c/C tests to cycle through subsets
           of   the   total   number   of   colors,   to   better  illustrate
           8/16/88/256-colors by providing directly comparable screens.
         * modified the ncurses test-program to also show position reports in
           'a' test.
       These changes were made to make the examples more useful:
         * added scripts for building dpkg and rpm test-packages
         * modified  the  hanoi  test-program  to  show the minimum number of
           moves possible for the given number of tiles.
         * modified  the  knight  test-program  to show the number of choices
           possible for each position in automove option, e.g., to allow user
           to follow Warnsdorff's rule to solve the puzzle.
      Terminal database
       This  release  provides  improvements  to  tic's "-c" checking option,
       which was used for example to
         * make sgr in several entries agree with other caps.
         * correct  padding  in  some  entries  where  earlier  versions  had
           miscounted the number of octal digits.
       There are several new terminal descriptions:
         * [43]mlterm is now aliased to mlterm3
         * [44]nsterm is now derived from nsterm-256color
         * [45]putty-sco
         * [46]teken is FreeBSD's "xterm" console.
         * [47]terminator
         * [48]terminology
         * [49]tmux is derived from screen.
         * several  screen.XXX  entries support the respective variations for
           256 colors.
         * [50]simpleterm is now 0.5
         * [51]vte is aliased to vte-2012
         * [52]vt520ansi
       A few entries use extensions (user-defined terminal capabilities):
         * E3,  used  in  linux,  putty  and  xterm-basic  is  tested  in the
           [53]clear program to erase a terminal's scrollback.
         * TS  is  used  in the [54]xterm+sl building block to help deprecate
           the misuse of tsl for xterm's title-string.
         * XT  is  used  in  some  terminfo entries to improve usefulness for
           other  applications  than screen, which would like to pretend that
           xterm's title is a status-line.
         * xm  is  used  in  examples  [55]xterm-1005  and  [56]xterm-1006 to
           illustrate a way to make mouse handling more general
       A   few   terminals   support  italics  and/or  dim  capabilities.  In
       particular,  screen  does  not.  Documented that, and accommodated the
       terminals where this feature works with the A_ITALIC extension.
         * konsole, mlterm3 (italics)
         * nsterm (dim)
         * screen (dim)
         * vte (dim, italics)
         * xterm (dim, italics)
       As usual, this release
         * improves documentation by describing new features,
         * attempts  to  improve the description of features which users have
           found confusing
         * fills  in overlooked descriptions of features which were described
           in the [57]NEWS file but treated sketchily in manual pages.
       In  addition,  the  mechanism  for  producing  HTML  versions  of  the
       documentation has been improved:
         * use an improved version of [58]man2html to generate html manpages.
         * regenerated  [59]NCURSES-Programming-HOWTO.html to fix some of the
           broken html emitted by docbook.
      Interesting bug-fixes
         * Ada95 binding:
              + modify  makefile  rules  to ensure that the PIC option is not
                used when building a static library
              + make  Ada95  build-fix  for  big-endian architectures such as
                sparc.  This undoes one of the fixes from [60]20110319, which
                added an "Unused" member to representation clauses, replacing
                that with pragmas to suppress warnings about unused bits.
         * Color and attributes:
              + parenthesize  parameter  of  COLOR_PAIR  and  PAIR_NUMBER  in
                curses.h in case it happens to be a comma-expression.
              + improve  [61]20021221  workaround  for broken acs, handling a
                case  where  that ACS_xxx character is not in the acsc string
                but there is a known wide-character which can be used.
              + modify  [62]init_pair  to  accept  -1's for color value after
                [63]assume_default_colors has been called.
              + add  a  check  in [64]start_color to limit color-pairs to 256
                when extended colors are not supported.
         * Resizing the screen:
              + propagate  error-returns  from  wresize,  i.e.,  the internal
                increase_size    and    decrease_size    functions    through
              + add  check  for  zero/negative  dimensions for resizeterm and
              + modify  resizeterm to always push a KEY_RESIZE onto the fifo,
                even  if  screensize  is  unchanged. Modify library to push a
                KEY_RESIZE  if there was a SIGWINCH, even if it does not call
                resizeterm).   These  changes  eliminate  the  case  where  a
                SIGWINCH  is  received,  but  ERR  is returned from wgetch or
                wgetnstr because the screen dimensions did not change.
         * Low-level interfaces
              + fix  an old bug in the termcap emulation; "%i" was ignored in
                tparm  because  the parameters to be incremented were already
                on the internal stack.
              + change  "%l" behavior in tparm to push the string length onto
                the  stack  rather  than saving the formatted length into the
                output buffer.
              + modify  name-comparison  for  tgetstr,  etc.,  to accommodate
                legacy  applications  as well as to improve compatbility with
                BSD 4.2 termcap implementations (see note for [66]980725).
         * High-level interfaces
              + modify internal recursion in wgetch which handles cooked mode
                to  check if the call to wgetnstr returned an error. This can
                happen  when  both nocbreak and nodelay are set, for instance
                (see note for [67]960418).
              + add a check in internal function waddch_nosync to ensure that
                tab characters are treated as control characters; some broken
                locales claim they are printable.
              + modify  menu  library  to  ensure  that  a  menu's top-row is
                adjusted  as needed to ensure that the current item is on the
              + fix  special  case  where double-width character overwrites a
                single- width character in the first column.
      Configuration changes
        Major changes
       The ncurses 6.0 configure script makes changes to the default value of
       several  configure options, depending on the --with-abi-version option
       (i.e., whether its value is "5" or "6"):
              Feature  introduced  in  [68]970405  supports  the use of const
              where  X/Open  Curses  should  have, but did not. NetBSD curses
              does something similar with const.
              Extends  the  cchar_t structure to allow more than 16 colors to
              be   encoded.   This   applies   only   to  the  wide-character
              (--enable-widec) configuration.
              Modifies  the  encoding  of  mouse state to make room for a 5th
              mouse button. That allows one to use ncurses with a wheel mouse
              with xterm or similar X terminal emulators.
              Modifies  the  file-format  written  by putwin to use printable
              text  rather  than binary files, allowing getwin to read screen
              dumps  written by differently-configured ncurses libraries. The
              extended  getwin  can  still  read binary screen dumps from the
              same  configuration  of  ncurses.  This does not change the ABI
              (the binary interface seen by calling applications).
              Modifies  the  FIELDTYPE structure used for the form library to
              make it more generic.
              Allows  an  application  to  define _LP64 to declare chtype and
              mmask_t  as  simply "unsigned" rather than the configured types
              using the --with-chtype and --with-mmask_t options.
              Compile-in support for extended functions which accept a SCREEN
              pointer,  reducing  the  need  for juggling the global SP value
              with [69]set_term and [70]delscreen.
              Makes chtype explicitly a 32-bit unsigned value.
              Makes mmask_t explicitly a 32-bit unsigned value.
              X/Open  Curses  declares  [71]tparm  using long for each of the
              parameters  aside  from  the  formatting string, presuming that
              long  and  char*  are the same size. This configure option uses
              intptr_t which provides a better guarantee of the sizes.
       The  configure  script  no longer checks for antique compilers; c89 is
       assumed  as  a  minimum. There are a few features from later revisions
       which  are  used  when available. The configure script makes checks to
       turn on useful warnings from clang, gcc and icc. You should be able to
       build  ncurses  6.0  with  any  of  the  current (or not so current) C
       compilers available in 2015.
       The configure script, by the way, makes changes which do not work with
       systems  whose  /bin/sh is non-POSIX. This mainly affects Solaris (the
       other  vendor  unix systems have followed the POSIX guidelines for the
       past  twenty  years).  If  you  must  build  on  Solaris, its [72]xpg4
       binaries suffice, e.g.,
         WHAT=`hostname|sed -e 's/\..*//'`
         cat >>$OUT <<EOF/
         ** `date`
         ** node: $WHAT
         ** user: `id`
         ** conf: $*
         if test -f /usr/xpg4/bin/sh
                 export CONFIG_SHELL
         rm -f config.status config.cache
         $SHELL ./configure --verbose \
                 --disable-echo \
                 --disable-overwrite \
                 --enable-warnings \
                 --with-warnings \
                 --prefix=$TOP $* 2>&1 | tee -a $OUT
       Other major changes to the configure script include:
         * ABI 6 is now the default, intending that the existing ABI 5 should
           build as before using the "--with-abi-version=5" option.
         * added   --with-extra-suffix   option   to   help  with  installing
           nonconflicting  ncurses6  packages,  e.g.,  avoiding  header-  and
           NOTE: as a side-effect, this renames
         adacurses-config to adacurses5-config and
         adacursesw-config to adacursesw5-config
         * the  configure  script  looks  for gnatgcc if the Ada95 binding is
           built,  in  preference  to  the  default  gcc/cc.  The script also
           ensures  that  the  Ada95  binding  is  built  with  the  level of
           optimization as the C libraries.
         * the  configure script captures define's related to -D_XOPEN_SOURCE
           from  the  configure check and adds those to the *-config and *.pc
           files, to simplify use for the wide-character libraries.
Commits on Sep 16, 2014
  1. Install all needed header files and a -config script.

    wiz authored
    Suggested by Thomas Dickey (upstream)
    implemented by Leonard Schmidt.
Commits on Nov 23, 2013
Commits on Feb 18, 2012
  1. fixes detection for ncurses dependency patterns for the case ncursesw…

    obache authored
    … package
    is not installed.
Commits on Feb 17, 2012
  1. Try to buildlink with ncurses with same conditions as ncursesw was bu…

    obache authored
    Fixes buildlink for the case builtin ncurses was not used for building ncursesw.
Commits on Feb 28, 2011
  1. Changes 5.8:

    adam authored
    Interface changes
    * turn on _XOPEN_CURSES definition in curses.h.
    * change _nc_has_mouse to has_mouse, reflect its use in C++ and Ada95.
    * add is_pad and is_subwin functions for opaque access to the WINDOW structure.
    * add tiparm, based on review of X/Open Curses Issue 7.
    Library Improvements
    * add a terminal driver for Windows console, which supports a MinGW port to
    * add extended functions which specify the SCREEN pointer for several curses
      functions which use the global SP.
    * improve the NCURSES_NO_UTF8_ACS feature by adding a check for an extended
      terminfo capability U8.
    * improve performance of tigetstr, etc., by using hashing code from tic.
    * add WACS_xxx definitions to wide-character configuration for thick- and
    * modify init_pair to allow caller to create extra color pairs beyond the
      color_pairs limit, which use default colors.
    Improvements to Programs
    * add tabs program.
    * modify tic's -I/-C dump to reformat acsc strings into canonical form (sorted,
      unique mapping).
    * add checks in tic for inconsistent cursor-movement controls, and for
      inconsistent printer-controls.
    * add special case to _nc_infotocap (used by tic and infocmp) to recognize the
      setaf/setab strings from xterm+256color and xterm+88color, and provide a
      reduced version which works with termcap.
Commits on Jul 26, 2010
  1. ncurses does a bunch of sed magic at *install* time to adjust the

    dholland authored
    paths in include directives in the headers it installs. (I'm not going
    to ask who thought this was a good idea...) Since this package
    bypasses the ncurses install goo, we need to replicate at least some
    of the behavior with SUBST in order to get working header files out.
    Should fix PR 43435 and may also fix some problems with ncursesw and
    tin that I've had reported to me.
Commits on Jun 21, 2010
  1. Determine the installed terminfo database files dynammically. This deals

    tron authored
    not only with the different directory structure under Mac OS X (due to
    the case-insensitive file-system) but also with the files which don't
    get installed under Solaris. Bump the package revision of the "ncurses"
    package as the binary package changed under Mac OS X.
    This fixes PR pkg/43446 by Edgar Fuss.
Commits on Feb 25, 2010
  1. also fake a <ncursesw/ncurses.h> header to make pkgs expecting

    drochner authored
    ncursesw work with native wide curses without changes
Commits on Jan 11, 2010
Commits on Jun 14, 2009
  1. Remove @dirrm entries from PLISTs

    joerg authored
Commits on Mar 20, 2009
  1. Simply and speed up files and processing.

    joerg authored
    This changes the files to use an include guard for the
    recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
    BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
    variable BUILDLINK_TREE. Each file adds a pair of
    enter/exit marker, which can be used to reconstruct the tree and
    to determine first level includes. Avoiding := for large variables
    (BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
    The include guard reduces system time by avoiding reading files over and
    over again. For complex packages this reduces both %user and %sys time to
    half of the former time.
Commits on Jan 18, 2009
  1. Fix typo: H_NCURSES -> H_NCURSESW. Fixes PR 38665.

    dholland authored
    and also reinvented recently by Sergey Svishchev.
Commits on Nov 5, 2008
  1. Update to 5.7:

    wiz authored
    New features and improvements:
        * library
    	  o new flavor of the ncurses library provides rudimentary
    	  support for POSIX threads. Several functions are reentrant,
    	  but most require either a window-level or screen-level
    	    (This is API-compatible, but not ABI-compatible with
    	    the normal library).
    	  o add NCURSES_OPAQUE symbol to curses.h, will use to make
    	  structs opaque in selected configurations.
    	  to curses.h to make it simpler to tell if the extended
    	  functions and/or colors are declared.
              o add wresize to C++ binding
              o eliminate fixed-buffer vsprintf calls in C++ binding.
    	  o add several functions to C++ binding which wrap C
    	  functions that pass a WINDOW* parameter.
              o adapt mouse-handling code from menu library in form-library
              o improve tracing for form library, showing created forms, fields, etc.
              o make $NCURSES_NO_PADDING feature work for termcap interface .
    	  o add check to trace-file open, if the given name is a
    	  directory, add ".log" to the name and try again.
    	  o several new manpages: curs_legacy.3x, curs_memleaks.3x,
    	  curs_opaque.3x and curs_threads.3x
        * programs:
    	  o modified three test-programs to demonstrate the threading
    	  support in this version: ditto, rain, worm.
    	  o several new test-programs: demo_panels, dots_mvcur,
    	  inch_wide, inchs, key_name, key_names, savescreen, test_arrays, test_get_wstr, test_getstr,
    	  test_instr, test_inwstr and test_opaque.
    	  o add adacurses-config to the Ada95 install.
    	  o modify tic -f option to format spaces as \s to prevent
    	  them from being lost when that is read back in unformatted
    	  o The tack program is now distributed separately from
        * terminal database
              o added entries:
                    + Eterm-256color, Eterm-88color and rxvt-88color
                    + aterm
                    + konsole-256color
                    + mrxvt
                    + screen.mlterm
                    + screen.rxvt
    		+ teraterm4.59 is now the primary primary teraterm
    		entry, renamed original to teraterm2.3
                    + 9term terminal
                    + Newbury Data entries
              o updated/improved entries:
                    + gnome to version 2.22.3
                    + h19, z100
                    + konsole to version 1.6.6
                    + mlterm, mlterm+pcfkeys
    		+ xterm, and building-blocks for function-keys to
    		xterm patch #230.
    Major bug fixes:
        * add logic to tic for cancelling strings in user-defined
        capabilities (this is needed for current konsole terminfo
        * modify mk-1st.awk so the generated makefile rules for linking
        or installing shared libraries do not first remove the library,
        in case it is in use, e.g., by /bin/sh.
        * correct check for notimeout in wgetch.
        * fix a sign-extension bug in infocmp's repair_acsc function.
        * change winnstr to stop at the end of the line.
        * make Ada95 demo_panels example work.
        * fix for adding a non-spacing character at the beginning of a line.
        * fill in extended-color pair to make colors work for
        wide-characters using extended-colors.
        * improve refresh of window on top of multi-column characters,
        taking into account split characters on left/right window
        * modify win_wchnstr to ensure that only a base cell is returned
        for each multi-column character.
        * improve waddch and winsch handling of EILSEQ from mbrtowc by
        using unctrl to display illegal bytes rather than trying to
        append further bytes to make up a valid sequence.
        * restore curs_set state after endwin/refresh
        * modify keyname to use "^X" form only if meta has been called,
        or if keyname is called without initializing curses, e.g., via
        initscr or newterm.
        * modify unctrl to check codes in 128-255 range versus isprint.
        If they are not printable, and locale was set, use a "M-" or
        "~" sequence.
        * improve resizeterm by moving ripped-off lines, and repainting
        the soft-keys.
        * modify form library to accept control characters such as
        newline in set_field_buffer, which is compatible with Solaris.
        * use NCURSES_MOUSE_MASK in definition of BUTTON_RELEASE, etc.,
        to make those work properly with the --enable-ext-mouse
        * correct some functions in Ada95 binding which were using
        return value from C where none was returned.
        * reviewed/fixed issues reported by Coverity and Klocwork tools.
        * configure script:
              o new options:
    		control whether static string tables are generated
    		as single large strings (to improve startup
    		performance), or as array of individual strings.
    		control whether shared libraries are relinked
    		(during install) when rpath is enabled.
    		make explicit whether tic library depends on
    		ncurses/ncursesw library.
    		override the configure script's check if the
    		filesystem supports mixed-case filenames. This
    		allows one to control how the terminal database
    		maps to the filesystem. For filesystems that do
    		not support mixed-case, the library uses generate
    		2-character (hexadecimal) codes for the lower-level
    		of the filesystem terminfo database
    		builds a different flavor of the ncurses library
    		(ncursest) which improves reentrant use of the
    		library by reducing global and static variables
    		(see the "--with-pthread" option for the threaded
    		use weak-symbols for linking to the POSIX thread
    		library, and use the same soname for the ncurses
    		shared library as the normal library (caveat: the
    		ABI is for the threaded library, which makes global
    		data accessed via functions).
    		build with the POSIX thread library (tested with
    		AIX, GNU/Linux, FreeBSD, OpenBSD, HPUX, IRIX64,
    		Solaris, Tru64).
    		build/install the tic-support functions in a separate
              o improved options:
                    requires the wide-character configuration.
    		ignore option value "unsigned" is always added to
    		the type in curses.h; do the same for --with-mmask-t.
                    build-fix for redefinition of strndup.
    		    + accepts a parameter which is the install-prefix
    		    of a given Berkeley Database.
    		    + the $LIBS environment variable overrides the
    		    search for the db library.
                    assumed when "--disable-database" is used.
        * other configure/build issues:
              o build-fixes for LynxOS
              o modify shared-library rules to allow FreeBSD 3.x to use rpath.
              o build-fix for FreeBSD "contemporary" TTY interface.
              o build-fixes for AIX with libtool.
              o build-fixes for Darwin and libtool.
              o modify BeOS-specific ifdef's to build on Haiku.
    	  o corrected gcc options for building shared libraries on
    	  Solaris and IRIX64.
              o change shared-library configuration for OpenBSD, make rpath work.
              o build-fixes for using libutf8, e.g., on OpenBSD 3.7
    	  o add "-e" option in ncurses/ when generating
    	  source-files to force earlier exit if the build environment
    	  fails unexpectedly.
              o add support for shared libraries for QNX.
    	  o change delimiter in from '%' to '@', to
    	  avoid substitution by IBM xlc to '#' as part of its
    	  extensions to digraphs.
        * library:
    	  o rewrite wrapper for wcrtomb, making it work on Solaris.
    	  This is used in the form library to determine the length
    	  of the buffer needed by field_buffer.
    	  o add/use configure script macro CF_SIG_ATOMIC_T, use
    	  the corresponding type for data manipulated by signal
    	  o set locale in misc/ since it uses a
    	  o disable GPM mouse support when $TERM does not happen
    	  to contain "linux", since Gpm_Open no longer limits its
    	  assertion to terminals that it might handle, e.g., within
    	  "screen" in xterm.
    	  o reset mouse file-descriptor when unloading GPM library.
        * test programs:
    	  o update test programs to build/work with various UNIX
    	  curses for comparisons.
Commits on Jun 8, 2008
  1. Add missing @dirrm.

    obache authored
Commits on Feb 29, 2008
  1. Provide value for BUILDLINK_LDADD.ncursesw that can be used by packages

    jlam authored
    that need to know how to link against ncursesw.
Commits on Feb 22, 2008
Commits on Feb 21, 2008
  1. Get rid of USE_NCURSESW, and just use USE_NCURSES to force the use of

    jlam authored
    ncursesw over BSD wide-curses.
Commits on Feb 20, 2008
  1. Overwrite symlinks for <ncurses.h> and <curses.h> to point to

    jlam authored
    <ncursesw/ncurses.h> so that including any of the curses headers will
    consistently pull in the same information.
  2. Add a ncursesw/ file to that allows NetBSD with native wide

    jlam authored
    curses to be used instead.  Packages that really need ncursesw should
    define USE_NCURSESW=yes in the package Makefile.
Commits on Dec 11, 2007
  1. Add a distribution patch (by Thomas Dickey) containing Coverity fixes.

    bjs authored
    Bump revisions of both ncurses and ncursesw packages.
    	 fixes based on Coverity report:
    	- remove dead code in test/bs.c
    	- remove dead code in test/demo_defkey.c
    	- remove an unused assignment in progs/infocmp.c
    	- fix a limit check in tack/ansi.c tools_charset()
    	- fix tack/ansi.c tools_status() to perform the VT320/VT420
    	  tests in request_cfss().  The function had exited too soon.
    	- fix a memory leak in tic.c's make_namelist()
    	- fix a couple of places in tack/output.c which did not check for
    	- fix a loop-condition in test/bs.c
    	- add index checks in lib_color.c for color palettes
    	- add index checks in progs/dump_entry.c for version_filter()
    	  handling of V_BSD case.
    	- fix a possible null-pointer dereference in copywin()
    	- fix a possible null-pointer dereference in waddchnstr()
    	- add a null-pointer check in _nc_expand_try()
    	- add a null-pointer check in tic.c's make_namelist()
    	- add a null-pointer check in _nc_expand_try()
    	- add null-pointer checks in test/cardfile.c
    	- fix a double-free in ncurses/tinfo/trim_sgr0.c
    	- fix a double-free in ncurses/base/wresize.c
    	- add try/catch block to c++/
    	other fixes prompted by inspection for Coverity report:
    	- modify ifdef's for c++ binding to use try/catch/throw statements
    	- add a null-pointer check in tack/ansi.c request_cfss()
    	- fix a memory leak in ncurses/base/wresize.c
    	- corrected check for valid memu/meml capabilities in
    	  progs/dump_entry.c when handling V_HPUX case.
Commits on Oct 30, 2007
  1. Add INSTALLATION_DIRS+=lib and prepand ${DESTDIR} to do-install:

    bjs authored
    destination paths so that DESTDIR installations work.
    I'm not bumping the revision because the resultant binaries should not
    be different; please let me know if I should've bumped it.
Commits on Sep 13, 2007
  1. Install header file that includes all the necessary symbols for

    wiz authored
    wide character support (needed by at least news/tin).
Commits on Oct 23, 2006
Commits on Oct 13, 2006
  1. Add "ncursesw" package:

    tron authored
    Wide character CRT screen handling and optimization package
    This package brings us one step closer to fixing PR pkg/34777.
Something went wrong with that request. Please try again.