aboutsummaryrefslogtreecommitdiff
path: root/doc/html/announce.html
blob: 1cd9651501a17b18c2e36bbdbe7eed2142d5d587 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
  $Id: announce.html,v 1.54 2011/02/25 23:24:46 tom Exp $
  ****************************************************************************
  * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  * "Software"), to deal in the Software without restriction, including      *
  * without limitation the rights to use, copy, modify, merge, publish,      *
  * distribute, distribute with modifications, sublicense, and/or sell       *
  * copies of the Software, and to permit persons to whom the Software is    *
  * furnished to do so, subject to the following conditions:                 *
  *                                                                          *
  * The above copyright notice and this permission notice shall be included  *
  * in all copies or substantial portions of the Software.                   *
  *                                                                          *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
  *                                                                          *
  * Except as contained in this notice, the name(s) of the above copyright   *
  * holders shall not be used in advertising or otherwise to promote the     *
  * sale, use or other dealings in this Software without prior written       *
  * authorization.                                                           *
  ****************************************************************************
-->

<html>
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">

  <title>Announcing ncurses 5.8</title>
  <link rev="made" href="mailto:bug-ncurses@gnu.org">
  <meta http-equiv="Content-Type" content=
  "text/html; charset=us-ascii">
</head>

<body>
  <h1>Announcing ncurses 5.8</h1>The ncurses (new curses)
  library is a free software emulation of curses in System V
  Release 4.0, and more. It uses terminfo format, supports pads and
  color and multiple highlights and forms characters and
  function-key mapping, and has all the other SYSV-curses
  enhancements over BSD curses.

  <p>In mid-June 1995, the maintainer of 4.4BSD curses declared
  that he considered 4.4BSD curses obsolete, and encouraged the
  keepers of Unix releases such as BSD/OS, FreeBSD and NetBSD to
  switch over to ncurses.</p>

  <p>The ncurses code was developed under GNU/Linux. It has been in
  use for some time with OpenBSD as the system curses library, and
  on FreeBSD and NetBSD as an external package. It should port
  easily to any ANSI/POSIX-conforming UNIX. It has even been ported
  to OS/2 Warp!</p>

  <p>The distribution includes the library and support utilities,
  including a terminfo compiler tic(1), a decompiler infocmp(1),
  clear(1), tput(1), tset(1), and a termcap conversion tool
  captoinfo(1). Full manual pages are provided for the library and
  tools.</p>

  <p>The ncurses distribution is available via anonymous FTP at the
  GNU distribution site <a href=
  "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.<br>

  It is also available at <a href=
  "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>

  <h1>Release Notes</h1>This release is designed to be upward
  compatible from ncurses 5.0 through 5.7; very few applications
  will require recompilation, depending on the platform. These are
  the highlights from the change-log since ncurses 5.7 release.

  <h2>Interface changes</h2>

  <ul>
    <li>turn on <code>_XOPEN_CURSES</code> definition in
    <code>curses.h</code>.</li>

    <li>change <code>_nc_has_mouse</code> to
    <code>has_mouse</code>, reflect its use in C++ and Ada95.</li>

    <li>add <code>is_pad</code> and <code>is_subwin</code>
    functions for opaque access to the WINDOW structure.</li>

    <li>add <code>tiparm</code>, based on review of X/Open Curses
    Issue 7.</li>
  </ul>

  <h2>New features and improvements</h2>

  <h3>Library Improvements</h3>

  <ul>
    <li>add a terminal driver for Windows console, which supports a
    MinGW port to Windows.</li>

    <li>add extended functions which specify the
    <code>SCREEN</code> pointer for several curses functions which
    use the global <code>SP</code>.</li>

    <li>improve the <code>NCURSES_NO_UTF8_ACS</code> feature by
    adding a check for an extended terminfo capability
    <code>U8</code>.</li>

    <li>improve performance of <code>tigetstr</code>, etc., by
    using hashing code from tic.</li>

    <li>add WACS_<em>xxx</em> definitions to wide-character
    configuration for thick- and double-lines.</li>

    <li>modify init_pair to allow caller to create extra color
    pairs beyond the color_pairs limit, which use default
    colors.</li>
  </ul>

  <h3>Improvements to Programs</h3>

  <ul>
    <li>add <code>tabs</code> program.</li>

    <li>modify tic's -I/-C dump to reformat acsc strings into
    canonical form (sorted, unique mapping).</li>

    <li>add checks in tic for inconsistent cursor-movement
    controls, and for inconsistent printer-controls.</li>

    <li>add special case to <code>_nc_infotocap</code> (used by tic
    and infocmp) to recognize the
    <code>setaf</code>/<code>setab</code> strings from
    <code>xterm+256color</code> and <code>xterm+88color,</code> and
    provide a reduced version which works with termcap.</li>
  </ul>

  <h3>Terminal Database</h3>

  <ul>
    <li>added entries:

      <ul>
        <li><code>bterm</code> terminfo entry, based on bogl
        0.1.18</li>

        <li><code>cons25-debian</code> entry</li>

        <li><code>eterm-color</code> entry</li>

        <li><code>linux-16color</code></li>

        <li><code>mlterm+256color</code> entry, for mlterm
        3.0.0</li>

        <li>several screen-bce.<em>xxx</em> entries</li>

        <li><code>screen.Eterm</code> terminfo entry</li>

        <li><code>vwmterm</code> entry</li>

        <li><code>xterm-utf8</code> entry as a demo of the
        <code>U8</code> feature</li>
      </ul>
    </li>

    <li>updated/improved entries:

      <ul>
        <li>use extended capabilities:

          <ul>
            <li>add <code>U8</code> feature to denote entries for
            terminal emulators which do not support VT100 SI/SO
            when processing UTF-8 encoding</li>

            <li>add <code>XT</code> capability to entries for
            terminals that support both xterm-style mouse- and
            title-controls, for <code>screen</code> which
            special-cases TERM beginning with <code>xterm</code> or
            <code>rxvt</code></li>
          </ul>
        </li>

        <li>improvements based on new checks in tic:</li>

        <li style="list-style: none; display: inline">
          <ul>
            <li>fill in no-parameter forms of cursor-movement where
            a parameterized form is available</li>

            <li>fill in missing cursor controls where the form of
            the controls is ANSI</li>

            <li>add parameterized cursor-controls to
            linux-basic</li>

            <li>modify <code>nsterm,</code> <code>xnuppc</code> and
            <code>tek4115</code> to make
            <code>sgr</code>/<code>sgr0</code> consistent</li>

            <li>change several terminfo entries to make consistent
            use of ANSI clear-all-tabs</li>
          </ul>
        </li>

        <li>extend <code>ansi.sys</code> <code>pfkey</code>
        capability from kf1-kf10 to kf1-kf48, moving function key
        definitions from <code>emx-base</code> for
        consistency.</li>

        <li>correct missing final 'p' in <code>pfkey</code>
        capability of <code>ansi.sys-old</code>.</li>

        <li>rename <code>atari</code> and <code>st52</code>
        terminfo entries to atari-old, st52-old, use newer entries
        from FreeMiNT.</li>

        <li>repurpose <code>gnome</code> terminfo entries as
        <code>vte</code>, retaining <code>gnome</code> variants for
        compatibility, but generally deprecating those since the
        VTE library is what actually defines the behavior of
        "gnome", etc., since 2003.</li>

        <li>improve <code>interix</code> <code>smso</code> terminfo
        capability by using reverse rather than bold.</li>

        <li>correct <code>initc</code> capability of
        <code>linux-c-nc</code> end-of-range, make similar change
        for <code>dg+ccc</code> and <code>dgunix+ccc</code>.</li>

        <li>update <code>minix</code> terminfo entry.</li>

        <li>updated <code>nsterm*</code> entries.</li>

        <li>remove unnecessary <code>kcan</code> assignment to
        <code>^C</code> from <code>putty</code>.</li>

        <li>suppress <code>ncv</code> in <code>screen</code> and
        <code>konsole-base</code> entries, allowing underline.</li>

        <li>change ncv and op capabilities in
        <code>sun-color</code> terminfo entry to match Sun's entry
        for this.</li>

        <li>fix typo in <code>rmso</code> for <code>tek4106</code>
        entry.</li>

        <li>improve <code>acsc</code> string for <code>vt52</code>,
        show arrow keys.</li>

        <li>add hard-reset for <code>rs2</code> to
        <code>wsvt25</code> to help ensure that reset ends the
        alternate character set.</li>

        <li>add <code>ccc</code> and <code>initc</code>
        capabilities to <code>xterm-16color</code>.</li>
      </ul>
    </li>
  </ul>

  <h2>Major bug fixes</h2>

  <ul>
    <li>ncurses library

      <ul>
        <li>wide character support

          <ul>
            <li>modify length returned by <code>getcchar</code> to
            count the trailing null which is documented in
            X/Open.</li>

            <li>fix an infinite recursion when adding a
            legacy-coding 8-bit value using
            <code>insch</code>.</li>

            <li>improve a workaround in adding wide-characters,
            when a control character is found. The library uses
            <code>unctrl</code> to obtain a printable version of
            the control character, but was not passing color or
            video attributes.</li>

            <li>modify <code>waddch_literal</code>, updating
            line-pointer after a multicolumn character is found to
            not fit on the current row, and wrapping is done. Since
            the line-pointer was not updated, the wrapped
            multicolumn character was written to the beginning of
            the current row.</li>

            <li>fixes in <code>wins_nwstr</code> and related
            functions to ensure that special characters, i.e.,
            control characters are handled properly with the
            wide-character configuration.</li>

            <li>correct internal <code>_nc_insert_ch</code> to use
            <code>_nc_insert_wch</code> when inserting wide
            characters, since the <code>wins_wch</code> function
            that it used did not update the cursor position.</li>
          </ul>
        </li>

        <li>mouse

          <ul>
            <li>add check if <code>Gpm_Open</code> returns a -2,
            e.g., for "xterm". This is normally suppressed but can
            be overridden using <code>$NCURSES_GPM_TERMS</code>.
            Ensure that <code>Gpm_Close</code> is called in this
            case.</li>

            <li>add check in mouse-driver to disable connection if
            GPM returns a zero, indicating that the connection is
            closed.</li>

            <li>modify <code>getmouse</code> to act as its
            documentation implied, returning on each call the
            preceding event until none are left. When no more
            events remain, it will return <code>ERR</code>.</li>
          </ul>
        </li>

        <li>miscellaneous

          <ul>
            <li>improve handling of color-pairs embedded in
            attributes for the extended-colors configuration.</li>

            <li>add check for failure to open hashed-database
            needed for db4.6.</li>

            <li>modify use of <code>$CC</code> environment variable
            which is defined by X/Open as a curses feature, to
            ignore it if it is not a single character.</li>

            <li>modify declaration of <code>cur_term</code> when
            broken-linker is used, but enable-reentrant is not, to
            match pre-5.7.</li>

            <li>correct limit-checks in <code>derwin</code>.</li>

            <li>remove old check in <code>mvderwin</code> which
            prevented moving a derived window whose origin happened
            to coincide with its parent's origin.</li>

            <li>correct limit-checks in <code>newwin</code>, to
            ensure that windows have nonzero size.</li>

            <li>modify <code>set_curterm</code> to make
            broken-linker configuration work with changes from
            20090228.</li>

            <li>modify <code>wgetch</code> to ensure it checks
            <code>SIGWINCH</code> when it gets an error in
            non-blocking mode.</li>

            <li>correct limit-check in <code>wredrawln</code>,
            accounting for <code>begy</code>/<code>begx</code>
            values.</li>

            <li>fix a null-pointer check in
            <code>_nc_format_slks</code> in lib_slk.c, from
            20070704 changes.</li>

            <li>correct translation of "^" in
            <code>_nc_infotocap</code>, used to transform terminfo
            to termcap strings.</li>

            <li>modify <code>_nc_wgetch</code> to check for a -1 in
            the fifo, e.g., after a <code>SIGWINCH</code>, and
            discard that value, to avoid confusing
            application.</li>
          </ul>
        </li>
      </ul>
    </li>

    <li>other libraries

      <ul>
        <li>correct transfer of multicolumn characters in multirow
        <code>field_buffer</code>, which stopped at the end of the
        first row due to filling of unused entries in a cchar_t
        array with nulls.</li>

        <li>correct buffer-size after internal resizing of
        wide-character <code>set_field_buffer</code>, broken in
        20081018 changes.</li>

        <li>correct layout of working window used to extract data
        in wide-character configured by
        <code>set_field_buffer</code></li>
      </ul>
    </li>
  </ul>

  <h2>Portability</h2>

  <ul>
    <li>configure script:

      <ul>
        <li>new options:

          <dl>
            <dt>--disable-libtool-version</dt>

            <dd>use the "-version-number" feature which was added
            in libtool 1.5. The default value for the option uses
            the newer feature, which makes libraries generated
            using libtool compatible with the standard builds of
            ncurses.</dd>

            <dt>--disable-rpath-hack</dt>

            <dd>disable a feature which adds rpath options for
            libraries in unusual places.</dd>

            <dt>--enable-interop</dt>

            <dd>integrate changes for generic/interop support to
            form-library.</dd>

            <dt>--enable-pc-files</dt>

            <dd>generate ".pc" files for each of the libraries, and
            install them in <code>pkg-config</code>'s library
            directory.</dd>

            <dt>--enable-pthreads-eintr</dt>

            <dd>control whether to allow <code>EINTR</code> to
            interrupt a read operation in <code>wgetch</code>. This
            applies only to the pthread configuration</dd>

            <dt>--enable-sp-funcs</dt>

            <dd>compile-in support for extended functions which
            accept a <code>SCREEN</code> pointer, reducing the need
            for juggling the global <code>SP</code> value with
            <code>set_term</code> and <code>delscreen</code>.</dd>

            <dt>--enable-term-driver</dt>

            <dd>compile with terminal-driver. That is used in the
            MinGW port, and (being somewhat more complicated) is an
            experimental alternative to the conventional termlib
            internals. Currently, it requires the sp-funcs feature
            to be enabled.</dd>

            <dt>--with-ncurses-wrap-prefix</dt>

            <dd>allows setting the prefix for functions used to
            wrap global variables to something other than
            "<code>_nc_</code>".</dd>

            <dt>--with-pkg-config=[DIR]</dt>

            <dd>check for <code>pkg-config</code>, optionally
            specifying its path.</dd>

            <dt>--without-manpages</dt>

            <dd>tells the configure script to suppress the install
            of ncurses' manpages.</dd>

            <dt>--without-tests</dt>

            <dd>suppress building test programs.</dd>
          </dl>
        </li>

        <li>improved options:

          <ul>
            <li>correct logic for <code>--with-database</code>,
            which was coded as an enable-type switch.</li>

            <li>omit the opaque-functions from
            <code>lib_gen.o</code> when
            <code>--disable-ext-funcs</code> is used.</li>
          </ul>
        </li>
      </ul>
    </li>

    <li>packaging:

      <ul>
        <li>*-config scripts:

          <ul>
            <li>modify <code>adacurses-config</code> to look for
            ".ali" files in the adalib directory.</li>

            <li>correct install for the Ada95 tree, which omitted
            <code>libAdaCurses.a</code> used in
            <code>adacurses-config</code>.</li>

            <li>change install for <code>adacurses-config</code> to
            provide additional flavors such as
            <code>adacursesw-config</code>, for ncursesw.</li>

            <li>modify scripts to generate
            <code>ncurses*-config</code> and pc-files to add
            dependency for tinfo library.</li>

            <li>use <code>ncurses*-config</code> scripts if
            available for test/configure.</li>

            <li>correct name for termlib in
            <code>ncurses*-config</code>, e.g., if it is renamed to
            provide a single file for ncurses/ncursesw
            libraries.</li>

            <li>generate manpages for the *-config scripts, adapted
            from <code>help2man</code>.</li>

            <li>modify install-rule for manpages so that *-config
            manpages will install when building with
            <code>--srcdir</code>.</li>

            <li>build-fixes for OpenSolaris aka Solaris 11, for
            wide-character configuration as well as for rpath
            feature in *-config scripts.</li>

            <li>use <code>$includedir</code> symbol in
            <code>misc/ncurses-config.in</code>, add
            <code>--includedir</code> option.</li>

            <li>improve install-rules for pc-files.</li>

            <li>create the <code>pkg-config</code> library
            directory if needed.</li>

            <li>fix typo "<code>==</code>" where "<code>=</code>"
            is needed in <code>ncurses-config.in</code> and
            <code>gen-pkgconfig.in</code> files.</li>

            <li>modify <code>gen-pkgconfig.in</code> to eliminate a
            dependency on rpath when deciding whether to add
            <code>$LIBS</code> to <code>--libs</code> output; that
            should be shown for the ncurses and tinfo libraries
            without taking rpath into account.</li>

            <li>modify handling of <code>$PKG_CONFIG_LIBDIR</code>
            to use only the first item in a possibly
            colon-separated list.</li>
          </ul>
        </li>

        <li>other packaging issues

          <ul>
            <li>add <code>make-tar.sh</code> scripts to Ada95 and
            test subdirectories to help with making those
            separately distributable.</li>

            <li>add <code>Ada95/configure</code> script, to use in
            tar-file created by
            <code>Ada95/make-tar.sh</code>.</li>

            <li>remove <code>tar-copy.sh</code> and related
            <code>configure/Makefile</code> chunks, since the Ada95
            binding is now installed using rules in
            <code>Ada95/src</code>.</li>
          </ul>
        </li>
      </ul>
    </li>

    <li>cross-compiling:

      <ul>
        <li>improve configure checks for location of tic and
        infocmp programs used for installing database and for
        generating fallback data, e.g., for cross-compiling.</li>

        <li>modify #define's for build-compiler to suppress cchar_t
        symbol from compile of <code>make_hash</code> and
        <code>make_keys</code>, improving cross-compilation of
        ncursesw.</li>

        <li>simplify include-dependencies of <code>make_hash</code>
        and <code>make_keys</code>, to reduce the need for setting
        BUILD_CPPFLAGS in cross-compiling when the build- and
        target-machines differ.</li>

        <li>correct cross-compiling configure check for
        <code>CF_MKSTEMP</code> macro, by adding a check cache
        variable set by <code>AC_CHECK_FUNC</code>.</li>
      </ul>
    </li>

    <li>library dependencies:

      <ul>
        <li>revise <code>wadd_wch</code> and
        <code>wecho_wchar</code> to eliminate dependency on
        <code>unctrl</code>.</li>

        <li>adjust configure script so that "t" is not added to
        library suffix when weak-symbols are used, allowing the
        pthread configuration to more closely match the non-thread
        naming.</li>
      </ul>
    </li>

    <li>building the Ada95 tree:

      <ul>
        <li>changes to use gnatmake project files in the Ada95
        tree.</li>

        <li>add/use configure check to turn on project rules for
        <code>Ada95/src</code>.</li>

        <li>old gnatmake (3.15) does not produce libraries using
        project-file; work around by adding script to generate
        alternate makefile.</li>

        <li>add configure --with-ada-sharedlib option, for the
        test_make rule.</li>

        <li>move Ada95-related logic into aclocal.m4, since
        additional checks will be needed to distinguish old/new
        implementations of gnat.</li>

        <li>add test_make / test_clean / test_install rules in
        Ada95/src</li>

        <li>change install-path for adainclude directory to
        /usr/share/ada (was /usr/lib/ada).</li>
      </ul>
    </li>

    <li>other configure/build issues:

      <ul>
        <li>make <code>CCHARW_MAX</code> value configurable, noting
        that changing this would change the size of
        <code>cchar_t</code>, and would be ABI-incompatible.</li>

        <li>improve comparison of program-names when checking for
        linked flavors such as "reset" by ignoring the executable
        suffix.</li>

        <li>drop <code>mkdirs.sh</code>, use
        "<code>mkdir&nbsp;-p</code>".</li>

        <li>drop <code>misc/ncu-indent</code> and
        <code>misc/jpf-indent</code>; they are provided by an
        external package <a href=
        "http://invisible-island.net/cindent/cindent.html">cindent</a>.</li>

        <li>change makefiles to use <code>$ARFLAGS</code> rather
        than <code>$AR_OPTS</code>, provide a configure check to
        detect whether a "-" is needed before "ar" options.</li>

        <li>modify <code>CF_DISABLE_LEAKS</code> configure macro so
        that the --enable-leaks option is not the same as
        --disable-leaks.</li>

        <li>improve configure script macros
        <code>CF_HEADER_PATH</code> and
        <code>CF_LIBRARY_PATH</code> by adding <code>CFLAGS</code>,
        <code>CPPFLAGS</code> and <code>LDFLAGS</code>,
        <code>LIBS</code> values to the search-lists.</li>

        <li>improve configure macros <code>CF_GCC_VERSION</code>
        and <code>CF_GCC_WARNINGS</code> to work with gcc 4.x's c89
        alias, which gives warning messages for cases where older
        versions would produce an error.</li>

        <li>modify <code>CF_WITH_LIBTOOL</code> configure check to
        allow unreleased libtool version numbers (e.g. which
        include alphabetic chars, as well as digits, after the
        final '.').</li>

        <li>improve use of symbolic links in makefiles by using
        "<code>-f</code>" option if it is supported, to eliminate
        temporary removal of the target</li>

        <li>add a configure-time check to pick a suitable value for
        <code>CC_SHARED_OPTS</code> for Solaris.</li>

        <li>add -shared option to <code>MK_SHARED_LIB</code> when
        -Bsharable is used, for *BSD's, without which "main" might
        be one of the shared library's dependencies.</li>

        <li>modify configure script to allow building shared
        libraries with gcc on AIX 5 or 6.</li>

        <li>suppress configure check for static/dynamic linker
        flags for gcc on Solaris 10, since gcc is confused by
        absence of static libc, and does not switch back to dynamic
        mode before finishing the libraries.</li>

        <li>suppress configure check for static/dynamic linker
        flags for gcc on Darwin.</li>

        <li>modify <code>misc/run_tic.in</code> to create parent
        directory, in case this is a new install of hashed
        database.</li>

        <li>modify configure check for tic program, used for
        fallbacks, to a warning if not found. This makes it simpler
        to use additonal scripts to bootstrap the fallbacks code
        using tic from the build tree.</li>
      </ul>
    </li>

    <li>test programs:

      <ul>
        <li>add test/demo_terminfo, for comparison with
        demo_termcap.</li>

        <li>improve test/ncurses.c 'F' test, show combining
        characters in color.</li>

        <li>fix logic for 'V' in test/ncurses.c tests f/F.</li>

        <li>improve test/ncurses.c 'a test to put mouse droppings
        in the proper window.</li>

        <li>modify ncurses 'F' test to demo wborder_set with
        colored lines.</li>

        <li>modify ncurses 'f' test to demo wborder with colored
        lines.</li>

        <li>improve test/ncurses.c 'a' test, using unctrl more
        consistently to display meta-characters.</li>

        <li>correct use of <code>key_name</code> in test/ncurses.c
        'A' test, which only displays wide-characters, not
        key-codes since 20070612.</li>

        <li>add test/clip_printw.c to illustrate how to use printw
        without wrapping.</li>

        <li>modify test-programs, e.g,. test/view.c, to address
        subtle differences between Tru64/Solaris and HPUX/AIX
        getcchar return values.</li>

        <li>add some test programs (and make these use the same
        special keys by sharing <code>linedata.h</code> functions):
        test/test_addstr.c test/test_addwstr.c test/test_addchstr.c
        test/test_add_wchstr.c</li>

        <li>add test/xterm-256color.dat</li>

        <li>modify test programs to allow them to be built with
        NetBSD curses.</li>

        <li>fixes for test programs to build/work on HPUX and AIX,
        etc.</li>
      </ul>
    </li>
  </ul>

  <h1>Features of Ncurses</h1>The ncurses package is fully
  compatible with SVr4 (System V Release 4) curses:

  <ul>
    <li>All 257 of the SVr4 calls have been implemented (and are
    documented).</li>

    <li>Full support for SVr4 curses features including keyboard
    mapping, color, forms-drawing with ACS characters, and
    automatic recognition of keypad and function keys.</li>

    <li>An emulation of the SVr4 panels library, supporting a stack
    of windows with backing store, is included.</li>

    <li>An emulation of the SVr4 menus library, supporting a
    uniform but flexible interface for menu programming, is
    included.</li>

    <li>An emulation of the SVr4 form library, supporting data
    collection through on-screen forms, is included.</li>

    <li>Binary terminfo entries generated by the ncurses tic(1)
    implementation are bit-for-bit-compatible with the entry format
    SVr4 curses uses.</li>

    <li>The utilities have options to allow you to filter terminfo
    entries for use with less capable
    <strong>curses</strong>/<strong>terminfo</strong> versions such
    as the HP/UX and AIX ports.</li>
  </ul>The ncurses package also has many useful extensions over
  SVr4:

  <ul>
    <li>The API is 8-bit clean and base-level conformant with the
    X/OPEN curses specification, XSI curses (that is, it implements
    all BASE level features, and most EXTENDED features). It
    includes many function calls not supported under SVr4 curses
    (but portability of all calls is documented so you can use the
    SVr4 subset only).</li>

    <li>Unlike SVr3 curses, ncurses can write to the
    rightmost-bottommost corner of the screen if your terminal has
    an insert-character capability.</li>

    <li>Ada95 and C++ bindings.</li>

    <li>Support for mouse event reporting with X Window xterm and
    FreeBSD and OS/2 console windows.</li>

    <li>Extended mouse support via Alessandro Rubini's gpm
    package.</li>

    <li>The function <code>wresize</code> allows you to resize
    windows, preserving their data.</li>

    <li>The function <code>use_default_colors</code> allows you to
    use the terminal's default colors for the default color pair,
    achieving the effect of transparent colors.</li>

    <li>The functions <code>keyok</code> and
    <code>define_key</code> allow you to better control the use of
    function keys, e.g., disabling the ncurses KEY_MOUSE, or by
    defining more than one control sequence to map to a given key
    code.</li>

    <li>Support for 256-color terminals, such as modern xterm, when
    configured using the <code>--enable-ext-colors</code>
    option.</li>

    <li>Support for 16-color terminals, such as <em>aixterm</em>
    and <em>modern xterm</em>.</li>

    <li>Better cursor-movement optimization. The package now
    features a cursor-local-movement computation more efficient
    than either BSD's or System V's.</li>

    <li>Super hardware scrolling support. The screen-update code
    incorporates a novel, simple, and cheap algorithm that enables
    it to make optimal use of hardware scrolling, line-insertion,
    and line-deletion for screen-line movements. This algorithm is
    more powerful than the 4.4BSD curses <code>quickch</code>
    routine.</li>

    <li>Real support for terminals with the magic-cookie glitch.
    The screen-update code will refrain from drawing a highlight if
    the magic- cookie unattributed spaces required just before the
    beginning and after the end would step on a non-space
    character. It will automatically shift highlight boundaries
    when doing so would make it possible to draw the highlight
    without changing the visual appearance of the screen.</li>

    <li>It is possible to generate the library with a list of
    pre-loaded fallback entries linked to it so that it can serve
    those terminal types even when no terminfo tree or termcap file
    is accessible (this may be useful for support of
    screen-oriented programs that must run in single-user
    mode).</li>

    <li>The tic(1)/captoinfo utility provided with ncurses has the
    ability to translate many termcaps from the XENIX, IBM and
    AT&amp;T extension sets.</li>

    <li>A BSD-like tset(1) utility is provided.</li>

    <li>The ncurses library and utilities will automatically read
    terminfo entries from $HOME/.terminfo if it exists, and compile
    to that directory if it exists and the user has no write access
    to the system directory. This feature makes it easier for users
    to have personal terminfo entries without giving up access to
    the system terminfo directory.</li>

    <li>You may specify a path of directories to search for
    compiled descriptions with the environment variable
    TERMINFO_DIRS (this generalizes the feature provided by
    TERMINFO under stock System V.)</li>

    <li>In terminfo source files, use capabilities may refer not
    just to other entries in the same source file (as in System V)
    but also to compiled entries in either the system terminfo
    directory or the user's $HOME/.terminfo directory.</li>

    <li>A script (<strong>capconvert</strong>) is provided to help
    BSD users transition from termcap to terminfo. It gathers the
    information in a TERMCAP environment variable and/or a
    ~/.termcap local entries file and converts it to an equivalent
    local terminfo tree under $HOME/.terminfo.</li>

    <li>Automatic fallback to the /etc/termcap file can be compiled
    in when it is not possible to build a terminfo tree. This
    feature is neither fast nor cheap, you don't want to use it
    unless you have to, but it's there.</li>

    <li>The table-of-entries utility <strong>toe</strong> makes it
    easy for users to see exactly what terminal types are available
    on the system.</li>

    <li>The library meets the XSI requirement that every macro
    entry point have a corresponding function which may be linked
    (and will be prototype-checked) if the macro definition is
    disabled with <code>#undef</code>.</li>

    <li>An HTML "Introduction to Programming with NCURSES" document
    provides a narrative introduction to the curses programming
    interface.</li>
  </ul>

  <h1>State of the Package</h1>Numerous bugs present in earlier
  versions have been fixed; the library is far more reliable than
  it used to be. Bounds checking in many `dangerous' entry points
  has been improved. The code is now type-safe according to gcc
  -Wall. The library has been checked for malloc leaks and arena
  corruption by the Purify memory-allocation tester.

  <p>The ncurses code has been tested with a wide variety of
  applications including (versions starting with those noted):</p>

  <dl>
    <dt>cdk</dt>

    <dd>Curses Development Kit<br>
    <a href=
    "http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</a><br>

    <a href=
    "http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a></dd>

    <dt>ded</dt>

    <dd>directory-editor<br>
    <a href=
    "http://invisible-island.net/ded/">http://invisible-island.net/ded/</a></dd>

    <dt>dialog</dt>

    <dd>the underlying application used in Slackware's setup, and
    the basis for similar applications on GNU/Linux.<br>
    <a href=
    "http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</a></dd>

    <dt>lynx</dt>

    <dd>the character-screen WWW browser<br>
    <a href=
    "http://lynx.isc.org/release/">http://lynx.isc.org/release/</a></dd>

    <dt>Midnight Commander</dt>

    <dd>file manager<br>
    <a href=
    "http://www.midnight-commander.org/">http://www.midnight-commander.org/</a></dd>

    <dt>mutt</dt>

    <dd>mail utility<br>
    <a href="http://www.mutt.org/">http://www.mutt.org/</a></dd>

    <dt>ncftp</dt>

    <dd>file-transfer utility<br>
    <a href="http://www.ncftp.com/">http://www.ncftp.com/</a></dd>

    <dt>nvi</dt>

    <dd>New vi versions 1.50 are able to use ncurses versions 1.9.7
    and later.<br>
    <a href=
    "https://sites.google.com/a/bostic.com/keithbostic/nvi">https://sites.google.com/a/bostic.com/keithbostic/nvi</a><br>
    </dd>

    <dt>pinfo</dt>

    <dd>Lynx-like info browser. <a href=
    "https://alioth.debian.org/projects/pinfo/">https://alioth.debian.org/projects/pinfo/</a></dd>

    <dt>tin</dt>

    <dd>newsreader, supporting color, MIME <a href=
    "http://www.tin.org/">http://www.tin.org/</a></dd>
  </dl>as well as some that use ncurses for the terminfo support
  alone:

  <dl>
    <dt>minicom</dt>

    <dd>terminal emulator<br>
    <a href=
    "http://alioth.debian.org/projects/minicom/">http://alioth.debian.org/projects/minicom/</a></dd>

    <dt>vile</dt>

    <dd>vi-like-emacs<br>
    <a href=
    "http://invisible-island.net/vile/">http://invisible-island.net/vile/</a></dd>
  </dl>

  <p>The ncurses distribution includes a selection of test programs
  (including a few games).</p>

  <h2>Who's Who and What's What</h2>Zeyd Ben-Halim started it from
  a previous package pcurses, written by Pavel Curtis. Eric S.
  Raymond continued development. J&uuml;rgen Pfeifer wrote most of
  the form and menu libraries. Ongoing work is being done by
  <a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
  Thomas Dickey acts as the maintainer for the Free Software
  Foundation, which holds the copyright on ncurses. Contact the
  current maintainers at <a href=
  "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.

  <p>To join the ncurses mailing list, please write email to
  <code>bug-ncurses-request@gnu.org</code> containing the line:</p>
  <pre>
             subscribe &lt;name&gt;@&lt;host.domain&gt;
</pre>

  <p>This list is open to anyone interested in helping with the
  development and testing of this package.</p>

  <p>Beta versions of ncurses and patches to the current release
  are made available at <a href=
  "ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>

  <h2>Future Plans</h2>

  <ul>
    <li>Extended-level XPG4 conformance, with internationalization
    support.</li>

    <li>Ports to more systems, including DOS and Windows.</li>
  </ul>We need people to help with these projects. If you are
  interested in working on them, please join the ncurses list.

  <h2>Other Related Resources</h2>The distribution provides a newer
  version of the terminfo-format terminal description file once
  maintained by <a href="http://www.catb.org/~esr/terminfo/">Eric
  Raymond</a>&nbsp;. Unlike the older version, the termcap and
  terminfo data are provided in the same file, and provides several
  user-definable extensions beyond the X/Open specification.

  <p>You can find lots of information on terminal-related topics
  not covered in the terminfo file at <a href=
  "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
  Richard Shuford's archive</a>&nbsp;.</p>
</body>
</html>