ncurses 5.3 v5.3
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 13 Oct 2002 03:35:53 +0000 (23:35 -0400)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 13 Oct 2002 03:35:53 +0000 (23:35 -0400)
851 files changed:
ANNOUNCE
Ada95/Makefile.in
Ada95/README
Ada95/gen/Makefile.in
Ada95/gen/gen.c
Ada95/gen/terminal_interface-curses-aux.ads.m4
Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4
Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4
Ada95/gen/terminal_interface-curses-forms.ads.m4
Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4
Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4
Ada95/gen/terminal_interface-curses-menus.ads.m4
Ada95/gen/terminal_interface-curses-mouse.ads.m4
Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4
Ada95/gen/terminal_interface-curses-panels.ads.m4
Ada95/gen/terminal_interface-curses-trace.ads.m4 [new file with mode: 0644]
Ada95/gen/terminal_interface-curses.ads.m4
Ada95/samples/Makefile.in
Ada95/samples/ncurses.adb [new file with mode: 0644]
Ada95/samples/ncurses2-acs_and_scroll.adb [new file with mode: 0644]
Ada95/samples/ncurses2-acs_and_scroll.ads [new file with mode: 0644]
Ada95/samples/ncurses2-acs_display.adb [new file with mode: 0644]
Ada95/samples/ncurses2-acs_display.ads [new file with mode: 0644]
Ada95/samples/ncurses2-attr_test.adb [new file with mode: 0644]
Ada95/samples/ncurses2-attr_test.ads [new file with mode: 0644]
Ada95/samples/ncurses2-color_edit.adb [new file with mode: 0644]
Ada95/samples/ncurses2-color_edit.ads [new file with mode: 0644]
Ada95/samples/ncurses2-color_test.adb [new file with mode: 0644]
Ada95/samples/ncurses2-color_test.ads [new file with mode: 0644]
Ada95/samples/ncurses2-demo_forms.adb [new file with mode: 0644]
Ada95/samples/ncurses2-demo_forms.ads [new file with mode: 0644]
Ada95/samples/ncurses2-demo_pad.adb [new file with mode: 0644]
Ada95/samples/ncurses2-demo_pad.ads [new file with mode: 0644]
Ada95/samples/ncurses2-demo_panels.adb [new file with mode: 0644]
Ada95/samples/ncurses2-demo_panels.ads [new file with mode: 0644]
Ada95/samples/ncurses2-flushinp_test.adb [new file with mode: 0644]
Ada95/samples/ncurses2-flushinp_test.ads [new file with mode: 0644]
Ada95/samples/ncurses2-genericputs.adb [new file with mode: 0644]
Ada95/samples/ncurses2-genericputs.ads [new file with mode: 0644]
Ada95/samples/ncurses2-getch.ads [new file with mode: 0644]
Ada95/samples/ncurses2-getch_test.adb [new file with mode: 0644]
Ada95/samples/ncurses2-getch_test.ads [new file with mode: 0644]
Ada95/samples/ncurses2-getopt.adb [new file with mode: 0644]
Ada95/samples/ncurses2-getopt.ads [new file with mode: 0644]
Ada95/samples/ncurses2-m.adb [new file with mode: 0644]
Ada95/samples/ncurses2-m.ads [new file with mode: 0644]
Ada95/samples/ncurses2-menu_test.adb [new file with mode: 0644]
Ada95/samples/ncurses2-menu_test.ads [new file with mode: 0644]
Ada95/samples/ncurses2-overlap_test.adb [new file with mode: 0644]
Ada95/samples/ncurses2-overlap_test.ads [new file with mode: 0644]
Ada95/samples/ncurses2-slk_test.adb [new file with mode: 0644]
Ada95/samples/ncurses2-slk_test.ads [new file with mode: 0644]
Ada95/samples/ncurses2-test_sgr_attributes.adb [new file with mode: 0644]
Ada95/samples/ncurses2-test_sgr_attributes.ads [new file with mode: 0644]
Ada95/samples/ncurses2-trace_set.adb [new file with mode: 0644]
Ada95/samples/ncurses2-trace_set.ads [new file with mode: 0644]
Ada95/samples/ncurses2-util.adb [new file with mode: 0644]
Ada95/samples/ncurses2-util.ads [new file with mode: 0644]
Ada95/samples/ncurses2.ads [new file with mode: 0644]
Ada95/samples/rain.adb
Ada95/samples/rain.ads
Ada95/samples/sample-curses_demo-attributes.adb
Ada95/samples/sample-curses_demo-attributes.ads
Ada95/samples/sample-curses_demo-mouse.adb
Ada95/samples/sample-curses_demo-mouse.ads
Ada95/samples/sample-curses_demo.adb
Ada95/samples/sample-curses_demo.ads
Ada95/samples/sample-explanation.adb
Ada95/samples/sample-explanation.ads
Ada95/samples/sample-form_demo-aux.adb
Ada95/samples/sample-form_demo-aux.ads
Ada95/samples/sample-form_demo-handler.adb
Ada95/samples/sample-form_demo-handler.ads
Ada95/samples/sample-form_demo.adb
Ada95/samples/sample-form_demo.ads
Ada95/samples/sample-function_key_setting.adb
Ada95/samples/sample-function_key_setting.ads
Ada95/samples/sample-header_handler.adb
Ada95/samples/sample-header_handler.ads
Ada95/samples/sample-helpers.adb
Ada95/samples/sample-helpers.ads
Ada95/samples/sample-keyboard_handler.adb
Ada95/samples/sample-keyboard_handler.ads
Ada95/samples/sample-manifest.ads
Ada95/samples/sample-menu_demo-aux.adb
Ada95/samples/sample-menu_demo-aux.ads
Ada95/samples/sample-menu_demo-handler.adb
Ada95/samples/sample-menu_demo-handler.ads
Ada95/samples/sample-menu_demo.adb
Ada95/samples/sample-menu_demo.ads
Ada95/samples/sample-my_field_type.adb
Ada95/samples/sample-my_field_type.ads
Ada95/samples/sample-text_io_demo.adb
Ada95/samples/sample-text_io_demo.ads
Ada95/samples/sample.adb
Ada95/samples/sample.ads
Ada95/samples/status.adb
Ada95/samples/status.ads
Ada95/samples/tour.adb
Ada95/samples/tour.ads
Ada95/src/Makefile.in
Ada95/src/terminal_interface-curses-aux.adb
Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb
Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads
Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb
Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads
Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb
Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads
Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb
Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads
Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb
Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads
Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb
Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads
Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb
Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads
Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb
Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads
Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb
Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads
Ada95/src/terminal_interface-curses-forms-field_types-user.adb
Ada95/src/terminal_interface-curses-forms-field_types-user.ads
Ada95/src/terminal_interface-curses-forms-field_types.adb
Ada95/src/terminal_interface-curses-forms-field_user_data.adb
Ada95/src/terminal_interface-curses-forms-form_user_data.adb
Ada95/src/terminal_interface-curses-forms.adb
Ada95/src/terminal_interface-curses-menus-item_user_data.adb
Ada95/src/terminal_interface-curses-menus-menu_user_data.adb
Ada95/src/terminal_interface-curses-menus.adb
Ada95/src/terminal_interface-curses-mouse.adb
Ada95/src/terminal_interface-curses-panels-user_data.adb
Ada95/src/terminal_interface-curses-panels.adb
Ada95/src/terminal_interface-curses-putwin.adb [new file with mode: 0644]
Ada95/src/terminal_interface-curses-putwin.ads [new file with mode: 0644]
Ada95/src/terminal_interface-curses-termcap.adb [new file with mode: 0644]
Ada95/src/terminal_interface-curses-termcap.ads [new file with mode: 0644]
Ada95/src/terminal_interface-curses-terminfo.adb [new file with mode: 0644]
Ada95/src/terminal_interface-curses-terminfo.ads [new file with mode: 0644]
Ada95/src/terminal_interface-curses-text_io-aux.adb
Ada95/src/terminal_interface-curses-text_io-aux.ads
Ada95/src/terminal_interface-curses-text_io-complex_io.adb
Ada95/src/terminal_interface-curses-text_io-complex_io.ads
Ada95/src/terminal_interface-curses-text_io-decimal_io.adb
Ada95/src/terminal_interface-curses-text_io-decimal_io.ads
Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb
Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads
Ada95/src/terminal_interface-curses-text_io-fixed_io.adb
Ada95/src/terminal_interface-curses-text_io-fixed_io.ads
Ada95/src/terminal_interface-curses-text_io-float_io.adb
Ada95/src/terminal_interface-curses-text_io-float_io.ads
Ada95/src/terminal_interface-curses-text_io-integer_io.adb
Ada95/src/terminal_interface-curses-text_io-integer_io.ads
Ada95/src/terminal_interface-curses-text_io-modular_io.adb
Ada95/src/terminal_interface-curses-text_io-modular_io.ads
Ada95/src/terminal_interface-curses-text_io.adb
Ada95/src/terminal_interface-curses-text_io.ads
Ada95/src/terminal_interface-curses-trace.adb_p [new file with mode: 0644]
Ada95/src/terminal_interface-curses.adb
Ada95/src/terminal_interface.ads
INSTALL
MANIFEST
Makefile.glibc
Makefile.in
NEWS
README.emx
TO-DO
aclocal.m4
announce.html.in
c++/Makefile.in
c++/README-first
c++/cursesapp.cc
c++/cursesapp.h
c++/cursesf.cc
c++/cursesf.h
c++/cursesm.cc
c++/cursesm.h
c++/cursesmain.cc
c++/cursesp.cc
c++/cursesp.h
c++/cursespad.cc
c++/cursesw.cc
c++/cursesw.h
c++/cursslk.cc
c++/cursslk.h
c++/demo.cc
c++/edit_cfg.sh
c++/etip.h.in
c++/internal.h
config.guess
config.sub
configure
configure.in
dist.mk
doc/html/Ada95.html
doc/html/ada/files/T.htm
doc/html/ada/funcs/A.htm
doc/html/ada/funcs/B.htm
doc/html/ada/funcs/C.htm
doc/html/ada/funcs/D.htm
doc/html/ada/funcs/E.htm
doc/html/ada/funcs/F.htm
doc/html/ada/funcs/G.htm
doc/html/ada/funcs/H.htm
doc/html/ada/funcs/I.htm
doc/html/ada/funcs/K.htm
doc/html/ada/funcs/L.htm
doc/html/ada/funcs/M.htm
doc/html/ada/funcs/N.htm
doc/html/ada/funcs/O.htm
doc/html/ada/funcs/P.htm
doc/html/ada/funcs/Q.htm
doc/html/ada/funcs/R.htm
doc/html/ada/funcs/S.htm
doc/html/ada/funcs/T.htm
doc/html/ada/funcs/U.htm
doc/html/ada/funcs/V.htm
doc/html/ada/funcs/W.htm
doc/html/ada/main.htm
doc/html/ada/table.html
doc/html/ada/terminal_interface-curses-aux__adb.htm
doc/html/ada/terminal_interface-curses-aux__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm
doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
doc/html/ada/terminal_interface-curses-forms__adb.htm
doc/html/ada/terminal_interface-curses-forms__ads.htm
doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm
doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm
doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
doc/html/ada/terminal_interface-curses-menus__adb.htm
doc/html/ada/terminal_interface-curses-menus__ads.htm
doc/html/ada/terminal_interface-curses-mouse__adb.htm
doc/html/ada/terminal_interface-curses-mouse__ads.htm
doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm
doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm
doc/html/ada/terminal_interface-curses-panels__adb.htm
doc/html/ada/terminal_interface-curses-panels__ads.htm
doc/html/ada/terminal_interface-curses-putwin__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-putwin__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-termcap__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-termcap__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-terminfo__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-terminfo__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm
doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm
doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io__ads.htm
doc/html/ada/terminal_interface-curses-trace__adb.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses-trace__ads.htm [new file with mode: 0644]
doc/html/ada/terminal_interface-curses__adb.htm
doc/html/ada/terminal_interface-curses__ads.htm
doc/html/ada/terminal_interface__ads.htm
doc/html/announce.html
doc/html/man/captoinfo.1m.html
doc/html/man/clear.1.html
doc/html/man/curs_add_wch.3x.html [new file with mode: 0644]
doc/html/man/curs_add_wchstr.3x.html [new file with mode: 0644]
doc/html/man/curs_addch.3x.html
doc/html/man/curs_addchstr.3x.html
doc/html/man/curs_addstr.3x.html
doc/html/man/curs_addwstr.3x.html [new file with mode: 0644]
doc/html/man/curs_attr.3x.html
doc/html/man/curs_beep.3x.html
doc/html/man/curs_bkgd.3x.html
doc/html/man/curs_bkgrnd.3x.html [new file with mode: 0644]
doc/html/man/curs_border.3x.html
doc/html/man/curs_border_set.3x.html [new file with mode: 0644]
doc/html/man/curs_clear.3x.html
doc/html/man/curs_color.3x.html
doc/html/man/curs_delch.3x.html
doc/html/man/curs_deleteln.3x.html
doc/html/man/curs_extend.3x.html
doc/html/man/curs_get_wch.3x.html [new file with mode: 0644]
doc/html/man/curs_get_wstr.3x.html [new file with mode: 0644]
doc/html/man/curs_getcchar.3x.html [new file with mode: 0644]
doc/html/man/curs_getch.3x.html
doc/html/man/curs_getstr.3x.html
doc/html/man/curs_getyx.3x.html
doc/html/man/curs_in_wch.3x.html [new file with mode: 0644]
doc/html/man/curs_in_wchstr.3x.html [new file with mode: 0644]
doc/html/man/curs_inch.3x.html
doc/html/man/curs_inchstr.3x.html
doc/html/man/curs_initscr.3x.html
doc/html/man/curs_inopts.3x.html
doc/html/man/curs_ins_wch.3x.html [new file with mode: 0644]
doc/html/man/curs_ins_wstr.3x.html [new file with mode: 0644]
doc/html/man/curs_insch.3x.html
doc/html/man/curs_insstr.3x.html
doc/html/man/curs_instr.3x.html
doc/html/man/curs_inwstr.3x.html [new file with mode: 0644]
doc/html/man/curs_kernel.3x.html
doc/html/man/curs_mouse.3x.html
doc/html/man/curs_move.3x.html
doc/html/man/curs_outopts.3x.html
doc/html/man/curs_overlay.3x.html
doc/html/man/curs_pad.3x.html
doc/html/man/curs_print.3x.html
doc/html/man/curs_printw.3x.html
doc/html/man/curs_refresh.3x.html
doc/html/man/curs_scanw.3x.html
doc/html/man/curs_scr_dump.3x.html
doc/html/man/curs_scroll.3x.html
doc/html/man/curs_slk.3x.html
doc/html/man/curs_termattrs.3x.html
doc/html/man/curs_termcap.3x.html
doc/html/man/curs_terminfo.3x.html
doc/html/man/curs_touch.3x.html
doc/html/man/curs_trace.3x.html
doc/html/man/curs_util.3x.html
doc/html/man/curs_window.3x.html
doc/html/man/default_colors.3x.html
doc/html/man/define_key.3x.html
doc/html/man/form.3x.html
doc/html/man/form_cursor.3x.html
doc/html/man/form_data.3x.html
doc/html/man/form_driver.3x.html
doc/html/man/form_field.3x.html
doc/html/man/form_field_attributes.3x.html
doc/html/man/form_field_buffer.3x.html
doc/html/man/form_field_info.3x.html
doc/html/man/form_field_just.3x.html
doc/html/man/form_field_new.3x.html
doc/html/man/form_field_opts.3x.html
doc/html/man/form_field_userptr.3x.html
doc/html/man/form_field_validation.3x.html
doc/html/man/form_fieldtype.3x.html
doc/html/man/form_hook.3x.html
doc/html/man/form_new.3x.html
doc/html/man/form_new_page.3x.html
doc/html/man/form_opts.3x.html
doc/html/man/form_page.3x.html
doc/html/man/form_post.3x.html
doc/html/man/form_requestname.3x.html
doc/html/man/form_userptr.3x.html
doc/html/man/form_win.3x.html
doc/html/man/infocmp.1m.html
doc/html/man/infotocap.1m.html
doc/html/man/keybound.3x.html
doc/html/man/keyok.3x.html
doc/html/man/menu.3x.html
doc/html/man/menu_attributes.3x.html
doc/html/man/menu_cursor.3x.html
doc/html/man/menu_driver.3x.html
doc/html/man/menu_format.3x.html
doc/html/man/menu_hook.3x.html
doc/html/man/menu_items.3x.html
doc/html/man/menu_mark.3x.html
doc/html/man/menu_new.3x.html
doc/html/man/menu_opts.3x.html
doc/html/man/menu_pattern.3x.html
doc/html/man/menu_post.3x.html
doc/html/man/menu_requestname.3x.html
doc/html/man/menu_spacing.3x.html
doc/html/man/menu_userptr.3x.html
doc/html/man/menu_win.3x.html
doc/html/man/mitem_current.3x.html
doc/html/man/mitem_name.3x.html
doc/html/man/mitem_new.3x.html
doc/html/man/mitem_opts.3x.html
doc/html/man/mitem_userptr.3x.html
doc/html/man/mitem_value.3x.html
doc/html/man/mitem_visible.3x.html
doc/html/man/ncurses.3x.html
doc/html/man/panel.3x.html
doc/html/man/resizeterm.3x.html
doc/html/man/term.5.html
doc/html/man/term.7.html
doc/html/man/terminfo.5.html
doc/html/man/tic.1m.html
doc/html/man/toe.1m.html
doc/html/man/tput.1.html
doc/html/man/tset.1.html
doc/html/man/wresize.3x.html
doc/html/ncurses-intro.html
doc/ncurses-intro.doc
form/Makefile.in
form/READ.ME
form/fld_arg.c
form/fld_attr.c
form/fld_current.c
form/fld_def.c
form/fld_dup.c
form/fld_ftchoice.c
form/fld_ftlink.c
form/fld_info.c
form/fld_just.c
form/fld_link.c
form/fld_max.c
form/fld_move.c
form/fld_newftyp.c
form/fld_opts.c
form/fld_pad.c
form/fld_page.c
form/fld_stat.c
form/fld_type.c
form/fld_user.c
form/form.h
form/form.priv.h
form/frm_cursor.c
form/frm_data.c
form/frm_def.c
form/frm_driver.c
form/frm_hook.c
form/frm_opts.c
form/frm_page.c
form/frm_post.c
form/frm_req_name.c
form/frm_scale.c
form/frm_sub.c
form/frm_user.c
form/frm_win.c
form/fty_alnum.c
form/fty_alpha.c
form/fty_enum.c
form/fty_int.c
form/fty_ipv4.c
form/fty_num.c
form/fty_regex.c
form/llib-lform
form/llib-lformw [new file with mode: 0644]
include/Caps
include/Caps.aix4 [new file with mode: 0644]
include/Caps.hpux11 [new file with mode: 0644]
include/Caps.keys [new file with mode: 0644]
include/Caps.osf1r5 [new file with mode: 0644]
include/Caps.uwin [new file with mode: 0644]
include/MKkey_defs.sh [new file with mode: 0755]
include/MKterm.h.awk.in
include/Makefile.in
include/curses.h.in
include/curses.tail [new file with mode: 0644]
include/curses.wide [new file with mode: 0644]
include/edit_cfg.sh
include/headers
include/nc_alloc.h
include/nc_panel.h
include/ncurses_cfg.hin
include/ncurses_defs
include/ncurses_dll.h [new file with mode: 0644]
include/term_entry.h
include/termcap.h.in
include/tic.h
include/unctrl.h.in
man/MKterminfo.sh
man/Makefile.in
man/curs_add_wch.3x [new file with mode: 0644]
man/curs_add_wchstr.3x [new file with mode: 0644]
man/curs_addch.3x
man/curs_addstr.3x
man/curs_addwstr.3x [new file with mode: 0644]
man/curs_attr.3x
man/curs_bkgd.3x
man/curs_bkgrnd.3x [new file with mode: 0644]
man/curs_border.3x
man/curs_border_set.3x [new file with mode: 0644]
man/curs_color.3x
man/curs_deleteln.3x
man/curs_extend.3x
man/curs_get_wch.3x [new file with mode: 0644]
man/curs_get_wstr.3x [new file with mode: 0644]
man/curs_getcchar.3x [new file with mode: 0644]
man/curs_getch.3x
man/curs_getstr.3x
man/curs_getyx.3x
man/curs_in_wch.3x [new file with mode: 0644]
man/curs_in_wchstr.3x [new file with mode: 0644]
man/curs_initscr.3x
man/curs_inopts.3x
man/curs_ins_wch.3x [new file with mode: 0644]
man/curs_ins_wstr.3x [new file with mode: 0644]
man/curs_insstr.3x
man/curs_instr.3x
man/curs_inwstr.3x [new file with mode: 0644]
man/curs_kernel.3x
man/curs_mouse.3x
man/curs_move.3x
man/curs_outopts.3x
man/curs_overlay.3x
man/curs_print.3x
man/curs_printw.3x
man/curs_refresh.3x
man/curs_scanw.3x
man/curs_scroll.3x
man/curs_slk.3x
man/curs_termattrs.3x
man/curs_termcap.3x
man/curs_terminfo.3x
man/curs_trace.3x
man/curs_util.3x
man/default_colors.3x
man/define_key.3x
man/form.3x
man/form_driver.3x
man/form_field_attributes.3x
man/form_field_buffer.3x
man/form_field_info.3x
man/form_field_just.3x
man/form_field_new.3x
man/form_field_validation.3x
man/form_fieldtype.3x
man/form_new_page.3x
man/infocmp.1m
man/keybound.3x
man/keyok.3x
man/man_db.renames
man/manlinks.sed
man/menu.3x
man/menu_attributes.3x
man/menu_driver.3x
man/menu_format.3x
man/menu_pattern.3x
man/menu_spacing.3x
man/mitem_value.3x
man/ncurses.3x
man/resizeterm.3x
man/term.5
man/term.7
man/terminfo.head
man/terminfo.tail
man/tic.1m
man/tput.1
man/wresize.3x
menu/Makefile.in
menu/READ.ME
menu/eti.h
menu/llib-lmenu
menu/llib-lmenuw [new file with mode: 0644]
menu/m_attribs.c
menu/m_cursor.c
menu/m_driver.c
menu/m_format.c
menu/m_global.c
menu/m_hook.c
menu/m_item_cur.c
menu/m_item_nam.c
menu/m_item_new.c
menu/m_item_opt.c
menu/m_item_top.c
menu/m_item_use.c
menu/m_item_val.c
menu/m_item_vis.c
menu/m_items.c
menu/m_new.c
menu/m_opts.c
menu/m_pad.c
menu/m_pattern.c
menu/m_post.c
menu/m_req_name.c
menu/m_scale.c
menu/m_spacing.c
menu/m_sub.c
menu/m_userptr.c
menu/m_win.c
menu/menu.h
menu/menu.priv.h
menu/mf_common.h
misc/Makefile.in
misc/makellib
misc/run_tic.in
misc/tdlint
misc/terminfo.src
mk-0th.awk
mk-1st.awk
mkinstalldirs
ncurses/Makefile.in
ncurses/README
ncurses/README.IZ [new file with mode: 0644]
ncurses/SigAction.h
ncurses/base/MKkeyname.awk
ncurses/base/MKlib_gen.sh
ncurses/base/MKunctrl.awk
ncurses/base/define_key.c
ncurses/base/keybound.c
ncurses/base/keyok.c
ncurses/base/lib_addch.c
ncurses/base/lib_addstr.c
ncurses/base/lib_beep.c
ncurses/base/lib_bkgd.c
ncurses/base/lib_box.c
ncurses/base/lib_chgat.c
ncurses/base/lib_clear.c
ncurses/base/lib_clearok.c
ncurses/base/lib_clrbot.c
ncurses/base/lib_clreol.c
ncurses/base/lib_color.c
ncurses/base/lib_colorset.c
ncurses/base/lib_delch.c
ncurses/base/lib_delwin.c
ncurses/base/lib_dft_fgbg.c
ncurses/base/lib_echo.c
ncurses/base/lib_endwin.c
ncurses/base/lib_erase.c
ncurses/base/lib_flash.c
ncurses/base/lib_freeall.c
ncurses/base/lib_getch.c
ncurses/base/lib_getstr.c
ncurses/base/lib_hline.c
ncurses/base/lib_immedok.c
ncurses/base/lib_inchstr.c
ncurses/base/lib_initscr.c
ncurses/base/lib_insch.c
ncurses/base/lib_insdel.c
ncurses/base/lib_insstr.c
ncurses/base/lib_instr.c
ncurses/base/lib_isendwin.c
ncurses/base/lib_leaveok.c
ncurses/base/lib_mouse.c
ncurses/base/lib_move.c
ncurses/base/lib_mvwin.c
ncurses/base/lib_newterm.c
ncurses/base/lib_newwin.c
ncurses/base/lib_nl.c
ncurses/base/lib_overlay.c
ncurses/base/lib_pad.c
ncurses/base/lib_printw.c
ncurses/base/lib_redrawln.c
ncurses/base/lib_refresh.c
ncurses/base/lib_restart.c
ncurses/base/lib_scanw.c
ncurses/base/lib_screen.c
ncurses/base/lib_scroll.c
ncurses/base/lib_scrollok.c
ncurses/base/lib_scrreg.c
ncurses/base/lib_set_term.c
ncurses/base/lib_slk.c
ncurses/base/lib_slkatr_set.c
ncurses/base/lib_slkatrof.c
ncurses/base/lib_slkatron.c
ncurses/base/lib_slkatrset.c
ncurses/base/lib_slkattr.c
ncurses/base/lib_slkclear.c
ncurses/base/lib_slkcolor.c
ncurses/base/lib_slkinit.c
ncurses/base/lib_slklab.c
ncurses/base/lib_slkrefr.c
ncurses/base/lib_slkset.c
ncurses/base/lib_slktouch.c
ncurses/base/lib_touch.c
ncurses/base/lib_ungetch.c
ncurses/base/lib_vline.c
ncurses/base/lib_wattroff.c
ncurses/base/lib_wattron.c
ncurses/base/lib_winch.c
ncurses/base/lib_window.c
ncurses/base/memmove.c
ncurses/base/nc_panel.c
ncurses/base/resizeterm.c
ncurses/base/safe_sprintf.c
ncurses/base/sigaction.c
ncurses/base/tries.c
ncurses/base/version.c
ncurses/base/vsscanf.c
ncurses/base/wresize.c
ncurses/curses.priv.h
ncurses/fifo_defs.h
ncurses/llib-lncurses
ncurses/llib-lncursesw [new file with mode: 0644]
ncurses/modules
ncurses/tinfo/MKcaptab.awk
ncurses/tinfo/MKfallback.sh
ncurses/tinfo/MKkeys_list.sh [new file with mode: 0755]
ncurses/tinfo/MKnames.awk
ncurses/tinfo/access.c
ncurses/tinfo/add_tries.c
ncurses/tinfo/alloc_entry.c
ncurses/tinfo/alloc_ttype.c
ncurses/tinfo/captoinfo.c
ncurses/tinfo/comp_error.c
ncurses/tinfo/comp_expand.c
ncurses/tinfo/comp_hash.c
ncurses/tinfo/comp_parse.c
ncurses/tinfo/comp_scan.c
ncurses/tinfo/doalloc.c
ncurses/tinfo/free_ttype.c
ncurses/tinfo/getenv_num.c
ncurses/tinfo/home_terminfo.c
ncurses/tinfo/init_keytry.c
ncurses/tinfo/keys.list [deleted file]
ncurses/tinfo/lib_acs.c
ncurses/tinfo/lib_baudrate.c
ncurses/tinfo/lib_cur_term.c
ncurses/tinfo/lib_data.c
ncurses/tinfo/lib_has_cap.c
ncurses/tinfo/lib_kernel.c
ncurses/tinfo/lib_longname.c
ncurses/tinfo/lib_napms.c
ncurses/tinfo/lib_options.c
ncurses/tinfo/lib_print.c
ncurses/tinfo/lib_raw.c
ncurses/tinfo/lib_setup.c
ncurses/tinfo/lib_termcap.c
ncurses/tinfo/lib_termname.c
ncurses/tinfo/lib_tgoto.c
ncurses/tinfo/lib_ti.c
ncurses/tinfo/lib_tparm.c
ncurses/tinfo/lib_tputs.c
ncurses/tinfo/lib_ttyflags.c
ncurses/tinfo/make_keys.c
ncurses/tinfo/name_match.c
ncurses/tinfo/parse_entry.c
ncurses/tinfo/read_entry.c
ncurses/tinfo/read_termcap.c
ncurses/tinfo/setbuf.c
ncurses/tinfo/strings.c
ncurses/tinfo/write_entry.c
ncurses/trace/lib_trace.c
ncurses/trace/lib_traceatr.c
ncurses/trace/lib_tracebits.c
ncurses/trace/lib_tracechr.c
ncurses/trace/lib_tracedmp.c
ncurses/trace/lib_tracemse.c
ncurses/trace/trace_buf.c
ncurses/trace/trace_tries.c
ncurses/trace/trace_xnames.c
ncurses/trace/varargs.c [new file with mode: 0644]
ncurses/trace/visbuf.c [new file with mode: 0644]
ncurses/tty/MKexpanded.sh
ncurses/tty/hardscroll.c
ncurses/tty/hashmap.c
ncurses/tty/lib_mvcur.c
ncurses/tty/lib_tstp.c
ncurses/tty/lib_twait.c
ncurses/tty/lib_vidattr.c
ncurses/tty/tty_display.h
ncurses/tty/tty_input.h
ncurses/tty/tty_update.c
ncurses/widechar/lib_box_set.c [new file with mode: 0644]
ncurses/widechar/lib_cchar.c [new file with mode: 0644]
ncurses/widechar/lib_erasewchar.c [new file with mode: 0644]
ncurses/widechar/lib_get_wch.c [new file with mode: 0644]
ncurses/widechar/lib_get_wstr.c [new file with mode: 0644]
ncurses/widechar/lib_hline_set.c [new file with mode: 0644]
ncurses/widechar/lib_in_wch.c [new file with mode: 0644]
ncurses/widechar/lib_in_wchnstr.c [new file with mode: 0644]
ncurses/widechar/lib_ins_nwstr.c [new file with mode: 0644]
ncurses/widechar/lib_ins_wch.c [new file with mode: 0644]
ncurses/widechar/lib_inwstr.c [new file with mode: 0644]
ncurses/widechar/lib_unget_wch.c [new file with mode: 0644]
ncurses/widechar/lib_vid_attr.c [new file with mode: 0644]
ncurses/widechar/lib_vline_set.c [new file with mode: 0644]
ncurses/widechar/lib_wacs.c [new file with mode: 0644]
ncurses/widechar/lib_wunctrl.c [new file with mode: 0644]
panel/Makefile.in
panel/llib-lpanel
panel/llib-lpanelw [new file with mode: 0644]
panel/p_above.c
panel/p_below.c
panel/p_bottom.c
panel/p_delete.c
panel/p_hidden.c
panel/p_hide.c
panel/p_move.c
panel/p_new.c
panel/p_replace.c
panel/p_show.c
panel/p_top.c
panel/p_update.c
panel/p_user.c
panel/p_win.c
panel/panel.c
panel/panel.h
panel/panel.priv.h
progs/MKtermsort.sh
progs/Makefile.in
progs/dump_entry.c
progs/dump_entry.h
progs/infocmp.c
progs/progs.priv.h
progs/tic.c
progs/toe.c
progs/tput.c
progs/tset.c
tack/Makefile.in
tack/ansi.c
tack/charset.c
tack/edit.c
tack/init.c
tack/output.c
tack/sync.c
tack/sysdep.c
tack/tack.c
tack/tack.h
test/Makefile.in
test/blue.c
test/bs.c
test/cardfile.c
test/configure
test/configure.in
test/ditto.c
test/dots.c
test/filter.c
test/firework.c
test/firstlast.c
test/gdc.c
test/hanoi.c
test/hashtest.c
test/keynames.c
test/knight.c
test/lrtest.c
test/ncurses.c
test/newdemo.c
test/railroad.c
test/rain.c
test/tclock.c
test/test.priv.h
test/testaddch.c
test/testcurs.c
test/testscanw.c
test/tracemunch
test/view.c
test/worm.c
test/xmas.c

index 7b5f4efa69ae44ea29f14dc42e07bdc41dd5ca87..e39a0bee28d8656945825566da2f96f66f8a3c81 100644 (file)
--- a/ANNOUNCE
+++ b/ANNOUNCE
 
-                            Announcing ncurses 5.2
+                            Announcing ncurses 5.3
 
-   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
+   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.
 
-   In mid-June 1995, the maintainer of 4.4BSD curses declared that he
-   considered 4.4BSD curses obsolete, and is encouraging the keepers of
-   Unix releases such as BSD/OS, freeBSD and netBSD to switch over to
+   In  mid-June  1995,  the  maintainer of 4.4BSD curses declared that he
+   considered  4.4BSD  curses obsolete, and is encouraging the keepers of
+   Unix  releases  such  as  BSD/OS, freeBSD and netBSD to switch over to
    ncurses.
 
-   The ncurses code was developed under GNU/Linux. It should port easily
-   to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2
-   Warp!
+   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!
 
    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
+   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.
 
-   The ncurses distribution is available via anonymous FTP at the GNU
+   The  ncurses  distribution  is  available via anonymous FTP at the GNU
    distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses.
-   It is also available at [2]ftp://dickey.his.com/ncurses.
+   It is also available at [2]ftp://invisible-island.net/ncurses.
 
                                  Release Notes
 
-   This release is designed to be upward compatible from ncurses 5.0 and
-   5.1; very few applications will require recompilation, depending on
-   the platform. These are the highlights from the change-log since
-   ncurses 5.1 release.
+   This  release is designed to be upward compatible from ncurses 5.0 and
+   5.2;  very  few  applications will require recompilation, depending on
+   the  platform.  These  are  the  highlights  from the change-log since
+   ncurses 5.2 release.
 
    Interface changes:
-     * change type of ospeed variable back to short to match its use in
-       legacy applications. It was altered after ncurses 4.2 to speed_t
-       to repair a type mismatch which was introduced after 1.9.4 in
-       1995. The principal users of termcap continued to use short, which
-       is not the same size.
-       NOTE: A few applications will have to be recompiled (about 1% of
-       the programs in a typical Linux distribution, 10% of the programs
-       that use ncurses). These are easy to identify with nm or strings.
-     * remove a private function _nc_can_clear_with(), which was built
-       with the configure --enable-expanded option but not used.
-     * add several private functions (prefixed with "_nc_") for tracing
-       chtype values in the debug library, and for better access and
-       buffer limit checking.
+     * change  type  for  bool  used  in  headers  to NCURSES_BOOL, which
+       usually is the same as the compiler's definition for bool.
+     * add  all  but  two  functions  for  X/Open  curses  wide-character
+       support.  These  are  only  available if the library is configured
+       using the --enable-widec option. Missing functions are
+          + pecho_wchar()
+          + slk_wset()
+     * add  environment  variable  $NCURSES_ASSUMED_COLORS  to modify the
+       assume_default_colors() extension.
 
    New features and improvements:
-     * rewrote tgoto() to make it better support existing termcap
-       applications which use hardcoded strings rather than obtain all of
-       their information from the termcap file. If the string does not
-       appear to be a terminfo string (i.e., does not refer to a "%p"
-       parameter, or terminfo-style padding), and termcap support is
-       configured, tgoto() will interpret it as termcap. Otherwise, as
-       before, it will use tparm().
-     * to ensure that the tgoto() changes work properly, added checks to
-       tic which report capabilities that do not reference the expected
-       number of parameters.
-     * new configure script options:
-          + option --disable-root-environ adds runtime checks which tell
-            ncurses to disregard $TERMINFO and similar environment
-            variables if the current user is root, or running
-            setuid/setgid.
-          + option --disable-assumed-color allows you to use the pre-5.1
-            convention of default colors used for color-pair 0 to be
-            configured (see assume_default_colors()).
-          + implement configure script options that transform installed
-            program names, e.g., --program-prefix, including the manpage
-            names and cross references.
-          + option --with-database allows you to specify a different
-            terminfo source-file to install. On OS/2 EMX, the default is
-            misc/emx.src, otherwise misc/terminfo.src
-          + option --with-default-terminfo-dir allows you to specify the
-            default terminfo database directory.
-          + option --with-libtool allows you to build with libtool.
-            NOTE: libtool uses a different notation for numbering shared
-            library versions from the existing ncurses configuration.
-          + option --with-manpage-tbl causes the manpages to be
-            preprocessed by tbl(1) prior to installation,
-          + option --without-curses-h causes the installation process to
-            install curses.h as ncurses.h and make appropriate changes to
-            headers and manpages.
-     * modified configure script options:
-          + change symbol used by the --install-prefix configure option
-            from INSTALL_PREFIX to DESTDIR (the latter has become common
-            usage although the name is misleading).
-          + modify ld -rpath options (e.g., Linux, and Solaris) to use an
-            absolute pathname for the build tree's lib directory,
-            avoiding confusion with directories relative to the current
-            one with the installed programs.
-          + modified misc/run_tic.in to use tic -o, to eliminate
-            dependency on $TERMINFO variable for installs.
-     * terminfo database:
-          + updated xterm terminfo entries to match XFree86 xterm patch
-            #146.
-          + added amiga-vnc, Matrix Orbital, and QNX qansi to
-            misc/terminfo.src.
-          + added os2 entry to misc/emx.src.
-          + add S0 and E0 extensions to screen's terminfo entry since
-            otherwise the FreeBSD port makes it pass termcap equivalents
-            to tgoto, which would be misinterpreted by older versions of
-            ncurses.
-     * improvements to program usability:
-          + modify programs to use curses_version() string to report the
-            version of ncurses with which they are compiled rather than
-            the NCURSES_VERSION string. The function returns the patch
-            level in addition to the major and minor version numbers.
-          + modify tput program so it can be renamed or invoked via a
-            link as 'reset' or 'init', producing the same effect as
-            tput reset or tput init.
-          + add error checking to infocmp's -v and -m options to ensure
-            that the option value is indeed a number.
-     * improved performance:
-          + replace a lookup table in lib_vidattr.c used to decode
-            no_color_video with a logic expression which is faster.
+     * Improved support for termcap applications:
+          + add  logic to dump_entry.c to remove function-key definitions
+            that  do  not  fit  into  the  1023-byte  limit for generated
+            termcaps. This makes hds200 fit.
+          + modify  tgetent()  to check if exit_attribute_mode resets the
+            alternate  character  set,  and  if so, attempt to adjust the
+            copy  of  the  termcap  "me"  string  which it will return to
+            eliminate that part. In particular, 'screen' would lose track
+            of line-drawing characters.
+          + add  check/fix  to  comp_parse.c  to  suppress  warning about
+            missing acsc string. This happens in configurations where raw
+            termcap  information  is processed; tic already does this and
+            other checks.
+          + add   tic  -A  option  to  suppress  capabilities  which  are
+            commented out when translating to termcap.
+          + modify  logic  in  lib_baudrate.c  for ospeed, for FreeBSD to
+            make  it  work  properly  for  termcap applications (patch by
+            Andrey A Chernov).
+     * add a call to _nc_keypad() in keypad() to accommodate applications
+       such  as nvi, which use curses for output but not for input (fixes
+       Debian #131263, cf: 20011215).
+     * correct  logic  for  COLORFGBG  environment  variable:  if rxvt is
+       compiled  with  xpm support, the variable has three fields, making
+       it   slightly  incompatible  with  itself.  In  either  case,  the
+       background color is the last field.
 
    Major bug fixes:
-     * correct manlinks.sed script introduced in ncurses 5.1 to avoid
-       using ERE "\+", which is not understood by standard versions of
-       sed. This happens to work with GNU sed, but is not portable, and
-       was the initial motivation for this release.
-     * remove "hpux10.*" case from CF_SHARED_OPTS configure script macro.
-       This differed from the "hpux*" case by using reversed symbolic
-       links, which made the 5.1 version not match the configuration of
-       5.0 shared libraries.
-     * guard against corrupt terminfo data:
-          + modify tparm() to disallow arithmetic on strings, analyze the
-            varargs list to read strings as strings and numbers as
-            numbers.
-          + modify tparm()'s internal function spop() to treat a null
-            pointer as an empty string.
-          + modify parse_format() in lib_tparm.c to ignore precision if
-            it is longer than 10000.
-          + rewrote limit checks in lib_mvcur.c using new functions
-            _nc_safe_strcat(), etc. Made other related changes to check
-            lengths used for strcat() and strcpy().
-     * corrections to screen optimization:
-          + added special case in lib_vidattr.c to reset underline and
-            standout for devices that have no sgr0 defined.
-          + change handling of non_dest_scroll_region in tty_update.c to
-            clear text after it is shifted in rather than before shifting
-            out. Also correct row computation.
-          + modify rs2 capability in xterm-r6 and similar entries where
-            cursor save/restore bracketed the sequence for resetting
-            video attributes. The cursor restore would undo that.
-     * UTF-8 support:
-          + when checking LC_ALL, LC_CTYPE, and LANG environment
-            variables for UTF-8 locale, ignore those which are set to an
-            empty value, as per SUSV2.
-          + encode 0xFFFD in UTF-8 with 3 bytes, not 2.
-          + modify _nc_utf8_outch() to avoid sign-extension when checking
-            for out-of-range value.
-     * other library fixes:
-          + added checks for an empty $HOME environment variable, to
-            avoid retrieving terminfo descriptions from ./.terminfo .
-          + change functions _nc_parse_entry() and postprocess_termcap()
-            to avoid using strtok(), because it is non-reentrant.
-          + initialize fds[] array to 0's in _nc_timed_wait(); apparently
-            poll() only sets the revents members of that array when there
-            is activity corresponding to the related file.
-          + add a check for null pointer in Make_Enum_Type().
-          + fix a heap problem with the c++ binding.
-          + correct missing includes for <string.h> in several places,
-            including the C++ binding. This is not noted by gcc unless we
-            use the -fno-builtin option.
-     * several fixes for tic:
-          + add a check for empty buffers returned by fgets() in
-            comp_scan.c next_char() function, in case tic is run on a
-            non-text file (fixes a core dump).
-          + modify tic to verify that its inputs are really files, in
-            case someone tries to read a directory (or /dev/zero).
-          + correct an uninitialized parameter to open_tempfile() in
-            tic.c which made "tic -I" give an ambiguous error message
-            about tmpnam.
-          + correct logic in adjust_cancels(), which did not check both
-            alternatives when reclassifying an extended name between
-            boolean, number and string, causing an infinite loop in tic.
-     * using new checks in tic for parameter counts in capability
-       strings, found/fixed several errors both in the terminfo database
-       and in the include/Caps file.
-          + modified several terminfo capability strings, including the
-            definitions for setaf, setab, in include/Caps to indicate
-            that the entries are parameterized. This information is used
-            to tell which strings are translated when converting to
-            termcap. This fixes a problem where the generated termcap
-            would contain a spurious "%p1" for the terminfo "%p1%d".
-          + correct parameter counts in include/Caps for dclk as well as
-            some printer-specific capabilities: csnm, defc, scs, scsd,
-            smgtp, smglp.
-     * various fixes for install scripts used to support configure
-       --srcdir and --with-install-prefix.
-     * correct several mismatches between manpage filename and ".TH"
-       directives, renaming dft_fgbg.3x to default_colors.3x and
-       menu_attribs.3x to menu_attributes.3x.
+     * rewrote     limit-checks     in     wscrl()     and     associated
+       _nc_scroll_window(), to ensure that if the parameter of wscrl() is
+       larger  than  the size of the scrolling region, then the scrolling
+       region will be cleared.
+     * modify  tset  to  restore  original  I/O  modes  if  an  error  is
+       encountered.  Also  modify  to  use  buffered  stderr consistently
+       rather than mixing with write().
+     * move  calls  to  def_shell_mode()  and def_prog_mode() before loop
+       with  callbacks  in  lib_set_term.c,  since the c++ demo otherwise
+       initialized the tty modes before saving them.
+     * modified  wresize()  to  ensure  that  a  failed  realloc will not
+       corrupt  the  window  structure, and to make subwindows fit within
+       the resized window.
+     * altered  resizeterm()  to avoid having it fail when a child window
+       cannot be resized because it would be larger than its parent.
+     * correct/improve  logic  to  produce  an  exit status for errors in
+       tput,  which  did not exit with an error when told to put a string
+       not in the current terminfo entry.
+     * modify  behavior  of can_clear_with() so that if an application is
+       running  in  a  non-bce  terminals with default colors enabled, it
+       returns  true,  allowing  the  user  to  select/paste text without
+       picking up extraneous trailing blanks.
+     * add a check in relative_move() to guard against buffer overflow in
+       the overwrite logic.
+     * add some limit/pointer checks to -S option of tputs.
+     * modify  mvcur()  to  avoid emitting newline characters when nonl()
+       mode  is  set.  Normally  this  is  not a problem since the actual
+       terminal  mode is set to suppress nl/crlf translations, however it
+       is  useful  to allow the caller to manipulate the terminal mode to
+       avoid  staircasing  effects  after spawning a process which writes
+       messages (for lynx 2.8.4).
 
    Portability:
      * configure script:
-          + newer config.guess, config.sub, including changes to support
-            OS/2 EMX. The configure script for OS/2 EMX still relies on a
-            patch since there is no (working) support for that platform
-            in the main autoconf distribution.
-          + make configure script checks on variables $GCC and $GXX
-            consistently compare against 'yes' rather than test if they
-            are nonnull, since either may be set to the corresponding
-            name of the C or C++ compiler.
-          + change configure script to use AC_CANONICAL_SYSTEM rather
-            than AC_CANONICAL_HOST, which means that configure --target
-            will set a default program-prefix.
-          + modify the check for big-core to force a couple of memory
-            accesses, which may work as needed for older/less-capable
-            machines (if not, there's still the explicit configure
-            option).
-          + modify configure test for tcgetattr() to allow for old
-            implementations, e.g., on BeOS, which only defined it as a
-            macro.
-          + add configure check for filesystems (such as OS/2 EMX) which
-            do not distinguish between upper/lowercase filenames, use
-            this to fix tags rules in makefiles.
-          + add MKncurses_def.sh to generate fallback definitions for
-            ncurses_cfg.h, to quiet gcc -Wundef warnings, modified
-            ifdef's in code to consistently use "#if" rather than
-            "#ifdef".
-          + change most remaining unquoted parameters of test in
-            configure script to use quotes, for instance fixing a problem
-            in the --disable-database option.
-          + modify scripts so that "make install.data" works on OS/2 EMX.
-          + modify scripts and makefiles so the Ada95 directory builds on
-            OS/2 EMX.
+          + modify check in --disable-overwrite option so that it is used
+            by  default unless the --prefix/$prefix value is not /usr, in
+            attempt  to work around packagers who do not read the INSTALL
+            notes.
+          + correct  a  typo  in configure --enable-colorfgbg option, and
+            move it to the experimental section (cf: 20011208).
+          + modify  configure script to allow building with termcap only,
+            or with fallbacks only. In this case, we do not build tic and
+            toe.
+          + modify  run_tic.sh  to check if the build is a cross-compile.
+            In  that  case,  do  not  use  the build's tic to install the
+            terminfo database.
+          + modify  c++/Makefile.in  to accommodate archive programs that
+            are  different for C++ than for C, and add cases for vendor's
+            C++ compilers on Solaris and IRIX.
+          + add   several   configure   script   options   to   aid  with
+            cross-compiling:     --with-build-cc,    --with-build-cflags,
+            --with-build-ldflags, and --with-build-libs.
+          + add  experimental  --with-caps=XXX  option  to  customize  to
+            similar terminfo database formats such as AIX 4.x
+          + add  configure  option  --with-ospeed  to assist packagers in
+            transition to 5.3 change to ospeed type.
      * library:
-          + replaced case-statement in _nc_tracebits() for CSIZE with a
-            table to simplify working around implementations that define
-            random combinations of the related macros to zero.
-          + improved OS/2 mouse support by retrying as a 2-button mouse
-            if code fails to set up a 3-button mouse.
-          + added private entrypoint _nc_basename(), used to consolidate
-            related code in progs, as well as accommodating OS/2 EMX
-            pathnames.
-          + alter definition of NCURSES_CONST to make it non-empty.
-          + redefine 'TEXT' in menu.h for AMIGA, since it is reported to
-            have an (unspecified) symbol conflict.
+          + implement a simple vsscanf() fallback function which uses the
+            %n conversion to help parse the input data.
+          + various fixes to build/work with different implementations of
+            vsscanf().
+          + add/use  macro  to  suppress  sign-extension  of char type on
+            platforms  where  this  is  a  problem in ctype macros, e.g.,
+            Solaris.
+          + finish changes needed to build dll's on cygwin.
+          + add  #undef's  before  possible redefinition of ERR and OK in
+            curses.h
      * programs:
-          + modified progs/tset.c and tack/sysdep.c to build with sgttyb
-            interface if neither termio or termios is available. Tested
-            this with FreeBSD 2.1.5 (which does have termios - but the
-            sgttyb does work).
+          + modify  ifdef's  in  write_entry.c  to  allow use of symbolic
+            links on platforms with no hard links, e.g., BeOS.
+          + modify  _nc_write_entry()  to  allow for the possibility that
+            linking  aliases  on a filesystem that ignores case would not
+            succeed  because  the  source  and destination differ only by
+            case, e.g., NCR260VT300WPP0 on cygwin.
+          + modify  logic  in  tic,  toe,  tput and tset which checks for
+            basename  of argv[0] to work properly on systems such as OS/2
+            which   have   case-independent   filenames   and/or  program
+            suffixes, e.g., ".ext".
 
                               Features of Ncurses
 
    The ncurses package is fully compatible with SVr4 (System V Release 4)
    curses:
-     * All 257 of the SVr4 calls have been implemented (and are
+     * All  257  of  the  SVr4  calls  have  been  implemented  (and  are
        documented).
-     * Full support for SVr4 curses features including keyboard mapping,
-       color, forms-drawing with ACS characters, and automatic
+     * Full  support for SVr4 curses features including keyboard mapping,
+       color,   forms-drawing   with   ACS   characters,   and  automatic
        recognition of keypad and function keys.
-     * An emulation of the SVr4 panels library, supporting a stack of
+     * An  emulation  of  the  SVr4 panels library, supporting a stack of
        windows with backing store, is included.
-     * An emulation of the SVr4 menus library, supporting a uniform but
+     * An  emulation  of the SVr4 menus library, supporting a uniform but
        flexible interface for menu programming, is included.
-     * An emulation of the SVr4 form library, supporting data collection
+     * An  emulation of the SVr4 form library, supporting data collection
        through on-screen forms, is included.
-     * Binary terminfo entries generated by the ncurses tic(1)
-       implementation are bit-for-bit-compatible with the entry format
+     * Binary   terminfo   entries   generated   by  the  ncurses  tic(1)
+       implementation  are  bit-for-bit-compatible  with the entry format
        SVr4 curses uses.
      * The utilities have options to allow you to filter terminfo entries
-       for use with less capable curses/terminfo versions such as the
+       for  use  with  less  capable curses/terminfo versions such as the
        HP/UX and AIX ports.
 
    The ncurses package also has many useful extensions over SVr4:
-     * 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, but not all EXTENDED features). Most
+     * 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,   but   not   all   EXTENDED   features).   Most
        EXTENDED-level features not directly concerned with wide-character
-       support are implemented, including many function calls not
-       supported under SVr4 curses (but portability of all calls is
+       support   are  implemented,  including  many  function  calls  not
+       supported  under  SVr4  curses  (but  portability  of all calls is
        documented so you can use the SVr4 subset only).
-     * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
-       corner of the screen if your terminal has an insert-character
+     * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost
+       corner  of  the  screen  if  your terminal has an insert-character
        capability.
      * Ada95 and C++ bindings.
-     * Support for mouse event reporting with X Window xterm and OS/2
+     * Support  for  mouse  event  reporting with X Window xterm and OS/2
        console windows.
      * Extended mouse support via Alessandro Rubini's gpm package.
-     * The function wresize() allows you to resize windows, preserving
+     * The  function  wresize()  allows you to resize windows, preserving
        their data.
      * The function use_default_colors() allows you to use the terminal's
        default colors for the default color pair, achieving the effect of
        transparent colors.
      * The functions keyok() and define_key() 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
+       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.
      * Support for 16-color terminals, such as aixterm and XFree86 xterm.
-     * Better cursor-movement optimization. The package now features a
+     * Better  cursor-movement  optimization.  The package now features a
        cursor-local-movement computation more efficient than either BSD's
        or System V's.
-     * 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
+     * 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 quickch() routine.
-     * 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
+     * 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.
-     * 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
+     * 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).
      * The tic(1)/captoinfo utility provided with ncurses has the ability
-       to translate many termcaps from the XENIX, IBM and AT&T extension
+       to  translate many termcaps from the XENIX, IBM and AT&T extension
        sets.
      * A BSD-like tset(1) utility is provided.
      * 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
+       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.
-     * 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
+     * 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.)
-     * In terminfo source files, use capabilities may refer not just to
+     * 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
+       compiled  entries  in  either the system terminfo directory or the
        user's $HOME/.terminfo directory.
-     * A script (capconvert) 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
+     * A  script  (capconvert)  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.
-     * 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
+     * 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.
-     * The table-of-entries utility toe makes it easy for users to see
+     * The  table-of-entries  utility  toe makes it easy for users to see
        exactly what terminal types are available on the system.
      * 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
+       have  a  corresponding  function  which may be linked (and will be
+       prototype-checked)  if  the  macro  definition  is  disabled  with
        #undef.
-     * An HTML "Introduction to Programming with NCURSES" document
-       provides a narrative introduction to the curses programming
+     * An  HTML  "Introduction  to  Programming  with  NCURSES"  document
+       provides  a  narrative  introduction  to  the  curses  programming
        interface.
 
                              State of the Package
 
    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
+   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.
 
-   The ncurses code has been tested with a wide variety of applications
+   The  ncurses  code has been tested with a wide variety of applications
    including (versions starting with those noted):
 
    cdk
           Curses Development Kit
-          [3]http://www.vexus.ca/CDK.html
-          [4]http://dickey.his.com/cdk.
+          [3]http://invisible-island.net/cdk.
+          [4]http://www.vexus.ca/CDK.html
 
    ded
           directory-editor
-          [5]http://dickey.his.com/ded.
+          [5]http://invisible-island.net/ded.
 
    dialog
-          the underlying application used in Slackware's setup, and the
+          the  underlying  application used in Slackware's setup, and the
           basis for similar applications on GNU/Linux.
-          [6]http://dickey.his.com/dialog.
+          [6]http://invisible-island.net/dialog.
 
    lynx
           the character-screen WWW browser
           [7]http://lynx.isc.org/release.
 
-   Midnight Commander 4.1
+   Midnight Commander
           file manager
           [8]www.gnome.org/mc/.
 
 
    vile
           vi-like-emacs
-          [16]http://dickey.his.com/vile.
+          [16]http://invisible-island.net/vile.
 
-   The ncurses distribution includes a selection of test programs
+   The  ncurses  distribution  includes  a  selection  of  test  programs
    (including a few games).
 
 Who's Who and What's What
 
    The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric
-   S. Raymond. Ongoing work is being done by [19]Thomas Dickey and
-   [20]Jürgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the
-   Free Software Foundation, which holds the copyright on ncurses.
+   S.  Raymond.  Ongoing  work  is  being  done  by [19]Thomas Dickey and
+   [20]Jürgen  Pfeifer.  [21]Thomas Dickey acts as the maintainer for the
+   Free  Software  Foundation,  which  holds  the  copyright  on ncurses.
    Contact the current maintainers at [22]bug-ncurses@gnu.org.
 
-   To join the ncurses mailing list, please write email to
+   To   join   the   ncurses   mailing   list,   please  write  email  to
    bug-ncurses-request@gnu.org containing the line:
              subscribe <name>@<host.domain>
 
    This list is open to anyone interested in helping with the development
    and testing of this package.
 
-   Beta versions of ncurses and patches to the current release are made
-   available at [23]ftp://dickey.his.com/ncurses.
+   Beta  versions  of ncurses and patches to the current release are made
+   available at [23]ftp://invisible-island.net/ncurses.
 
 Future Plans
 
-     * Extended-level XPG4 conformance, with internationalization
+     * Extended-level   XPG4   conformance,   with   internationalization
        support.
      * Ports to more systems, including DOS and Windows.
 
-   We need people to help with these projects. If you are interested in
+   We  need  people to help with these projects. If you are interested in
    working on them, please join the ncurses list.
 
 Other Related Resources
 
-   The distribution includes and uses a version of the terminfo-format
-   terminal description file maintained by Eric Raymond.
+   The  distribution  includes  and uses a version of the terminfo-format
+   terminal    description    file    maintained    by    Eric   Raymond.
    [24]http://earthspace.net/~esr/terminfo.
 
-   You can find lots of information on terminal-related topics not
+   You  can  find  lots  of  information  on  terminal-related topics not
    covered in the terminfo file at [25]Richard Shuford's archive.
 
 References
 
    1. ftp://ftp.gnu.org/pub/gnu/ncurses
-   2. ftp://dickey.his.com/ncurses
-   3. http://www.vexus.ca/CDK.html
-   4. http://dickey.his.com/cdk/cdk.html
-   5. http://dickey.his.com/ded/ded.html
-   6. http://dickey.his.com/dialog/dialog.html
+   2. ftp://invisible-island.net/ncurses
+   3. http://invisible-island.net/cdk/cdk.html
+   4. http://www.vexus.ca/CDK.html
+   5. http://invisible-island.net/ded/ded.html
+   6. http://invisible-island.net/dialog/dialog.html
    7. http://lynx.isc.org/release/
-   8. file://localhost/usr/build/ncurses/ncurses-5.2-20001021/doc/html/www.gnome.org/mc/
+   8. file://localhost/usr/build/ncurses/ncurses-5.2-20021012/doc/html/www.gnome.org/mc/
    9. http://www.mutt.org/
   10. http://www.ncftp.com/
   11. http://www.bostic.com/vi/
@@ -474,13 +379,13 @@ References
   13. http://members.iinet.net.au/~yusuf/taper/
   14. http://www.bg.debian.org/Packages/unstable/text/vh.html
   15. http://www.pp.clinet.fi/~walker/minicom.html
-  16. http://dickey.his.com/vile/vile.html
+  16. http://invisible-island.net/vile/vile.html
   17. mailto:zmbenhal@netcom.com
   18. http://www.ccil.org/~esr/home.html
   19. mailto:dickey@herndon4.his.com
-  20. mailto:juergen.pfeifer@gmx.net
+  20. http://www.familiepfeifer.de/Contact.aspx?Lang=en
   21. mailto:dickey@herndon4.his.com
   22. mailto:bug-ncurses@gnu.org
-  23. ftp://dickey.his.com/ncurses
+  23. ftp://invisible-island.net/ncurses
   24. http://earthspace.net/~esr/terminfo
   25. http://www.cs.utk.edu/~shuford/terminal_index.html
index 9f38ec4cb64e2c3619819d691505b750a50aaa43..9f6db419a51f6273216375a68d0b26c68f693844 100644 (file)
 # authorization.                                                             #
 ##############################################################################
 #
-#  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+#  Author:  Juergen Pfeifer, 1996
+#  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 #
 #  Version Control
-#  $Revision: 1.13 $
+#  $Revision: 1.14 $
 #
 SHELL          = /bin/sh
 THIS           = Makefile
index 8a530611917a9b19b3d31d451653c4c19e0d8f48..21e9b4cd86fb0fb5d09849e662025c95c9bf9eb7 100644 (file)
@@ -26,7 +26,8 @@
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
 
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 
 The documentation is provided in HTML format in the ./html 
 subdirectory. The main document is named index.html
index b1651379df2828b9a686b7a042a507549a6ee9d8..bccea45f57413775fd7cf3bf6cf570d38557c9cd 100644 (file)
 # authorization.                                                             #
 ##############################################################################
 #
-#  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+#  Author:  Juergen Pfeifer, 1996
+#  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 #
 #  Version Control
-#  $Revision: 1.34 $
+#  $Revision: 1.41 $
 #
 .SUFFIXES:
 
@@ -81,8 +82,8 @@ DEL_ADAMODE   = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d'
 
 GNATHTML       = `type -p gnathtml || type -p gnathtml.pl`
 GNATHP          = www.gnat.com
-MAIL            = juergen.pfeifer@gmx.net
-HOMEP           = home.t-online.de/home/Juergen.Pfeifer
+MAIL            = www.familiepfeifer.de/Contact.aspx?Lang=en
+HOMEP           = www.familiepfeifer.de/juergen
 
 ################################################################################
 ALIB            = @cf_ada_package@
@@ -101,7 +102,8 @@ GEN_FILES1      = Key_Definitions                           \
                  Linker_Options                        \
                  Base_Defs                             \
                  Window_Offsets                        \
-                 Version_Info
+                 Version_Info                          \
+                 Trace_Defs
 
 GEN_FILES2      = Menu_Opt_Rep                         \
                  Menu_Base_Defs                        \
@@ -123,6 +125,7 @@ GEN_FILES5  = Chtype_Def                            \
 
 GEN_TARGETS     = $(ADA_SRCDIR)/$(ABASE).ads                           \
                  $(ADA_SRCDIR)/$(ABASE)-aux.ads                        \
+                 $(ADA_SRCDIR)/$(ABASE)-trace.ads                      \
                  $(ADA_SRCDIR)/$(ABASE)-menus.ads                      \
                  $(ADA_SRCDIR)/$(ABASE)-forms.ads                      \
                  $(ADA_SRCDIR)/$(ABASE)-mouse.ads                      \
@@ -136,6 +139,7 @@ GEN_TARGETS     = $(ADA_SRCDIR)/$(ABASE).ads                                \
 
 GEN_SRC                = $(srcdir)/$(ABASE).ads.m4                             \
                  $(srcdir)/$(ABASE)-aux.ads.m4                         \
+                 $(srcdir)/$(ABASE)-trace.ads.m4                       \
                  $(srcdir)/$(ABASE)-menus.ads.m4                       \
                  $(srcdir)/$(ABASE)-forms.ads.m4                       \
                  $(srcdir)/$(ABASE)-mouse.ads.m4                       \
@@ -217,6 +221,9 @@ Version_Info: gen$x
 Window_Offsets: gen$x
        $(GENERATE) B D >$@
 
+Trace_Defs: gen$x
+       $(GENERATE) B T >$@
+
 Menu_Opt_Rep: gen$x
        $(GENERATE) M R >$@
 
@@ -271,6 +278,12 @@ $(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \
        $(srcdir)/$(ABASE)-aux.ads.m4 |\
        $(DEL_ADAMODE) >$@
 
+$(ADA_SRCDIR)/$(ABASE)-trace.ads: $(srcdir)/$(ABASE)-trace.ads.m4 \
+                               $(GEN_FILES5) $(srcdir)/normal.m4
+       $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
+       $(srcdir)/$(ABASE)-trace.ads.m4 |\
+       $(DEL_ADAMODE) >$@
+
 $(ADA_SRCDIR)/$(ABASE)-menus.ads: $(srcdir)/$(ABASE)-menus.ads.m4 \
                                  $(GEN_FILES2) $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
@@ -406,9 +419,9 @@ adahtml:
           sed -e 's%&lt;A HREF%<A HREF%g' |\
           sed -e 's%"&gt;%">%g' |\
           sed -e 's/3X/3x/g' |\
-          sed -e 's/$$\([A-Za-z0-9_]*:.*\)\$$/@\1@/' |\
+          sed -e 's/$$\([ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxz0123456789_]*:.*\)\$$/@\1@/' |\
           sed -e 's%Juergen Pfeifer%<A HREF="http://$(HOMEP)">J\&uuml;rgen Pfeifer</A>%g' |\
-          sed -e 's%$(MAIL)%<A HREF="mailto:$(MAIL)">\&lt;$(MAIL)\&gt;</A>%g' |\
+          sed -e 's%http://$(MAIL)%<A HREF="http://$(MAIL)">$(MAIL)</A>%g' |\
           sed -e 's%&lt;/A&gt;%</A>%g' > $$a.tmp ;\
            mv $$a.tmp $$f ;\
         done
index 64e9f912e443c6fc4a8ed45ad31d10eb94e18cb8..11ba3d73706a4417fcf966bf57183896043bfc3a 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996                 *
+ *   Author:  Juergen Pfeifer, 1996                                         *
+ *   Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en             *
  ****************************************************************************/
 
 /*
     Version Control
-    $Revision: 1.32 $
+    $Revision: 1.35 $
   --------------------------------------------------------------------------*/
 /*
   This program generates various record structures and constants from the
@@ -285,6 +286,26 @@ static void gen_attr_set( const char *name )
   gen_reps (nap, name, (len+7)/8, little_endian?start:0);
 }
 
+static void gen_trace(const char *name)
+{  
+  static const name_attribute_pair nap[] = {
+    {"Times",               TRACE_TIMES},
+    {"Tputs",               TRACE_TPUTS},
+    {"Update",              TRACE_UPDATE},
+    {"Cursor_Move",         TRACE_MOVE},
+    {"Character_Output",    TRACE_CHARPUT},
+    {"Calls",               TRACE_CALLS},
+    {"Virtual_Puts",        TRACE_VIRTPUT},
+    {"Input_Events",        TRACE_IEVENT},
+    {"TTY_State",           TRACE_BITS},
+    {"Internal_Calls",      TRACE_ICALLS},
+    {"Character_Calls",     TRACE_CCALLS},
+    {"Termcap_TermInfo",    TRACE_DATABASE},
+    {(char *)0,                0}
+  };
+  gen_reps(nap,name,sizeof(int),0);
+}
+
 static void gen_menu_opt_rep(const char *name)
 {
   static const name_attribute_pair nap[] = {
@@ -937,6 +958,9 @@ void gen_mouse_events(void)
 #ifdef BUTTON_ALT
   GEN_MEVENT(BUTTON_ALT);
 #endif
+#ifdef REPORT_MOUSE_POSITION
+  GEN_MEVENT(REPORT_MOUSE_POSITION);
+#endif   
 #ifdef ALL_MOUSE_EVENTS
   GEN_MEVENT(ALL_MOUSE_EVENTS);
 #endif
@@ -1012,14 +1036,19 @@ static void mouse_basedefs(void)
  */
 static void color_def (const char *name, int value)
 {
-  printf("   %-8s : constant Color_Number := %d;\n",name,value);
+  printf("   %-16s : constant Color_Number := %d;\n",name,value);
 }
 
+#define HAVE_USE_DEFAULT_COLORS 1
+
 /*
  * Generate all color definitions
  */
 static void gen_color (void)
 {
+#ifdef HAVE_USE_DEFAULT_COLORS
+  color_def ("Default_Color",-1);
+#endif
 #ifdef COLOR_BLACK
   color_def ("Black",COLOR_BLACK);
 #endif
@@ -1108,7 +1137,7 @@ eti_gen(char*buf, int code, const char* name, int* etimin, int* etimax)
     o = offsetof(WINDOW, member);                                   \
     if ((o%sizeof(itype) == 0)) {                                   \
        printf("   Offset%-*s : constant Natural := %2ld; --  %s\n", \
-              8, #member, o/sizeof(itype),#itype);                  \
+              12, #member, o/sizeof(itype),#itype);                 \
     }                                                               \
   }
   
@@ -1128,22 +1157,46 @@ gen_offsets(void)
   GEN_OFFSET(_pary,int);
   GEN_OFFSET(_parx,int);
   if (sizeof(bool) == sizeof(char)) {
+    GEN_OFFSET(_notimeout,char);
+    GEN_OFFSET(_clear,char);
+    GEN_OFFSET(_leaveok,char);
     GEN_OFFSET(_scroll,char);
+    GEN_OFFSET(_idlok,char);
+    GEN_OFFSET(_idcok,char);
+    GEN_OFFSET(_immed,char);
+    GEN_OFFSET(_sync,char);
+    GEN_OFFSET(_use_keypad,char);
     s_bool = "char";
   } else if (sizeof(bool) == sizeof(short)) {
+    GEN_OFFSET(_notimeout,short);
+    GEN_OFFSET(_clear,short);
+    GEN_OFFSET(_leaveok,short);
     GEN_OFFSET(_scroll,short);
+    GEN_OFFSET(_idlok,short);
+    GEN_OFFSET(_idcok,short);
+    GEN_OFFSET(_immed,short);
+    GEN_OFFSET(_sync,short);
+    GEN_OFFSET(_use_keypad,short);
     s_bool = "short";
   } else if (sizeof(bool) == sizeof(int)) {
+    GEN_OFFSET(_notimeout,int);
+    GEN_OFFSET(_clear,int);
+    GEN_OFFSET(_leaveok,int);
     GEN_OFFSET(_scroll,int);
+    GEN_OFFSET(_idlok,int);
+    GEN_OFFSET(_idcok,int);
+    GEN_OFFSET(_immed,int);
+    GEN_OFFSET(_sync,int);
+    GEN_OFFSET(_use_keypad,int);
     s_bool = "int";
   }
   printf("   Sizeof%-*s : constant Natural := %2ld; --  %s\n",
-        8, "_bool", (long) sizeof(bool),"bool");
+        12, "_bool", (long) sizeof(bool),"bool");
   /* In ncurses _maxy and _maxx needs an offset for the "public"
    * value
    */
   printf("   Offset%-*s : constant Natural := %2d; --  %s\n",
-        8, "_XY",1,"int");
+        12, "_XY",1,"int");
   printf("\n");
   printf("   type Curses_Bool is mod 2 ** Interfaces.C.%s'Size;\n",s_bool);
 }
@@ -1212,6 +1265,9 @@ int main(int argc, char *argv[])
        case 'V': /* generate version info */
          gen_version_info();
          break;
+       case 'T': /* generate the Trace info */
+         gen_trace("Trace_Attribute_Set");
+         break;
        default:
          break;
        }
index 71e4872b47c41a8d327e0e32545f1ee0bab186f8..aacac4f59d4a3758a7ec2e4fea7074bd1d5b446e 100644 (file)
@@ -35,9 +35,10 @@ include(M4MACRO)----------------------------------------------------------------
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.13 $
+--  $Revision: 1.14 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Base_Defs')
index ff7882f7cf03ea39b545b73f8aa03f5b91dee17f..79726781e404789462062a6b4c0c7a0db772c81d 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.12 $
+--  $Revision: 1.13 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
index aedd01bab3538bda020b87458a05dbf7bf8e5848..6f99e8544b024f147f67f81cc02d4f33f507bd61 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.13 $
+--  $Revision: 1.14 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 
index cddc1d1e58d1f439650932b24dcd808985b30edb..b07618aebfddf6abf9b6f76b3e26a7ca70f6af07 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.12 $
+--  $Revision: 1.13 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 
index f969ce0422ac10add2c42bc88327ff4bbf3bc456..9123f9d97261ce41afcc7aa36aa6b74bb8b7e406 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.24 $
+--  $Revision: 1.26 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Form_Base_Defs')
@@ -685,6 +686,9 @@ include(`Form_Opt_Rep')Dnl
    --  AKA
    pragma Inline (Is_New_Page);
 
+   --  MANPAGE(`form_requestname.3x')
+   --  Not Implemented: form_request_name, form_request_by_name
+
 ------------------------------------------------------------------------------
 private
    type Field is new System.Storage_Elements.Integer_Address;
index 8d601d80b929398bb06f380927797487e230094e..1c42bbebb9944fab8679c2363005e15340c3075e 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.12 $
+--  $Revision: 1.13 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 
index 2f26f08afda15baa2179af9ca934abf4f8e4c149..87ffadc7fcbd3e642b6cd21355485be6c6197124 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.12 $
+--  $Revision: 1.13 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 
index 2bc350a72d18ca3958ced723520e58d5d3c80719..ba620792b379417f381aaeafa00be1e96952b7ec 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.21 $
+--  $Revision: 1.23 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Menu_Base_Defs')
@@ -473,6 +474,13 @@ include(`Item_Rep')dnl
    procedure Set_Format (Men     : in Menu;
                          Lines   : in Line_Count;
                          Columns : in Column_Count);
+   --  Not implemented: 0 argument for Lines or Columns;
+   --  instead use Format to get the current sizes
+   --      The  default  format  is  16  rows,  1  column.    Calling
+   --      set_menu_format  with a null menu pointer will change this
+   --      default.  A zero row or column argument to set_menu_format
+   --      is  interpreted  as  a  request  not to change the current
+   --      value.
    --  AKA
    pragma Inline (Set_Format);
 
@@ -570,7 +578,7 @@ include(`Item_Rep')dnl
    --  Reset Men to Null_Menu
    --  Not inlined
 
-   --  MANPAGE(`menu_new.3x')
+   --  MANPAGE(`menu_driver.3x')
 
    type Driver_Result is (Menu_Ok,
                           Request_Denied,
@@ -583,6 +591,8 @@ include(`Item_Rep')dnl
    --  AKA
    --  Driver is not inlined
 
+   --  ANCHOR(`menu_requestname.3x')
+   --  Not Implemented: menu_request_name, menu_request_by_name
 -------------------------------------------------------------------------------
 private
    type Item   is new System.Storage_Elements.Integer_Address;
index 0db4ffbbc77f7940a4b1e930908bb10bf9f7ded1..84eeacb2962c886e9eebf1357326bf4480ced7cd 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.19 $
+--  $Revision: 1.21 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Mouse_Base_Defs')
@@ -52,6 +53,12 @@ package Terminal_Interface.Curses.Mouse is
    --  is still marked as experimental. So also this binding will change
    --  if the ncurses methods change.
    --
+   --  mouse_trafo, wmouse_trafo are implemented as Transform_Coordinates
+   --  in the parent package.
+   --
+   --  Not implemented:
+   --  REPORT_MOUSE_POSITION (i.e. as a parameter to Register_Reportable_Event
+   --  or Start_Mouse)
    type Event_Mask is private;
    No_Events  : constant Event_Mask;
    All_Events : constant Event_Mask;
@@ -107,6 +114,8 @@ package Terminal_Interface.Curses.Mouse is
    --  ANCHOR(`mousemask()',`Start_Mouse')
    --  There is one difference to mousmask(): we return the value of the
    --  old mask, that means the event mask value before this call.
+   --  Not Implemented: The library version
+   --  returns a Mouse_Mask that tells which events are reported.
    function Start_Mouse (Mask : Event_Mask := All_Events)
                          return Event_Mask;
    --  AKA
@@ -128,6 +137,8 @@ package Terminal_Interface.Curses.Mouse is
                         State  : out Button_State);
    --  !!! Warning: X and Y are screen coordinates. Due to ripped of lines they
    --  may not be identical to window coordinates.
+   --  Not Implemented: Get_Event only reports one event, the C library
+   --  version supports multiple events, e.g. {click-1, click-3}
    pragma Inline (Get_Event);
 
    --  ANCHOR(`ungetmouse()',`Unget_Mouse')
index 1369cfd72c0c4f44f03bfce15e504bdd2a68a043..4b9a85814da753c1285b72e5e3d933d2650b76ab 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.12 $
+--  $Revision: 1.13 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 
index 04e374fceb0a0c15c57110e7bbf6dfba98aa3473..7d571b9e97ae531f4a8dc5766f5608708350386c 100644 (file)
@@ -36,9 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.15 $
+--  $Revision: 1.16 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System;
diff --git a/Ada95/gen/terminal_interface-curses-trace.ads.m4 b/Ada95/gen/terminal_interface-curses-trace.ads.m4
new file mode 100644 (file)
index 0000000..546004f
--- /dev/null
@@ -0,0 +1,78 @@
+--  -*- ada -*-
+define(`HTMLNAME',`terminal_interface-curses-trace__ads.htm')dnl
+include(M4MACRO)------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Trace                     --
+--                                                                          --
+--                                 S P E C                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control:
+--  $Revision: 1.1 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+
+package Terminal_Interface.Curses.Trace is
+   pragma Preelaborate (Terminal_Interface.Curses.Trace);
+
+   pragma Warnings (Off);
+include(`Trace_Defs')
+
+   pragma Warnings (On);
+
+   Trace_Disable  : constant Trace_Attribute_Set := (others => False);
+
+   Trace_Ordinary : constant Trace_Attribute_Set :=
+     (Times            => True,
+      Tputs            => True,
+      Update           => True,
+      Cursor_Move      => True,
+      Character_Output => True,
+      others           => False);
+   Trace_Maximum : constant Trace_Attribute_Set := (others => True);
+
+------------------------------------------------------------------------------
+
+   --  MANPAGE(`curs_trace.3x')
+
+   --  ANCHOR(`trace()',`Trace_on')
+   procedure Trace_On (x : Trace_Attribute_Set);
+   --  The debugging library has trace.
+
+   --  ANCHOR(`_tracef()',`Trace_Put')
+   procedure Trace_Put (str : String);
+   --  AKA
+
+   Current_Trace_Setting : Trace_Attribute_Set;
+   pragma Import (C, Current_Trace_Setting, "_nc_tracing");
+
+end Terminal_Interface.Curses.Trace;
index 11930d9709ee10508b6abf60d4d2cfa44712aa39..bd879cdde4329441a868a033c9ac8d9be82a37bb 100644 (file)
@@ -35,9 +35,10 @@ include(M4MACRO)----------------------------------------------------------------
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+--  Author:  Juergen Pfeifer, 1996
+--  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 --  Version Control:
---  $Revision: 1.28 $
+--  $Revision: 1.30 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Base_Defs')
@@ -95,7 +96,7 @@ include(`Old_Keys')dnl
 
 ------------------------------------------------------------------------------
 
-   type Color_Number is range 0 .. Integer (Interfaces.C.short'Last);
+   type Color_Number is range -1 .. Integer (Interfaces.C.short'Last);
    for Color_Number'Size use Interfaces.C.short'Size;
    --  (n)curses uses a short for the color index
    --  The model is, that a Color_Number is an index into an array of
@@ -198,7 +199,7 @@ include(`AC_Rep')
 include(`ACS_Map')dnl
 
    --  MANPAGE(`curs_initscr.3x')
-   --  | Not implemented: newterm, set_term, delscreen
+   --  | Not implemented: newterm, set_term, delscreen, curscr
 
    --  ANCHOR(`stdscr',`Standard_Window')
    function Standard_Window return Window;
@@ -233,6 +234,7 @@ include(`ACS_Map')dnl
                           Line   : in Line_Position;
                           Column : in Column_Position);
    --  AKA
+   --  ALIAS(`move()')
    pragma Inline (Move_Cursor);
 
    --  MANPAGE(`curs_addch.3x')
@@ -241,6 +243,7 @@ include(`ACS_Map')dnl
    procedure Add (Win :  in Window := Standard_Window;
                   Ch  :  in Attributed_Character);
    --  AKA
+   --  ALIAS(`addch()')
 
    procedure Add (Win :  in Window := Standard_Window;
                   Ch  :  in Character);
@@ -254,6 +257,7 @@ include(`ACS_Map')dnl
       Column : in Column_Position;
       Ch     : in Attributed_Character);
    --  AKA
+   --  ALIAS(`mvaddch()')
 
    procedure Add
      (Win    : in Window := Standard_Window;
@@ -268,6 +272,7 @@ include(`ACS_Map')dnl
      (Win : in Window := Standard_Window;
       Ch  : in Attributed_Character);
    --  AKA
+   --  ALIAS(`echochar()')
 
    procedure Add_With_Immediate_Echo
      (Win : in Window := Standard_Window;
@@ -276,6 +281,7 @@ include(`ACS_Map')dnl
    pragma Inline (Add_With_Immediate_Echo);
 
    --  MANPAGE(`curs_window.3x')
+   --  Not Implemented: wcursyncup
 
    --  ANCHOR(`newwin()',`Create')
    function Create
@@ -283,6 +289,8 @@ include(`ACS_Map')dnl
       Number_Of_Columns     : Column_Count;
       First_Line_Position   : Line_Position;
       First_Column_Position : Column_Position) return Window;
+   --  Not Implemented: Default Number_Of_Lines, Number_Of_Columns
+   --  the C version lets them be 0, see the man page.
    --  AKA
    pragma Inline (Create);
 
@@ -363,6 +371,8 @@ include(`ACS_Map')dnl
                   Len : in Integer := -1);
    --  AKA
    --  ALIAS(`waddstr()')
+   --  ALIAS(`addnstr()')
+   --  ALIAS(`addstr()')
 
    --  ANCHOR(`mvwaddnstr()',`Add')
    procedure Add (Win    : in Window := Standard_Window;
@@ -372,6 +382,8 @@ include(`ACS_Map')dnl
                   Len    : in Integer := -1);
    --  AKA
    --  ALIAS(`mvwaddstr()')
+   --  ALIAS(`mvaddnstr()')
+   --  ALIAS(`mvaddstr()')
 
    --  MANPAGE(`curs_addchstr.3x')
 
@@ -381,6 +393,8 @@ include(`ACS_Map')dnl
                   Len : in Integer := -1);
    --  AKA
    --  ALIAS(`waddchstr()')
+   --  ALIAS(`addchnstr()')
+   --  ALIAS(`addchstr()')
 
    --  ANCHOR(`mvwaddchnstr()',`Add')
    procedure Add (Win    : in Window := Standard_Window;
@@ -390,9 +404,13 @@ include(`ACS_Map')dnl
                   Len    : in Integer := -1);
    --  AKA
    --  ALIAS(`mvwaddchstr()')
+   --  ALIAS(`mvaddchnstr()')
+   --  ALIAS(`mvaddchstr()')
    pragma Inline (Add);
 
    --  MANPAGE(`curs_border.3x')
+   --  | Not implemented: mvhline,  mvwhline, mvvline, mvwvline
+   --  | use Move_Cursor then Horizontal_Line or Vertical_Line
 
    --  ANCHOR(`wborder()',`Border')
    procedure Border
@@ -407,6 +425,7 @@ include(`ACS_Map')dnl
       Lower_Right_Corner_Symbol : in Attributed_Character := Default_Character
      );
    --  AKA
+   --  ALIAS(`border()')
    pragma Inline (Border);
 
    --  ANCHOR(`box()',`Box')
@@ -423,6 +442,7 @@ include(`ACS_Map')dnl
       Line_Size   : in Natural;
       Line_Symbol : in Attributed_Character := Default_Character);
    --  AKA
+   --  ALIAS(`hline()')
    pragma Inline (Horizontal_Line);
 
    --  ANCHOR(`wvline()',`Vertical_Line')
@@ -431,14 +451,17 @@ include(`ACS_Map')dnl
       Line_Size   : in Natural;
       Line_Symbol : in Attributed_Character := Default_Character);
    --  AKA
+   --  ALIAS(`vline()')
    pragma Inline (Vertical_Line);
 
    --  MANPAGE(`curs_getch.3x')
+   --  Not implemented: mvgetch, mvwgetch
 
    --  ANCHOR(`wgetch()',`Get_Keystroke')
    function Get_Keystroke (Win : Window := Standard_Window)
                            return Real_Key_Code;
    --  AKA
+   --  ALIAS(`getch()')
    --  Get a character from the keyboard and echo it - if enabled - to the
    --  window.
    --  If for any reason (i.e. a timeout) we couldn't get a character the
@@ -475,14 +498,28 @@ include(`ACS_Map')dnl
    pragma Inline (Function_Key_Code);
 
    --  MANPAGE(`curs_attr.3x')
+   --  | Not implemented attr_off,  wattr_off,
+   --  |  attr_on, wattr_on, attr_set, wattr_set
+
+   --  PAIR_NUMBER
+   --  PAIR_NUMBER(c) is the same as c.Color
+
+   --  ANCHOR(`standout()',`Standout')
+   procedure Standout (Win : Window  := Standard_Window;
+                       On  : Boolean := True);
+   --  ALIAS(`wstandout()')
+   --  ALIAS(`wstandend()')
 
    --  ANCHOR(`wattron()',`Switch_Character_Attribute')
    procedure Switch_Character_Attribute
      (Win  : in Window := Standard_Window;
       Attr : in Character_Attribute_Set := Normal_Video;
       On   : in Boolean := True); --  if False we switch Off.
+   --  Switches those Attributes set to true in the list.
    --  AKA
    --  ALIAS(`wattroff()')
+   --  ALIAS(`attron()')
+   --  ALIAS(`attroff()')
 
    --  ANCHOR(`wattrset()',`Set_Character_Attributes')
    procedure Set_Character_Attributes
@@ -490,12 +527,14 @@ include(`ACS_Map')dnl
       Attr  : in Character_Attribute_Set := Normal_Video;
       Color : in Color_Pair := Color_Pair'First);
    --  AKA
+   --  ALIAS(`attrset()')
    pragma Inline (Set_Character_Attributes);
 
    --  ANCHOR(`wattr_get()',`Get_Character_Attributes')
    function Get_Character_Attribute
      (Win : in Window := Standard_Window) return Character_Attribute_Set;
    --  AKA
+   --  ALIAS(`attr_get()')
 
    --  ANCHOR(`wattr_get()',`Get_Character_Attribute')
    function Get_Character_Attribute
@@ -507,6 +546,7 @@ include(`ACS_Map')dnl
    procedure Set_Color (Win  : in Window := Standard_Window;
                         Pair : in Color_Pair);
    --  AKA
+   --  ALIAS(`color_set()')
    pragma Inline (Set_Color);
 
    --  ANCHOR(`wchgat()',`Change_Attributes')
@@ -516,6 +556,7 @@ include(`ACS_Map')dnl
       Attr  : in Character_Attribute_Set := Normal_Video;
       Color : in Color_Pair := Color_Pair'First);
    --  AKA
+   --  ALIAS(`chgat()')
 
    --  ANCHOR(`mvwchgat()',`Change_Attributes')
    procedure Change_Attributes
@@ -526,6 +567,7 @@ include(`ACS_Map')dnl
       Attr   : in Character_Attribute_Set := Normal_Video;
       Color  : in Color_Pair := Color_Pair'First);
    --  AKA
+   --  ALIAS(`mvchgat()')
    pragma Inline (Change_Attributes);
 
    --  MANPAGE(`curs_beep.3x')
@@ -574,6 +616,11 @@ include(`ACS_Map')dnl
    --  AKA
    pragma Inline (Set_KeyPad_Mode);
 
+   function Get_KeyPad_Mode (Win : in Window := Standard_Window)
+                             return Boolean;
+   --  This has no pendant in C. There you've to look into the WINDOWS
+   --  structure to get the value. Bad practice, not repeated in Ada.
+
    type Half_Delay_Amount is range 1 .. 255;
 
    --  ANCHOR(`halfdelay()',`Half_Delay')
@@ -610,6 +657,7 @@ include(`ACS_Map')dnl
                                Mode   : in Timeout_Mode;
                                Amount : in Natural); --  in Milliseconds
    --  AKA
+   --  ALIAS(`timeout()')
    --  Instead of overloading the semantic of the sign of amount, we
    --  introduce the Timeout_Mode parameter. This should improve
    --  readability. For Blocking and Non_Blocking, the Amount is not
@@ -683,6 +731,7 @@ include(`ACS_Map')dnl
       Top_Line    : in Line_Position;
       Bottom_Line : in Line_Position);
    --  AKA
+   --  ALIAS(`setscrreg()')
    pragma Inline (Set_Scroll_Region);
 
    --  MANPAGE(`curs_refresh.3x')
@@ -697,6 +746,7 @@ include(`ACS_Map')dnl
    --  AKA
    --  There is an overloaded Refresh for Pads.
    --  The Inline pragma appears there
+   --  ALIAS(`refresh()')
 
    --  ANCHOR(`wnoutrefresh()',`Refresh_Without_Update')
    procedure Refresh_Without_Update
@@ -721,33 +771,41 @@ include(`ACS_Map')dnl
    --  ANCHOR(`werase()',`Erase')
    procedure Erase (Win : in Window := Standard_Window);
    --  AKA
+   --  ALIAS(`erase()')
    pragma Inline (Erase);
 
    --  ANCHOR(`wclear()',`Clear')
    procedure Clear
      (Win : in Window := Standard_Window);
    --  AKA
+   --  ALIAS(`clear()')
    pragma Inline (Clear);
 
    --  ANCHOR(`wclrtobot()',`Clear_To_End_Of_Screen')
    procedure Clear_To_End_Of_Screen
      (Win : in Window := Standard_Window);
    --  AKA
+   --  ALIAS(`clrtobot()')
    pragma Inline (Clear_To_End_Of_Screen);
 
    --  ANCHOR(`wclrtoeol()',`Clear_To_End_Of_Line')
    procedure Clear_To_End_Of_Line
      (Win : in Window := Standard_Window);
    --  AKA
+   --  ALIAS(`clrtoeol()')
    pragma Inline (Clear_To_End_Of_Line);
 
    --  MANPAGE(`curs_bkgd.3x')
 
    --  ANCHOR(`wbkgdset()',`Set_Background')
+   --  TODO: we could have Set_Background(Window; Character_Attribute_Set)
+   --  because in C it is common to see bkgdset(A_BOLD) or
+   --  bkgdset(COLOR_PAIR(n))
    procedure Set_Background
      (Win : in Window := Standard_Window;
       Ch  : in Attributed_Character);
    --  AKA
+   --  ALIAS(`bkgdset()')
    pragma Inline (Set_Background);
 
    --  ANCHOR(`wbkgd()',`Change_Background')
@@ -755,12 +813,15 @@ include(`ACS_Map')dnl
      (Win : in Window := Standard_Window;
       Ch  : in Attributed_Character);
    --  AKA
+   --  ALIAS(`bkgd()')
    pragma Inline (Change_Background);
 
    --  ANCHOR(`wbkgdget()',`Get_Background')
+   --  ? wbkgdget is not listed in curs_bkgd, getbkgd is thpough.
    function Get_Background (Win : Window := Standard_Window)
      return Attributed_Character;
    --  AKA
+   --  ALIAS(`bkgdget()')
    pragma Inline (Get_Background);
 
    --  MANPAGE(`curs_touch.3x')
@@ -834,16 +895,19 @@ include(`ACS_Map')dnl
      (Win   : in Window  := Standard_Window;
       Lines : in Integer := 1); --  default is to insert one line above
    --  AKA
+   --  ALIAS(`insdelln()')
    pragma Inline (Insert_Delete_Lines);
 
    --  ANCHOR(`wdeleteln()',`Delete_Line')
    procedure Delete_Line (Win : in Window := Standard_Window);
    --  AKA
+   --  ALIAS(`deleteln()')
    pragma Inline (Delete_Line);
 
    --  ANCHOR(`winsertln()',`Insert_Line')
    procedure Insert_Line (Win : in Window := Standard_Window);
    --  AKA
+   --  ALIAS(`insertln()')
    pragma Inline (Insert_Line);
 
    --  MANPAGE(`curs_getyx.3x')
@@ -942,6 +1006,8 @@ include(`ACS_Map')dnl
    procedure Scroll (Win    : in Window  := Standard_Window;
                      Amount : in Integer := 1);
    --  AKA
+   --  ALIAS(`scroll()')
+   --  ALIAS(`scrl()')
    pragma Inline (Scroll);
 
    --  MANPAGE(`curs_delch.3x')
@@ -949,6 +1015,7 @@ include(`ACS_Map')dnl
    --  ANCHOR(`wdelch()',`Delete_Character')
    procedure Delete_Character (Win : in Window := Standard_Window);
    --  AKA
+   --  ALIAS(`delch()')
 
    --  ANCHOR(`mvwdelch()',`Delete_Character')
    procedure Delete_Character
@@ -956,6 +1023,7 @@ include(`ACS_Map')dnl
       Line   : in Line_Position;
       Column : in Column_Position);
    --  AKA
+   --  ALIAS(`mvdelch()')
    pragma Inline (Delete_Character);
 
    --  MANPAGE(`curs_inch.3x')
@@ -963,6 +1031,7 @@ include(`ACS_Map')dnl
    --  ANCHOR(`winch()',`Peek')
    function Peek (Win : Window := Standard_Window)
      return Attributed_Character;
+   --  ALIAS(`inch()')
    --  AKA
 
    --  ANCHOR(`mvwinch()',`Peek')
@@ -971,14 +1040,16 @@ include(`ACS_Map')dnl
       Line   : Line_Position;
       Column : Column_Position) return Attributed_Character;
    --  AKA
+   --  ALIAS(`mvinch()')
    --  More Peek's follow, pragma Inline appears later.
 
-   --  MANPAGE(`curs_winch.3x')
+   --  MANPAGE(`curs_insch.3x')
 
    --  ANCHOR(`winsch()',`Insert')
    procedure Insert (Win : in Window := Standard_Window;
                      Ch  : in Attributed_Character);
    --  AKA
+   --  ALIAS(`insch()')
 
    --  ANCHOR(`mvwinsch()',`Insert')
    procedure Insert (Win    : in Window := Standard_Window;
@@ -986,8 +1057,9 @@ include(`ACS_Map')dnl
                      Column : in Column_Position;
                      Ch     : in Attributed_Character);
    --  AKA
+   --  ALIAS(`mvinsch()')
 
-   --  MANPAGE(`curs_winch.3x')
+   --  MANPAGE(`curs_insstr.3x')
 
    --  ANCHOR(`winsnstr()',`Insert')
    procedure Insert (Win : in Window := Standard_Window;
@@ -995,6 +1067,8 @@ include(`ACS_Map')dnl
                      Len : in Integer := -1);
    --  AKA
    --  ALIAS(`winsstr()')
+   --  ALIAS(`insnstr()')
+   --  ALIAS(`insstr()')
 
    --  ANCHOR(`mvwinsnstr()',`Insert')
    procedure Insert (Win    : in Window := Standard_Window;
@@ -1004,6 +1078,8 @@ include(`ACS_Map')dnl
                      Len    : in Integer := -1);
    --  AKA
    --  ALIAS(`mvwinsstr()')
+   --  ALIAS(`mvinsnstr()')
+   --  ALIAS(`mvinsstr()')
    pragma Inline (Insert);
 
    --  MANPAGE(`curs_instr.3x')
@@ -1014,6 +1090,8 @@ include(`ACS_Map')dnl
                    Len : in  Integer := -1);
    --  AKA
    --  ALIAS(`winstr()')
+   --  ALIAS(`innstr()')
+   --  ALIAS(`instr()')
 
    --  ANCHOR(`mvwinnstr()',`Peek')
    procedure Peek (Win    : in  Window := Standard_Window;
@@ -1023,6 +1101,8 @@ include(`ACS_Map')dnl
                    Len    : in  Integer := -1);
    --  AKA
    --  ALIAS(`mvwinstr()')
+   --  ALIAS(`mvinnstr()')
+   --  ALIAS(`mvinstr()')
 
    --  MANPAGE(`curs_inchstr.3x')
 
@@ -1032,6 +1112,8 @@ include(`ACS_Map')dnl
                    Len : in  Integer := -1);
    --  AKA
    --  ALIAS(`winchstr()')
+   --  ALIAS(`inchnstr()')
+   --  ALIAS(`inchstr()')
 
    --  ANCHOR(`mvwinchnstr()',`Peek')
    procedure Peek (Win    : in  Window := Standard_Window;
@@ -1041,6 +1123,8 @@ include(`ACS_Map')dnl
                    Len    : in  Integer := -1);
    --  AKA
    --  ALIAS(`mvwinchstr()')
+   --  ALIAS(`mvinchnstr()')
+   --  ALIAS(`mvinchstr()')
    --  We don't inline the Peek procedures
 
    --  MANPAGE(`curs_getstr.3x')
@@ -1051,19 +1135,27 @@ include(`ACS_Map')dnl
                   Len : in  Integer := -1);
    --  AKA
    --  ALIAS(`wgetstr()')
+   --  ALIAS(`getnstr()')
+   --  ALIAS(`getstr()')
+   --  actually getstr is not supported because that results in buffer
+   --  overflows.
 
+   --  ANCHOR(`mvwgetnstr()',`Get')
    procedure Get (Win    : in  Window := Standard_Window;
                   Line   : in  Line_Position;
                   Column : in  Column_Position;
                   Str    : out String;
                   Len    : in  Integer := -1);
    --  AKA
-   --  not specified in ncurses, should be: mvwgetnstr()
-   --       and mvwgetstr() (which exists)
+   --  ALIAS(`mvwgetstr()')
+   --  ALIAS(`mvgetnstr()')
+   --  ALIAS(`mvgetstr()')
    --  Get is not inlined
 
    --  MANPAGE(`curs_slk.3x')
 
+   --  Not Implemented: slk_attr_on, slk_attr_off, slk_attr_set
+
    type Soft_Label_Key_Format is (Three_Two_Three,
                                   Four_Four,
                                   PC_Style,              --  ncurses specific
@@ -1149,6 +1241,9 @@ include(`ACS_Map')dnl
    --  AKA
    pragma Inline (Set_Soft_Label_Key_Color);
 
+   --  MANPAGE(`keybound.3x')
+   --  Not Implemented: keybound
+
    --  MANPAGE(`keyok.3x')
 
    --  ANCHOR(`keyok()',`Enable_Key')
@@ -1167,8 +1262,10 @@ include(`ACS_Map')dnl
 
    --  MANPAGE(`curs_util.3x')
 
-   --  | Not implemented : filter, use_env, putwin, getwin
+   --  | Not implemented : filter, use_env
+   --  | putwin, getwin are in the child package PutWin
    --
+
    --  ANCHOR(`keyname()',`Key_Name')
    procedure Key_Name (Key  : in  Real_Key_Code;
                        Name : out String);
@@ -1256,6 +1353,12 @@ include(`ACS_Map')dnl
 
    --  MANPAGE(`curs_color.3x')
 
+   --  COLOR_PAIR
+   --  COLOR_PAIR(n) in C is the same as
+   --  Attributed_Character(Ch => Nul, Color => n, Attr => Normal_Video)
+   --  In C you often see something like c = c | COLOR_PAIR(n);
+   --  This is equivalent to c.Color := n;
+
    --  ANCHOR(`start_color()',`Start_Color')
    procedure Start_Color;
    --  AKA
@@ -1302,7 +1405,6 @@ include(`ACS_Map')dnl
    pragma Inline (Color_Content);
 
    --  MANPAGE(`curs_kernel.3x')
-
    --  | Not implemented: getsyx, setsyx
    --
    type Curses_Mode is (Curses, Shell);
@@ -1375,6 +1477,73 @@ include(`ACS_Map')dnl
    --  Window or if you pass the Null_Window as argument.
    --  We don't inline this procedure
 
+   --  MANPAGE(`dft_fgbg.3x')
+
+   --  ANCHOR(`use_default_colors()',`Use_Default_Colors')
+   procedure Use_Default_Colors;
+   --  AKA
+   pragma Inline (Use_Default_Colors);
+
+   --  ANCHOR(`assume_default_colors()',`Assume_Default_Colors')
+   procedure Assume_Default_Colors (Fore : Color_Number := Default_Color;
+                                    Back : Color_Number := Default_Color);
+   --  AKA
+   pragma Inline (Assume_Default_Colors);
+
+   --  MANPAGE(`curs_extend.3x')
+
+   --  ANCHOR(`curses_version()',`Curses_Version')
+   function Curses_Version return String;
+   --  AKA
+
+   --  ANCHOR(`use_extended_names()',`Use_Extended_Names')
+   --  The returnvalue is the previous setting of the flag
+   function Use_Extended_Names (Enable : Boolean) return Boolean;
+   --  AKA
+
+   --  MANPAGE(`curs_scr_dump.3x')
+
+   --  ANCHOR(`scr_dump()',`Screen_Dump_To_File')
+   procedure Screen_Dump_To_File (Filename : in String);
+   --  AKA
+
+   --  ANCHOR(`scr_restore()',`Screen_Restore_From_File')
+   procedure Screen_Restore_From_File (Filename : in String);
+   --  AKA
+
+   --  ANCHOR(`scr_init()',`Screen_Init_From_File')
+   procedure Screen_Init_From_File (Filename : in String);
+   --  AKA
+
+   --  ANCHOR(`scr_set()',`Screen_Set_File')
+   procedure Screen_Set_File (Filename : in String);
+   --  AKA
+
+   --  MANPAGE(`curs_print.3x')
+   --  Not implemented:  mcprint
+
+   --  MANPAGE(`curs_printw.3x')
+   --  Not implemented: printw,  wprintw, mvprintw, mvwprintw, vwprintw,
+   --                   vw_printw
+   --  Please use the Ada style Text_IO child packages for formatted
+   --  printing. It doesn't make a lot of sense to map the printf style
+   --  C functions to Ada.
+
+   --  MANPAGE(`curs_scanw.3x')
+   --  Not implemented: scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw
+
+
+   --  MANPAGE(`resizeterm.3x')
+   --  Not Implemented: resizeterm
+
+   --  MANPAGE(`wresize.3x')
+
+   --  ANCHOR(`wresize()',`Resize')
+   procedure Resize (Win               : Window := Standard_Window;
+                     Number_Of_Lines   : Line_Count;
+                     Number_Of_Columns : Column_Count);
+   --  AKA
+
 private
    type Window is new System.Storage_Elements.Integer_Address;
    Null_Window : constant Window := 0;
index d9cf0cf738aacfdacdb301ee27e9d46ab1c28105..23cf94f80f05a3b2497ad93d5ee93a27d5ec0812 100644 (file)
 # authorization.                                                             #
 ##############################################################################
 #
-#  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+#  Author:  Juergen Pfeifer, 1996
+#  Contact: http://www.familiepfeifer.de/Contact.aspx?Lang=en
 #
 #  Version Control
-#  $Revision: 1.25 $
+#  $Revision: 1.29 $
 #
 .SUFFIXES:
 
@@ -84,9 +85,9 @@ ALIB         = @cf_ada_package@
 ABASE        = $(ALIB)-curses
 
 CARGS        =-cargs $(ADAFLAGS)
-LARGS        =-largs -L../../lib $(LD_FLAGS) -lAdaCurses -lncurses@LIB_SUFFIX@
-
-PROGS        = tour rain
+LARGS        =-largs -L../../lib @TEST_ARGS@ $(LD_FLAGS) -lAdaCurses @EXTRA_LIBS@
+PROGS        = tour rain ncurses 
 
 TOUR_OBJS    = tour.o sample.o sample-curses_demo.o sample-explanation.o       \
                sample-form_demo.o sample-function_key_setting.o                \
@@ -98,7 +99,19 @@ TOUR_OBJS    =       tour.o sample.o sample-curses_demo.o sample-explanation.o       \
 
 RAIN_OBJS    = rain.o status.o
 
-all ::  tour$x rain$x
+NCURSES_OBJS = ncurses.o               ncurses2-getch_test.o \
+       ncurses2-acs_and_scroll.o       ncurses2-m.o \
+       ncurses2-acs_display.o          ncurses2-menu_test.o \
+       ncurses2-attr_test.o            ncurses2-overlap_test.o \
+       ncurses2-color_edit.o           ncurses2-slk_test.o \
+       ncurses2-color_test.o           ncurses2-test_sgr_attributes.o \
+       ncurses2-demo_forms.o           ncurses2-trace_set.o \
+       ncurses2-demo_pad.o             ncurses2-util.o \
+       ncurses2-demo_panels.o          ncurses2.o \
+       ncurses2-flushinp_test.o
+
+
+all ::  tour$x rain$x ncurses$x
        @
 
 sources :
@@ -113,6 +126,9 @@ uninstall \
 uninstall.libs ::
        @
 
+ncurses$x :
+       $(ADAMAKE) $(ADAMAKEFLAGS) ncurses $(CARGS) $(LARGS)
+
 tour$x :       explain.msg
        $(ADAMAKE) $(ADAMAKEFLAGS) tour $(CARGS) $(LARGS)
 
@@ -126,7 +142,8 @@ mostlyclean:
        @
 
 clean :: mostlyclean
-       rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] explain.msg
+       rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] \
+       explain.msg trace screendump 
 
 distclean :: clean
        rm -f Makefile
diff --git a/Ada95/samples/ncurses.adb b/Ada95/samples/ncurses.adb
new file mode 100644 (file)
index 0000000..19f658d
--- /dev/null
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                       GNAT ncurses Binding Samples                       --
+--                                                                          --
+--                                 ncurses                                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control
+--  $Revision: 1.1 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with ncurses2.m; use ncurses2.m;
+with GNAT.OS_Lib; use GNAT.OS_Lib;
+
+procedure ncurses is
+begin
+   OS_Exit (main);
+end ncurses;
diff --git a/Ada95/samples/ncurses2-acs_and_scroll.adb b/Ada95/samples/ncurses2-acs_and_scroll.adb
new file mode 100644 (file)
index 0000000..65c2939
--- /dev/null
@@ -0,0 +1,722 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                       GNAT ncurses Binding Samples                       --
+--                                                                          --
+--                                 ncurses                                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control
+--  $Revision: 1.1 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+--  Windows and scrolling tester.
+--  Demonstrate windows
+
+with Ada.Strings.Fixed;
+with Ada.Strings;
+
+with ncurses2.util; use ncurses2.util;
+with ncurses2.genericPuts;
+with Terminal_Interface.Curses; use Terminal_Interface.Curses;
+with Terminal_Interface.Curses.Mouse; use Terminal_Interface.Curses.Mouse;
+with Terminal_Interface.Curses.PutWin; use Terminal_Interface.Curses.PutWin;
+
+with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO;
+with Ada.Streams; use Ada.Streams;
+
+procedure ncurses2.acs_and_scroll is
+
+
+   Macro_Quit   : constant Key_Code := Character'Pos ('Q') mod 16#20#;
+   Macro_Escape : constant Key_Code := Character'Pos ('[') mod 16#20#;
+
+   Quit : constant Key_Code := CTRL ('Q');
+   Escape : constant Key_Code := CTRL ('[');
+
+
+   Botlines : constant Line_Position := 4;
+
+   type pair is record
+      y : Line_Position;
+      x : Column_Position;
+   end record;
+
+   type Frame;
+   type FrameA is access Frame;
+
+   f : File_Type;
+   dumpfile : constant String := "screendump";
+
+   procedure Outerbox (ul, lr : pair; onoff : Boolean);
+   function  HaveKeyPad (w : Window) return Boolean;
+   function  HaveScroll (w : Window) return Boolean;
+   procedure newwin_legend (curpw : Window);
+   procedure transient (curpw : Window; msg : String);
+   procedure newwin_report (win : Window := Standard_Window);
+   procedure selectcell (uli : Line_Position;
+                         ulj : Column_Position;
+                         lri : Line_Position;
+                         lrj : Column_Position;
+                         p   : out pair;
+                         b   : out Boolean);
+   function  getwindow return Window;
+   procedure newwin_move (win : Window;
+                          dy  : Line_Position;
+                          dx  : Column_Position);
+   function delete_framed (fp : FrameA; showit : Boolean) return FrameA;
+
+   use Ada.Streams.Stream_IO;
+
+
+   --  A linked list
+   --  I  wish there was a standard library linked list. Oh well.
+   type Frame is record
+      next, last : FrameA;
+      do_scroll : Boolean;
+      do_keypad : Boolean;
+      wind : Window;
+   end record;
+
+   current : FrameA;
+
+   c : Key_Code;
+
+   procedure Outerbox (ul, lr : pair; onoff : Boolean) is
+   begin
+      if onoff then
+         --  Note the fix of an obscure bug
+         --  try making a 1x1 box then enlarging it, the is a blank
+         --  upper left corner!
+         Add (Line => ul.y - 1, Column => ul.x - 1,
+             Ch => ACS_Map (ACS_Upper_Left_Corner));
+         Add (Line => ul.y - 1, Column => lr.x + 1,
+             Ch => ACS_Map (ACS_Upper_Right_Corner));
+         Add (Line => lr.y + 1, Column => lr.x + 1,
+             Ch => ACS_Map (ACS_Lower_Right_Corner));
+         Add (Line => lr.y + 1, Column => ul.x - 1,
+             Ch => ACS_Map (ACS_Lower_Left_Corner));
+
+         Move_Cursor (Line => ul.y - 1, Column => ul.x);
+         Horizontal_Line (Line_Symbol => ACS_Map (ACS_Horizontal_Line),
+                          Line_Size => Integer (lr.x - ul.x) + 1);
+         Move_Cursor (Line => ul.y, Column => ul.x - 1);
+         Vertical_Line (Line_Symbol => ACS_Map (ACS_Vertical_Line),
+                        Line_Size => Integer (lr.y - ul.y) + 1);
+         Move_Cursor (Line => lr.y + 1, Column => ul.x);
+         Horizontal_Line (Line_Symbol => ACS_Map (ACS_Horizontal_Line),
+                          Line_Size => Integer (lr.x - ul.x) + 1);
+         Move_Cursor (Line => ul.y, Column => lr.x + 1);
+         Vertical_Line (Line_Symbol => ACS_Map (ACS_Vertical_Line),
+                        Line_Size => Integer (lr.y - ul.y) + 1);
+      else
+         Add (Line => ul.y - 1, Column => ul.x - 1, Ch => ' ');
+         Add (Line => ul.y - 1, Column => lr.x + 1, Ch => ' ');
+         Add (Line => lr.y + 1, Column => lr.x + 1, Ch => ' ');
+         Add (Line => lr.y + 1, Column => ul.x - 1, Ch => ' ');
+
+         Move_Cursor (Line => ul.y - 1, Column => ul.x);
+         Horizontal_Line (Line_Symbol => Blank2,
+                          Line_Size => Integer (lr.x - ul.x) + 1);
+         Move_Cursor (Line => ul.y, Column => ul.x - 1);
+         Vertical_Line (Line_Symbol => Blank2,
+                        Line_Size => Integer (lr.y - ul.y) + 1);
+         Move_Cursor (Line => lr.y + 1, Column => ul.x);
+         Horizontal_Line (Line_Symbol => Blank2,
+                          Line_Size => Integer (lr.x - ul.x) + 1);
+         Move_Cursor (Line => ul.y, Column => lr.x + 1);
+         Vertical_Line (Line_Symbol => Blank2,
+                        Line_Size => Integer (lr.y - ul.y) + 1);
+      end if;
+   end Outerbox;
+
+   function HaveKeyPad (w : Window) return Boolean is
+   begin
+      return Get_KeyPad_Mode (w);
+   exception
+      when Curses_Exception => return False;
+   end HaveKeyPad;
+
+   function HaveScroll (w : Window) return Boolean is
+   begin
+      return Scrolling_Allowed (w);
+   exception
+      when Curses_Exception => return False;
+   end HaveScroll;
+
+
+   procedure newwin_legend (curpw : Window) is
+
+      package p is new genericPuts (200);
+      use p;
+      use p.BS;
+
+      type string_a is access String;
+
+      type rrr is record
+         msg : string_a;
+         code : Integer range 0 .. 3;
+      end record;
+
+      legend : constant array (Positive range <>) of rrr :=
+        (
+         (
+          new String'("^C = create window"), 0
+          ),
+         (
+          new String'("^N = next window"), 0
+          ),
+         (
+          new String'("^P = previous window"), 0
+          ),
+         (
+          new String'("^F = scroll forward"), 0
+          ),
+         (
+          new String'("^B = scroll backward"), 0
+          ),
+         (
+          new String'("^K = keypad(%s)"), 1
+          ),
+         (
+          new String'("^S = scrollok(%s)"), 2
+          ),
+         (
+          new String'("^W = save window to file"), 0
+          ),
+         (
+          new String'("^R = restore window"), 0
+          ),
+         (
+          new String'("^X = resize"), 0
+          ),
+         (
+          new String'("^Q%s = exit"), 3
+          )
+         );
+
+      buf : Bounded_String;
+      do_keypad : Boolean := HaveKeyPad (curpw);
+      do_scroll : Boolean := HaveScroll (curpw);
+
+      pos : Natural;
+
+      mypair : pair;
+
+      use Ada.Strings.Fixed;
+
+   begin
+      Move_Cursor (Line => Lines - 4, Column => 0);
+      for n in legend'Range loop
+         pos := Ada.Strings.Fixed.Index (Source => legend (n).msg.all,
+                                         Pattern => "%s");
+         --  buf := (others => ' ');
+         buf := To_Bounded_String (legend (n).msg.all);
+         case legend (n).code is
+            when 0 => null;
+            when 1 =>
+               if do_keypad then
+                  Replace_Slice (buf, pos, pos + 1, "yes");
+               else
+                  Replace_Slice (buf, pos, pos + 1, "no");
+               end if;
+            when 2 =>
+               if do_scroll then
+                  Replace_Slice (buf, pos, pos + 1, "yes");
+               else
+                  Replace_Slice (buf, pos, pos + 1, "no");
+               end if;
+            when 3 =>
+               if do_keypad then
+                  Replace_Slice (buf, pos, pos + 1, "/ESC");
+               else
+                  Replace_Slice (buf, pos, pos + 1, "");
+               end if;
+         end case;
+         Get_Cursor_Position (Line => mypair.y, Column => mypair.x);
+         if Columns < mypair.x + 3 + Column_Position (Length (buf)) then
+            Add (Ch => newl);
+         elsif n /= 1 then -- n /= legen'First
+            Add (Str => ", ");
+         end if;
+         myAdd (Str => buf);
+      end loop;
+      Clear_To_End_Of_Line;
+   end newwin_legend;
+
+
+   procedure transient (curpw : Window; msg : String) is
+   begin
+      newwin_legend (curpw);
+      if msg /= "" then
+         Add (Line => Lines - 1, Column => 0, Str => msg);
+         Refresh;
+         Nap_Milli_Seconds (1000);
+      end if;
+
+      Move_Cursor (Line => Lines - 1, Column => 0);
+
+      if HaveKeyPad (curpw) then
+         Add (Str => "Non-arrow");
+      else
+         Add (Str => "All other");
+      end if;
+      Add (str => " characters are echoed, window should ");
+      if not HaveScroll (curpw) then
+         Add (Str => "not ");
+      end if;
+      Add (str => "scroll");
+
+      Clear_To_End_Of_Line;
+   end transient;
+
+
+   procedure newwin_report (win : Window := Standard_Window) is
+      y : Line_Position;
+      x : Column_Position;
+      use Int_IO;
+      tmp2a : String (1 .. 2);
+      tmp2b : String (1 .. 2);
+   begin
+      if win /= Standard_Window then
+         transient (win, "");
+      end if;
+      Get_Cursor_Position (win, y, x);
+      Move_Cursor (Line => Lines - 1, Column => Columns - 17);
+      Put (tmp2a, Integer (y));
+      Put (tmp2b, Integer (x));
+      Add (Str => "Y = " & tmp2a & " X = " & tmp2b);
+      if win /= Standard_Window then
+         Refresh;
+      else
+         Move_Cursor (win, y, x);
+      end if;
+   end newwin_report;
+
+   procedure selectcell (uli : Line_Position;
+                         ulj : Column_Position;
+                         lri : Line_Position;
+                         lrj : Column_Position;
+                         p   : out pair;
+                         b   : out Boolean) is
+      c : Key_Code;
+      res : pair;
+      i : Line_Position := 0;
+      j : Column_Position := 0;
+      si : Line_Position := lri - uli + 1;
+      sj : Column_Position := lrj - ulj + 1;
+   begin
+      res.y := uli;
+      res.x := ulj;
+      loop
+         Move_Cursor (Line => uli + i, Column => ulj + j);
+         newwin_report;
+
+         c := Getchar;
+         case c is
+            when
+              Macro_Quit   |
+              Macro_Escape =>
+               --  on the same line macro calls interfere due to the # comment
+               --  this is needed because keypad off affects all windows.
+               --  try removing the ESCAPE and see what happens.
+               b := False;
+               return;
+            when KEY_UP =>
+               i := i + si - 1;
+               --  same as  i := i - 1 because of Modulus arithetic,
+               --  on Line_Position, which is a Natural
+               --  the C version uses this form too, interestingly.
+            when KEY_DOWN =>
+               i := i + 1;
+            when KEY_LEFT =>
+               j := j + sj - 1;
+            when KEY_RIGHT =>
+               j := j + 1;
+            when Key_Mouse =>
+               declare
+                  event : Mouse_Event;
+                  y : Line_Position;
+                  x : Column_Position;
+                  Button : Mouse_Button;
+                  State : Button_State;
+
+               begin
+                  event := Get_Mouse;
+                  Get_Event (Event => event,
+                             Y => y,
+                             X => x,
+                             Button => Button,
+                             State  => State);
+                  if y > uli and x > ulj then
+                     i := y - uli;
+                     j := x - ulj;
+                     --  same as when others =>
+                     res.y := uli + i;
+                     res.x := ulj + j;
+                     p := res;
+                     b := True;
+                     return;
+                  else
+                     Beep;
+                  end if;
+               end;
+            when others =>
+               res.y := uli + i;
+               res.x := ulj + j;
+               p := res;
+               b := True;
+               return;
+         end case;
+         i := i mod si;
+         j := j mod sj;
+      end loop;
+   end selectcell;
+
+
+   function getwindow return Window is
+      rwindow : Window;
+      ul, lr : pair;
+      result : Boolean;
+   begin
+      Move_Cursor (Line => 0, Column => 0);
+      Clear_To_End_Of_Line;
+      Add (Str => "Use arrows to move cursor, anything else to mark corner 1");
+      Refresh;
+      selectcell (2, 1, Lines - Botlines - 2, Columns - 2, ul, result);
+      if not result then
+         return Null_Window;
+      end if;
+      Add (Line => ul.y - 1, Column => ul.x - 1,
+           Ch => ACS_Map (ACS_Upper_Left_Corner));
+      Move_Cursor (Line => 0, Column => 0);
+      Clear_To_End_Of_Line;
+      Add (Str => "Use arrows to move cursor, anything else to mark corner 2");
+      Refresh;
+      selectcell (ul.y, ul.x, Lines - Botlines - 2, Columns - 2, lr, result);
+      if not result then
+         return Null_Window;
+      end if;
+
+      rwindow := Sub_Window (Number_Of_Lines => lr.y - ul.y + 1,
+                             Number_Of_Columns => lr.x - ul.x + 1,
+                             First_Line_Position => ul.y,
+                             First_Column_Position => ul.x);
+
+      Outerbox (ul, lr, True);
+      Refresh;
+
+      Refresh (rwindow);
+
+      Move_Cursor (Line => 0, Column => 0);
+      Clear_To_End_Of_Line;
+      return rwindow;
+   end getwindow;
+
+
+   procedure newwin_move (win : Window;
+                          dy  : Line_Position;
+                          dx  : Column_Position) is
+      cur_y, max_y : Line_Position;
+      cur_x, max_x : Column_Position;
+   begin
+      Get_Cursor_Position (win, cur_y, cur_x);
+      Get_Size (win, max_y, max_x);
+      cur_x := Column_Position'Min (Column_Position'Max (cur_x + dx, 0),
+                                    max_x - 1);
+      cur_y := Line_Position'Min (Line_Position'Max (cur_y + dy, 0),
+                                  max_y - 1);
+
+      Move_Cursor (win, Line => cur_y, Column => cur_x);
+   end newwin_move;
+
+   function delete_framed (fp : FrameA; showit : Boolean) return FrameA is
+      np : FrameA;
+   begin
+      fp.last.next := fp.next;
+      fp.next.last := fp.last;
+
+      if showit then
+         Erase (fp.wind);
+         Refresh (fp.wind);
+      end if;
+      Delete (fp.wind);
+
+      if fp = fp.next then
+         np := null;
+      else
+         np := fp.next;
+      end if;
+      --  TODO free(fp);
+      return np;
+   end delete_framed;
+
+   Mask : Event_Mask := No_Events;
+   Mask2 : Event_Mask;
+
+   usescr : Window;
+
+begin
+   if Has_Mouse then
+      Register_Reportable_Event (
+                                 Button => Left,
+                                 State => Clicked,
+                                 Mask => Mask);
+      Mask2 := Start_Mouse (Mask);
+   end if;
+   c := CTRL ('C');
+   Set_Raw_Mode (SwitchOn => True);
+   loop
+      transient (Standard_Window, "");
+      case c is
+         when Character'Pos ('c') mod 16#20# => --  Ctrl('c')
+            declare
+               neww : FrameA := new Frame'(null, null, False, False,
+                                           Null_Window);
+            begin
+               neww.wind := getwindow;
+               if neww.wind = Null_Window  then
+                  exit;
+                  --  was goto breakout; ha ha ha
+               else
+
+                  if current = null  then
+                     neww.next := neww;
+                     neww.last := neww;
+                  else
+                     neww.next := current.next;
+                     neww.last := current;
+                     neww.last.next := neww;
+                     neww.next.last := neww;
+                  end if;
+                  current := neww;
+
+                  Set_KeyPad_Mode (current.wind, True);
+                  current.do_keypad := HaveKeyPad (current.wind);
+                  current.do_scroll := HaveScroll (current.wind);
+               end if;
+            end;
+         when Character'Pos ('N') mod 16#20#  => --  Ctrl('N')
+            if current /= null then
+               current := current.next;
+            end if;
+         when Character'Pos ('P') mod 16#20#  => --  Ctrl('P')
+            if current /= null then
+               current := current.last;
+            end if;
+         when Character'Pos ('F') mod 16#20#  => --  Ctrl('F')
+            if current /= null and HaveScroll (current.wind) then
+               Scroll (current.wind, 1);
+            end if;
+         when Character'Pos ('B') mod 16#20#  => --  Ctrl('B')
+            if current /= null and HaveScroll (current.wind) then
+            --  The C version of Scroll may return ERR which is ignored
+            --  we need to avoid the exception
+            --  with the 'and HaveScroll(current.wind)'
+               Scroll (current.wind, -1);
+            end if;
+         when Character'Pos ('K') mod 16#20#  => --  Ctrl('K')
+            if current /= null then
+               current.do_keypad := not current.do_keypad;
+               Set_KeyPad_Mode (current.wind, current.do_keypad);
+            end if;
+         when Character'Pos ('S') mod 16#20#  => --  Ctrl('S')
+            if current /= null then
+               current.do_scroll := not current.do_scroll;
+               Allow_Scrolling (current.wind, current.do_scroll);
+            end if;
+         when Character'Pos ('W') mod 16#20#  => --  Ctrl('W')
+            if current /= current.next then
+               Create (f, Name => dumpfile); -- TODO error checking
+               if not Is_Open (f) then
+                  raise Curses_Exception;
+               end if;
+               Put_Window (current.wind, f);
+               Close (f);
+               current := delete_framed (current, True);
+            end if;
+         when Character'Pos ('R') mod 16#20#  => --  Ctrl('R')
+            declare
+               neww : FrameA := new Frame'(null, null, False, False,
+                                           Null_Window);
+            begin
+               Open (f, Mode => In_File, Name => dumpfile);
+               neww := new Frame'(null, null, False, False, Null_Window);
+
+               neww.next := current.next;
+               neww.last := current;
+               neww.last.next := neww;
+               neww.next.last := neww;
+
+               neww.wind := Get_Window (f);
+               Close (f);
+
+               Refresh (neww.wind);
+            end;
+         when Character'Pos ('X') mod 16#20# => --  Ctrl('X')
+            if current /= null then
+               declare
+                  tmp, ul, lr : pair;
+                  mx : Column_Position;
+                  my : Line_Position;
+                  tmpbool : Boolean;
+               begin
+                  Move_Cursor (Line => 0, Column => 0);
+                  Clear_To_End_Of_Line;
+                  Add (Str => "Use arrows to move cursor, anything else " &
+                       "to mark new corner");
+                  Refresh;
+
+                  Get_Window_Position (current.wind, ul.y, ul.x);
+
+                  selectcell (ul.y, ul.x, Lines - Botlines - 2, Columns - 2,
+                              tmp, tmpbool);
+                  if not tmpbool then
+                     --  the C version had a goto. I refuse gotos.
+                     Beep;
+                  else
+                     Get_Size (current.wind, lr.y, lr.x);
+                     lr.y := lr.y + ul.y - 1;
+                     lr.x := lr.x + ul.x - 1;
+                     Outerbox (ul, lr, False);
+                     Refresh_Without_Update;
+
+                     Get_Size (current.wind, my, mx);
+                     if my > tmp.y - ul.y then
+                        Get_Cursor_Position (current.wind, lr.y, lr.x);
+                        Move_Cursor (current.wind, tmp.y - ul.y + 1, 0);
+                        Clear_To_End_Of_Screen (current.wind);
+                        Move_Cursor (current.wind, lr.y, lr.x);
+                     end if;
+                     if mx > tmp.x - ul.x then
+                        for i in 0 .. my - 1 loop
+                           Move_Cursor (current.wind, i, tmp.x - ul.x + 1);
+                           Clear_To_End_Of_Line (current.wind);
+                        end loop;
+                     end if;
+                     Refresh_Without_Update (current.wind);
+
+                     lr := tmp;
+                     --  The C version passes invalid args to resize
+                     --  which returns an ERR. For Ada we avoid the exception.
+                     if lr.y /= ul.y and lr.x /= ul.x then
+                        Resize (current.wind, lr.y - ul.y + 0,
+                                lr.x - ul.x + 0);
+                     end if;
+
+                     Get_Window_Position (current.wind, ul.y, ul.x);
+                     Get_Size (current.wind, lr.y, lr.x);
+                     lr.y := lr.y + ul.y - 1;
+                     lr.x := lr.x + ul.x - 1;
+                     Outerbox (ul, lr, True);
+                     Refresh_Without_Update;
+
+                     Refresh_Without_Update (current.wind);
+                     Move_Cursor (Line => 0, Column => 0);
+                     Clear_To_End_Of_Line;
+                     Update_Screen;
+                  end if;
+               end;
+            end if;
+         when Key_F10  =>
+            declare tmp : pair; tmpbool : Boolean;
+            begin
+               --  undocumented --- use this to test area clears
+               selectcell (0, 0, Lines - 1, Columns - 1, tmp, tmpbool);
+               Clear_To_End_Of_Screen;
+               Refresh;
+            end;
+         when Key_Cursor_Up =>
+            newwin_move (current.wind, -1, 0);
+         when Key_Cursor_Down  =>
+            newwin_move (current.wind, 1, 0);
+         when Key_Cursor_Left  =>
+            newwin_move (current.wind, 0, -1);
+         when Key_Cursor_Right  =>
+            newwin_move (current.wind, 0, 1);
+         when Key_Backspace | Key_Delete_Char  =>
+            declare
+               y : Line_Position;
+               x : Column_Position;
+               tmp : Line_Position;
+            begin
+               Get_Cursor_Position (current.wind, y, x);
+               --  x := x - 1;
+               --  I got tricked by the -1 = Max_Natural - 1 result
+               --  y := y - 1;
+               if not (x = 0 and y = 0) then
+                  if x = 0 then
+                     y := y - 1;
+                     Get_Size (current.wind, tmp, x);
+                  end if;
+                  x := x - 1;
+                  Delete_Character (current.wind, y, x);
+               end if;
+            end;
+         when others =>
+            --  TODO c = '\r' ?
+            if current /= null then
+               declare
+               begin
+                  Add (current.wind, Ch => Code_To_Char (c));
+               exception
+                  when Curses_Exception => null;
+                     --  this happens if we are at the
+                     --  lower right of a window and add a character.
+               end;
+            else
+               Beep;
+            end if;
+      end case;
+      newwin_report (current.wind);
+      if current /= null then
+         usescr := current.wind;
+      else
+         usescr := Standard_Window;
+      end if;
+      Refresh (usescr);
+      c := Getchar (usescr);
+      exit when c = Quit or (c = Escape and HaveKeyPad (usescr));
+      --  TODO when does c = ERR happen?
+   end loop;
+
+   --  TODO while current /= null loop
+   --  current := delete_framed(current, False);
+   --  end loop;
+
+   Allow_Scrolling (Mode => True);
+
+   End_Mouse;
+   Set_Raw_Mode (SwitchOn => True);
+   Erase;
+   End_Windows;
+
+end ncurses2.acs_and_scroll;
diff --git a/Ada95/samples/ncurses2-acs_and_scroll.ads b/Ada95/samples/ncurses2-acs_and_scroll.ads
new file mode 100644 (file)
index 0000000..79e4862
--- /dev/null
@@ -0,0 +1,41 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                       GNAT ncurses Binding Samples                       --
+--                                                                          --
+--                                 ncurses                                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control
+--  $Revision: 1.1 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+procedure ncurses2.acs_and_scroll;
diff --git a/Ada95/samples/ncurses2-acs_display.adb b/Ada95/samples/ncurses2-acs_display.adb
new file mode 100644 (file)
index 0000000..ab07213
--- /dev/null
@@ -0,0 +1,231 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                       GNAT ncurses Binding Samples                       --
+--                                                                          --
+--                                 ncurses                                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control
+--  $Revision: 1.1 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with ncurses2.util; use ncurses2.util;
+with ncurses2.genericPuts;
+with Terminal_Interface.Curses; use Terminal_Interface.Curses;
+
+with Ada.Strings.Unbounded;
+with Ada.Strings.Fixed;
+
+procedure ncurses2.acs_display is
+   use Int_IO;
+
+   procedure show_upper_chars (first : Integer);
+   function  show_1_acs (N    : Integer;
+                         name : String;
+                         code :  Attributed_Character)
+                        return Integer;
+   procedure show_acs_chars;
+
+
+   procedure show_upper_chars (first : Integer)  is
+      C1 : Boolean := (first = 128);
+      last : Integer := first + 31;
+      package p is new ncurses2.genericPuts (200);
+      use p;
+      use p.BS;
+      use Ada.Strings.Unbounded;
+
+      tmpa : Unbounded_String;
+      tmpb : BS.Bounded_String;
+   begin
+      Erase;
+      Switch_Character_Attribute
+        (Attr => (Bold_Character => True, others => False));
+      Move_Cursor (Line => 0, Column => 20);
+      tmpa := To_Unbounded_String ("Display of ");
+      if C1 then
+         tmpa := tmpa & "C1";
+      else
+         tmpa := tmpa & "GR";
+      end if;
+      tmpa := tmpa & " Character Codes ";
+      myPut (tmpb, first);
+      Append (tmpa, To_String (tmpb));
+      Append (tmpa, " to ");
+      myPut (tmpb, last);
+      Append (tmpa, To_String (tmpb));
+      Add (Str => To_String (tmpa));
+      Switch_Character_Attribute
+        (On => False,
+         Attr => (Bold_Character => True, others => False));
+      Refresh;
+
+      for code in first .. last loop
+         declare
+            row : Line_Position := Line_Position (4 + ((code - first) mod 16));
+            col : Column_Position := Column_Position (((code - first) / 16) *
+                                                      Integer (Columns) / 2);
+            tmp3 : String (1 .. 3);
+            tmpx : String (1 .. Integer (Columns / 4));
+            reply : Key_Code;
+         begin
+            Put (tmp3, code);
+            myPut (tmpb, code, 16);
+            tmpa := To_Unbounded_String (tmp3 & " (" & To_String (tmpb) & ')');
+
+            Ada.Strings.Fixed.Move (To_String (tmpa), tmpx,
+                                    Justify => Ada.Strings.Right);
+            Add (Line => row, Column => col,
+                 Str => tmpx & ' ' & ':' & ' ');
+            if C1 then
+               Set_NoDelay_Mode (Mode => True);
+            end if;
+            Add_With_Immediate_Echo (Ch => Code_To_Char (Key_Code (code)));
+            --  TODO check this
+            if C1 then
+               reply := Getchar;
+               while reply /= Key_None loop
+                  Add (Ch => Code_To_Char (reply));
+                  Nap_Milli_Seconds (10);
+                  reply := Getchar;
+               end loop;
+               Set_NoDelay_Mode (Mode => False);
+            end if;
+         end;
+      end loop;
+   end show_upper_chars;
+
+   function show_1_acs (N    : Integer;
+                        name : String;
+                        code :  Attributed_Character)
+                       return Integer is
+      height : constant Integer := 16;
+      row : Line_Position := Line_Position (4 + (N mod height));
+      col : Column_Position := Column_Position ((N / height) *
+                                                Integer (Columns) / 2);
+      tmpx : String (1 .. Integer (Columns) / 3);
+   begin
+      Ada.Strings.Fixed.Move (name, tmpx,
+                              Justify => Ada.Strings.Right,
+                              Drop => Ada.Strings.Left);
+      Add (Line => row, Column => col, Str => tmpx & ' ' & ':' & ' ');
+      --  we need more room than C because our identifiers are longer
+      --  22 chars actually
+      Add (Ch => code);
+      return N + 1;
+   end show_1_acs;
+
+   procedure show_acs_chars is
+      n : Integer;
+   begin
+      Erase;
+      Switch_Character_Attribute
+        (Attr => (Bold_Character => True, others => False));
+      Add (Line => 0, Column => 20,
+           Str => "Display of the ACS Character Set");
+      Switch_Character_Attribute (On => False,
+                                  Attr => (Bold_Character => True,
+                                           others => False));
+      Refresh;
+
+      --  the following is useful to generate the below
+      --  grep '^[ ]*ACS_' ../src/terminal_interface-curses.ads |
+      --  awk '{print  "n := show_1_acs(n, \""$1"\", ACS_Map("$1"));"}'
+
+      n := show_1_acs (0, "ACS_Upper_Left_Corner",
+                       ACS_Map (ACS_Upper_Left_Corner));
+      n := show_1_acs (n, "ACS_Lower_Left_Corner",
+                       ACS_Map (ACS_Lower_Left_Corner));
+      n := show_1_acs (n, "ACS_Upper_Right_Corner",
+                       ACS_Map (ACS_Upper_Right_Corner));
+      n := show_1_acs (n, "ACS_Lower_Right_Corner",
+                       ACS_Map (ACS_Lower_Right_Corner));
+      n := show_1_acs (n, "ACS_Left_Tee", ACS_Map (ACS_Left_Tee));
+      n := show_1_acs (n, "ACS_Right_Tee", ACS_Map (ACS_Right_Tee));
+      n := show_1_acs (n, "ACS_Bottom_Tee", ACS_Map (ACS_Bottom_Tee));
+      n := show_1_acs (n, "ACS_Top_Tee", ACS_Map (ACS_Top_Tee));
+      n := show_1_acs (n, "ACS_Horizontal_Line",
+                       ACS_Map (ACS_Horizontal_Line));
+      n := show_1_acs (n, "ACS_Vertical_Line", ACS_Map (ACS_Vertical_Line));
+      n := show_1_acs (n, "ACS_Plus_Symbol", ACS_Map (ACS_Plus_Symbol));
+      n := show_1_acs (n, "ACS_Scan_Line_1", ACS_Map (ACS_Scan_Line_1));
+      n := show_1_acs (n, "ACS_Scan_Line_9", ACS_Map (ACS_Scan_Line_9));
+      n := show_1_acs (n, "ACS_Diamond", ACS_Map (ACS_Diamond));
+      n := show_1_acs (n, "ACS_Checker_Board", ACS_Map (ACS_Checker_Board));
+      n := show_1_acs (n, "ACS_Degree", ACS_Map (ACS_Degree));
+      n := show_1_acs (n, "ACS_Plus_Minus", ACS_Map (ACS_Plus_Minus));
+      n := show_1_acs (n, "ACS_Bullet", ACS_Map (ACS_Bullet));
+      n := show_1_acs (n, "ACS_Left_Arrow", ACS_Map (ACS_Left_Arrow));
+      n := show_1_acs (n, "ACS_Right_Arrow", ACS_Map (ACS_Right_Arrow));
+      n := show_1_acs (n, "ACS_Down_Arrow", ACS_Map (ACS_Down_Arrow));
+      n := show_1_acs (n, "ACS_Up_Arrow", ACS_Map (ACS_Up_Arrow));
+      n := show_1_acs (n, "ACS_Board_Of_Squares",
+                       ACS_Map (ACS_Board_Of_Squares));
+      n := show_1_acs (n, "ACS_Lantern", ACS_Map (ACS_Lantern));
+      n := show_1_acs (n, "ACS_Solid_Block", ACS_Map (ACS_Solid_Block));
+      n := show_1_acs (n, "ACS_Scan_Line_3", ACS_Map (ACS_Scan_Line_3));
+      n := show_1_acs (n, "ACS_Scan_Line_7", ACS_Map (ACS_Scan_Line_7));
+      n := show_1_acs (n, "ACS_Less_Or_Equal", ACS_Map (ACS_Less_Or_Equal));
+      n := show_1_acs (n, "ACS_Greater_Or_Equal",
+                       ACS_Map (ACS_Greater_Or_Equal));
+      n := show_1_acs (n, "ACS_PI", ACS_Map (ACS_PI));
+      n := show_1_acs (n, "ACS_Not_Equal", ACS_Map (ACS_Not_Equal));
+      n := show_1_acs (n, "ACS_Sterling", ACS_Map (ACS_Sterling));
+
+   end show_acs_chars;
+
+   c1 : Key_Code;
+   c : Character := 'a';
+begin
+   loop
+      case c is
+         when 'a' =>
+            show_acs_chars;
+         when '0' | '1' | '2' | '3' =>
+            show_upper_chars (ctoi (c) * 32 + 128);
+         when others =>
+            null;
+      end case;
+      Add (Line => Lines - 3, Column => 0,
+           Str => "Note: ANSI terminals may not display C1 characters.");
+      Add (Line => Lines - 2, Column => 0,
+           Str => "Select: a=ACS, 0=C1, 1,2,3=GR characters, q=quit");
+      Refresh;
+      c1 := Getchar;
+      c := Code_To_Char (c1);
+      exit when c = 'q' or c = 'x';
+   end loop;
+   Pause;
+   Erase;
+   End_Windows;
+end ncurses2.acs_display;
+
diff --git a/Ada95/samples/ncurses2-acs_display.ads b/Ada95/samples/ncurses2-acs_display.ads
new file mode 100644 (file)
index 0000000..4e616c5
--- /dev/null
@@ -0,0 +1,41 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                       GNAT ncurses Binding Samples                       --
+--                                                                          --
+--                                 ncurses                                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control
+--  $Revision: 1.1 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+procedure ncurses2.acs_display;
diff --git a/Ada95/samples/ncurses2-attr_test.adb b/Ada95/samples/ncurses2-attr_test.adb
new file mode 100644 (file)
index 0000000..d852bb7
--- /dev/null
@@ -0,0 +1,367 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                       GNAT ncurses Binding Samples                       --
+--                                                                          --
+--                                 ncurses                                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control
+--  $Revision: 1.2 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with ncurses2.util; use ncurses2.util;
+with Terminal_Interface.Curses; use Terminal_Interface.Curses;
+with Terminal_Interface.Curses.Terminfo;
+use Terminal_Interface.Curses.Terminfo;
+with Ada.Characters.Handling;
+with Ada.Strings.Fixed;
+
+procedure ncurses2.attr_test is
+
+   function  subset (super, sub : Character_Attribute_Set) return Boolean;
+   function  intersect (b, a : Character_Attribute_Set) return Boolean;
+   function  has_A_COLOR (attr : Attributed_Character) return Boolean;
+   function  show_attr (row  : Line_Position;
+                        skip : Natural;
+                        attr : Character_Attribute_Set;
+                        name : String;
+                        once : Boolean) return Line_Position;
+   procedure attr_getc (skip : out Integer;
+                        fg, bg : in out Color_Number;
+                        result : out Boolean);
+
+
+   function subset (super, sub : Character_Attribute_Set) return Boolean is
+   begin
+      if
+        (super.Stand_Out or not sub.Stand_Out) and
+        (super.Under_Line or not sub.Under_Line) and
+        (super.Reverse_Video or not sub.Reverse_Video) and
+        (super.Blink or not sub.Blink) and
+        (super.Dim_Character or not sub.Dim_Character) and
+        (super.Bold_Character or not sub.Bold_Character) and
+        (super.Alternate_Character_Set or not sub.Alternate_Character_Set) and
+        (super.Invisible_Character or not sub.Invisible_Character) -- and
+--      (super.Protected_Character or not sub.Protected_Character) and
+--      (super.Horizontal or not sub.Horizontal) and
+--      (super.Left or not sub.Left) and
+--      (super.Low or not sub.Low) and
+--      (super.Right or not sub.Right) and
+--      (super.Top or not sub.Top) and
+--      (super.Vertical or not sub.Vertical)
+      then
+         return True;
+      else
+         return False;
+      end if;
+   end subset;
+
+
+   function intersect (b, a : Character_Attribute_Set) return Boolean is
+   begin
+      if
+        (a.Stand_Out and b.Stand_Out) or
+        (a.Under_Line and b.Under_Line) or
+        (a.Reverse_Video and b.Reverse_Video) or
+        (a.Blink and b.Blink) or
+        (a.Dim_Character and b.Dim_Character) or
+        (a.Bold_Character and b.Bold_Character) or
+        (a.Alternate_Character_Set and b.Alternate_Character_Set) or
+        (a.Invisible_Character and b.Invisible_Character) -- or
+--      (a.Protected_Character and b.Protected_Character) or
+--      (a.Horizontal and b.Horizontal) or
+--      (a.Left and b.Left) or
+--      (a.Low and b.Low) or
+--      (a.Right and b.Right) or
+--      (a.Top and b.Top) or
+--      (a.Vertical and b.Vertical)
+      then
+         return True;
+      else
+         return False;
+      end if;
+   end intersect;
+
+   function has_A_COLOR (attr : Attributed_Character) return Boolean is
+   begin
+      if attr.Color /= Color_Pair (0) then
+         return True;
+      else
+         return False;
+      end if;
+   end has_A_COLOR;
+
+   --  Print some text with attributes.
+   function show_attr (row  : Line_Position;
+                       skip : Natural;
+                       attr : Character_Attribute_Set;
+                       name : String;
+                       once : Boolean) return Line_Position is
+
+      function make_record (n : Integer) return Character_Attribute_Set;
+      function make_record (n : Integer) return Character_Attribute_Set is
+         --  unsupported means true
+         a : Character_Attribute_Set := (others => False);
+         m : Integer;
+         rest : Integer;
+      begin
+         --  ncv is a bitmap with these fields
+         --              A_STANDOUT,
+         --              A_UNDERLINE,
+         --              A_REVERSE,
+         --              A_BLINK,
+         --              A_DIM,
+         --              A_BOLD,
+         --              A_INVIS,
+         --              A_PROTECT,
+         --              A_ALTCHARSET
+         --  It means no_color_video,
+         --  video attributes that can't be used with colors
+         --  see man terminfo.5
+         m := n mod 2;
+         rest := n / 2;
+         if 1 = m then
+            a.Stand_Out := True;
+         end if;
+         m := rest mod 2;
+         rest := rest / 2;
+         if 1 = m then
+            a.Under_Line := True;
+         end if;
+         m := rest mod 2;
+         rest := rest / 2;
+         if 1 = m then
+            a.Reverse_Video := True;
+         end if;
+         m := rest mod 2;
+         rest := rest / 2;
+         if 1 = m then
+            a.Blink := True;
+         end if;
+         m := rest mod 2;
+         rest := rest / 2;
+         if 1 = m then
+            a.Bold_Character := True;
+         end if;
+         m := rest mod 2;
+         rest := rest / 2;
+         if 1 = m then
+            a.Invisible_Character := True;
+         end if;
+         m := rest mod 2;
+         rest := rest / 2;
+--       if 1 = m then
+--          a.Protected_Character := True;
+--       end if;
+         m := rest mod 2;
+         rest := rest / 2;
+         if 1 = m then
+            a.Alternate_Character_Set := True;
+         end if;
+
+         return a;
+      end make_record;
+
+      ncv : constant Integer := Get_Number ("ncv");
+
+   begin
+      Move_Cursor (Line => row, Column => 8);
+      Add (Str => name & " mode:");
+      Move_Cursor (Line => row, Column => 24);
+      Add (Ch => '|');
+      if skip /= 0 then
+         --  printw("%*s", skip, " ")
+         Add (Str => Ada.Strings.Fixed."*" (skip, ' '));
+      end if;
+      if once then
+         Switch_Character_Attribute (Attr => attr);
+      else
+         Set_Character_Attributes (Attr => attr);
+      end if;
+      Add (Str => "abcde fghij klmno pqrst uvwxy z");
+      if once then
+         Switch_Character_Attribute (Attr => attr, On => False);
+      end if;
+      if skip /= 0 then
+         Add (Str => Ada.Strings.Fixed."*" (skip, ' '));
+      end if;
+      Add (Ch => '|');
+      if attr /= Normal_Video then
+         declare begin
+            if not subset (super => Supported_Attributes, sub => attr) then
+               Add (Str => " (N/A)");
+            elsif ncv > 0 and has_A_COLOR (Get_Background) then
+               declare
+                  Color_Supported_Attributes :
+                    Character_Attribute_Set := make_record (ncv);
+               begin
+                  if intersect (Color_Supported_Attributes, attr) then
+                     Add (Str => " (NCV) ");
+                  end if;
+               end;
+            end if;
+         end;
+      end if;
+      return row + 2;
+   end show_attr;
+
+   procedure attr_getc (skip : out Integer; fg, bg : in out Color_Number;
+                                            result : out Boolean) is
+      ch : Key_Code := Getchar;
+      nc : constant Color_Number := Color_Number (Number_Of_Colors);
+      curscr : Window;
+      pragma Import (C, curscr, "curscr");
+      --  curscr is not implemented in the Ada binding
+   begin
+      result := True;
+      if Ada.Characters.Handling.Is_Digit (Character'Val (ch)) then
+         skip := ctoi (Code_To_Char (ch));
+      elsif ch = CTRL ('L') then
+         Touch;
+         Touch (curscr);
+         Refresh;
+      elsif Has_Colors then
+         case ch is
+            --  Note the mathematical elegance compared to the C version.
+            when Character'Pos ('f') => fg := (fg + 1) mod nc;
+            when Character'Pos ('F') => fg := (fg - 1) mod nc;
+            when Character'Pos ('b') => bg := (bg + 1) mod nc;
+            when Character'Pos ('B') => bg := (bg - 1) mod nc;
+            when others =>
+               result := False;
+         end case;
+      else
+         result := False;
+      end if;
+   end attr_getc;
+
+
+
+   --      pairs could be defined as array ( Color_Number(0) .. colors - 1) of
+   --      array (Color_Number(0).. colors - 1) of Boolean;
+   pairs : array (Color_Pair'Range) of Boolean := (others => False);
+   fg, bg : Color_Number := Black; -- = 0;
+   xmc : constant Integer := Get_Number ("xmc");
+   skip : Integer := xmc;
+   n : Integer;
+
+   use Int_IO;
+
+begin
+   pairs (0) := True;
+
+   if skip < 0 then
+      skip := 0;
+   end if;
+   n := skip;
+
+   loop
+      declare
+         row : Line_Position := 2;
+         normal : Attributed_Character := Blank2;
+         --  ???
+      begin
+         --  row := 2; -- weird, row is set to 0 without this.
+         --  TODO delete the above line, it was a gdb quirk that confused me
+         if Has_Colors then declare
+            pair : Color_Pair :=
+              Color_Pair (fg * Color_Number (Number_Of_Colors) + bg);
+         begin
+            --  Go though each color pair. Assume that the number of
+            --  Redefinable_Color_Pairs is 8*8 with predefined Colors 0..7
+            if not pairs (pair) then
+               Init_Pair (pair, fg, bg);
+               pairs (pair) := True;
+            end if;
+            normal.Color := pair;
+         end;
+         end if;
+         Set_Background (Ch => normal);
+         Erase;
+
+         Add (Line => 0, Column => 20,
+              Str => "Character attribute test display");
+
+         row := show_attr (row, n, (Stand_Out => True, others => False),
+                           "STANDOUT", True);
+         row := show_attr (row, n, (Reverse_Video => True, others => False),
+                           "REVERSE", True);
+         row := show_attr (row, n, (Bold_Character => True, others => False),
+                           "BOLD", True);
+         row := show_attr (row, n, (Under_Line => True, others => False),
+                           "UNDERLINE", True);
+         row := show_attr (row, n, (Dim_Character => True, others => False),
+                           "DIM", True);
+         row := show_attr (row, n, (Blink => True, others => False),
+                           "BLINK", True);
+--       row := show_attr (row, n, (Protected_Character => True,
+--                                  others => False), "PROTECT", True);
+         row := show_attr (row, n, (Invisible_Character => True,
+                                    others => False), "INVISIBLE", True);
+         row := show_attr (row, n, Normal_Video, "NORMAL", False);
+
+         Move_Cursor (Line => row, Column => 8);
+         if xmc > -1 then
+            Add (Str => "This terminal does have the magic-cookie glitch");
+         else
+            Add (Str => "This terminal does not have the magic-cookie glitch");
+         end if;
+         Move_Cursor (Line => row + 1, Column => 8);
+         Add (Str => "Enter a digit to set gaps on each side of " &
+              "displayed attributes");
+         Move_Cursor (Line => row + 2, Column => 8);
+         Add (Str => "^L = repaint");
+         if Has_Colors then
+            declare tmp1 : String (1 .. 1);
+            begin
+               Add (Str => ".  f/F/b/F toggle colors (");
+               Put (tmp1, Integer (fg));
+               Add (Str => tmp1);
+               Add (Ch => '/');
+               Put (tmp1, Integer (bg));
+               Add (Str => tmp1);
+               Add (Ch => ')');
+            end;
+         end if;
+         Refresh;
+      end;
+
+      declare result : Boolean; begin
+         attr_getc (n, fg, bg, result);
+         exit when not result;
+      end;
+   end loop;
+
+   Set_Background (Ch => Blank2);
+   Erase;
+   End_Windows;
+end ncurses2.attr_test;
diff --git a/Ada95/samples/ncurses2-attr_test.ads b/Ada95/samples/ncurses2-attr_test.ads
new file mode 100644 (file)
index 0000000..fb1ed18
--- /dev/null
@@ -0,0 +1,42 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                       GNAT ncurses Binding Samples                       --
+--                                                                          --
+--                                 ncurses                                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control
+--  $Revision: 1.1 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+procedure ncurses2.attr_test;
+
diff --git a/Ada95/samples/ncurses2-color_edit.adb b/Ada95/samples/ncurses2-color_edit.adb
new file mode 100644 (file)
index 0000000..ac14628
--- /dev/null
@@ -0,0 +1,264 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                       GNAT ncurses Binding Samples                       --
+--                                                                          --
+--                                 ncurses                                  --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 2000 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.                                                           --
+------------------------------------------------------------------------------
+--  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+--  Version Control
+--  $Revision: 1.1 $
+--  Binding Version 01.00
+------------------------------------------------------------------------------
+with ncurses2.util; use ncurses2.util;
+with ncurses2.genericPuts;
+with Terminal_Interface.Curses; use Terminal_Interface.Curses;
+
+
+procedure ncurses2.color_edit is
+   use Int_IO;
+
+   type RGB_Enum is (Redx, Greenx, Bluex);
+
+   procedure change_color (current : Color_Number;
+                           field   : RGB_Enum;
+                           value   : RGB_Value;
+                           usebase : Boolean);
+
+
+
+   procedure change_color (current : Color_Number;
+                           field   : RGB_Enum;
+                           value   : RGB_Value;
+                           usebase : Boolean)  is
+      red, green, blue : RGB_Value;
+   begin
+      if usebase then
+         Color_Content (current, red, green, blue);
+      else
+         red := 0;
+         green := 0;
+         blue := 0;
+      end if;
+
+      case field is
+         when Redx => red :=  red + value;
+         when Greenx => green := green + value;
+         when Bluex => blue := blue + value;
+      end case;
+
+      declare
+      begin
+         Init_Color (current, red, green, blue);
+      exception
+         when Curses_Exception => Beep;
+      end;
+
+   end change_color;
+
+
+   package x is new ncurses2.genericPuts (100); use x;
+
+   tmpb : x.BS.Bounded_String;
+
+   tmp4 : String (1 .. 4);
+   tmp6 : String (1 .. 6);
+   tmp8 : String (1 .. 8);
+   --  This would be easier if Ada had a Bounded_String
+   --  defined as a class instead of the inferior generic package,
+   --  then I could define Put, Add, and Get for them. Blech.
+   value : RGB_Value := 0;
+   red, green, blue : RGB_Value;
+   max_colors : constant Natural := Number_Of_Colors;
+   current : Color_Number := 0;
+   field : RGB_Enum := Redx;
+   this_c : Key_Code := 0;
+   last_c : Key_Code;
+begin
+   Refresh;
+
+   for i in Color_Number'(0) .. Color_Number (Number_Of_Colors) loop
+      Init_Pair (Color_Pair (i), White, i);
+   end loop;
+
+   Move_Cursor (Line => Lines - 2, Column => 0);
+   Add (Str => "Number: ");
+   myPut (tmpb, Integer (value));
+   myAdd (Str => tmpb);
+
+   loop
+
+      Switch_Character_Attribute (On => False,
+                                  Attr => (Bold_Character => True,
+                                           others => False));
+      Add (Line => 0, Column => 20, Str => "Color RGB Value Editing");
+
+      Switch_Character_Attribute (On => False,
+                                  Attr => (Bold_Character => True,
+                                           others => False));
+
+      for i in Color_Number'(0) .. Color_Number (Number_Of_Colors) loop
+         Move_Cursor (Line => 2 + Line_Position (i), Column => 0);
+         if current = i then
+            Add (Ch => '>');
+         else
+            Add (Ch => ' ');
+         end if;
+         --  TODO if i <= color_names'Max  then
+         Put (tmp8, Integer (i));
+         Set_Character_Attributes (Color => Color_Pair (i));
+         Add (Str => "        ");
+         Set_Character_Attributes;
+
+         Refresh;
+
+         Color_Content (i, red, green, blue);
+         Add (Str => "   R = ");
+         if current = i and field = Redx then
+            Switch_Character_Attribute (On => True,
+                                        Attr => (Stand_Out => True,
+                                                 others => False));
+         end if;
+         Put (tmp4, Integer (red));
+         Add (Str => tmp4);
+         if current = i and field = Redx then
+            Set_Character_Attributes;
+         end if;
+         Add (Str => "   G = ");
+         if current = i and field =  Greenx then
+            Switch_Character_Attribute (On => True,
+                                        Attr => (Stand_Out => True,
+                                                 others => False));
+         end if;
+         Put (tmp4, Integer (green));
+         Add (Str => tmp4);
+         if current = i and field = Greenx then
+            Set_Character_Attributes;
+         end if;
+         Add (Str => "   B = ");
+         if current = i and field = Bluex then
+            Switch_Character_Attribute (On => True,
+                                        Attr => (Stand_Out => True,
+                                                 others => False));
+         end if;
+         Put (tmp4, Integer (blue));
+         Add (Str => tmp4);
+         if current = i and field = Bluex then
+            Set_Character_Attributes;
+         end if;
+         Set_Character_Attributes;
+         Add (ch => ')');
+      end loop;
+      Add (Line => Line_Position (Number_Of_Colors + 3), Column => 0,
+           Str => "Use up/down to select a color, left/right to change " &
+           "fields.");
+      Add (Line => Line_Position (Number_Of_Colors + 4), Column => 0,
+           Str => "Modify field by typing nnn=, nnn-, or nnn+.  ? for help.");
+
+      Move_Cursor (Line => 2 + Line_Position (current), Column => 0);
+
+      last_c := this_c;
+      this_c := Getchar;
+      if Is_Digit (this_c) then
+         value := 0;
+      end if;
+
+      case this_c is
+         when KEY_UP =>
+            current := (current - 1) mod Color_Number (max_colors);
+         when KEY_DOWN =>
+            current := (current + 1) mod Color_Number (max_colors);
+         when KEY_RIGHT =>
+            field := RGB_Enum'Val ((RGB_Enum'Pos (field) + 1) mod 3);
+         when KEY_LEFT =>
+            field := RGB_Enum'Val ((RGB_Enum'Pos (field) - 1) mod 3);
+         when
+           Character'Pos ('0') |
+           Character'Pos ('1') |
+           Character'Pos ('2') |
+           Character'Pos ('3') |
+           Character'Pos ('4') |
+           Character'Pos ('5') |
+           Character'Pos ('6') |
+           Character'Pos ('7') |
+           Character'Pos ('8') |
+           Character'Pos ('9')  =>
+            value := value * 10 + RGB_Value (ctoi (Code_To_Char (this_c)));
+
+         when Character'Pos ('+') =>
+            change_color (current, field,  value, True);
+
+         when Character'Pos ('-') =>
+            change_color (current, field, -value, True);
+
+         when Character'Pos ('=') =>
+            change_color (current, field,  value, False);
+
+         when Character'Pos ('?') =>
+            Erase;
+            P ("                      RGB Value Editing Help");
+            P ("");
+            P ("You are in the RGB value editor.  Use the arrow keys to " &
+               "select one of");
+            P ("the fields in one of the RGB triples of the current colors;" &
+               " the one");
+            P ("currently selected will be reverse-video highlighted.");
+            P ("");
+            P ("To change a field, enter the digits of the new value; they" &
+               " are echoed");
+            P ("as entered.  Finish by typing `='.  The change will take" &
+               " effect instantly.");
+            P ("To increment or decrement a value, use the same procedure," &
+               " but finish");
+            P ("with a `+' or `-'.");
+            P ("");
+            P ("To quit, do `x' or 'q'");
+
+            Pause;
+            Erase;
+         when Character'Pos ('q') |
+           Character'Pos ('x') =>
+            null;
+         when others =>
+            Beep;
+      end case;
+      Move_Cursor (Line => Lines - 2, Column => 0);
+      Put (tmp6, Integer (value));