]> ncurses.scripts.mit.edu Git - ncurses.git/commitdiff
ncurses 5.0 v5.0
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 24 Oct 1999 04:32:42 +0000 (00:32 -0400)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 24 Oct 1999 04:32:42 +0000 (00:32 -0400)
779 files changed:
ANNOUNCE
Ada95/Makefile.in
Ada95/README
Ada95/TODO
Ada95/ada_include/Makefile.in [deleted file]
Ada95/gen/Makefile.in
Ada95/gen/gen.c
Ada95/gen/terminal_interface-curses-aux.ads.m4 [moved from Ada95/ada_include/terminal_interface-curses-aux.ads with 70% similarity]
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.ads.m4
Ada95/html/ada/files.htm [new file with mode: 0644]
Ada95/html/ada/files/T.htm [new file with mode: 0644]
Ada95/html/ada/funcs.htm [new file with mode: 0644]
Ada95/html/ada/funcs/A.htm [new file with mode: 0644]
Ada95/html/ada/funcs/C.htm [new file with mode: 0644]
Ada95/html/ada/funcs/E.htm [new file with mode: 0644]
Ada95/html/ada/funcs/F.htm [new file with mode: 0644]
Ada95/html/ada/funcs/G.htm [new file with mode: 0644]
Ada95/html/ada/funcs/I.htm [new file with mode: 0644]
Ada95/html/ada/funcs/L.htm [new file with mode: 0644]
Ada95/html/ada/funcs/M.htm [new file with mode: 0644]
Ada95/html/ada/funcs/N.htm [new file with mode: 0644]
Ada95/html/ada/funcs/P.htm [new file with mode: 0644]
Ada95/html/ada/funcs/R.htm [new file with mode: 0644]
Ada95/html/ada/funcs/S.htm [new file with mode: 0644]
Ada95/html/ada/funcs/T.htm [new file with mode: 0644]
Ada95/html/ada/funcs/U.htm [new file with mode: 0644]
Ada95/html/ada/funcs/V.htm [new file with mode: 0644]
Ada95/html/ada/index.htm [new file with mode: 0644]
Ada95/html/ada/main.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_types__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-forms__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-menus__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-mouse__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-panels-user_data__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-panels__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-text_io-float_io__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses-text_io__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface-curses__ads.htm [new file with mode: 0644]
Ada95/html/ada/terminal_interface__ads.htm [new file with mode: 0644]
Ada95/html/curs_addch.3x.html [deleted file]
Ada95/html/curs_mouse.3x.html [deleted file]
Ada95/html/index.html
Ada95/html/man/curs_addch.3x.html [new file with mode: 0644]
Ada95/html/man/curs_addchstr.3x.html [moved from Ada95/html/curs_addchstr.3x.html with 95% similarity]
Ada95/html/man/curs_addstr.3x.html [moved from Ada95/html/curs_addstr.3x.html with 95% similarity]
Ada95/html/man/curs_attr.3x.html [moved from Ada95/html/curs_attr.3x.html with 72% similarity]
Ada95/html/man/curs_beep.3x.html [moved from Ada95/html/curs_beep.3x.html with 90% similarity]
Ada95/html/man/curs_bkgd.3x.html [moved from Ada95/html/curs_bkgd.3x.html with 95% similarity]
Ada95/html/man/curs_border.3x.html [moved from Ada95/html/curs_border.3x.html with 95% similarity]
Ada95/html/man/curs_clear.3x.html [moved from Ada95/html/curs_clear.3x.html with 94% similarity]
Ada95/html/man/curs_color.3x.html [moved from Ada95/html/curs_color.3x.html with 97% similarity]
Ada95/html/man/curs_delch.3x.html [moved from Ada95/html/curs_delch.3x.html with 92% similarity]
Ada95/html/man/curs_deleteln.3x.html [moved from Ada95/html/curs_deleteln.3x.html with 92% similarity]
Ada95/html/man/curs_getch.3x.html [moved from Ada95/html/curs_getch.3x.html with 96% similarity]
Ada95/html/man/curs_getstr.3x.html [moved from Ada95/html/curs_getstr.3x.html with 96% similarity]
Ada95/html/man/curs_getyx.3x.html [moved from Ada95/html/curs_getyx.3x.html with 89% similarity]
Ada95/html/man/curs_inch.3x.html [moved from Ada95/html/curs_inch.3x.html with 87% similarity]
Ada95/html/man/curs_inchstr.3x.html [moved from Ada95/html/curs_inchstr.3x.html with 91% similarity]
Ada95/html/man/curs_initscr.3x.html [moved from Ada95/html/curs_initscr.3x.html with 97% similarity]
Ada95/html/man/curs_inopts.3x.html [moved from Ada95/html/curs_inopts.3x.html with 98% similarity]
Ada95/html/man/curs_insch.3x.html [moved from Ada95/html/curs_insch.3x.html with 92% similarity]
Ada95/html/man/curs_insstr.3x.html [moved from Ada95/html/curs_insstr.3x.html with 93% similarity]
Ada95/html/man/curs_instr.3x.html [moved from Ada95/html/curs_instr.3x.html with 95% similarity]
Ada95/html/man/curs_kernel.3x.html [moved from Ada95/html/curs_kernel.3x.html with 92% similarity]
Ada95/html/man/curs_mouse.3x.html [new file with mode: 0644]
Ada95/html/man/curs_move.3x.html [moved from Ada95/html/curs_move.3x.html with 91% similarity]
Ada95/html/man/curs_outopts.3x.html [moved from Ada95/html/curs_outopts.3x.html with 93% similarity]
Ada95/html/man/curs_overlay.3x.html [moved from Ada95/html/curs_overlay.3x.html with 95% similarity]
Ada95/html/man/curs_pad.3x.html [moved from Ada95/html/curs_pad.3x.html with 97% similarity]
Ada95/html/man/curs_print.3x.html [moved from Ada95/html/curs_print.3x.html with 93% similarity]
Ada95/html/man/curs_printw.3x.html [moved from Ada95/html/curs_printw.3x.html with 88% similarity]
Ada95/html/man/curs_refresh.3x.html [moved from Ada95/html/curs_refresh.3x.html with 97% similarity]
Ada95/html/man/curs_scanw.3x.html [moved from Ada95/html/curs_scanw.3x.html with 92% similarity]
Ada95/html/man/curs_scr_dmp.3x.html [moved from Ada95/html/curs_scr_dmp.3x.html with 95% similarity]
Ada95/html/man/curs_scr_dump.3x.html [new file with mode: 0644]
Ada95/html/man/curs_scroll.3x.html [moved from Ada95/html/curs_scroll.3x.html with 94% similarity]
Ada95/html/man/curs_slk.3x.html [moved from Ada95/html/curs_slk.3x.html with 50% similarity]
Ada95/html/man/curs_termattrs.3x.html [moved from Ada95/html/curs_termattrs.3x.html with 96% similarity]
Ada95/html/man/curs_termcap.3x.html [moved from Ada95/html/curs_termcap.3x.html with 63% similarity]
Ada95/html/man/curs_terminfo.3x.html [moved from Ada95/html/curs_terminfo.3x.html with 86% similarity]
Ada95/html/man/curs_touch.3x.html [moved from Ada95/html/curs_touch.3x.html with 95% similarity]
Ada95/html/man/curs_util.3x.html [moved from Ada95/html/curs_util.3x.html with 95% similarity]
Ada95/html/man/curs_window.3x.html [moved from Ada95/html/curs_window.3x.html with 97% similarity]
Ada95/html/man/define_key.3x.html [moved from Ada95/html/define_key.3x.html with 84% similarity]
Ada95/html/man/dft_fgbg.3x.html [moved from Ada95/html/dft_fgbg.3x.html with 93% similarity]
Ada95/html/man/form.3x.html [moved from Ada95/html/form.3x.html with 96% similarity]
Ada95/html/man/form_cursor.3x.html [moved from Ada95/html/form_cursor.3x.html with 83% similarity]
Ada95/html/man/form_data.3x.html [moved from Ada95/html/form_data.3x.html with 75% similarity]
Ada95/html/man/form_driver.3x.html [moved from Ada95/html/form_driver.3x.html with 95% similarity]
Ada95/html/man/form_field.3x.html [moved from Ada95/html/form_field.3x.html with 94% similarity]
Ada95/html/man/form_field_attributes.3x.html [moved from Ada95/html/form_field_attributes.3x.html with 88% similarity]
Ada95/html/man/form_field_buffer.3x.html [moved from Ada95/html/form_field_buffer.3x.html with 88% similarity]
Ada95/html/man/form_field_info.3x.html [moved from Ada95/html/form_field_info.3x.html with 87% similarity]
Ada95/html/man/form_field_just.3x.html [moved from Ada95/html/form_field_just.3x.html with 85% similarity]
Ada95/html/man/form_field_new.3x.html [moved from Ada95/html/form_field_new.3x.html with 90% similarity]
Ada95/html/man/form_field_opts.3x.html [moved from Ada95/html/form_field_opts.3x.html with 89% similarity]
Ada95/html/man/form_field_userptr.3x.html [moved from Ada95/html/form_field_userptr.3x.html with 83% similarity]
Ada95/html/man/form_field_validation.3x.html [moved from Ada95/html/form_field_validation.3x.html with 95% similarity]
Ada95/html/man/form_fieldtype.3x.html [moved from Ada95/html/form_fieldtype.3x.html with 93% similarity]
Ada95/html/man/form_hook.3x.html [moved from Ada95/html/form_hook.3x.html with 87% similarity]
Ada95/html/man/form_new.3x.html [moved from Ada95/html/form_new.3x.html with 84% similarity]
Ada95/html/man/form_new_page.3x.html [moved from Ada95/html/form_new_page.3x.html with 84% similarity]
Ada95/html/man/form_opts.3x.html [moved from Ada95/html/form_opts.3x.html with 87% similarity]
Ada95/html/man/form_page.3x.html [moved from Ada95/html/form_page.3x.html with 88% similarity]
Ada95/html/man/form_post.3x.html [moved from Ada95/html/form_post.3x.html with 87% similarity]
Ada95/html/man/form_requestname.3x.html [moved from Ada95/html/form_requestname.3x.html with 83% similarity]
Ada95/html/man/form_userptr.3x.html [moved from Ada95/html/form_userptr.3x.html with 83% similarity]
Ada95/html/man/form_win.3x.html [moved from Ada95/html/form_win.3x.html with 84% similarity]
Ada95/html/man/keyok.3x.html [moved from Ada95/html/keyok.3x.html with 89% similarity]
Ada95/html/man/menu.3x.html [moved from Ada95/html/menu.3x.html with 96% similarity]
Ada95/html/man/menu_attribs.3x.html [moved from Ada95/html/menu_attribs.3x.html with 90% similarity]
Ada95/html/man/menu_cursor.3x.html [moved from Ada95/html/menu_cursor.3x.html with 83% similarity]
Ada95/html/man/menu_driver.3x.html [moved from Ada95/html/menu_driver.3x.html with 50% similarity]
Ada95/html/man/menu_format.3x.html [moved from Ada95/html/menu_format.3x.html with 87% similarity]
Ada95/html/man/menu_hook.3x.html [moved from Ada95/html/menu_hook.3x.html with 95% similarity]
Ada95/html/man/menu_items.3x.html [moved from Ada95/html/menu_items.3x.html with 88% similarity]
Ada95/html/man/menu_mark.3x.html [moved from Ada95/html/menu_mark.3x.html with 87% similarity]
Ada95/html/man/menu_new.3x.html [moved from Ada95/html/menu_new.3x.html with 84% similarity]
Ada95/html/man/menu_opts.3x.html [moved from Ada95/html/menu_opts.3x.html with 89% similarity]
Ada95/html/man/menu_pattern.3x.html [moved from Ada95/html/menu_pattern.3x.html with 87% similarity]
Ada95/html/man/menu_post.3x.html [moved from Ada95/html/menu_post.3x.html with 93% similarity]
Ada95/html/man/menu_requestname.3x.html [moved from Ada95/html/menu_requestname.3x.html with 83% similarity]
Ada95/html/man/menu_spacing.3x.html [moved from Ada95/html/menu_spacing.3x.html with 89% similarity]
Ada95/html/man/menu_userptr.3x.html [moved from Ada95/html/menu_userptr.3x.html with 83% similarity]
Ada95/html/man/menu_win.3x.html [moved from Ada95/html/menu_win.3x.html with 89% similarity]
Ada95/html/man/mitem_current.3x.html [moved from Ada95/html/mitem_current.3x.html with 87% similarity]
Ada95/html/man/mitem_name.3x.html [moved from Ada95/html/mitem_name.3x.html with 78% similarity]
Ada95/html/man/mitem_new.3x.html [moved from Ada95/html/mitem_new.3x.html with 87% similarity]
Ada95/html/man/mitem_opts.3x.html [moved from Ada95/html/mitem_opts.3x.html with 86% similarity]
Ada95/html/man/mitem_userptr.3x.html [moved from Ada95/html/mitem_userptr.3x.html with 83% similarity]
Ada95/html/man/mitem_value.3x.html [moved from Ada95/html/mitem_value.3x.html with 85% similarity]
Ada95/html/man/mitem_visible.3x.html [moved from Ada95/html/mitem_visible.3x.html with 76% similarity]
Ada95/html/man/ncurses.3x.html [new file with mode: 0644]
Ada95/html/man/panel.3x.html [moved from Ada95/html/panel.3x.html with 96% similarity]
Ada95/html/man/resizeterm.3x.html [moved from Ada95/html/resizeterm.3x.html with 94% similarity]
Ada95/html/man/wresize.3x.html [moved from Ada95/html/wresize.3x.html with 91% similarity]
Ada95/html/ncurses.3x.html [deleted file]
Ada95/html/table.html
Ada95/html/terminal_interface-curses-forms-field_types-alpha_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-alphanumeric_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-enumeration-ada_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-enumeration_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-intfield_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-ipv4_address_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-numeric_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-regexp_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-user-choice_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types-user_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_types_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-field_user_data_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms-form_user_data_s.html [deleted file]
Ada95/html/terminal_interface-curses-forms_s.html [deleted file]
Ada95/html/terminal_interface-curses-menus-item_user_data_s.html [deleted file]
Ada95/html/terminal_interface-curses-menus-menu_user_data_s.html [deleted file]
Ada95/html/terminal_interface-curses-menus_s.html [deleted file]
Ada95/html/terminal_interface-curses-mouse_s.html [deleted file]
Ada95/html/terminal_interface-curses-panels-user_data_s.html [deleted file]
Ada95/html/terminal_interface-curses-panels_s.html [deleted file]
Ada95/html/terminal_interface-curses-text_io-complex_io_s.html [deleted file]
Ada95/html/terminal_interface-curses-text_io-decimal_io_s.html [deleted file]
Ada95/html/terminal_interface-curses-text_io-enumeration_io_s.html [deleted file]
Ada95/html/terminal_interface-curses-text_io-fixed_io_s.html [deleted file]
Ada95/html/terminal_interface-curses-text_io-float_io_s.html [deleted file]
Ada95/html/terminal_interface-curses-text_io-integer_io_s.html [deleted file]
Ada95/html/terminal_interface-curses-text_io-modular_io_s.html [deleted file]
Ada95/html/terminal_interface-curses-text_io_s.html [deleted file]
Ada95/html/terminal_interface-curses_s.html [deleted file]
Ada95/html/terminal_interface_s.html [deleted file]
Ada95/samples/Makefile.in
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 [new file with mode: 0644]
Ada95/src/terminal_interface-curses-aux.adb [moved from Ada95/ada_include/terminal_interface-curses-aux.adb with 97% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-alpha.adb with 96% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-alpha.ads with 94% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-alphanumeric.adb with 96% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-alphanumeric.ads with 94% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration-ada.adb with 97% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration-ada.ads with 94% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration.adb with 98% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration.ads with 96% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-intfield.adb with 96% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-intfield.ads with 94% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-ipv4_address.adb with 96% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-ipv4_address.ads with 94% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-numeric.adb with 85% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-numeric.ads with 94% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-regexp.adb with 95% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-regexp.ads with 94% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-user-choice.adb with 96% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-user-choice.ads with 93% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-user.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-user.adb with 96% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-user.ads [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types-user.ads with 94% similarity]
Ada95/src/terminal_interface-curses-forms-field_types.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_types.adb with 92% similarity]
Ada95/src/terminal_interface-curses-forms-field_user_data.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-field_user_data.adb with 96% similarity]
Ada95/src/terminal_interface-curses-forms-form_user_data.adb [moved from Ada95/ada_include/terminal_interface-curses-forms-form_user_data.adb with 96% similarity]
Ada95/src/terminal_interface-curses-forms.adb [moved from Ada95/ada_include/terminal_interface-curses-forms.adb with 94% similarity]
Ada95/src/terminal_interface-curses-menus-item_user_data.adb [moved from Ada95/ada_include/terminal_interface-curses-menus-item_user_data.adb with 97% similarity]
Ada95/src/terminal_interface-curses-menus-menu_user_data.adb [moved from Ada95/ada_include/terminal_interface-curses-menus-menu_user_data.adb with 96% similarity]
Ada95/src/terminal_interface-curses-menus.adb [moved from Ada95/ada_include/terminal_interface-curses-menus.adb with 92% similarity]
Ada95/src/terminal_interface-curses-mouse.adb [moved from Ada95/ada_include/terminal_interface-curses-mouse.adb with 63% similarity]
Ada95/src/terminal_interface-curses-panels-user_data.adb [moved from Ada95/ada_include/terminal_interface-curses-panels-user_data.adb with 97% similarity]
Ada95/src/terminal_interface-curses-panels.adb [moved from Ada95/ada_include/terminal_interface-curses-panels.adb with 98% similarity]
Ada95/src/terminal_interface-curses-text_io-aux.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io-aux.adb with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-aux.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io-aux.ads with 96% similarity]
Ada95/src/terminal_interface-curses-text_io-complex_io.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io-complex_io.adb with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-complex_io.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io-complex_io.ads with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-decimal_io.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io-decimal_io.adb with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-decimal_io.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io-decimal_io.ads with 96% similarity]
Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io-enumeration_io.adb with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io-enumeration_io.ads with 96% similarity]
Ada95/src/terminal_interface-curses-text_io-fixed_io.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io-fixed_io.adb with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-fixed_io.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io-fixed_io.ads with 96% similarity]
Ada95/src/terminal_interface-curses-text_io-float_io.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io-float_io.adb with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-float_io.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io-float_io.ads with 96% similarity]
Ada95/src/terminal_interface-curses-text_io-integer_io.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io-integer_io.adb with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-integer_io.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io-integer_io.ads with 96% similarity]
Ada95/src/terminal_interface-curses-text_io-modular_io.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io-modular_io.adb with 97% similarity]
Ada95/src/terminal_interface-curses-text_io-modular_io.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io-modular_io.ads with 96% similarity]
Ada95/src/terminal_interface-curses-text_io.adb [moved from Ada95/ada_include/terminal_interface-curses-text_io.adb with 98% similarity]
Ada95/src/terminal_interface-curses-text_io.ads [moved from Ada95/ada_include/terminal_interface-curses-text_io.ads with 96% similarity]
Ada95/src/terminal_interface-curses.adb [moved from Ada95/ada_include/terminal_interface-curses.adb with 85% similarity]
Ada95/src/terminal_interface.ads [moved from Ada95/ada_include/terminal_interface.ads with 96% similarity]
INSTALL
MANIFEST
Makefile.glibc
Makefile.in
Makefile.os2 [new file with mode: 0644]
NEWS
README
README.emx [new file with mode: 0644]
TO-DO
aclocal.m4
announce.html
announce.html.in
c++/Makefile.in
c++/NEWS
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 [new file with mode: 0644]
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
c++/modules
config.guess
config.sub
configure
configure.in
convert_configure.pl [new file with mode: 0644]
dist.mk
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_num.c
form/fty_regex.c
form/llib-lform
form/modules
include/Caps
include/MKterm.h.awk.in
include/capdefaults.c
include/curses.h.in
include/nc_alloc.h
include/term_entry.h
include/termcap.h.in
include/tic.h
man/MKterminfo.sh
man/captoinfo.1m
man/clear.1
man/curs_addch.3x
man/curs_addchstr.3x
man/curs_addstr.3x
man/curs_attr.3x
man/curs_beep.3x
man/curs_bkgd.3x
man/curs_border.3x
man/curs_clear.3x
man/curs_color.3x
man/curs_delch.3x
man/curs_deleteln.3x
man/curs_getch.3x
man/curs_getstr.3x
man/curs_getyx.3x
man/curs_inch.3x
man/curs_inchstr.3x
man/curs_initscr.3x
man/curs_inopts.3x
man/curs_insch.3x
man/curs_insstr.3x
man/curs_instr.3x
man/curs_kernel.3x
man/curs_mouse.3x
man/curs_move.3x
man/curs_outopts.3x
man/curs_overlay.3x
man/curs_pad.3x
man/curs_print.3x
man/curs_printw.3x
man/curs_refresh.3x
man/curs_scanw.3x
man/curs_scr_dump.3x [moved from man/curs_scr_dmp.3x with 53% similarity]
man/curs_scroll.3x
man/curs_slk.3x
man/curs_termattrs.3x
man/curs_termcap.3x
man/curs_terminfo.3x
man/curs_touch.3x
man/curs_util.3x
man/curs_window.3x
man/define_key.3x
man/dft_fgbg.3x
man/form.3x
man/form_cursor.3x
man/form_data.3x
man/form_driver.3x
man/form_field.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_opts.3x
man/form_field_userptr.3x
man/form_field_validation.3x
man/form_fieldtype.3x
man/form_hook.3x
man/form_new.3x
man/form_new_page.3x
man/form_opts.3x
man/form_page.3x
man/form_post.3x
man/form_requestname.3x
man/form_userptr.3x
man/form_win.3x
man/infocmp.1m
man/keybound.3x [new file with mode: 0644]
man/keyok.3x
man/man_db.renames
man/menu.3x
man/menu_attribs.3x
man/menu_cursor.3x
man/menu_driver.3x
man/menu_format.3x
man/menu_hook.3x
man/menu_items.3x
man/menu_mark.3x
man/menu_new.3x
man/menu_opts.3x
man/menu_pattern.3x
man/menu_post.3x
man/menu_requestname.3x
man/menu_spacing.3x
man/menu_userptr.3x
man/menu_win.3x
man/mitem_current.3x
man/mitem_name.3x
man/mitem_new.3x
man/mitem_opts.3x
man/mitem_userptr.3x
man/mitem_value.3x
man/mitem_visible.3x
man/ncurses.3x
man/panel.3x
man/resizeterm.3x
man/term.5
man/term.7
man/terminfo.head
man/terminfo.tail
man/tic.1m
man/toe.1m
man/tput.1
man/tset.1
man/wresize.3x
menu/Makefile.in
menu/READ.ME
menu/eti.h
menu/llib-lmenu
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
menu/modules
misc/chkdef.cmd [new file with mode: 0644]
misc/cleantic.cmd [new file with mode: 0644]
misc/cmpdef.cmd [new file with mode: 0644]
misc/emx.src
misc/form.def [new file with mode: 0644]
misc/form.ref [new file with mode: 0644]
misc/hackguide.doc
misc/hackguide.html
misc/makedef.cmd [new file with mode: 0644]
misc/menu.def [new file with mode: 0644]
misc/menu.ref [new file with mode: 0644]
misc/ncurses-intro.doc
misc/ncurses-intro.html
misc/ncurses.def [new file with mode: 0644]
misc/ncurses.ref [new file with mode: 0644]
misc/panel.def [new file with mode: 0644]
misc/panel.ref [new file with mode: 0644]
misc/run_tic.sh
misc/shlib
misc/terminfo.src
mk-1st.awk
mk-2nd.awk
ncurses/MKkeyname.awk [deleted file]
ncurses/Makefile.in
ncurses/README
ncurses/SigAction.h
ncurses/base/MKkeyname.awk [new file with mode: 0644]
ncurses/base/MKlib_gen.sh [moved from ncurses/MKlib_gen.sh with 100% similarity]
ncurses/base/MKunctrl.awk [moved from ncurses/MKunctrl.awk with 97% similarity]
ncurses/base/README [new file with mode: 0644]
ncurses/base/define_key.c [moved from ncurses/define_key.c with 91% similarity]
ncurses/base/keybound.c [new file with mode: 0644]
ncurses/base/keyok.c [moved from ncurses/keyok.c with 93% similarity]
ncurses/base/lib_addch.c [moved from ncurses/lib_addch.c with 96% similarity]
ncurses/base/lib_addstr.c [moved from ncurses/lib_addstr.c with 89% similarity]
ncurses/base/lib_beep.c [moved from ncurses/lib_beep.c with 94% similarity]
ncurses/base/lib_bkgd.c [moved from ncurses/lib_bkgd.c with 100% similarity]
ncurses/base/lib_box.c [moved from ncurses/lib_box.c with 100% similarity]
ncurses/base/lib_chgat.c [moved from ncurses/lib_chgat.c with 100% similarity]
ncurses/base/lib_clear.c [moved from ncurses/lib_clear.c with 100% similarity]
ncurses/base/lib_clearok.c [moved from ncurses/lib_clearok.c with 100% similarity]
ncurses/base/lib_clrbot.c [moved from ncurses/lib_clrbot.c with 78% similarity]
ncurses/base/lib_clreol.c [moved from ncurses/lib_clreol.c with 73% similarity]
ncurses/base/lib_color.c [moved from ncurses/lib_color.c with 77% similarity]
ncurses/base/lib_colorset.c [new file with mode: 0644]
ncurses/base/lib_delch.c [moved from ncurses/lib_delch.c with 81% similarity]
ncurses/base/lib_delwin.c [moved from ncurses/lib_delwin.c with 100% similarity]
ncurses/base/lib_dft_fgbg.c [moved from ncurses/lib_dft_fgbg.c with 100% similarity]
ncurses/base/lib_echo.c [moved from ncurses/lib_echo.c with 96% similarity]
ncurses/base/lib_endwin.c [moved from ncurses/lib_endwin.c with 91% similarity]
ncurses/base/lib_erase.c [moved from ncurses/lib_erase.c with 100% similarity]
ncurses/base/lib_flash.c [moved from ncurses/lib_flash.c with 94% similarity]
ncurses/base/lib_freeall.c [moved from ncurses/lib_freeall.c with 91% similarity]
ncurses/base/lib_getch.c [moved from ncurses/lib_getch.c with 90% similarity]
ncurses/base/lib_getstr.c [moved from ncurses/lib_getstr.c with 97% similarity]
ncurses/base/lib_hline.c [moved from ncurses/lib_hline.c with 88% similarity]
ncurses/base/lib_immedok.c [moved from ncurses/lib_immedok.c with 100% similarity]
ncurses/base/lib_inchstr.c [moved from ncurses/lib_inchstr.c with 100% similarity]
ncurses/base/lib_initscr.c [moved from ncurses/lib_initscr.c with 89% similarity]
ncurses/base/lib_insch.c [moved from ncurses/lib_insch.c with 83% similarity]
ncurses/base/lib_insdel.c [moved from ncurses/lib_insdel.c with 100% similarity]
ncurses/base/lib_insstr.c [moved from ncurses/lib_insstr.c with 96% similarity]
ncurses/base/lib_instr.c [moved from ncurses/lib_instr.c with 100% similarity]
ncurses/base/lib_isendwin.c [moved from ncurses/lib_isendwin.c with 96% similarity]
ncurses/base/lib_leaveok.c [moved from ncurses/lib_leaveok.c with 95% similarity]
ncurses/base/lib_mouse.c [moved from ncurses/lib_mouse.c with 78% similarity]
ncurses/base/lib_move.c [moved from ncurses/lib_move.c with 100% similarity]
ncurses/base/lib_mvwin.c [moved from ncurses/lib_mvwin.c with 100% similarity]
ncurses/base/lib_newterm.c [moved from ncurses/lib_newterm.c with 87% similarity]
ncurses/base/lib_newwin.c [moved from ncurses/lib_newwin.c with 97% similarity]
ncurses/base/lib_nl.c [moved from ncurses/lib_nl.c with 93% similarity]
ncurses/base/lib_overlay.c [moved from ncurses/lib_overlay.c with 100% similarity]
ncurses/base/lib_pad.c [moved from ncurses/lib_pad.c with 97% similarity]
ncurses/base/lib_printw.c [moved from ncurses/lib_printw.c with 90% similarity]
ncurses/base/lib_redrawln.c [moved from ncurses/lib_redrawln.c with 80% similarity]
ncurses/base/lib_refresh.c [moved from ncurses/lib_refresh.c with 89% similarity]
ncurses/base/lib_restart.c [moved from ncurses/lib_restart.c with 74% similarity]
ncurses/base/lib_scanw.c [moved from ncurses/lib_scanw.c with 90% similarity]
ncurses/base/lib_screen.c [moved from ncurses/lib_screen.c with 94% similarity]
ncurses/base/lib_scroll.c [moved from ncurses/lib_scroll.c with 100% similarity]
ncurses/base/lib_scrollok.c [moved from ncurses/lib_scrollok.c with 100% similarity]
ncurses/base/lib_scrreg.c [moved from ncurses/lib_scrreg.c with 100% similarity]
ncurses/base/lib_set_term.c [moved from ncurses/lib_set_term.c with 76% similarity]
ncurses/base/lib_slk.c [moved from ncurses/lib_slk.c with 88% similarity]
ncurses/base/lib_slkatr_set.c [moved from menu/m_adabind.c with 66% similarity]
ncurses/base/lib_slkatrof.c [moved from ncurses/lib_slkatrof.c with 96% similarity]
ncurses/base/lib_slkatron.c [moved from ncurses/lib_slkatron.c with 96% similarity]
ncurses/base/lib_slkatrset.c [moved from ncurses/lib_slkatrset.c with 96% similarity]
ncurses/base/lib_slkattr.c [moved from ncurses/lib_slkattr.c with 100% similarity]
ncurses/base/lib_slkclear.c [moved from ncurses/lib_slkclear.c with 92% similarity]
ncurses/base/lib_slkcolor.c [new file with mode: 0644]
ncurses/base/lib_slkinit.c [moved from ncurses/lib_slkinit.c with 100% similarity]
ncurses/base/lib_slklab.c [moved from ncurses/lib_slklab.c with 100% similarity]
ncurses/base/lib_slkrefr.c [moved from ncurses/lib_slkrefr.c with 90% similarity]
ncurses/base/lib_slkset.c [moved from ncurses/lib_slkset.c with 100% similarity]
ncurses/base/lib_slktouch.c [moved from ncurses/lib_slktouch.c with 100% similarity]
ncurses/base/lib_touch.c [moved from ncurses/lib_touch.c with 96% similarity]
ncurses/base/lib_ungetch.c [moved from ncurses/lib_ungetch.c with 100% similarity]
ncurses/base/lib_vline.c [moved from ncurses/lib_vline.c with 89% similarity]
ncurses/base/lib_wattroff.c [moved from ncurses/lib_wattroff.c with 95% similarity]
ncurses/base/lib_wattron.c [moved from ncurses/lib_wattron.c with 95% similarity]
ncurses/base/lib_winch.c [new file with mode: 0644]
ncurses/base/lib_window.c [moved from ncurses/lib_window.c with 90% similarity]
ncurses/base/memmove.c [new file with mode: 0644]
ncurses/base/nc_panel.c [moved from ncurses/nc_panel.c with 100% similarity]
ncurses/base/resizeterm.c [moved from ncurses/resizeterm.c with 94% similarity]
ncurses/base/safe_sprintf.c [moved from ncurses/safe_sprintf.c with 92% similarity]
ncurses/base/sigaction.c [moved from ncurses/sigaction.c with 94% similarity]
ncurses/base/tries.c [new file with mode: 0644]
ncurses/base/version.c [new file with mode: 0644]
ncurses/base/vsscanf.c [moved from ncurses/vsscanf.c with 100% similarity]
ncurses/base/wresize.c [moved from ncurses/wresize.c with 95% similarity]
ncurses/curses.priv.h
ncurses/lib_adabind.c [deleted file]
ncurses/llib-lncurses
ncurses/modules
ncurses/read_entry.c [deleted file]
ncurses/softscroll.c [deleted file]
ncurses/tinfo/MKcaptab.awk [moved from ncurses/MKcaptab.awk with 83% similarity]
ncurses/tinfo/MKfallback.sh [moved from ncurses/MKfallback.sh with 89% similarity]
ncurses/tinfo/MKnames.awk [moved from ncurses/MKnames.awk with 93% similarity]
ncurses/tinfo/README [new file with mode: 0644]
ncurses/tinfo/access.c [new file with mode: 0644]
ncurses/tinfo/add_tries.c [moved from ncurses/tries.c with 71% similarity]
ncurses/tinfo/alloc_entry.c [moved from ncurses/alloc_entry.c with 63% similarity]
ncurses/tinfo/alloc_ttype.c [new file with mode: 0644]
ncurses/tinfo/captoinfo.c [moved from ncurses/captoinfo.c with 98% similarity]
ncurses/tinfo/comp_error.c [moved from ncurses/comp_error.c with 93% similarity]
ncurses/tinfo/comp_expand.c [moved from ncurses/comp_expand.c with 63% similarity]
ncurses/tinfo/comp_hash.c [moved from ncurses/comp_hash.c with 96% similarity]
ncurses/tinfo/comp_parse.c [moved from ncurses/comp_parse.c with 84% similarity]
ncurses/tinfo/comp_scan.c [moved from ncurses/comp_scan.c with 96% similarity]
ncurses/tinfo/doalloc.c [new file with mode: 0644]
ncurses/tinfo/free_ttype.c [new file with mode: 0644]
ncurses/tinfo/getenv_num.c [new file with mode: 0644]
ncurses/tinfo/home_terminfo.c [new file with mode: 0644]
ncurses/tinfo/init_keytry.c [new file with mode: 0644]
ncurses/tinfo/keys.list [moved from ncurses/keys.list with 100% similarity]
ncurses/tinfo/lib_acs.c [moved from ncurses/lib_acs.c with 97% similarity]
ncurses/tinfo/lib_baudrate.c [moved from ncurses/lib_baudrate.c with 77% similarity]
ncurses/tinfo/lib_cur_term.c [moved from ncurses/lib_cur_term.c with 81% similarity]
ncurses/tinfo/lib_data.c [moved from ncurses/lib_data.c with 94% similarity]
ncurses/tinfo/lib_has_cap.c [moved from ncurses/lib_ti.c with 76% similarity]
ncurses/tinfo/lib_kernel.c [moved from ncurses/lib_kernel.c with 82% similarity]
ncurses/tinfo/lib_longname.c [moved from ncurses/lib_longname.c with 95% similarity]
ncurses/tinfo/lib_napms.c [moved from ncurses/lib_napms.c with 95% similarity]
ncurses/tinfo/lib_options.c [moved from ncurses/lib_options.c with 83% similarity]
ncurses/tinfo/lib_print.c [moved from ncurses/lib_print.c with 94% similarity]
ncurses/tinfo/lib_raw.c [new file with mode: 0644]
ncurses/tinfo/lib_setup.c [moved from ncurses/lib_setup.c with 72% similarity]
ncurses/tinfo/lib_termcap.c [moved from ncurses/lib_termcap.c with 68% similarity]
ncurses/tinfo/lib_termname.c [new file with mode: 0644]
ncurses/tinfo/lib_ti.c [new file with mode: 0644]
ncurses/tinfo/lib_tparm.c [moved from ncurses/lib_tparm.c with 72% similarity]
ncurses/tinfo/lib_tputs.c [moved from ncurses/lib_tputs.c with 84% similarity]
ncurses/tinfo/lib_ttyflags.c [new file with mode: 0644]
ncurses/tinfo/make_keys.c [moved from ncurses/make_keys.c with 95% similarity]
ncurses/tinfo/name_match.c [moved from ncurses/name_match.c with 74% similarity]
ncurses/tinfo/parse_entry.c [moved from ncurses/parse_entry.c with 85% similarity]
ncurses/tinfo/read_entry.c [new file with mode: 0644]
ncurses/tinfo/read_termcap.c [moved from ncurses/read_termcap.c with 93% similarity]
ncurses/tinfo/setbuf.c [new file with mode: 0644]
ncurses/tinfo/write_entry.c [moved from ncurses/write_entry.c with 61% similarity]
ncurses/trace/README [new file with mode: 0644]
ncurses/trace/lib_trace.c [moved from ncurses/lib_trace.c with 92% similarity]
ncurses/trace/lib_traceatr.c [moved from ncurses/lib_traceatr.c with 97% similarity]
ncurses/trace/lib_tracebits.c [moved from ncurses/lib_raw.c with 64% similarity]
ncurses/trace/lib_tracechr.c [moved from ncurses/lib_tracechr.c with 97% similarity]
ncurses/trace/lib_tracedmp.c [moved from ncurses/lib_tracedmp.c with 96% similarity]
ncurses/trace/lib_tracemse.c [moved from ncurses/lib_tracemse.c with 95% similarity]
ncurses/trace/trace_buf.c [moved from ncurses/trace_buf.c with 85% similarity]
ncurses/trace/trace_tries.c [new file with mode: 0644]
ncurses/trace/trace_xnames.c [new file with mode: 0644]
ncurses/tty/MKexpanded.sh [moved from ncurses/MKexpanded.sh with 95% similarity]
ncurses/tty/hardscroll.c [moved from ncurses/hardscroll.c with 89% similarity]
ncurses/tty/hashmap.c [moved from ncurses/hashmap.c with 78% similarity]
ncurses/tty/lib_mvcur.c [moved from ncurses/lib_mvcur.c with 94% similarity]
ncurses/tty/lib_tstp.c [moved from ncurses/lib_tstp.c with 85% similarity]
ncurses/tty/lib_twait.c [moved from ncurses/lib_twait.c with 54% similarity]
ncurses/tty/lib_vidattr.c [moved from ncurses/lib_vidattr.c with 90% similarity]
ncurses/tty/tty_display.h [new file with mode: 0644]
ncurses/tty/tty_input.h [new file with mode: 0644]
ncurses/tty/tty_update.c [moved from ncurses/lib_doupdate.c with 92% similarity]
panel/Makefile.in
panel/p_above.c
panel/p_below.c
panel/p_bottom.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_update.c
panel/panel.c
panel/panel.h
panel/panel.priv.h
progs/Makefile.in
progs/clear.c
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
sysdeps/unix/sysv/linux/configure
sysdeps/unix/sysv/linux/edit_man.sh
tack/COPYING [new file with mode: 0644]
tack/HISTORY [new file with mode: 0644]
tack/Makefile.in
tack/README [new file with mode: 0644]
tack/ansi.c [new file with mode: 0644]
tack/charset.c [new file with mode: 0644]
tack/color.c [new file with mode: 0644]
tack/control.c [new file with mode: 0644]
tack/crum.c [new file with mode: 0644]
tack/edit.c [new file with mode: 0644]
tack/fun.c [new file with mode: 0644]
tack/init.c [new file with mode: 0644]
tack/menu.c [new file with mode: 0644]
tack/modes.c [new file with mode: 0644]
tack/modules
tack/output.c [new file with mode: 0644]
tack/pad.c [new file with mode: 0644]
tack/scan.c [new file with mode: 0644]
tack/sync.c [new file with mode: 0644]
tack/sysdep.c [new file with mode: 0644]
tack/tack.1 [new file with mode: 0644]
tack/tack.c [new file with mode: 0644]
tack/tack.h [new file with mode: 0644]
test/Makefile.in
test/blue.c
test/bs.c
test/cardfile.c [new file with mode: 0644]
test/cardfile.dat [new file with mode: 0644]
test/configure [new file with mode: 0755]
test/configure.in
test/ditto.c [moved from form/frm_adabind.c with 50% similarity]
test/dots.c [new file with mode: 0644]
test/filter.c [new file with mode: 0644]
test/firework.c
test/hanoi.c
test/hashtest.c
test/keynames.c
test/lrtest.c
test/modules
test/ncurses.c
test/rain.c
test/tclock.c
test/testcurs.c
test/view.c
test/worm.c

index 3383dedd993ffd346059f69868e163dbfb7a4ed4..4707838fba99e43ceae6c99ee42e62d8a320b00e 100644 (file)
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,18 +1,20 @@
 
-                            Announcing ncurses 4.2
+                            Announcing ncurses 5.0
                                        
-   The ncurses (new curses) library is a freeware emulation of System V
-   Release 4.0 curses. 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.
+   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
    ncurses.
    
-   The ncurses code was developed under 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 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),
    manual pages are provided for the library and tools.
    
    The ncurses distribution is available via anonymous FTP at the GNU
-   distribution site [1]ftp://prep.ai.mit.edu/pub/gnu. It is also
+   distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses. It is also
    available at [2]ftp://ftp.clark.net/pub/dickey/ncurses.
    
-                              Features of ncurses
+                                 Release Notes
+                                       
+   We decided to release ncurses as a new whole number release (5.0)
+   because it incorporates several interface changes, including some that
+   would invalidate existing shared libraries. These are the highlights
+   from the change-log since ncurses 4.2 release.
+   
+   Interface changes:
+     * The principal source of changes to the interface comes from the
+       release of X/Open Curses in 1997. Earlier versions of ncurses (4.0
+       and before) were based on a draft version of the specification.
+       The release version adds parameters to some functions to support
+       the evolving internationalization of curses. These summarize the
+       impact:
+          + modified several prototypes to correspond with 1997 version
+            of X/Open Curses (affects ABI since developers have used
+            attr_get).
+          + corrected prototypes for slk_* functions, using chtype rather
+            than attr_t.
+          + the slk_attr_{set,off,on} functions need an additional void*
+            parameter according to XSI.
+          + correct macros for wattr_set, wattr_get, separate wattrset
+            macro from these to preserve behavior that allows attributes
+            to be combined with color pair numbers.
+          + reviewed/updated curses.h, term.h against X/Open Curses Issue
+            4 Version 2. This includes making some parameters
+            NCURSES_CONST rather than const, e.g., in termcap.h.
+          + reviewed/corrected macros in curses.h as per XSI document.
+          + add set_a_attributes and set_pglen_inch to terminfo
+            structure, as per XSI and Solaris 2.5.
+     * The newest version of the X/Open Curses is implemented on Solaris
+       and other vendor's systems. It adds new features to the terminfo
+       descriptions:
+          + implement tparm %l format.
+          + implement tparm printf-style width and precision for %s, %d,
+            %x, %o as per XSI.
+     * We made additional changes to reduce impact by future interface
+       changes:
+          + rename key_names[] array to _nc_key_names since it is not
+            part of the curses interface.
+          + move macro winch to a function, to hide details of struct
+            ldat
+     * modify configure script to embed ABI in shared libraries for HP-UX
+       10.x (detailed request by Tim Mooney).
+     * modify configuration of shared libraries on Digital Unix so that
+       versioning is embedded in the library, rather than implied by
+       links (patch by Tim Mooney).
+       
+   New features:
+     * enable sigwinch handler by default.
+     * turn on hashmap scrolling code by default
+     * improved support for termcap applications
+          + modify tput to accept termcap names as an alternative to
+            terminfo names.
+          + provide support for termcap PC variable by copying it from
+            terminfo data and using it as the padding character in tputs.
+          + provide support for termcap ospeed variable by copying it
+            from the internal cur_term member, and using ospeed as the
+            baudrate reference for the delay_output and tputs functions.
+          + change name-comparisons in lib_termcap to compare no more
+            than 2 characters.
+          + add configure option --enable-tcap-names, which essentially
+            allows users to define new capabilities as in termcap.
+     * add mouse support to ncurses menus.
+     * add mouse and dll support for OS/2 EMX
+     * modify terminfo parsing to accept octal and hexadecimal constants
+     * add configure option --enable-no-padding, to allow environment
+       variable $NCURSES_NO_PADDING to eliminate non-mandatory padding,
+       thereby making terminal emulators (e.g., for vt100) a little more
+       efficient.
+     * modify lib_color.c to eliminate dependency on orig_colors and
+       orig_pair, since SVr4 curses does not require these either, but
+       uses them when they are available.
+     * add -f option to infocmp and tic, which formats the terminfo
+       if/then/else/endif so that they are readable (with newlines and
+       tabs).
+     * modify tic to compile into %'char' form in preference to
+       %{number}, since that is a little more efficient.
+       
+   Major bug fixes:
+     * modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a
+       problem where ncurses applications which were run via a shell
+       script would hang when given a ^Z. Also, check if the terminal's
+       process group is consistent, i.e., a shell has not taken ownership
+       of it, before deciding to save the current terminal settings in
+       the SIGTSTP handler.
+     * suppress sc/rc capabilities from terminal description if they
+       appear in smcup/rmcup. This affects only scrolling optimization,
+       to fix a problem reported by several people with xterm's alternate
+       screen, though the problem is more general.
+     * modify relative_move and tputs to avoid an interaction with the
+       BSD-style padding. The relative_move function could produce a
+       string to replace on the screen which began with a numeric
+       character, which was then interpreted by tputs as padding.
+     * modify setupterm so that cancelled strings are treated the same as
+       absent strings, cancelled and absent booleans false (does not
+       affect tic, infocmp).
+     * modify lib_vidattr.c to allow for terminal types (e.g.,
+       xterm-color) which may reset all attributes in the 'op'
+       capability, so that colors are set before turning on bold and
+       other attributes, but still after turning attributes off.
+     * use 'access()' to check if ncurses library should be permitted to
+       open or modify files with fopen/open/link/unlink/remove calls, in
+       case the calling application is running in setuid mode.
+     * correction to doupdate, for case where terminal does not support
+       insert/delete character. The logic did not check that there was a
+       difference in alignment of changes to old/new screens before
+       repainting the whole non-blank portion of the line. Modified to
+       fall through into logic that reduces by the portion which does not
+       differ.
+       
+                              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
        documented).
      * Full support for SVr4 curses features including keyboard mapping,
        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
+       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
        documented so you can use the SVr4 subset only).
-     * Unlike SVr4 curses, ncurses can write to the rightmost-bottommost
+     * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
        corner of the screen if your terminal has an insert-character
        capability.
-     * (PC-clone boxes only) Support for access to the IBM PC ROM
-       characters 0-32 through the highlight A_ALTCHARSET.
      * Ada95 and C++ bindings.
-     * Support for mouse event reporting under xterm.
+     * 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
        their data.
    and arena corruption by the Purify memory-allocation tester.
    
    The ncurses code has been tested with a wide variety of applications
-   including:
+   including (versions starting with those noted):
    
+   cdk
+          Curses Development Kit [3]Curses Development Kit
+          [4]ftp://ftp.clark.net/pub/dickey/cdk.
+          
    ded
-          directory-editor [3]ftp://ftp.clark.net/pub/dickey/ded.
+          directory-editor [5]ftp://ftp.clark.net/pub/dickey/ded.
           
    dialog
           the underlying application used in Slackware's setup, and the
-          basis for similar applications on Linux.
+          basis for similar applications on GNU/Linux.
           
-   lynx-2.7
+   lynx
           the character-screen WWW browser
           
    Midnight Commander 4.1
           file manager
           
-   mutt 0.88
+   mutt
           mail utility
           
-   ncftp 2.0
+   ncftp
           file-transfer utility
           
    nvi
           New vi versions 1.50 are able to use ncurses versions 1.9.7 and
           later.
           
+   tin
+          newsreader, supporting color, MIME
+          [6]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff.
+          
    taper
           tape archive utility
           
           
    as well as some that use ncurses for the terminfo support alone:
    
-   minicom-1.75
+   minicom
           terminal emulator
           
-   tin-unoff
-          tin 1.4 newsreader, supporting color, MIME
-          [4]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff.
-          
    vile
-          vi-like-emacs [5]ftp://ftp.clark.net/pub/dickey/vile.
+          vi-like-emacs [7]ftp://ftp.clark.net/pub/dickey/vile.
           
    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 [6]Zeyd Ben-Halim and [7]Eric
-   S. Raymond. Ongoing work is being done by [8]Thomas Dickey and
-   [9]Jürgen Pfeifer. [10]Florian La Roche acts as the maintainer for the
+   The original developers of ncurses are [8]Zeyd Ben-Halim and [9]Eric
+   S. Raymond. Ongoing work is being done by [10]Thomas Dickey and
+   [11]Jürgen Pfeifer. [12]Thomas Dickey acts as the maintainer for the
    Free Software Foundation, which holds the copyright on ncurses.
-   Contact the current maintainers at [11]bug-ncurses@gnu.org.
+   Contact the current maintainers at [13]bug-ncurses@gnu.org.
    
    To join the ncurses mailing list, please write email to
    bug-ncurses-request@gnu.org containing the line:
@@ -201,7 +315,7 @@ Who's Who and What's What
    and testing of this package.
    
    Beta versions of ncurses and patches to the current release are made
-   available at [12]ftp://ftp.clark.net/pub/dickey/ncurses.
+   available at [14]ftp://ftp.clark.net/pub/dickey/ncurses.
    
 Future Plans
 
@@ -216,24 +330,26 @@ Other Related Resources
 
    The distribution includes and uses a version of the terminfo-format
    terminal description file maintained by Eric Raymond.
-   [13]http://earthspace.net/~esr/terminfo.
+   [15]http://earthspace.net/~esr/terminfo.
    
    You can find lots of information on terminal-related topics not
-   covered in the terminfo file at [14]Richard Shuford's archive.
+   covered in the terminfo file at [16]Richard Shuford's archive.
 
 References
 
-   1. ftp://prep.ai.mit.edu/pub/gnu
+   1. ftp://ftp.gnu.org/pub/gnu/ncurses
    2. ftp://ftp.clark.net/pub/dickey/ncurses
-   3. ftp://ftp.clark.net/pub/dickey/ded
-   4. ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff
-   5. ftp://ftp.clark.net/pub/dickey/vile
-   6. mailto:zmbenhal@netcom.com
-   7. http://www.ccil.org/~esr/home.html
-   8. mailto:dickey@clark.net
-   9. mailto:Juergen.Pfeifer@T-Online.de
-  10. mailto:florian@gnu.org
-  11. mailto:bug-ncurses@gnu.org
-  12. ftp://ftp.clark.net/pub/dickey/ncurses
-  13. http://earthspace.net/~esr/terminfo
-  14. http://www.cs.utk.edu/~shuford/terminal_index.html
+   3. http://www.vexus.ca/CDK.html
+   4. ftp://ftp.clark.net/pub/dickey/cdk
+   5. ftp://ftp.clark.net/pub/dickey/ded
+   6. ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff
+   7. ftp://ftp.clark.net/pub/dickey/vile
+   8. mailto:zmbenhal@netcom.com
+   9. http://www.ccil.org/~esr/home.html
+  10. mailto:dickey@clark.net
+  11. mailto:juergen.pfeifer@gmx.net
+  12. mailto:dickey@clark.net
+  13. mailto:bug-ncurses@gnu.org
+  14. ftp://ftp.clark.net/pub/dickey/ncurses
+  15. http://earthspace.net/~esr/terminfo
+  16. http://www.cs.utk.edu/~shuford/terminal_index.html
index 49bbb60232e9aedd183c83fa39589c236394d543..5ba9feec0bb9643e575c4d16804a9779c64797d0 100644 (file)
 # authorization.                                                             #
 ##############################################################################
 #
-#  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+#  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 #
 #  Version Control
-#  $Revision: 1.10 $
+#  $Revision: 1.12 $
 #
 SHELL          = /bin/sh
 THIS           = Makefile
 
 SUBDIRS         = @ADA_SUBDIRS@
 
+CF_MFLAGS      = @cf_cv_makeflags@
+@SET_MAKE@
+
 all \
 sources \
 install \
@@ -43,19 +46,19 @@ install.libs \
 uninstall \
 uninstall.libs ::
        for d in $(SUBDIRS); do \
-               (cd $$d ; $(MAKE) $@) ;\
+               (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\
        done
 
 clean \
 mostlyclean ::
        for d in $(SUBDIRS); do \
-               (cd $$d ; $(MAKE) $@) ;\
+               (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\
        done
 
 distclean \
 realclean ::
        for d in $(SUBDIRS); do \
-               (cd $$d ; $(MAKE) $@) ;\
+               (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\
        done
        rm -f Makefile
 
index 28836a2fe358b2662178370c2232d942d48331cd..8a530611917a9b19b3d31d451653c4c19e0d8f48 100644 (file)
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
 
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
-Caveats:
-
-   This is the first delivery of this binding. It has not been
-   extensively tested. So I declare this as BETA level software,
-   although it is delivered with an official release of ncurses.
-
-   You should install the ncurses distribution around this binding
-   first before you try to run the sample.
-
-   This Binding is currently strictly for the GNAT compiler, because
-   in one place I use a GNAT specfic runtime module (see doc.)
-
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 
 The documentation is provided in HTML format in the ./html 
 subdirectory. The main document is named index.html
index 8516d227be6914186484af8fa6aae408d89916a5..12fef7b717cffe14c58257cf70f76492f77416ee 100644 (file)
@@ -1,8 +1,10 @@
+-- $Id: TODO,v 1.4 1999/10/20 09:18:58 tom Exp $
+
 --  Intensive testing
     Perhaps the delivery of the Beta will help a bit.
 
 --  Documentation
-    Like most WEB pages: under continous construction
+    Like most WEB pages: under continuous construction
 
 --  Style cleanup
        
@@ -10,9 +12,9 @@
     Comfort purpose
 
 --  Sample program
-    Under continous construction (and it's not a WEB page!!!)
+    Under continuous construction (and it's not a WEB page!!!)
 
---  Make the binding objects a shared libray
+--  Make the binding objects a shared library
     They are rather large, so it would make sense, otherwise Ada95
     would look too large, although the generated code is as compact
     as C or C++. I'll wait a bit until the GNAT people provide some
diff --git a/Ada95/ada_include/Makefile.in b/Ada95/ada_include/Makefile.in
deleted file mode 100644 (file)
index 3bc6c06..0000000
+++ /dev/null
@@ -1,546 +0,0 @@
-##############################################################################
-# Copyright (c) 1998 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: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
-#
-#  Version Control
-#  $Revision: 1.13 $
-#
-.SUFFIXES:
-
-SHELL          = /bin/sh
-THIS           = Makefile
-
-MODEL          = ../../@DFT_OBJ_SUBDIR@
-srcdir         = @srcdir@
-prefix         = @prefix@
-exec_prefix    = @exec_prefix@
-libdir         = @libdir@
-includedir     = @includedir@
-datadir                = @datadir@
-ticdir         = $(datadir)/terminfo
-ADA_INCLUDE    = @ADA_INCLUDE@
-
-INSTALL                = @INSTALL@
-INSTALL_DATA   = @INSTALL_DATA@
-
-AWK            = @AWK@
-LN_S           = @LN_S@
-
-CC             = @CC@
-CFLAGS         = @CFLAGS@
-
-CPPFLAGS       = @ACPPFLAGS@ \
-                 -DHAVE_CONFIG_H -I$(srcdir)
-
-CCFLAGS                = $(CPPFLAGS) $(CFLAGS)
-
-CFLAGS_NORMAL  = $(CCFLAGS)
-CFLAGS_DEBUG   = $(CCFLAGS) @CC_G_OPT@ -DTRACE
-CFLAGS_PROFILE = $(CCFLAGS) -pg
-CFLAGS_SHARED  = $(CCFLAGS) @CC_SHARED_OPTS@
-
-CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-
-LINK           = $(CC)
-LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
-
-RANLIB         = @RANLIB@
-################################################################################
-ADA             = @cf_ada_compiler@
-ADAFLAGS        = @ADAFLAGS@ -I. -I$(srcdir)
-
-ADAMAKE         = @cf_ada_make@
-ADAMAKEFLAGS    = 
-
-CARGS           = -cargs $(ADAFLAGS)
-LARGS           =
-
-ALIB            = @cf_ada_package@
-ABASE           = $(ALIB)-curses
-
-ADA_OBJDIR      = ../ada_objects
-OBJDIR          = ../objects
-
-LIBALIS=$(ADA_OBJDIR)/$(ALIB).ali                                              \
-       $(ADA_OBJDIR)/$(ABASE)-aux.ali                                  \
-       $(ADA_OBJDIR)/$(ABASE).ali                                      \
-       $(ADA_OBJDIR)/$(ABASE)-mouse.ali                                \
-       $(ADA_OBJDIR)/$(ABASE)-panels.ali                               \
-       $(ADA_OBJDIR)/$(ABASE)-menus.ali                                \
-       $(ADA_OBJDIR)/$(ABASE)-forms.ali                                \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types.ali                    \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-alpha.ali              \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-alphanumeric.ali       \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-intfield.ali           \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-numeric.ali            \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-regexp.ali             \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration.ali        \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-ipv4_address.ali       \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-user.ali               \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-user-choice.ali        \
-       $(ADA_OBJDIR)/$(ABASE)-text_io.ali                              \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-aux.ali
-
-# Ada Library files for generic packages. Since gnat 3.10 they are
-# also compiled
-GENALIS=$(ADA_OBJDIR)/$(ABASE)-menus-menu_user_data.ali                        \
-       $(ADA_OBJDIR)/$(ABASE)-menus-item_user_data.ali                 \
-       $(ADA_OBJDIR)/$(ABASE)-forms-form_user_data.ali                 \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_user_data.ali                \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration-ada.ali    \
-       $(ADA_OBJDIR)/$(ABASE)-panels-user_data.ali                     \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-integer_io.ali                   \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-float_io.ali                     \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-fixed_io.ali                     \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-decimal_io.ali                   \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-enumeration_io.ali               \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-modular_io.ali                   \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-complex_io.ali
-
-LIBOBJS=$(ADA_OBJDIR)/$(ALIB).o                                        \
-       $(ADA_OBJDIR)/$(ABASE)-aux.o                            \
-       $(ADA_OBJDIR)/$(ABASE).o                                \
-       $(ADA_OBJDIR)/$(ABASE)-mouse.o                          \
-       $(ADA_OBJDIR)/$(ABASE)-panels.o                         \
-       $(ADA_OBJDIR)/$(ABASE)-menus.o                          \
-       $(ADA_OBJDIR)/$(ABASE)-forms.o                          \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types.o              \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-alpha.o        \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-alphanumeric.o \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-intfield.o     \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-numeric.o      \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-regexp.o       \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration.o  \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-ipv4_address.o \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-user.o         \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-user-choice.o  \
-       $(ADA_OBJDIR)/$(ABASE)-text_io.o                        \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-aux.o
-
-# Ada object files for generic packages. Since gnat 3.10 they are
-# also compiled
-GENOBJS=$(ADA_OBJDIR)/$(ABASE)-menus-menu_user_data.o                  \
-       $(ADA_OBJDIR)/$(ABASE)-menus-item_user_data.o                   \
-       $(ADA_OBJDIR)/$(ABASE)-forms-form_user_data.o                   \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_user_data.o                  \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration-ada.o      \
-       $(ADA_OBJDIR)/$(ABASE)-panels-user_data.o                       \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-integer_io.o                     \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-float_io.o                       \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-fixed_io.o                       \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-decimal_io.o                     \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-enumeration_io.o                 \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-modular_io.o                     \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-complex_io.o
-
-
-all :: $(LIBALIS) @cf_compile_generics@
-       @echo done
-
-sources :
-       @
-
-install ::
-install.libs ::
-uninstall ::
-uninstall.libs ::
-
-generics: $(GENALIS)
-       @
-
-mostlyclean ::
-       rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] *.a
-
-clean :: mostlyclean
-       rm -f $(LIBALIS) $(LIBOBJS)
-
-distclean :: clean
-       rm -f Makefile
-
-realclean :: distclean
-
-BASEDEPS=$(ABASE).ads $(srcdir)/$(ABASE)-aux.ads
-
-$(ADA_OBJDIR)/$(ALIB).o: $(srcdir)/$(ALIB).ads
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ALIB).ads
-
-$(ADA_OBJDIR)/$(ALIB).ali: $(ADA_OBJDIR)/$(ALIB).o
-       if [ -f $(ALIB).ali ]; then \
-          ln -f $(ALIB).ali $@ ;\
-          rm -f $(ALIB).ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-aux.o: $(srcdir)/$(ABASE)-aux.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-aux.adb
-
-$(ADA_OBJDIR)/$(ABASE)-aux.ali: $(ADA_OBJDIR)/$(ABASE)-aux.o
-       if [ -f $(ABASE)-aux.ali ]; then \
-          ln -f $(ABASE)-aux.ali $@ ;\
-          rm -f $(ABASE)-aux.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE).o: $(srcdir)/$(ABASE).adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE).adb
-
-$(ADA_OBJDIR)/$(ABASE).ali: $(ADA_OBJDIR)/$(ABASE).o
-       if [ -f $(ABASE).ali ]; then \
-          ln -f $(ABASE).ali $@ ;\
-          rm -f $(ABASE).ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-mouse.o: \
-               $(ABASE)-mouse.ads \
-               $(srcdir)/$(ABASE)-mouse.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-mouse.adb
-
-$(ADA_OBJDIR)/$(ABASE)-mouse.ali: $(ADA_OBJDIR)/$(ABASE)-mouse.o
-       if [ -f $(ABASE)-mouse.ali ]; then \
-          ln -f $(ABASE)-mouse.ali $@ ;\
-          rm -f $(ABASE)-mouse.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-panels.o: \
-               $(ABASE)-panels.ads \
-               $(srcdir)/$(ABASE)-panels.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-panels.adb
-
-$(ADA_OBJDIR)/$(ABASE)-panels.ali: $(ADA_OBJDIR)/$(ABASE)-panels.o
-       if [ -f $(ABASE)-panels.ali ]; then \
-          ln -f $(ABASE)-panels.ali $@ ;\
-          rm -f $(ABASE)-panels.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-menus.o: \
-               $(ABASE)-menus.ads \
-               $(srcdir)/$(ABASE)-menus.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus.adb
-
-$(ADA_OBJDIR)/$(ABASE)-menus.ali: $(ADA_OBJDIR)/$(ABASE)-menus.o
-       if [ -f $(ABASE)-menus.ali ]; then \
-          ln -f $(ABASE)-menus.ali $@ ;\
-          rm -f $(ABASE)-menus.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms.o: \
-               $(ABASE)-forms.ads \
-               $(srcdir)/$(ABASE)-forms.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms.ali: $(ADA_OBJDIR)/$(ABASE)-forms.o
-       if [ -f $(ABASE)-forms.ali ]; then \
-          ln -f $(ABASE)-forms.ali $@ ;\
-          rm -f $(ABASE)-forms.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types.o: \
-               $(ABASE)-forms-field_types.ads \
-               $(srcdir)/$(ABASE)-forms-field_types.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types.o
-       if [ -f $(ABASE)-forms-field_types.ali ]; then \
-          ln -f $(ABASE)-forms-field_types.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-alpha.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-alpha.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-alpha.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-alpha.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-alpha.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-alpha.o
-       if [ -f $(ABASE)-forms-field_types-alpha.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-alpha.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-alpha.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-alphanumeric.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-alphanumeric.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-alphanumeric.o
-       if [ -f $(ABASE)-forms-field_types-alphanumeric.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-alphanumeric.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-alphanumeric.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-intfield.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-intfield.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-intfield.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-intfield.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-intfield.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-intfield.o
-       if [ -f $(ABASE)-forms-field_types-intfield.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-intfield.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-intfield.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-numeric.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-numeric.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-numeric.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-numeric.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-numeric.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-numeric.o
-       if [ -f $(ABASE)-forms-field_types-numeric.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-numeric.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-numeric.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-regexp.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-regexp.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-regexp.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-regexp.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-regexp.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-regexp.o
-       if [ -f $(ABASE)-forms-field_types-regexp.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-regexp.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-regexp.ali ;\
-       fi
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-enumeration.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-enumeration.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-enumeration.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration.o
-       if [ -f $(ABASE)-forms-field_types-enumeration.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-enumeration.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-enumeration.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-ipv4_address.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-ipv4_address.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-ipv4_address.o
-       if [ -f $(ABASE)-forms-field_types-ipv4_address.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-ipv4_address.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-ipv4_address.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-user.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-user.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-user.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-user.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-user.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-user.o
-       if [ -f $(ABASE)-forms-field_types-user.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-user.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-user.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-user-choice.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-user-choice.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-user-choice.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-user-choice.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-user-choice.ali: $(ADA_OBJDIR)/$(ABASE)-forms-field_types-user-choice.o
-       if [ -f $(ABASE)-forms-field_types-user-choice.ali ]; then \
-          ln -f $(ABASE)-forms-field_types-user-choice.ali $@ ;\
-          rm -f $(ABASE)-forms-field_types-user-choice.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io.o: \
-               $(srcdir)/$(ABASE)-text_io.ads \
-               $(srcdir)/$(ABASE)-text_io.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io.ali: $(ADA_OBJDIR)/$(ABASE)-text_io.o
-       if [ -f $(ABASE)-text_io.ali ]; then \
-          ln -f $(ABASE)-text_io.ali $@ ;\
-          rm -f $(ABASE)-text_io.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-aux.o: \
-               $(srcdir)/$(ABASE)-text_io-aux.ads \
-               $(srcdir)/$(ABASE)-text_io-aux.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-aux.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-aux.ali: $(ADA_OBJDIR)/$(ABASE)-text_io-aux.o
-       if [ -f $(ABASE)-text_io-aux.ali ]; then \
-          ln -f $(ABASE)-text_io-aux.ali $@ ;\
-          rm -f $(ABASE)-text_io-aux.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-menus-menu_user_data.o: \
-               $(ABASE)-menus-menu_user_data.ads \
-               $(srcdir)/$(ABASE)-menus-menu_user_data.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus-menu_user_data.adb
-
-$(ADA_OBJDIR)/$(ABASE)-menus-menu_user_data.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-menus-menu_user_data.o
-       if [ -f $(ABASE)-menus-menu_user_data.ali ]; then \
-          ln -f $(ABASE)-menus-menu_user_data.ali $@ ;\
-          rm -f $(ABASE)-menus-menu_user_data.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-menus-item_user_data.o: \
-               $(ABASE)-menus-item_user_data.ads \
-               $(srcdir)/$(ABASE)-menus-item_user_data.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus-item_user_data.adb
-
-$(ADA_OBJDIR)/$(ABASE)-menus-item_user_data.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-menus-item_user_data.o
-       if [ -f $(ABASE)-menus-item_user_data.ali ]; then \
-         ln -f $(ABASE)-menus-item_user_data.ali $@ ;\
-         rm -f $(ABASE)-menus-item_user_data.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-form_user_data.o: \
-               $(ABASE)-forms-form_user_data.ads \
-               $(srcdir)/$(ABASE)-forms-form_user_data.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-form_user_data.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-form_user_data.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-forms-form_user_data.o
-       if [ -f $(ABASE)-forms-form_user_data.ali ]; then \
-         ln -f $(ABASE)-forms-form_user_data.ali $@ ;\
-         rm -f $(ABASE)-forms-form_user_data.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_user_data.o: \
-               $(ABASE)-forms-field_user_data.ads \
-               $(srcdir)/$(ABASE)-forms-field_user_data.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_user_data.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_user_data.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_user_data.o
-       if [ -f $(ABASE)-forms-field_user_data.ali ]; then \
-         ln -f $(ABASE)-forms-field_user_data.ali $@ ;\
-         rm -f $(ABASE)-forms-field_user_data.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration-ada.o: \
-               $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.ads \
-               $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.adb
-
-$(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration-ada.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-forms-field_types-enumeration-ada.o
-       if [ -f $(ABASE)-forms-field_types-enumeration-ada.ali ]; then \
-         ln -f $(ABASE)-forms-field_types-enumeration-ada.ali $@ ;\
-         rm -f $(ABASE)-forms-field_types-enumeration-ada.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-panels-user_data.o: \
-               $(ABASE)-panels-user_data.ads \
-               $(srcdir)/$(ABASE)-panels-user_data.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-panels-user_data.adb
-
-$(ADA_OBJDIR)/$(ABASE)-panels-user_data.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-panels-user_data.o
-       if [ -f $(ABASE)-panels-user_data.ali ]; then \
-         ln -f $(ABASE)-panels-user_data.ali $@ ;\
-         rm -f $(ABASE)-panels-user_data.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-integer_io.o: \
-               $(srcdir)/$(ABASE)-text_io-integer_io.ads \
-               $(srcdir)/$(ABASE)-text_io-integer_io.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-integer_io.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-integer_io.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-integer_io.o
-       if [ -f $(ABASE)-text_io-integer_io.ali ]; then \
-         ln -f $(ABASE)-text_io-integer_io.ali $@ ;\
-         rm -f $(ABASE)-text_io-integer_io.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-float_io.o: \
-               $(srcdir)/$(ABASE)-text_io-float_io.ads \
-               $(srcdir)/$(ABASE)-text_io-float_io.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-float_io.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-float_io.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-float_io.o
-       if [ -f $(ABASE)-text_io-float_io.ali ]; then \
-         ln -f $(ABASE)-text_io-float_io.ali $@ ;\
-         rm -f $(ABASE)-text_io-float_io.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-fixed_io.o: \
-               $(srcdir)/$(ABASE)-text_io-fixed_io.ads \
-               $(srcdir)/$(ABASE)-text_io-fixed_io.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-fixed_io.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-fixed_io.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-fixed_io.o
-       if [ -f $(ABASE)-text_io-fixed_io.ali ]; then \
-         ln -f $(ABASE)-text_io-fixed_io.ali $@ ;\
-         rm -f $(ABASE)-text_io-fixed_io.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-decimal_io.o: \
-               $(srcdir)/$(ABASE)-text_io-decimal_io.ads \
-               $(srcdir)/$(ABASE)-text_io-decimal_io.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-decimal_io.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-decimal_io.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-decimal_io.o
-       if [ -f $(ABASE)-text_io-decimal_io.ali ]; then \
-         ln -f $(ABASE)-text_io-decimal_io.ali $@ ;\
-         rm -f $(ABASE)-text_io-decimal_io.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-enumeration_io.o: \
-               $(srcdir)/$(ABASE)-text_io-enumeration_io.ads \
-               $(srcdir)/$(ABASE)-text_io-enumeration_io.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-enumeration_io.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-enumeration_io.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-enumeration_io.o
-       if [ -f $(ABASE)-text_io-enumeration_io.ali ]; then \
-         ln -f $(ABASE)-text_io-enumeration_io.ali $@ ;\
-         rm -f $(ABASE)-text_io-enumeration_io.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-modular_io.o: \
-               $(srcdir)/$(ABASE)-text_io-modular_io.ads \
-               $(srcdir)/$(ABASE)-text_io-modular_io.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-modular_io.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-modular_io.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-modular_io.o
-       if [ -f $(ABASE)-text_io-modular_io.ali ]; then \
-         ln -f $(ABASE)-text_io-modular_io.ali $@ ;\
-         rm -f $(ABASE)-text_io-modular_io.ali ;\
-       fi
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-complex_io.o: \
-               $(srcdir)/$(ABASE)-text_io-complex_io.ads \
-               $(srcdir)/$(ABASE)-text_io-complex_io.adb $(BASEDEPS)
-       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-complex_io.adb
-
-$(ADA_OBJDIR)/$(ABASE)-text_io-complex_io.ali: \
-       $(ADA_OBJDIR)/$(ABASE)-text_io-complex_io.o
-       if [ -f $(ABASE)-text_io-complex_io.ali ]; then \
-         ln -f $(ABASE)-text_io-complex_io.ali $@ ;\
-         rm -f $(ABASE)-text_io-complex_io.ali ;\
-       fi
index 6ebf0c5ef04b51c26b366a1428f45097d362af92..32c660a311cbfcbb8bb2a2dee7e2058b082e621a 100644 (file)
 # authorization.                                                             #
 ##############################################################################
 #
-#  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+#  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 #
 #  Version Control
-#  $Revision: 1.18 $
+#  $Revision: 1.27 $
 #
 .SUFFIXES:
 
@@ -60,7 +60,6 @@ CPPFLAGS      = @ACPPFLAGS@ \
                  -DHAVE_CONFIG_H -I$(srcdir)
 
 CCFLAGS                = $(CPPFLAGS) $(CFLAGS)
-
 CFLAGS_NORMAL  = $(CCFLAGS)
 CFLAGS_DEBUG   = $(CCFLAGS) @CC_G_OPT@ -DTRACE
 CFLAGS_PROFILE = $(CCFLAGS) -pg
@@ -73,19 +72,19 @@ LD_FLAGS    = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS)
 
 RANLIB         = @RANLIB@
 
-LIB_CURSES      = -L ../../lib -lncurses
+LIB_CURSES      = -L../../lib -lncurses
 
 M4             = m4
 M4FLAGS                =
 
+GENERATE       = ./gen '@DFT_ARG_SUFFIX@'
 DEL_ADAMODE    = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d'
 
 ################################################################################
 ALIB            = @cf_ada_package@
 ABASE          = $(ALIB)-curses
 
-ADA_SRCDIR     = ../ada_include
-ADA_OBJDIR      = ../ada_objects
+ADA_SRCDIR     = ../src
 
 GEN_FILES0      = Base_Defs
 
@@ -97,6 +96,7 @@ GEN_FILES1      = Key_Definitions                             \
                  ACS_Map                               \
                  Linker_Options                        \
                  Base_Defs                             \
+                 Window_Offsets                        \
                  Version_Info
 
 GEN_FILES2      = Menu_Opt_Rep                         \
@@ -111,9 +111,14 @@ GEN_FILES3      = Form_Opt_Rep                             \
 
 GEN_FILES4      = Mouse_Base_Defs                              \
                  Mouse_Event_Rep                       \
+                 Mouse_Events                          \
                  Panel_Linker_Options
 
+GEN_FILES5     = Chtype_Def                            \
+                 Eti_Defs
+
 GEN_TARGETS     = $(ADA_SRCDIR)/$(ABASE).ads                           \
+                 $(ADA_SRCDIR)/$(ABASE)-aux.ads                        \
                  $(ADA_SRCDIR)/$(ABASE)-menus.ads                      \
                  $(ADA_SRCDIR)/$(ABASE)-forms.ads                      \
                  $(ADA_SRCDIR)/$(ABASE)-mouse.ads                      \
@@ -126,6 +131,7 @@ GEN_TARGETS     = $(ADA_SRCDIR)/$(ABASE).ads                                \
                  $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads
 
 GEN_SRC                = $(srcdir)/$(ABASE).ads.m4                             \
+                 $(srcdir)/$(ABASE)-aux.ads.m4                         \
                  $(srcdir)/$(ABASE)-menus.ads.m4                       \
                  $(srcdir)/$(ABASE)-forms.ads.m4                       \
                  $(srcdir)/$(ABASE)-mouse.ads.m4                       \
@@ -138,36 +144,37 @@ GEN_SRC           = $(srcdir)/$(ABASE).ads.m4                             \
                  $(srcdir)/$(ABASE)-panels-user_data.ads.m4
 
 
-all:   $(ADA_OBJDIR) $(GEN_TARGETS)
+all:   $(GEN_TARGETS)
        @
 
 sources:
 
-$(ADA_OBJDIR) \
 $(ADA_INCLUDE) \
 $(ADA_OBJECTS) :
-       $(top_srcdir)/mkinstalldirs $@
+       $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$@
 
 install \
 install.libs :: $(ADA_INCLUDE)
-       @echo installing package $(ABASE) in $(ADA_INCLUDE)
-       @$(top_srcdir)/tar-copy.sh '$(ABASE)[-.]*' $(ADA_SRCDIR) $(ADA_INCLUDE)
-       @test $(srcdir) != ./ && $(top_srcdir)/tar-copy.sh '$(ABASE)[-.]*' $(srcdir)/../ada_include $(ADA_INCLUDE)
+       @echo installing package $(ALIB) in $(INSTALL_PREFIX)$(ADA_INCLUDE)
+       @$(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ad?' $(ADA_SRCDIR) $(INSTALL_PREFIX)$(ADA_INCLUDE)
+       @test $(srcdir) != ./ && $(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ad?' $(srcdir)/../src $(INSTALL_PREFIX)$(ADA_INCLUDE)
 
 install \
 install.libs :: $(ADA_OBJECTS)
-       @echo installing package $(ABASE) in $(ADA_OBJECTS)
-       @$(top_srcdir)/tar-copy.sh '$(ABASE)[-.]*' $(ADA_OBJDIR) $(ADA_OBJECTS)
+       @echo installing package $(ALIB) in $(INSTALL_PREFIX)$(ADA_OBJECTS)
+       @chmod a-wx $(ADA_SRCDIR)/*.ali
+       @$(top_srcdir)/tar-copy.sh '$(ALIB)[-.]*.ali' $(ADA_SRCDIR) $(INSTALL_PREFIX)$(ADA_OBJECTS)
+       @chmod u+x $(ADA_SRCDIR)/*.ali
 
 uninstall \
 uninstall.libs ::
-       @echo removing package $(ABASE) from $(ADA_INCLUDE)
-       -@cd $(ADA_INCLUDE) && rm -f $(ABASE)[-.]*
+       @echo removing package $(ALIB) from $(INSTALL_PREFIX)$(ADA_INCLUDE)
+       -@cd $(INSTALL_PREFIX)$(ADA_INCLUDE) && rm -f $(ALIB)[-.]*
 
 uninstall \
 uninstall.libs ::
-       @echo removing package $(ABASE) from $(ADA_OBJECTS)
-       -@cd $(ADA_OBJECTS) && rm -f $(ABASE)[-.]*
+       @echo removing package $(ALIB) from $(INSTALL_PREFIX)$(ADA_OBJECTS)
+       -@cd $(INSTALL_PREFIX)$(ADA_OBJECTS) && rm -f $(ALIB)[-.]*
 
 gen:   gen.o
        @ECHO_LINK@ $(LINK) $(CFLAGS_NORMAL) gen.o $(LD_FLAGS) -o $@ $(LIB_CURSES)
@@ -176,64 +183,76 @@ gen.o:    $(srcdir)/gen.c
        $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/gen.c
 
 Character_Attribute_Set_Rep: gen
-       ./gen B A >$@
+       $(GENERATE) B A >$@
 
 Base_Defs: gen
-       ./gen B B >$@
+       $(GENERATE) B B >$@
 
 Color_Defs: gen
-       ./gen B C >$@
+       $(GENERATE) B C >$@
 
 Key_Definitions: gen
-       ./gen B K >$@
+       $(GENERATE) B K >$@
 
 Old_Keys: gen
-       ./gen B O >$@
+       $(GENERATE) B O >$@
 
 ACS_Map: gen
-       ./gen B M >$@
+       $(GENERATE) B M >$@
 
 AC_Rep: gen
-       ./gen B R >$@
+       $(GENERATE) B R >$@
 
 Linker_Options: gen
-       ./gen B L >$@
+       $(GENERATE) B L >$@
 
 Version_Info: gen
-       ./gen B V >$@
+       $(GENERATE) B V >$@
+
+Window_Offsets: gen
+       $(GENERATE) B D >$@
 
 Menu_Opt_Rep: gen
-       ./gen M R >$@
+       $(GENERATE) M R >$@
 
 Menu_Base_Defs: gen
-       ./gen M B >$@
+       $(GENERATE) M B >$@
 
 Menu_Linker_Options: gen
-       ./gen M L >$@
+       $(GENERATE) M L >$@
 
 Item_Rep: gen
-       ./gen M I >$@
+       $(GENERATE) M I >$@
 
 Form_Opt_Rep: gen
-       ./gen F R >$@
+       $(GENERATE) F R >$@
 
 Form_Base_Defs: gen
-       ./gen F B >$@
+       $(GENERATE) F B >$@
 
 Form_Linker_Options: gen
-       ./gen F L >$@
+       $(GENERATE) F L >$@
 
 Field_Rep: gen
-       ./gen F I >$@
+       $(GENERATE) F I >$@
 
 Mouse_Base_Defs: gen
-       ./gen P B >$@
+       $(GENERATE) P B >$@
 
 Mouse_Event_Rep: gen
-       ./gen P M >$@
+       $(GENERATE) P M >$@
+
+Mouse_Events: gen
+       $(GENERATE) B E >$@
 
 Panel_Linker_Options: gen
-       ./gen P L >$@
+       $(GENERATE) P L >$@
+
+Chtype_Def: gen
+       $(GENERATE) E C >$@
+
+Eti_Defs: gen
+       $(GENERATE) E E >$@
 
 $(ADA_SRCDIR)/$(ABASE).ads:    $(srcdir)/$(ABASE).ads.m4 \
                                $(GEN_FILES1) $(srcdir)/normal.m4
@@ -241,6 +260,12 @@ $(ADA_SRCDIR)/$(ABASE).ads:        $(srcdir)/$(ABASE).ads.m4 \
        $(srcdir)/$(ABASE).ads.m4 |\
        $(DEL_ADAMODE) >$@
 
+$(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \
+                               $(GEN_FILES5) $(srcdir)/normal.m4
+       $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
+       $(srcdir)/$(ABASE)-aux.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 \
@@ -321,6 +346,7 @@ mostlyclean ::
        -rm -f $(GEN_FILES2)
        -rm -f $(GEN_FILES3)
        -rm -f $(GEN_FILES4)
+       -rm -f $(GEN_FILES5)
 
 clean :: mostlyclean
        -rm -f $(GEN_TARGETS)
index 48532947aa50461035138ed2433067fb400f78ab..0a093cf8cd7b2bfbfb0125cea644003abd21cde2 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996                 *
  ****************************************************************************/
 
 /*
     Version Control
-    $Revision: 1.14 $
+    $Revision: 1.29 $
   --------------------------------------------------------------------------*/
 /*
   This program generates various record structures and constants from the
@@ -41,6 +41,8 @@
   to produce the real source.
   */
 
+#include <stdlib.h>
+#include <stddef.h>
 #include <string.h>
 #include <assert.h>
 #include <ctype.h>
 
 #define RES_NAME "Reserved"
 
+static const char *model = "";
 static int little_endian = 0;
 
 typedef struct {
   const char *name;
-  unsigned int attr;
+  unsigned long attr;
 } name_attribute_pair;
 
 static int find_pos (char *s, unsigned len, int *low, int *high)
 {
-  unsigned int i,j; 
+  unsigned int i,j;
   int l = 0;
 
   *high = -1;
@@ -98,30 +101,19 @@ static int find_pos (char *s, unsigned len, int *low, int *high)
  * We are only dealing with record types which are of 32 or 16
  * bit size, i.e. they fit into an (u)int or a (u)short.
  */
-static void gen_reps
+static void
+gen_reps
 (const name_attribute_pair *nap, /* array of name_attribute_pair records */
  const char *name,               /* name of the represented record type  */
- int len)                        /* size of the record in bytes          */
+ int len,                        /* size of the record in bytes          */
+ int bias)
 {
-  int i,l,cnt = 0,low,high;
-  int width = strlen(RES_NAME);
-  int bias = 0;
-  unsigned int a;
-  unsigned int mask = 0;
-  char *suffix;
+  int i,n,l,cnt = 0,low,high;
+  int width = strlen(RES_NAME) + 3;
+  unsigned long a;
+  unsigned long mask = 0;
 
-  assert (nap);
-
-  if (len == sizeof(int)/2)
-    {
-      bias = little_endian ? 8 * len : 0;
-      suffix = " / 2";
-    }
-  else
-    {
-      assert(len==sizeof(int));
-      suffix = "";
-    }
+  assert (nap!=NULL);
 
   for (i=0; nap[i].name != (char *)0; i++)
     {
@@ -137,10 +129,6 @@ static void gen_reps
   for (i=0; nap[i].name != (char *)0; i++)
     {
       printf("         %-*s : Boolean;\n",width,nap[i].name);
-    }  
-  if (cnt != 8*len)
-    {
-      printf("         %-*s : Boolean;\n",width,RES_NAME);
     }
   printf("      end record;\n");
   printf("   pragma Pack (%s);\n",name);
@@ -155,33 +143,25 @@ static void gen_reps
       mask |= a;
       l = find_pos( (char *)&a,sizeof(a),&low,&high );
       if (l>=0)
-       printf("         %-*s at 0 range %2d .. %2d;\n",width,nap[i].name,low-bias,high-bias);
-    }  
-  if (cnt != 8*len)
-    {
-      mask = ~mask;
-      assert(mask);
-      if (little_endian)
-       l = 8*len - 1;
-      else
-       l = 0;
-      printf("         %-*s at 0 range %2d .. %2d;\n",width,RES_NAME,l,l);
+       printf("         %-*s at 0 range %2d .. %2d;\n",width,nap[i].name,
+              low-bias,high-bias);
     }
+  i = 1; n = cnt;
   printf("      end record;\n");
-  printf("   for %s'Size use Interfaces.C.int'Size%s;\n", name, suffix);
+  printf("   for %s'Size use %d;\n", name, 8*len);
   printf("   --  Please note: this rep. clause is generated and may be\n");
   printf("   --               different on your system.");
 }
 
 
-static void chtype_rep (const char *name, int mask)
+static void chtype_rep (const char *name, attr_t mask)
 {
-  int x = -1;
-  int t = x & mask;
+  attr_t x = -1;
+  attr_t t = x & mask;
   int low, high;
   int l = find_pos ((char *)&t, sizeof(t), &low, &high);
   if (l>=0)
-    printf("         %-5s at 0 range %2d .. %2d;\n",name,low,high); 
+    printf("         %-5s at 0 range %2d .. %2d;\n",name,low,high);
 }
 
 static void gen_chtype_rep(const char *name)
@@ -190,7 +170,7 @@ static void gen_chtype_rep(const char *name)
   chtype_rep("Ch",A_CHARTEXT);
   chtype_rep("Color",A_COLOR);
   chtype_rep("Attr",(A_ATTRIBUTES&~A_COLOR));
-  printf("      end record;\n   for %s'Size use Interfaces.C.int'Size;\n",name);
+  printf("      end record;\n   for %s'Size use %d;\n",name,8*sizeof(chtype));
   printf("      --  Please note: this rep. clause is generated and may be\n");
   printf("      --               different on your system.\n");
 }
@@ -201,7 +181,7 @@ static void mrep_rep (const char *name, void *rec)
   int low, high;
   int l = find_pos((char *)rec, sizeof(MEVENT), &low, &high);
   if (l>=0)
-    printf("         %-7s at 0 range %3d .. %3d;\n",name,low,high); 
+    printf("         %-7s at 0 range %3d .. %3d;\n",name,low,high);
 }
 
 
@@ -286,7 +266,20 @@ static void gen_attr_set( const char *name )
 #endif
     {(char *)0,                 0}
   };
-  gen_reps (nap, name, sizeof(int)/2);
+  chtype attr = A_ATTRIBUTES & ~A_COLOR;
+  int start=-1, len=0, i, set;
+  for(i=0;i<(int)(8*sizeof(chtype));i++) {
+    set = attr&1;
+    if (set) {
+      if (start<0)
+       start = i;
+      if (start>=0) {
+       len++;
+      }
+    }
+    attr = attr >> 1;
+  }
+  gen_reps (nap, name, (len+7)/8, little_endian?start:0);
 }
 
 static void gen_menu_opt_rep(const char *name)
@@ -312,7 +305,7 @@ static void gen_menu_opt_rep(const char *name)
 #endif
     {(char *)0, 0}
   };
-  gen_reps (nap, name, sizeof(int));
+  gen_reps (nap, name, sizeof(int),0);
 }
 
 static void gen_item_opt_rep(const char *name)
@@ -322,8 +315,8 @@ static void gen_item_opt_rep(const char *name)
     {"Selectable", O_SELECTABLE},
 #endif
     {(char *)0   , 0}
-  };  
-  gen_reps (nap, name, sizeof(int));
+  };
+  gen_reps (nap, name, sizeof(int),0);
 }
 
 static void gen_form_opt_rep(const char *name)
@@ -337,7 +330,7 @@ static void gen_form_opt_rep(const char *name)
 #endif
     {(char *)0    , 0}
   };
-  gen_reps (nap, name, sizeof(int));
+  gen_reps (nap, name, sizeof(int),0);
 }
 
 /*
@@ -378,7 +371,7 @@ static void gen_field_opt_rep(const char *name)
 #endif
     {(char *)0, 0}
   };
-  gen_reps (nap, name, sizeof(int));
+  gen_reps (nap, name, sizeof(int),0);
 }
 
 /*
@@ -398,7 +391,7 @@ static void keydef(const char *name, const char *old_name, int value, int mode)
        printf("   %-16s : Special_Key_Code renames %s;\n",old_name,name);
     }
 }
-  
+
 /*
  * Generate constants for the key codes. When called with mode==0, a
  * complete list with nice constant names in proper casing style will
@@ -695,10 +688,10 @@ static void gen_keydefs (int mode)
 #endif
 #ifdef KEY_MOUSE
   keydef("Key_Mouse","KEY_MOUSE",KEY_MOUSE,mode);
-#endif  
+#endif
 #ifdef KEY_RESIZE
   keydef("Key_Resize","KEY_RESIZE",KEY_RESIZE,mode);
-#endif  
+#endif
 }
 
 /*
@@ -819,6 +812,138 @@ static void gen_acs (void)
 #endif
 }
 
+
+#define GEN_EVENT(name,value) \
+   printf("   %-25s : constant Event_Mask := 8#%011lo#;\n", \
+          #name, value)
+
+#define GEN_MEVENT(name) \
+   printf("   %-25s : constant Event_Mask := 8#%011lo#;\n", \
+          #name, name)
+
+static
+void gen_mouse_events(void)
+{
+  mmask_t all1 = 0;
+  mmask_t all2 = 0;
+  mmask_t all3 = 0;
+  mmask_t all4 = 0;
+
+#ifdef BUTTON1_RELEASED
+  GEN_MEVENT(BUTTON1_RELEASED);
+  all1 |= BUTTON1_RELEASED;
+#endif
+#ifdef BUTTON1_PRESSED
+  GEN_MEVENT(BUTTON1_PRESSED);
+  all1 |= BUTTON1_PRESSED;
+#endif
+#ifdef BUTTON1_CLICKED
+  GEN_MEVENT(BUTTON1_CLICKED);
+  all1 |= BUTTON1_CLICKED;
+#endif
+#ifdef BUTTON1_DOUBLE_CLICKED
+  GEN_MEVENT(BUTTON1_DOUBLE_CLICKED);
+  all1 |= BUTTON1_DOUBLE_CLICKED;
+#endif
+#ifdef BUTTON1_TRIPLE_CLICKED
+  GEN_MEVENT(BUTTON1_TRIPLE_CLICKED);
+  all1 |= BUTTON1_TRIPLE_CLICKED;
+#endif
+#ifdef BUTTON1_RESERVED_EVENT
+  GEN_MEVENT(BUTTON1_RESERVED_EVENT);
+  all1 |= BUTTON1_RESERVED_EVENT;
+#endif
+#ifdef BUTTON2_RELEASED
+  GEN_MEVENT(BUTTON2_RELEASED);
+  all2 |= BUTTON2_RELEASED;
+#endif
+#ifdef BUTTON2_PRESSED
+  GEN_MEVENT(BUTTON2_PRESSED);
+  all2 |= BUTTON2_PRESSED;
+#endif
+#ifdef BUTTON2_CLICKED
+  GEN_MEVENT(BUTTON2_CLICKED);
+  all2 |= BUTTON2_CLICKED;
+#endif
+#ifdef BUTTON2_DOUBLE_CLICKED
+  GEN_MEVENT(BUTTON2_DOUBLE_CLICKED);
+  all2 |= BUTTON2_DOUBLE_CLICKED;
+#endif
+#ifdef BUTTON2_TRIPLE_CLICKED
+  GEN_MEVENT(BUTTON2_TRIPLE_CLICKED);
+  all2 |= BUTTON2_TRIPLE_CLICKED;
+#endif
+#ifdef BUTTON2_RESERVED_EVENT
+  GEN_MEVENT(BUTTON2_RESERVED_EVENT);
+  all2 |= BUTTON2_RESERVED_EVENT;
+#endif
+#ifdef BUTTON3_RELEASED
+  GEN_MEVENT(BUTTON3_RELEASED);
+  all3 |= BUTTON3_RELEASED;
+#endif
+#ifdef BUTTON3_PRESSED
+  GEN_MEVENT(BUTTON3_PRESSED);
+  all3 |= BUTTON3_PRESSED;
+#endif
+#ifdef BUTTON3_CLICKED
+  GEN_MEVENT(BUTTON3_CLICKED);
+  all3 |= BUTTON3_CLICKED;
+#endif
+#ifdef BUTTON3_DOUBLE_CLICKED
+  GEN_MEVENT(BUTTON3_DOUBLE_CLICKED);
+  all3 |= BUTTON3_DOUBLE_CLICKED;
+#endif
+#ifdef BUTTON3_TRIPLE_CLICKED
+  GEN_MEVENT(BUTTON3_TRIPLE_CLICKED);
+  all3 |= BUTTON3_TRIPLE_CLICKED;
+#endif
+#ifdef BUTTON3_RESERVED_EVENT
+  GEN_MEVENT(BUTTON3_RESERVED_EVENT);
+  all3 |= BUTTON3_RESERVED_EVENT;
+#endif
+#ifdef BUTTON4_RELEASED
+  GEN_MEVENT(BUTTON4_RELEASED);
+  all4 |= BUTTON4_RELEASED;
+#endif
+#ifdef BUTTON4_PRESSED
+  GEN_MEVENT(BUTTON4_PRESSED);
+  all4 |= BUTTON4_PRESSED;
+#endif
+#ifdef BUTTON4_CLICKED
+  GEN_MEVENT(BUTTON4_CLICKED);
+  all4 |= BUTTON4_CLICKED;
+#endif
+#ifdef BUTTON4_DOUBLE_CLICKED
+  GEN_MEVENT(BUTTON4_DOUBLE_CLICKED);
+  all4 |= BUTTON4_DOUBLE_CLICKED;
+#endif
+#ifdef BUTTON4_TRIPLE_CLICKED
+  GEN_MEVENT(BUTTON4_TRIPLE_CLICKED);
+  all4 |= BUTTON4_TRIPLE_CLICKED;
+#endif
+#ifdef BUTTON4_RESERVED_EVENT
+  GEN_MEVENT(BUTTON4_RESERVED_EVENT);
+  all4 |= BUTTON4_RESERVED_EVENT;
+#endif
+#ifdef BUTTON_CTRL
+  GEN_MEVENT(BUTTON_CTRL);
+#endif
+#ifdef BUTTON_SHIFT
+  GEN_MEVENT(BUTTON_SHIFT);
+#endif
+#ifdef BUTTON_ALT
+  GEN_MEVENT(BUTTON_ALT);
+#endif
+#ifdef ALL_MOUSE_EVENTS
+  GEN_MEVENT(ALL_MOUSE_EVENTS);
+#endif
+
+GEN_EVENT(BUTTON1_EVENTS,all1);
+GEN_EVENT(BUTTON2_EVENTS,all2);
+GEN_EVENT(BUTTON3_EVENTS,all3);
+GEN_EVENT(BUTTON4_EVENTS,all4);
+}
+
 /*
  * Output some comment lines indicating that the file is generated.
  * The name parameter is the name of the facility to be used in
@@ -830,7 +955,8 @@ static void prologue(const char *name)
   printf("--  This module is generated. Please don't change it manually!\n");
   printf("--  Run the generator instead.\n--  |");
 
-  printf("define(`M4_BIT_ORDER',`%s_Order_First')",little_endian ? "Low":"High");
+  printf("define(`M4_BIT_ORDER',`%s_Order_First')",
+        little_endian ? "Low":"High");
 }
 
 /*
@@ -922,7 +1048,8 @@ static void gen_color (void)
  */
 static void gen_linkopts (void)
 {
-   printf("   pragma Linker_Options (\"-lncurses\");\n");
+   printf("   pragma Linker_Options (\"-lAdaCurses%s\");\n", model);
+   printf("   pragma Linker_Options (\"-lncurses%s\");\n", model);
 }
 
 /*
@@ -930,7 +1057,7 @@ static void gen_linkopts (void)
  */
 static void gen_menu_linkopts (void)
 {
-   printf("   pragma Linker_Options (\"-lmenu\");\n");
+   printf("   pragma Linker_Options (\"-lmenu%s\");\n", model);
 }
 
 /*
@@ -938,7 +1065,7 @@ static void gen_menu_linkopts (void)
  */
 static void gen_form_linkopts (void)
 {
-   printf("   pragma Linker_Options (\"-lform\");\n");
+   printf("   pragma Linker_Options (\"-lform%s\");\n", model);
 }
 
 /*
@@ -946,14 +1073,77 @@ static void gen_form_linkopts (void)
  */
 static void gen_panel_linkopts (void)
 {
-   printf("   pragma Linker_Options (\"-lpanel\");\n");
+   printf("   pragma Linker_Options (\"-lpanel%s\");\n", model);
 }
 
 static void gen_version_info (void)
 {
-   printf("   NC_Major_Version : constant := %d; --  Major version of ncurses library\n", NCURSES_VERSION_MAJOR);
-   printf("   NC_Minor_Version : constant := %d; --  Minor version of ncurses library\n", NCURSES_VERSION_MINOR);
-   printf("   NC_Version : constant String := %c%d.%d%c;  --  Version of ncurses library\n", '"',NCURSES_VERSION_MAJOR,NCURSES_VERSION_MINOR,'"');
+  static const char* v1 =
+    "   NC_Major_Version : constant := %d; --  Major version of the library\n";
+  static const char* v2 =
+    "   NC_Minor_Version : constant := %d; --  Minor version of the library\n";
+  static const char* v3 =
+    "   NC_Version : constant String := %c%d.%d%c;  --  Version of library\n";
+
+  printf(v1, NCURSES_VERSION_MAJOR);
+  printf(v2, NCURSES_VERSION_MINOR);
+  printf(v3, '"',NCURSES_VERSION_MAJOR,NCURSES_VERSION_MINOR,'"');
+}
+
+static int
+eti_gen(char*buf, int code, const char* name, int* etimin, int* etimax)
+{
+  sprintf(buf,"   E_%-16s : constant Eti_Error := %d;\n",name,code);
+  if (code < *etimin)
+    *etimin = code;
+  if (code > *etimax)
+    *etimax = code;
+  return strlen(buf);
+}
+
+#define GEN_OFFSET(member,itype)                                   \
+  if (sizeof(((WINDOW*)0)->member)==sizeof(itype)) {               \
+    o = offsetof(WINDOW, member);                                  \
+    if ((o%sizeof(itype) == 0)) {                                  \
+       printf("   Offset%-*s : constant Natural := %2d; --  %s\n", \
+              8, #member, o/sizeof(itype),#itype);                 \
+    }                                                              \
+  }
+  
+static void
+gen_offsets(void)
+{
+  int o;
+  const char* s_bool = "";
+
+  GEN_OFFSET(_maxy,short);
+  GEN_OFFSET(_maxx,short);
+  GEN_OFFSET(_begy,short);
+  GEN_OFFSET(_begx,short);
+  GEN_OFFSET(_cury,short);
+  GEN_OFFSET(_curx,short);
+  GEN_OFFSET(_yoffset,short);
+  GEN_OFFSET(_pary,int);
+  GEN_OFFSET(_parx,int);
+  if (sizeof(bool) == sizeof(char)) {
+    GEN_OFFSET(_scroll,char);
+    s_bool = "char";
+  } else if (sizeof(bool) == sizeof(short)) {
+    GEN_OFFSET(_scroll,short);
+    s_bool = "short";
+  } else if (sizeof(bool) == sizeof(int)) {
+    GEN_OFFSET(_scroll,int);
+    s_bool = "int";
+  }
+  printf("   Sizeof%-*s : constant Natural := %2d; --  %s\n",
+        8, "_bool",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");
+  printf("\n");
+  printf("   type Curses_Bool is mod 2 ** Interfaces.C.%s'Size;\n",s_bool);
 }
 
 /*
@@ -964,6 +1154,7 @@ static void gen_version_info (void)
  *   M - Menus
  *   F - Forms
  *   P - Pointer Device (Mouse)
+ *   E - ETI base definitions
  *
  * The second character then denotes the specific output that should be
  * generated for the selected facility.
@@ -976,11 +1167,13 @@ int main(int argc, char *argv[])
   if (*s == 0x78)
     little_endian = 1;
 
-  if (argc!=3)
+  if (argc!=4)
     exit(1);
+  model = *++argv;
 
   switch(argv[1][0])
     {
+      /* ---------------------------------------------------------------*/   
     case 'B': /* The Base facility */
       switch(argv[2][0])
        {
@@ -996,6 +1189,12 @@ int main(int argc, char *argv[])
        case 'C': /* generate color constants */
          gen_color();
          break;
+       case 'D': /* generate displacements of fields in WINDOW struct. */
+         gen_offsets();
+         break;
+       case 'E': /* generate Mouse Event codes */
+         gen_mouse_events();
+         break;
        case 'M': /* generate constants for the ACS characters */
          gen_acs();
          break;
@@ -1015,6 +1214,7 @@ int main(int argc, char *argv[])
          break;
        }
       break;
+      /* ---------------------------------------------------------------*/   
     case 'M': /* The Menu facility */
       switch(argv[2][0])
        {
@@ -1034,6 +1234,7 @@ int main(int argc, char *argv[])
          break;
        }
       break;
+      /* ---------------------------------------------------------------*/   
     case 'F': /* The Form facility */
       switch(argv[2][0])
        {
@@ -1053,9 +1254,9 @@ int main(int argc, char *argv[])
          break;
        }
       break;
+      /* ---------------------------------------------------------------*/   
     case 'P': /* The Pointer(=Mouse) facility */
-      switch(argv[2][0])
-       {
+      switch(argv[2][0]) {
        case 'B': /* write some initial comment lines */
          mouse_basedefs();
          break;
@@ -1069,8 +1270,110 @@ int main(int argc, char *argv[])
          break;
        }
        break;
+      /* ---------------------------------------------------------------*/   
+    case 'E' : /* chtype size detection */
+      switch(argv[2][0]) {
+      case 'C':
+       {
+         const char* fmt  = "   type    C_Chtype   is new %s;\n";
+         const char* afmt = "   type    C_AttrType is new %s;\n";
+
+         if (sizeof(chtype)==sizeof(int)) {
+           if (sizeof(int)==sizeof(long))
+             printf(fmt,"C_ULong");
+           else
+             printf(fmt,"C_UInt");
+         }
+         else if (sizeof(chtype)==sizeof(long)) {
+           printf(fmt,"C_ULong");
+         }
+         else
+           printf("Error\n");
+
+         if (sizeof(attr_t)==sizeof(int)) {
+           if (sizeof(int)==sizeof(long))
+             printf(afmt,"C_ULong");
+           else
+             printf(afmt,"C_UInt");
+         }
+         else if (sizeof(attr_t)==sizeof(long)) {
+           printf(afmt,"C_ULong");
+         }
+         else
+           printf("Error\n");
+
+         printf("define(`CF_CURSES_OK',`%d')",OK);
+         printf("define(`CF_CURSES_ERR',`%d')",ERR);
+         printf("define(`CF_CURSES_TRUE',`%d')",TRUE);
+         printf("define(`CF_CURSES_FALSE',`%d')",FALSE);
+       }
+       break;
+      case 'E':
+       {
+         char* buf  = (char*)malloc(2048);
+         char* p    = buf;
+         int etimin = E_OK;
+         int etimax = E_OK;
+         if (p) {
+           p += eti_gen(p, E_OK, "Ok", &etimin, &etimax);
+           p += eti_gen(p, E_SYSTEM_ERROR,"System_Error", &etimin, &etimax);
+           p += eti_gen(p, E_BAD_ARGUMENT, "Bad_Argument", &etimin, &etimax);
+           p += eti_gen(p, E_POSTED, "Posted", &etimin, &etimax);
+           p += eti_gen(p, E_CONNECTED, "Connected", &etimin, &etimax);
+           p += eti_gen(p, E_BAD_STATE, "Bad_State", &etimin, &etimax);
+           p += eti_gen(p, E_NO_ROOM, "No_Room", &etimin, &etimax);
+           p += eti_gen(p, E_NOT_POSTED, "Not_Posted", &etimin, &etimax);
+           p += eti_gen(p, E_UNKNOWN_COMMAND,
+                        "Unknown_Command", &etimin, &etimax);
+           p += eti_gen(p, E_NO_MATCH, "No_Match", &etimin, &etimax);
+           p += eti_gen(p, E_NOT_SELECTABLE,
+                        "Not_Selectable", &etimin, &etimax);
+           p += eti_gen(p, E_NOT_CONNECTED,
+                        "Not_Connected", &etimin, &etimax);
+           p += eti_gen(p, E_REQUEST_DENIED,
+                        "Request_Denied", &etimin, &etimax);
+           p += eti_gen(p, E_INVALID_FIELD,
+                        "Invalid_Field", &etimin, &etimax);
+           p += eti_gen(p, E_CURRENT,
+                        "Current", &etimin, &etimax);
+         }
+         printf("   subtype Eti_Error is C_Int range %d .. %d;\n\n",
+                etimin,etimax);
+         printf(buf);
+       }
+       break;
+      default:
+       break;
+      }
+      break;
+      /* ---------------------------------------------------------------*/   
+    case 'V' : /* plain version dump */
+      {
+       switch(argv[2][0]) {
+       case '1': /* major version */
+#ifdef NCURSES_VERSION_MAJOR
+         printf("%d",NCURSES_VERSION_MAJOR);
+#endif
+         break;
+       case '2': /* minor version */
+#ifdef NCURSES_VERSION_MINOR
+         printf("%d",NCURSES_VERSION_MINOR);
+#endif
+         break;
+       case '3': /* patch level */
+#ifdef NCURSES_VERSION_PATCH
+         printf("%d",NCURSES_VERSION_PATCH);
+#endif
+         break;
+       default:
+         break;
+       }
+      }
+      break;
+      /* ---------------------------------------------------------------*/     
     default:
       break;
     }
   return 0;
 }
+  
similarity index 70%
rename from Ada95/ada_include/terminal_interface-curses-aux.ads
rename to Ada95/gen/terminal_interface-curses-aux.ads.m4
index 1221b2e50a846f6d2a7646f4cd956dbdb979b5d4..71e4872b47c41a8d327e0e32545f1ee0bab186f8 100644 (file)
@@ -1,4 +1,6 @@
-------------------------------------------------------------------------------
+--  -*- ada -*-
+define(`HTMLNAME',`terminal_interface-curses-aux__ads.htm')dnl
+include(M4MACRO)------------------------------------------------------------------------------
 --                                                                          --
 --                           GNAT ncurses Binding                           --
 --                                                                          --
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.13 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
+include(`Base_Defs')
 with System;
 with Interfaces.C;
 with Interfaces.C.Strings; use Interfaces.C.Strings;
 with Unchecked_Conversion;
 
 package Terminal_Interface.Curses.Aux is
-   pragma Preelaborate (Aux);
+   pragma Preelaborate (Terminal_Interface.Curses.Aux);
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
-   subtype C_Int      is Interfaces.C.Int;
-   subtype C_Short    is Interfaces.C.Short;
-   subtype C_Long_Int is Interfaces.C.Long;
-   subtype C_Size_T   is Interfaces.C.Size_T;
-   subtype C_Char_Ptr is Interfaces.C.Strings.Chars_Ptr;
+   subtype C_Int      is Interfaces.C.int;
+   subtype C_Short    is Interfaces.C.short;
+   subtype C_Long_Int is Interfaces.C.long;
+   subtype C_Size_T   is Interfaces.C.size_t;
+   subtype C_UInt     is Interfaces.C.unsigned;
+   subtype C_ULong    is Interfaces.C.unsigned_long;
+   subtype C_Char_Ptr is Interfaces.C.Strings.chars_ptr;
    type    C_Void_Ptr is new System.Address;
-
+include(`Chtype_Def')
    --  This is how those constants are defined in ncurses. I see them also
    --  exactly like this in all ETI implementations I ever tested. So it
    --  could be that this is quite general, but please check with your curses.
    --  This is critical, because curses sometime mixes boolean returns with
    --  returning an error status.
-   Curses_Ok    : constant C_Int :=  0;
-   Curses_Err   : constant C_Int := -1;
-
-   Curses_True  : constant C_Int := 1;
-   Curses_False : constant C_Int := 0;
-
-   subtype Eti_Error is C_Int range -14 .. 0;
-   --  Type for error codes returned by the menu and forms subsystem
+   Curses_Ok    : constant C_Int := CF_CURSES_OK;
+   Curses_Err   : constant C_Int := CF_CURSES_ERR;
 
-   E_Ok              : constant Eti_Error := 0;
-   E_System_Error    : constant Eti_Error := -1;
-   E_Bad_Argument    : constant Eti_Error := -2;
-   E_Posted          : constant Eti_Error := -3;
-   E_Connected       : constant Eti_Error := -4;
-   E_Bad_State       : constant Eti_Error := -5;
-   E_No_Room         : constant Eti_Error := -6;
-   E_Not_Posted      : constant Eti_Error := -7;
-   E_Unknown_Command : constant Eti_Error := -8;
-   E_No_Match        : constant Eti_Error := -9;
-   E_Not_Selectable  : constant Eti_Error := -10;
-   E_Not_Connected   : constant Eti_Error := -11;
-   E_Request_Denied  : constant Eti_Error := -12;
-   E_Invalid_Field   : constant Eti_Error := -13;
-   E_Current         : constant Eti_Error := -14;
+   Curses_True  : constant C_Int := CF_CURSES_TRUE;
+   Curses_False : constant C_Int := CF_CURSES_FALSE;
 
+   --  Eti_Error: type for error codes returned by the menu and form subsystem
+include(`Eti_Defs')
    procedure Eti_Exception (Code : Eti_Error);
    --  Dispatch the error code and raise the appropriate exception
    --
    --
    --  Some helpers
-   function CInt_To_Chtype is new
-     Unchecked_Conversion (Source => C_Int,
+   function Chtype_To_AttrChar is new
+     Unchecked_Conversion (Source => C_Chtype,
                            Target => Attributed_Character);
-   function Chtype_To_CInt is new
+   function AttrChar_To_Chtype is new
      Unchecked_Conversion (Source => Attributed_Character,
-                           Target => C_Int);
+                           Target => C_Chtype);
+
+   function AttrChar_To_AttrType is new
+     Unchecked_Conversion (Source => Attributed_Character,
+                           Target => C_AttrType);
+
+   function AttrType_To_AttrChar is new
+     Unchecked_Conversion (Source => C_AttrType,
+                           Target => Attributed_Character);
 
    procedure Fill_String (Cp  : in  chars_ptr;
                           Str : out String);
index 79e185a1e7c690367768fc88308420cd51b0e5fd..ff7882f7cf03ea39b545b73f8aa03f5b91dee17f 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-forms-field_user_data_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-forms-field_user_data__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,15 +36,17 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.12 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux;
+with Interfaces.C;
 
 package Terminal_Interface.Curses.Forms.Field_Types is
-   pragma Preelaborate (Field_Types);
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types);
+   use type Interfaces.C.int;
+   subtype C_Int is Interfaces.C.int;
 
    --  MANPAGE(`form_fieldtype.3x')
 
@@ -86,8 +88,6 @@ package Terminal_Interface.Curses.Forms.Field_Types is
    --  | Most of this is used by the implementations of the child packages.
    --  |
 private
-   use Terminal_Interface.Curses.Aux;
-
    type Makearg_Function is access
      function (Args : System.Address) return System.Address;
    pragma Convention (C, Makearg_Function);
@@ -117,8 +117,8 @@ private
    --  |
    type Low_Level_Field_Type is
       record
-         Status :              C_Short;
-         Ref_Count :           C_Long_Int;
+         Status :              Interfaces.C.short;
+         Ref_Count :           Interfaces.C.long;
          Left, Right :         System.Address;
          Makearg :             Makearg_Function;
          Copyarg :             Copyarg_Function;
index 8059f184a2dc69ec4e98260f1a7693cbddaa2ea0..aedd01bab3538bda020b87458a05dbf7bf8e5848 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-forms-field_user_data_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-forms-field_user_data__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,17 +36,17 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.13 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 
 generic
    type User is limited private;
    type User_Access is access User;
 package Terminal_Interface.Curses.Forms.Field_User_Data is
-   pragma Preelaborate (Field_User_Data);
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_User_Data);
 
    --  MANPAGE(`form_field_userptr.3x')
 
index acc0f247b8d99ab52a4fbd390851bfbd615632d3..cddc1d1e58d1f439650932b24dcd808985b30edb 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-forms-form_user_data_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-forms-form_user_data__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,17 +36,17 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.12 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 
 generic
    type User is limited private;
    type User_Access is access User;
 package Terminal_Interface.Curses.Forms.Form_User_Data is
-   pragma Preelaborate (Form_User_Data);
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Form_User_Data);
 
    --  MANPAGE(`form_userptr.3x')
 
index bb4ebfd45ad9933631fbbdb8037edf2a17504d7f..840c5f185810e85fd8d81c7ff1b95f6f4cc12652 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-forms_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-forms__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,10 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.14 $
---  Binding Version 00.93
+--  $Revision: 1.23 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Form_Base_Defs')
 with System;
@@ -47,9 +47,9 @@ with Ada.Characters.Latin_1;
 with Interfaces.C;
 
 package Terminal_Interface.Curses.Forms is
-   pragma Preelaborate (Forms);
-include(`Form_Linker_Options')
-
+   pragma Preelaborate (Terminal_Interface.Curses.Forms);
+include(`Form_Linker_Options')dnl
+include(`Linker_Options')
    Space : Character renames Ada.Characters.Latin_1.Space;
 
    type Field        is private;
@@ -63,13 +63,19 @@ include(`Form_Linker_Options')
                                 Center,
                                 Right);
 
-include(`Field_Rep')
+   pragma Warnings (Off);
+include(`Field_Rep')Dnl
+
+   pragma Warnings (On);
 
    function Default_Field_Options return Field_Option_Set;
    --  The initial defaults for the field options.
    pragma Inline (Default_Field_Options);
 
-include(`Form_Opt_Rep')
+   pragma Warnings (Off);
+include(`Form_Opt_Rep')Dnl
+
+   pragma Warnings (On);
 
    function Default_Form_Options return Form_Option_Set;
    --  The initial defaults for the form options.
@@ -682,11 +688,10 @@ include(`Form_Opt_Rep')
 
 ------------------------------------------------------------------------------
 private
+   type Field is new System.Storage_Elements.Integer_Address;
+   type Form  is new System.Storage_Elements.Integer_Address;
 
-   type Field        is new System.Address;
-   type Form         is new System.Address;
-
-   Null_Field        : constant Field        := Field (System.Null_Address);
-   Null_Form         : constant Form         := Form  (System.Null_Address);
+   Null_Field : constant Field := 0;
+   Null_Form  : constant Form  := 0;
 
 end Terminal_Interface.Curses.Forms;
index 957e4437b5194fa1c7582a18bb198b3dc67cc2ba..8d601d80b929398bb06f380927797487e230094e 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-menus-item_user_data_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-menus-item_user_data__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,17 +36,17 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.12 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 
 generic
    type User is limited private;
    type User_Access is access User;
 package Terminal_Interface.Curses.Menus.Item_User_Data is
-   pragma Preelaborate (Item_User_Data);
+   pragma Preelaborate (Terminal_Interface.Curses.Menus.Item_User_Data);
 
    --  The binding uses the same user pointer for menu items
    --  as the low level C implementation. So you can safely
index f7815da712efc47bbb077e8be0d41915a3415bc6..2f26f08afda15baa2179af9ca934abf4f8e4c149 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-menus-menu_user_data_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-menus-menu_user_data__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,17 +36,17 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.12 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 
 generic
    type User is limited private;
    type User_Access is access User;
 package Terminal_Interface.Curses.Menus.Menu_User_Data is
-   pragma Preelaborate (Menu_User_Data);
+   pragma Preelaborate (Terminal_Interface.Curses.Menus.Menu_User_Data);
 
    --  MANPAGE(`menu_userptr.3x')
 
index d3e4592028bb40604b3654435e0551738437e9a4..81a4935cde1b0e6ba6c01ac421a8044bb6a02260 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-menus_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-menus__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,10 +36,10 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.12 $
---  Binding Version 00.93
+--  $Revision: 1.20 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Menu_Base_Defs')
 with System;
@@ -47,10 +47,9 @@ with Interfaces.C;
 with Ada.Characters.Latin_1;
 
 package Terminal_Interface.Curses.Menus is
-   pragma Preelaborate (Menus);
-include(`Menu_Linker_Options')
-
-
+   pragma Preelaborate (Terminal_Interface.Curses.Menus);
+include(`Menu_Linker_Options')dnl
+include(`Linker_Options')
    Space : Character renames Ada.Characters.Latin_1.Space;
 
    type Item is private;
@@ -117,8 +116,10 @@ include(`Menu_Linker_Options')
    --
    --  Menu options
    --
+   pragma Warnings (Off);
+include(`Menu_Opt_Rep')dnl
 
-include(`Menu_Opt_Rep')
+   pragma Warnings (On);
 
    function Default_Menu_Options return Menu_Option_Set;
    --  Initial default options for a menu.
@@ -126,7 +127,10 @@ include(`Menu_Opt_Rep')
    --
    --  Item options
    --
-include(`Item_Rep')
+   pragma Warnings (Off);
+include(`Item_Rep')dnl
+
+   pragma Warnings (On);
 
    function Default_Item_Options return Item_Option_Set;
    --  Initial default options for an item.
@@ -582,10 +586,10 @@ include(`Item_Rep')
 
 -------------------------------------------------------------------------------
 private
-   type Item   is new System.Address;
-   type Menu   is new System.Address;
+   type Item   is new System.Storage_Elements.Integer_Address;
+   type Menu   is new System.Storage_Elements.Integer_Address;
 
-   Null_Item : constant Item := Item (System.Null_Address);
-   Null_Menu : constant Menu := Menu (System.Null_Address);
+   Null_Item : constant Item := 0;
+   Null_Menu : constant Menu := 0;
 
 end Terminal_Interface.Curses.Menus;
index 21f88e44e9f976614a23d57488250d3cf90a6caa..0db4ffbbc77f7940a4b1e930908bb10bf9f7ded1 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-mouse_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-mouse__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,16 +36,16 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.12 $
---  Binding Version 00.93
+--  $Revision: 1.19 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Mouse_Base_Defs')
 with System;
 
 package Terminal_Interface.Curses.Mouse is
-   pragma Preelaborate (Mouse);
+   pragma Preelaborate (Terminal_Interface.Curses.Mouse);
 
    --  MANPAGE(`curs_mouse.3x')
    --  Please note, that in ncurses-1.9.9e documentation mouse support
@@ -64,12 +64,22 @@ package Terminal_Interface.Curses.Mouse is
                          Shift,    -- Shift Key
                          Alt);     -- ALT Key
 
+   subtype Real_Buttons  is Mouse_Button range Left .. Button4;
+   subtype Modifier_Keys is Mouse_Button range Control .. Alt;
+
    type Button_State is (Released,
                          Pressed,
                          Clicked,
                          Double_Clicked,
                          Triple_Clicked);
 
+   type Button_States is array (Button_State) of Boolean;
+   pragma Pack (Button_States);
+
+   All_Clicks : constant Button_States := (Clicked .. Triple_Clicked => True,
+                                           others => False);
+   All_States : constant Button_States := (others => True);
+
    type Mouse_Event is private;
 
    --  MANPAGE(`curs_mouse.3x')
@@ -78,22 +88,32 @@ package Terminal_Interface.Curses.Mouse is
    --  Return true if a mouse device is supported, false otherwise.
 
    procedure Register_Reportable_Event
-     (B    : in Mouse_Button;
-      S    : in Button_State;
-      Mask : in out Event_Mask);
+     (Button : in Mouse_Button;
+      State  : in Button_State;
+      Mask   : in out Event_Mask);
    --  Stores the event described by the button and the state in the mask.
    --  Before you call this the first time, you should init the mask
    --  with the Empty_Mask constant
    pragma Inline (Register_Reportable_Event);
 
+   procedure Register_Reportable_Events
+     (Button : in Mouse_Button;
+      State  : in Button_States;
+      Mask   : in out Event_Mask);
+   --  Register all events described by the Button and the State bitmap.
+   --  Before you call this the first time, you should init the mask
+   --  with the Empty_Mask constant
+
    --  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.
    function Start_Mouse (Mask : Event_Mask := All_Events)
                          return Event_Mask;
    --  AKA
    pragma Inline (Start_Mouse);
 
-   procedure End_Mouse;
-   --  Terminates the mouse
+   procedure End_Mouse (Mask : in Event_Mask := No_Events);
+   --  Terminates the mouse, restores the specified event mask
    pragma Inline (End_Mouse);
 
    --  ANCHOR(`getmouse()',`Get_Mouse')
@@ -128,14 +148,12 @@ package Terminal_Interface.Curses.Mouse is
    pragma Inline (Mouse_Interval);
 
 private
-   type Event_Mask is new Interfaces.C.int;
-   No_Events  : constant Event_Mask := 0;
-   All_Events : constant Event_Mask := -1;
+   type Event_Mask is new Interfaces.C.unsigned_long;
 
    type Mouse_Event is
       record
          Id      : Integer range Integer (Interfaces.C.short'First) ..
-                                 Integer (Interfaces.C.Short'Last);
+                                 Integer (Interfaces.C.short'Last);
          X, Y, Z : Integer range Integer (Interfaces.C.int'First) ..
                                  Integer (Interfaces.C.int'Last);
          Bstate  : Event_Mask;
@@ -147,4 +165,9 @@ include(`Mouse_Event_Rep')
    Generation_Bit_Order : constant System.Bit_Order := System.M4_BIT_ORDER;
    --  This constant may be different on your system.
 
+include(`Mouse_Events')
+
+   No_Events  : constant Event_Mask := 0;
+   All_Events : constant Event_Mask := ALL_MOUSE_EVENTS;
+
 end Terminal_Interface.Curses.Mouse;
index 3dd3dd417fd1f1c5d699c1b517cbae74db7db5fb..1369cfd72c0c4f44f03bfce15e504bdd2a68a043 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-panels-user_data_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-panels-user_data__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,17 +36,17 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.12 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 
 generic
    type User is limited private;
    type User_Access is access all User;
 package Terminal_Interface.Curses.Panels.User_Data is
-   pragma Preelaborate (User_Data);
+   pragma Preelaborate (Terminal_Interface.Curses.Panels.User_Data);
 
    --  MANPAGE(`panel.3x')
 
index f9bfb2e069c3ffa461dbccfa65a4aa0a02219ade..e309404d12e7b4b3571d530aed124c6b02b2f93a 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses-panels_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses-panels__ads.htm')dnl
 include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --                                                                          --
@@ -36,17 +36,17 @@ include(M4MACRO)dnl
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.14 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System;
 
 package Terminal_Interface.Curses.Panels is
-   pragma Preelaborate (Panels);
-include(`Panel_Linker_Options')
-
+   pragma Preelaborate (Terminal_Interface.Curses.Panels);
+include(`Panel_Linker_Options')dnl
+include(`Linker_Options')
    type Panel is private;
 
    ---------------------------
@@ -140,7 +140,7 @@ include(`Panel_Linker_Options')
    pragma Inline (Delete);
 
    private
-      type Panel is new System.Address;
-      Null_Panel : constant Panel := Panel (System.Null_Address);
+      type Panel is new System.Storage_Elements.Integer_Address;
+      Null_Panel : constant Panel := 0;
 
 end Terminal_Interface.Curses.Panels;
index 65bbbd75fb91f3d20f7ddfeb36b0dbdbf2c8e8ce..893bd6cb932fee286c9fae578cd11e0c65e009fa 100644 (file)
@@ -1,5 +1,5 @@
 --  -*- ada -*-
-define(`HTMLNAME',`terminal_interface-curses_s.html')dnl
+define(`HTMLNAME',`terminal_interface-curses__ads.htm')dnl
 include(M4MACRO)------------------------------------------------------------------------------
 --                                                                          --
 --                           GNAT ncurses Binding                           --
@@ -35,17 +35,17 @@ include(M4MACRO)----------------------------------------------------------------
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.15 $
---  Binding Version 00.93
+--  $Revision: 1.26 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 include(`Base_Defs')
-with System;
+with System.Storage_Elements;
 with Interfaces.C;   --  We need this for some assertions.
 
 package Terminal_Interface.Curses is
-   pragma Preelaborate (Curses);
+   pragma Preelaborate (Terminal_Interface.Curses);
 include(`Linker_Options')
 include(`Version_Info')
    type Window is private;
@@ -91,7 +91,7 @@ include(`Key_Definitions')
    --  For those who like to use the original key names we produce them were
    --  they differ from the original. Please note that they may differ in
    --  lower/upper case.
-include(`Old_Keys')
+include(`Old_Keys')dnl
 
 ------------------------------------------------------------------------------
 
@@ -103,7 +103,7 @@ include(`Old_Keys')
    --  predefined (see below), although they may not really exist.
 
 include(`Color_Defs')
-   type RGB_Value is range 0 .. Integer (Interfaces.C.Short'Last);
+   type RGB_Value is range 0 .. Integer (Interfaces.C.short'Last);
    for RGB_Value'Size use Interfaces.C.short'Size;
    --  Some system may allow to redefine a color by setting RGB values.
 
@@ -116,15 +116,15 @@ include(`Color_Defs')
    --  the other for the background
 
 include(`Character_Attribute_Set_Rep')
-   --  (n)curses uses half of an integer for attributes.
+   --  (n)curses uses all but the lowes 16 Bits for Attributes.
 
    Normal_Video : constant Character_Attribute_Set := (others => False);
 
    type Attributed_Character is
       record
-         Attr  : Character_Attribute_Set := Normal_Video;
-         Color : Color_Pair := 0;
-         Ch    : Character  := ' ';
+         Attr  : Character_Attribute_Set;
+         Color : Color_Pair;
+         Ch    : Character;
       end record;
    pragma Convention (C, Attributed_Character);
    --  This is the counterpart for the chtype in C.
@@ -133,7 +133,7 @@ include(`AC_Rep')
    Default_Character : constant Attributed_Character
      := (Ch    => Character'First,
          Color => Color_Pair'First,
-         Attr  => Normal_Video);
+         Attr  => (others => False));  --  preelaboratable Normal_Video
 
    type Attributed_String is array (Positive range <>) of Attributed_Character;
    pragma Pack (Attributed_String);
@@ -195,7 +195,7 @@ include(`AC_Rep')
    --  You must use this constants as indices into the ACS_Map array
    --  to get the corresponding attributed character at runtime.
    --
-include(`ACS_Map')
+include(`ACS_Map')dnl
 
    --  MANPAGE(`curs_initscr.3x')
    --  | Not implemented: newterm, set_term, delscreen
@@ -503,6 +503,12 @@ include(`ACS_Map')
    --  AKA
    pragma Inline (Get_Character_Attribute);
 
+   --  ANCHOR(`wcolor_set()',`Set_Color')
+   procedure Set_Color (Win  : in Window := Standard_Window;
+                        Pair : in Color_Pair);
+   --  AKA
+   pragma Inline (Set_Color);
+
    --  ANCHOR(`wchgat()',`Change_Attributes')
    procedure Change_Attributes
      (Win   : in Window := Standard_Window;
@@ -1138,6 +1144,11 @@ include(`ACS_Map')
    --  AKA
    pragma Inline (Get_Soft_Label_Key_Attributes);
 
+   --  ANCHOR(`slk_color()',`Set_Soft_Label_Key_Color')
+   procedure Set_Soft_Label_Key_Color (Pair : in Color_Pair);
+   --  AKA
+   pragma Inline (Set_Soft_Label_Key_Color);
+
    --  MANPAGE(`keyok.3x')
 
    --  ANCHOR(`keyok()',`Enable_Key')
@@ -1365,7 +1376,13 @@ include(`ACS_Map')
    --  We don't inline this procedure
 
 private
-   type Window is new System.Address;
-   Null_Window : constant Window := Window (System.Null_Address);
+   type Window is new System.Storage_Elements.Integer_Address;
+   Null_Window : constant Window := 0;
+
+   --  The next constants are generated and may be different on your
+   --  architecture.
+   --
+include(`Window_Offsets')dnl
+   Curses_Bool_False : constant Curses_Bool := 0;
 
 end Terminal_Interface.Curses;
diff --git a/Ada95/html/ada/files.htm b/Ada95/html/ada/files.htm
new file mode 100644 (file)
index 0000000..047f9ab
--- /dev/null
@@ -0,0 +1,5 @@
+<HEAD><TITLE></TITLE></HEAD>
+<BODY>
+<H2 ALIGN=CENTER>Files</H2>
+<A HREF=files/T.htm>[T]</A>
+</BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/files/T.htm b/Ada95/html/ada/files/T.htm
new file mode 100644 (file)
index 0000000..b6223a0
--- /dev/null
@@ -0,0 +1,36 @@
+<HTML><HEAD><TITLE>T</TITLE></HEAD>
+<BODY>
+<H2>Files - T</H2>
+<A HREF=../files.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-alpha__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-alpha.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-alphanumeric.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-enumeration-ada.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-enumeration.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-intfield__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-intfield.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-ipv4_address.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-numeric__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-numeric.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-regexp__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-regexp.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-user-choice.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-user.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_types__ads.htm TARGET=main>terminal_interface-curses-forms-field_types.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-field_user_data__ads.htm TARGET=main>terminal_interface-curses-forms-field_user_data.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms-form_user_data__ads.htm TARGET=main>terminal_interface-curses-forms-form_user_data.ads</A>
+<LI><A HREF=../terminal_interface-curses-forms__ads.htm TARGET=main>terminal_interface-curses-forms.ads</A>
+<LI><A HREF=../terminal_interface-curses-menus-item_user_data__ads.htm TARGET=main>terminal_interface-curses-menus-item_user_data.ads</A>
+<LI><A HREF=../terminal_interface-curses-menus-menu_user_data__ads.htm TARGET=main>terminal_interface-curses-menus-menu_user_data.ads</A>
+<LI><A HREF=../terminal_interface-curses-menus__ads.htm TARGET=main>terminal_interface-curses-menus.ads</A>
+<LI><A HREF=../terminal_interface-curses-mouse__ads.htm TARGET=main>terminal_interface-curses-mouse.ads</A>
+<LI><A HREF=../terminal_interface-curses-panels-user_data__ads.htm TARGET=main>terminal_interface-curses-panels-user_data.ads</A>
+<LI><A HREF=../terminal_interface-curses-panels__ads.htm TARGET=main>terminal_interface-curses-panels.ads</A>
+<LI><A HREF=../terminal_interface-curses-text_io-complex_io__ads.htm TARGET=main>terminal_interface-curses-text_io-complex_io.ads</A>
+<LI><A HREF=../terminal_interface-curses-text_io-decimal_io__ads.htm TARGET=main>terminal_interface-curses-text_io-decimal_io.ads</A>
+<LI><A HREF=../terminal_interface-curses-text_io-enumeration_io__ads.htm TARGET=main>terminal_interface-curses-text_io-enumeration_io.ads</A>
+<LI><A HREF=../terminal_interface-curses-text_io-fixed_io__ads.htm TARGET=main>terminal_interface-curses-text_io-fixed_io.ads</A>
+<LI><A HREF=../terminal_interface-curses-text_io-float_io__ads.htm TARGET=main>terminal_interface-curses-text_io-float_io.ads</A>
+<LI><A HREF=../terminal_interface-curses-text_io-integer_io__ads.htm TARGET=main>terminal_interface-curses-text_io-integer_io.ads</A>
+<LI><A HREF=../terminal_interface-curses-text_io-modular_io__ads.htm TARGET=main>terminal_interface-curses-text_io-modular_io.ads</A>
+<LI><A HREF=../terminal_interface-curses-text_io__ads.htm TARGET=main>terminal_interface-curses-text_io.ads</A>
+<LI><A HREF=../terminal_interface-curses__ads.htm TARGET=main>terminal_interface-curses.ads</A>
+<LI><A HREF=../terminal_interface__ads.htm TARGET=main>terminal_interface.ads</A>
+</UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs.htm b/Ada95/html/ada/funcs.htm
new file mode 100644 (file)
index 0000000..77f7b70
--- /dev/null
@@ -0,0 +1,19 @@
+<HEAD><TITLE></TITLE></HEAD>
+<BODY>
+<H2 ALIGN=CENTER>Functions/Procedures</H2>
+<A HREF=funcs/A.htm>[A]</A>
+<A HREF=funcs/C.htm>[C]</A>
+<A HREF=funcs/E.htm>[E]</A>
+<A HREF=funcs/F.htm>[F]</A>
+<A HREF=funcs/G.htm>[G]</A>
+<A HREF=funcs/I.htm>[I]</A>
+<A HREF=funcs/L.htm>[L]</A>
+<A HREF=funcs/M.htm>[M]</A>
+<A HREF=funcs/N.htm>[N]</A>
+<A HREF=funcs/P.htm>[P]</A>
+<A HREF=funcs/R.htm>[R]</A>
+<A HREF=funcs/S.htm>[S]</A>
+<A HREF=funcs/T.htm>[T]</A>
+<A HREF=funcs/U.htm>[U]</A>
+<A HREF=funcs/V.htm>[V]</A>
+</BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/A.htm b/Ada95/html/ada/funcs/A.htm
new file mode 100644 (file)
index 0000000..c276f99
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>A</TITLE></HEAD>
+<BODY>
+<H2>Functions - A</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-alpha__ads.htm#41_53 TARGET=main>Alpha</A><LI><A HREF=../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#41_53 TARGET=main>AlphaNumeric</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/C.htm b/Ada95/html/ada/funcs/C.htm
new file mode 100644 (file)
index 0000000..16b475e
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>C</TITLE></HEAD>
+<BODY>
+<H2>Functions - C</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#63_13 TARGET=main>Character_Check</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#43_58 TARGET=main>Choice</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#98_13 TARGET=main>Col -  terminal_interface-curses-text_io.ads:98</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#99_13 TARGET=main>Col -  terminal_interface-curses-text_io.ads:99</A><LI><A HREF=../terminal_interface-curses-text_io-complex_io__ads.htm#44_17 TARGET=main>Complex_Types</A><LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_13 TARGET=main>Create -  terminal_interface-curses-forms-field_types-enumeration-ada.ads:48</A><LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_13 TARGET=main>Create -  terminal_interface-curses-forms-field_types-enumeration.ads:64</A><LI><A HREF=../terminal_interface-curses-forms-field_types__ads.htm#149_13 TARGET=main>C_Builtin_Router</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#80_13 TARGET=main>C_Generic_Choice</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#81_13 TARGET=main>C_Generic_Type</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/E.htm b/Ada95/html/ada/funcs/E.htm
new file mode 100644 (file)
index 0000000..088d54c
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>E</TITLE></HEAD>
+<BODY>
+<H2>Functions - E</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53 TARGET=main>Enumeration</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/F.htm b/Ada95/html/ada/funcs/F.htm
new file mode 100644 (file)
index 0000000..bf89dbf
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>F</TITLE></HEAD>
+<BODY>
+<H2>Functions - F</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#56_13 TARGET=main>Field_Check</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#65_14 TARGET=main>Flush -  terminal_interface-curses-text_io.ads:65</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#66_14 TARGET=main>Flush -  terminal_interface-curses-text_io.ads:66</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/G.htm b/Ada95/html/ada/funcs/G.htm
new file mode 100644 (file)
index 0000000..9fb627c
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>G</TITLE></HEAD>
+<BODY>
+<H2>Functions - G</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#90_13 TARGET=main>Generic_Char_Check</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#83_13 TARGET=main>Generic_Field_Check</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13 TARGET=main>Generic_Next</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13 TARGET=main>Generic_Prev</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#62_13 TARGET=main>Get_Window</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/I.htm b/Ada95/html/ada/funcs/I.htm
new file mode 100644 (file)
index 0000000..4830d58
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>I</TITLE></HEAD>
+<BODY>
+<H2>Functions - I</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-intfield__ads.htm#41_53 TARGET=main>IntField</A><LI><A HREF=../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#41_53 TARGET=main>IPV4_Address</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/L.htm b/Ada95/html/ada/funcs/L.htm
new file mode 100644 (file)
index 0000000..a95c86d
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>L</TITLE></HEAD>
+<BODY>
+<H2>Functions - L</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-text_io__ads.htm#101_13 TARGET=main>Line -  terminal_interface-curses-text_io.ads:101</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#102_13 TARGET=main>Line -  terminal_interface-curses-text_io.ads:102</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#77_13 TARGET=main>Line_Length -  terminal_interface-curses-text_io.ads:77</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#78_13 TARGET=main>Line_Length -  terminal_interface-curses-text_io.ads:78</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/M.htm b/Ada95/html/ada/funcs/M.htm
new file mode 100644 (file)
index 0000000..af0cdae
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>M</TITLE></HEAD>
+<BODY>
+<H2>Functions - M</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#73_13 TARGET=main>Make_Enumeration_Type</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/N.htm b/Ada95/html/ada/funcs/N.htm
new file mode 100644 (file)
index 0000000..54eb789
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>N</TITLE></HEAD>
+<BODY>
+<H2>Functions - N</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-text_io__ads.htm#86_14 TARGET=main>New_Line -  terminal_interface-curses-text_io.ads:86</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#87_14 TARGET=main>New_Line -  terminal_interface-curses-text_io.ads:87</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#89_14 TARGET=main>New_Page -  terminal_interface-curses-text_io.ads:89</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#90_14 TARGET=main>New_Page -  terminal_interface-curses-text_io.ads:90</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#60_13 TARGET=main>Next</A><LI><A HREF=../terminal_interface-curses-forms-field_types-numeric__ads.htm#41_53 TARGET=main>Numeric</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/P.htm b/Ada95/html/ada/funcs/P.htm
new file mode 100644 (file)
index 0000000..88cb447
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>P</TITLE></HEAD>
+<BODY>
+<H2>Functions - P</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-text_io__ads.htm#80_13 TARGET=main>Page_Length -  terminal_interface-curses-text_io.ads:80</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#81_13 TARGET=main>Page_Length -  terminal_interface-curses-text_io.ads:81</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#67_13 TARGET=main>Previous</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#108_14 TARGET=main>Put -  terminal_interface-curses-text_io.ads:108</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#109_14 TARGET=main>Put -  terminal_interface-curses-text_io.ads:109</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#115_14 TARGET=main>Put -  terminal_interface-curses-text_io.ads:115</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#116_14 TARGET=main>Put -  terminal_interface-curses-text_io.ads:116</A><LI><A HREF=../terminal_interface-curses-text_io-complex_io__ads.htm#54_14 TARGET=main>Put -  terminal_interface-curses-text_io-complex_io.ads:54</A><LI><A HREF=../terminal_interface-curses-text_io-complex_io__ads.htm#61_14 TARGET=main>Put -  terminal_interface-curses-text_io-complex_io.ads:61</A><LI><A HREF=../terminal_interface-curses-text_io-decimal_io__ads.htm#50_14 TARGET=main>Put -  terminal_interface-curses-text_io-decimal_io.ads:50</A><LI><A HREF=../terminal_interface-curses-text_io-decimal_io__ads.htm#57_14 TARGET=main>Put -  terminal_interface-curses-text_io-decimal_io.ads:57</A><LI><A HREF=../terminal_interface-curses-text_io-enumeration_io__ads.htm#49_14 TARGET=main>Put -  terminal_interface-curses-text_io-enumeration_io.ads:49</A><LI><A HREF=../terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14 TARGET=main>Put -  terminal_interface-curses-text_io-enumeration_io.ads:55</A><LI><A HREF=../terminal_interface-curses-text_io-fixed_io__ads.htm#50_14 TARGET=main>Put -  terminal_interface-curses-text_io-fixed_io.ads:50</A><LI><A HREF=../terminal_interface-curses-text_io-fixed_io__ads.htm#57_14 TARGET=main>Put -  terminal_interface-curses-text_io-fixed_io.ads:57</A><LI><A HREF=../terminal_interface-curses-text_io-float_io__ads.htm#50_14 TARGET=main>Put -  terminal_interface-curses-text_io-float_io.ads:50</A><LI><A HREF=../terminal_interface-curses-text_io-float_io__ads.htm#57_14 TARGET=main>Put -  terminal_interface-curses-text_io-float_io.ads:57</A><LI><A HREF=../terminal_interface-curses-text_io-integer_io__ads.htm#49_14 TARGET=main>Put -  terminal_interface-curses-text_io-integer_io.ads:49</A><LI><A HREF=../terminal_interface-curses-text_io-integer_io__ads.htm#55_14 TARGET=main>Put -  terminal_interface-curses-text_io-integer_io.ads:55</A><LI><A HREF=../terminal_interface-curses-text_io-modular_io__ads.htm#49_14 TARGET=main>Put -  terminal_interface-curses-text_io-modular_io.ads:49</A><LI><A HREF=../terminal_interface-curses-text_io-modular_io__ads.htm#55_14 TARGET=main>Put -  terminal_interface-curses-text_io-modular_io.ads:55</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#118_14 TARGET=main>Put_Line -  terminal_interface-curses-text_io.ads:118</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#122_14 TARGET=main>Put_Line -  terminal_interface-curses-text_io.ads:122</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/R.htm b/Ada95/html/ada/funcs/R.htm
new file mode 100644 (file)
index 0000000..f6e0b21
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>R</TITLE></HEAD>
+<BODY>
+<H2>Functions - R</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-regexp__ads.htm#41_53 TARGET=main>RegExp</A><LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_14 TARGET=main>Release</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/S.htm b/Ada95/html/ada/funcs/S.htm
new file mode 100644 (file)
index 0000000..e77c6d1
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>S</TITLE></HEAD>
+<BODY>
+<H2>Functions - S</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-text_io__ads.htm#92_14 TARGET=main>Set_Col -  terminal_interface-curses-text_io.ads:92</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#93_14 TARGET=main>Set_Col -  terminal_interface-curses-text_io.ads:93</A><LI><A HREF=../terminal_interface-curses-forms-field_types-alpha__ads.htm#49_14 TARGET=main>Set_Field_Type -  terminal_interface-curses-forms-field_types-alpha.ads:49</A><LI><A HREF=../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_14 TARGET=main>Set_Field_Type -  terminal_interface-curses-forms-field_types-alphanumeric.ads:50</A><LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_14 TARGET=main>Set_Field_Type -  terminal_interface-curses-forms-field_types-enumeration.ads:84</A><LI><A HREF=../terminal_interface-curses-forms-field_types-intfield__ads.htm#51_14 TARGET=main>Set_Field_Type -  terminal_interface-curses-forms-field_types-intfield.ads:51</A><LI><A HREF=../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_14 TARGET=main>Set_Field_Type -  terminal_interface-curses-forms-field_types-ipv4_address.ads:47</A><LI><A HREF=../terminal_interface-curses-forms-field_types-numeric__ads.htm#51_14 TARGET=main>Set_Field_Type -  terminal_interface-curses-forms-field_types-numeric.ads:51</A><LI><A HREF=../terminal_interface-curses-forms-field_types-regexp__ads.htm#51_14 TARGET=main>Set_Field_Type -  terminal_interface-curses-forms-field_types-regexp.ads:51</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#70_14 TARGET=main>Set_Field_Type -  terminal_interface-curses-forms-field_types-user.ads:70</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#95_14 TARGET=main>Set_Line -  terminal_interface-curses-text_io.ads:95</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#96_14 TARGET=main>Set_Line -  terminal_interface-curses-text_io.ads:96</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#59_14 TARGET=main>Set_Window</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/T.htm b/Ada95/html/ada/funcs/T.htm
new file mode 100644 (file)
index 0000000..0ee81e0
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>T</TITLE></HEAD>
+<BODY>
+<H2>Functions - T</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface__ads.htm#41_9 TARGET=main>Terminal_Interface</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#44_35 TARGET=main>Text_IO</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/U.htm b/Ada95/html/ada/funcs/U.htm
new file mode 100644 (file)
index 0000000..20af351
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>U</TITLE></HEAD>
+<BODY>
+<H2>Functions - U</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#43_53 TARGET=main>User</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/funcs/V.htm b/Ada95/html/ada/funcs/V.htm
new file mode 100644 (file)
index 0000000..7c493c8
--- /dev/null
@@ -0,0 +1,6 @@
+<HTML><HEAD><TITLE>V</TITLE></HEAD>
+<BODY>
+<H2>Functions - V</H2>
+<A HREF=../funcs.htm TARGET=_self>[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_13 TARGET=main>Value</A></UL></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/index.htm b/Ada95/html/ada/index.htm
new file mode 100644 (file)
index 0000000..80af5f9
--- /dev/null
@@ -0,0 +1,33 @@
+<HTML>
+<HEAD><TITLE>Source Browser</TITLE></HEAD>
+<FRAMESET COLS='250,*'>
+<NOFRAME>
+<H2 ALIGN=CENTER>Files</H2>
+<A HREF=files/T.htm>[T]</A>
+</UL>
+<HR>
+<H2 ALIGN=CENTER>Functions/Procedures</H2>
+<A HREF=funcs/A.htm>[A]</A>
+<A HREF=funcs/C.htm>[C]</A>
+<A HREF=funcs/E.htm>[E]</A>
+<A HREF=funcs/F.htm>[F]</A>
+<A HREF=funcs/G.htm>[G]</A>
+<A HREF=funcs/I.htm>[I]</A>
+<A HREF=funcs/L.htm>[L]</A>
+<A HREF=funcs/M.htm>[M]</A>
+<A HREF=funcs/N.htm>[N]</A>
+<A HREF=funcs/P.htm>[P]</A>
+<A HREF=funcs/R.htm>[R]</A>
+<A HREF=funcs/S.htm>[S]</A>
+<A HREF=funcs/T.htm>[T]</A>
+<A HREF=funcs/U.htm>[U]</A>
+<A HREF=funcs/V.htm>[V]</A>
+</UL>
+</NOFRAME>
+<FRAMESET ROWS='50%,50%'>
+<FRAME NAME=files SRC=files.htm>
+<FRAME NAME=funcs SRC=funcs.htm>
+</FRAMESET>
+<FRAME NAME=main SRC=main.htm>
+</FRAMESET>
+</HTML>
diff --git a/Ada95/html/ada/main.htm b/Ada95/html/ada/main.htm
new file mode 100644 (file)
index 0000000..06a05f0
--- /dev/null
@@ -0,0 +1,23 @@
+<HEAD><TITLE></TITLE></HEAD>
+<BODY>
+<P ALIGN=right><A HREF=main.htm TARGET=_top>[No frame version is here]</A><P><H2 ALIGN=CENTER>Files</H2>
+<A HREF=files/T.htm>[T]</A>
+</UL>
+<HR><H2 ALIGN=CENTER>Functions/Procedures</H2>
+<A HREF=funcs/A.htm>[A]</A>
+<A HREF=funcs/C.htm>[C]</A>
+<A HREF=funcs/E.htm>[E]</A>
+<A HREF=funcs/F.htm>[F]</A>
+<A HREF=funcs/G.htm>[G]</A>
+<A HREF=funcs/I.htm>[I]</A>
+<A HREF=funcs/L.htm>[L]</A>
+<A HREF=funcs/M.htm>[M]</A>
+<A HREF=funcs/N.htm>[N]</A>
+<A HREF=funcs/P.htm>[P]</A>
+<A HREF=funcs/R.htm>[R]</A>
+<A HREF=funcs/S.htm>[S]</A>
+<A HREF=funcs/T.htm>[T]</A>
+<A HREF=funcs/U.htm>[U]</A>
+<A HREF=funcs/V.htm>[V]</A>
+</UL>
+</BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
new file mode 100644 (file)
index 0000000..a3a090f
--- /dev/null
@@ -0,0 +1,58 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-alpha.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-alpha.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--              Terminal_Interface.Curses.Forms.Field_Types.Alpha           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#44_58">Alpha</A><FONT COLOR=red><A NAME="41_53"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#41_53">Alpha</A>);
+
+   <b>type</b> <FONT COLOR=red><A NAME="44_9">Alpha_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>
+     <b>with</b> <b>record</b>
+        Minimum_Field_Width : Natural := 0;
+     <b>end</b> <b>record</b>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="49_14"></A></FONT> (<FONT COLOR=red><A NAME="49_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                             Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#44_9">Alpha_Field</A>);
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_14">Set_Field_Type</A>);
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Alpha;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
new file mode 100644 (file)
index 0000000..ab29978
--- /dev/null
@@ -0,0 +1,59 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-alphanumeric.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-alphanumeric.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--          Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#44_58">AlphaNumeric</A><FONT COLOR=red><A NAME="41_53"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate
+     (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#41_53">AlphaNumeric</A>);
+
+   <b>type</b> <FONT COLOR=red><A NAME="45_9">AlphaNumeric_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>
+     <b>with</b> <b>record</b>
+        Minimum_Field_Width : Natural := 0;
+     <b>end</b> <b>record</b>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="50_14"></A></FONT> (<FONT COLOR=red><A NAME="50_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                             Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#45_9">AlphaNumeric_Field</A>);
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_14">Set_Field_Type</A>);
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
new file mode 100644 (file)
index 0000000..4a85547
--- /dev/null
@@ -0,0 +1,64 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration-ada.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-enumeration-ada.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--         Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada      --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="42_9">T</A></FONT> <b>is</b> (<>);
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53">Enumeration</A>.<FONT COLOR=red><A NAME="44_65">Ada</A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate
+     (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#44_65">Ada</A>);
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#45_13">Create</A><FONT COLOR=red><A NAME="48_13"></A></FONT> (Set            : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_9">Type_Set</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_46">Mixed_Case</A>;
+                    Case_Sensitive : Boolean  := False;
+                    Must_Be_Unique : Boolean  := False)
+                    <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#73_13">Value</A><FONT COLOR=red><A NAME="53_13"></A></FONT> (<FONT COLOR=red><A NAME="53_20">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                   Buf : <A HREF="terminal_interface-curses-forms__ads.htm#132_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#132_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>;
+  <FONT COLOR=green><EM>--  Translate the content of the fields buffer - indicated by the</EM></FONT>
+  <FONT COLOR=green><EM>--  buffer number - into an enumeration value. If the buffer is empty</EM></FONT>
+  <FONT COLOR=green><EM>--  or the content is invalid, a Constraint_Error is raises.</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
new file mode 100644 (file)
index 0000000..47b7313
--- /dev/null
@@ -0,0 +1,103 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-enumeration.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--           Terminal_Interface.Curses.Forms.Field_Types.Enumeration        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-cstrin__ads.htm#20_22">Strings</A>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#46_58">Enumeration</A><FONT COLOR=red><A NAME="43_53"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate
+     (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53">Enumeration</A>);
+
+   <b>type</b> <FONT COLOR=red><A NAME="47_9">String_Access</A></FONT> <b>is</b> <b>access</b> String;
+
+  <FONT COLOR=green><EM>--  Type_Set is used by the child package Ada</EM></FONT>
+   <b>type</b> <FONT COLOR=red><A NAME="50_9">Type_Set</A></FONT> <b>is</b> (Lower_Case, Upper_Case, Mixed_Case);
+
+   <b>type</b> <FONT COLOR=red><A NAME="52_9">Enum_Array</A></FONT> <b>is</b> <b>array</b> (Positive <b>range</b> <>)
+     <b>of</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#47_9">String_Access</A>;
+
+   <b>type</b> <FONT COLOR=red><A NAME="55_9">Enumeration_Info</A></FONT> (C : Positive) <b>is</b>
+      <b>record</b>
+         Names                : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#52_9">Enum_Array</A> (1 .. C);
+         Case_Sensitive       : Boolean := False;
+         Match_Must_Be_Unique : Boolean := False;
+      <b>end</b> <b>record</b>;
+
+   <b>type</b> <FONT COLOR=red><A NAME="62_9">Enumeration_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b> <b>private</b>;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#48_13">Create</A><FONT COLOR=red><A NAME="64_13"></A></FONT> (Info : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
+                    Auto_Release_Names : Boolean := False)
+                    <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>;
+  <FONT COLOR=green><EM>--  Make an fieldtype from the info. Enumerations are special, because</EM></FONT>
+  <FONT COLOR=green><EM>--  they normally don't copy the enum values into a private store, so</EM></FONT>
+  <FONT COLOR=green><EM>--  we have to care for the lifetime of the info we provide.</EM></FONT>
+  <FONT COLOR=green><EM>--  The Auto_Release_Names flag may be used to automatically releases</EM></FONT>
+  <FONT COLOR=green><EM>--  the strings in the Names array of the Enumeration_Info.</EM></FONT>
+
+   <b>function</b> <FONT COLOR=red><A NAME="73_13">Make_Enumeration_Type</A></FONT> (Info : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
+                                   Auto_Release_Names : Boolean := False)
+                                   <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A> <b>renames</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_13">Create</A>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#76_14">Release</A><FONT COLOR=red><A NAME="77_14"></A></FONT> (Enum : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>);
+  <FONT COLOR=green><EM>--  But we may want to release the field to release the memory allocated</EM></FONT>
+  <FONT COLOR=green><EM>--  by it internally. After that the Enumeration field is no longer usable.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  The next type defintions are all ncurses extensions. They are typically</EM></FONT>
+  <FONT COLOR=green><EM>--  not available in other curses implementations.</EM></FONT>
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#91_14">Set_Field_Type</A><FONT COLOR=red><A NAME="84_14"></A></FONT> (<FONT COLOR=red><A NAME="84_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                             Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>);
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_14">Set_Field_Type</A>);
+
+<b>private</b>
+   <b>type</b> <FONT COLOR=red><A NAME="89_9">CPA_Access</A></FONT> <b>is</b> <b>access</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-cstrin__ads.htm#20_22">Strings</A>.<A HREF="i-cstrin__ads.htm#27_9">chars_ptr_array</A>;
+
+   <b>type</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b>
+      <b>record</b>
+         Case_Sensitive       : Boolean := False;
+         Match_Must_Be_Unique : Boolean := False;
+         Arr                  : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#89_9">CPA_Access</A> := <b>null</b>;
+      <b>end</b> <b>record</b>;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
new file mode 100644 (file)
index 0000000..6de61de
--- /dev/null
@@ -0,0 +1,60 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-intfield.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-intfield.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--            Terminal_Interface.Curses.Forms.Field_Types.IntField          --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#44_58">IntField</A><FONT COLOR=red><A NAME="41_53"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#41_53">IntField</A>);
+
+   <b>type</b> <FONT COLOR=red><A NAME="44_9">Integer_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b>
+      <b>record</b>
+         Precision   : Natural;
+         Lower_Limit : Integer;
+         Upper_Limit : Integer;
+      <b>end</b> <b>record</b>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                             Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#44_9">Integer_Field</A>);
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_14">Set_Field_Type</A>);
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.IntField;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
new file mode 100644 (file)
index 0000000..ec45a06
--- /dev/null
@@ -0,0 +1,56 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-ipv4_address.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-ipv4_address.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--          Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#44_58">IPV4_Address</A><FONT COLOR=red><A NAME="41_53"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate
+     (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#41_53">IPV4_Address</A>);
+
+   <b>type</b> <FONT COLOR=red><A NAME="45_9">Internet_V4_Address_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="47_14"></A></FONT> (<FONT COLOR=red><A NAME="47_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                             Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#45_9">Internet_V4_Address_Field</A>);
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_14">Set_Field_Type</A>);
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
new file mode 100644 (file)
index 0000000..e92389e
--- /dev/null
@@ -0,0 +1,60 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-numeric.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-numeric.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--             Terminal_Interface.Curses.Forms.Field_Types.Numeric          --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#44_58">Numeric</A><FONT COLOR=red><A NAME="41_53"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#41_53">Numeric</A>);
+
+   <b>type</b> <FONT COLOR=red><A NAME="44_9">Numeric_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b>
+      <b>record</b>
+         Precision   : Natural;
+         Lower_Limit : Float;
+         Upper_Limit : Float;
+      <b>end</b> <b>record</b>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                             Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#44_9">Numeric_Field</A>);
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_14">Set_Field_Type</A>);
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Numeric;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
new file mode 100644 (file)
index 0000000..4c90c84
--- /dev/null
@@ -0,0 +1,60 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-regexp.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-regexp.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--              Terminal_Interface.Curses.Forms.Field_Types.RegExp          --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#44_58">RegExp</A><FONT COLOR=red><A NAME="41_53"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#41_53">RegExp</A>);
+
+   <b>type</b> <FONT COLOR=red><A NAME="44_9">String_Access</A></FONT> <b>is</b> <b>access</b> String;
+
+   <b>type</b> <FONT COLOR=red><A NAME="46_9">Regular_Expression_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b>
+      <b>record</b>
+         Regular_Expression : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#44_9">String_Access</A>;
+      <b>end</b> <b>record</b>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#46_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                             Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#46_9">Regular_Expression_Field</A>);
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_14">Set_Field_Type</A>);
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.RegExp;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
new file mode 100644 (file)
index 0000000..57bdc25
--- /dev/null
@@ -0,0 +1,101 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-user-choice.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-user-choice.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--           Terminal_Interface.Curses.Forms.Field_Types.User.Choice        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#43_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#45_63">Choice</A><FONT COLOR=red><A NAME="43_58"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate
+     (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#43_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#43_58">Choice</A>);
+
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+   <b>subtype</b> <FONT COLOR=red><A NAME="48_12">C_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+
+   <b>type</b> <FONT COLOR=red><A NAME="50_9">User_Defined_Field_Type_With_Choice</A></FONT> <b>is</b> <b>abstract</b> <b>new</b>
+     <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
+  <FONT COLOR=green><EM>--  This is the root of the mechanism we use to create field types in</EM></FONT>
+  <FONT COLOR=green><EM>--  Ada95 that allow the prev/next mechanism. You should your own type</EM></FONT>
+  <FONT COLOR=green><EM>--  derive from this one and implement the Field_Check, Character_Check</EM></FONT>
+  <FONT COLOR=green><EM>--  Next and Previous functions for your own type.</EM></FONT>
+
+   <b>type</b> User_Defined_Field_Type_With_Choice_Access <b>is</b> <b>access</b> <b>all</b>
+     <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#50_9">User_Defined_Field_Type_With_Choice</A>'Class;
+
+   <b>function</b> <FONT COLOR=red><A NAME="60_13">Next</A></FONT>
+     (<FONT COLOR=red><A NAME="61_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+      Typ : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#50_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean
+      <b>is</b> <b>abstract</b>;
+  <FONT COLOR=green><EM>--  If True is returned, the function successfully generated a next</EM></FONT>
+  <FONT COLOR=green><EM>--  value into the fields buffer.</EM></FONT>
+
+   <b>function</b> <FONT COLOR=red><A NAME="67_13">Previous</A></FONT>
+     (<FONT COLOR=red><A NAME="68_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+      Typ : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#50_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean
+      <b>is</b> <b>abstract</b>;
+  <FONT COLOR=green><EM>--  If True is returned, the function successfully generated a previous</EM></FONT>
+  <FONT COLOR=green><EM>--  value into the fields buffer.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  +----------------------------------------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  | Private Part.</EM></FONT>
+  <FONT COLOR=green><EM>--  |</EM></FONT>
+<b>private</b>
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#78_13">C_Generic_Choice</A><FONT COLOR=red><A NAME="80_13"></A></FONT> <b>return</b> C_Field_Type;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#52_13">Generic_Next</A><FONT COLOR=red><A NAME="82_13"></A></FONT> (<FONT COLOR=red><A NAME="82_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                          <FONT COLOR=red><A NAME="83_27">Usr</A></FONT> : <A HREF="system__ads.htm#23_9">System</A>.<A HREF="system__ads.htm#49_9">Address</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>;
+   <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13">Generic_Next</A>);
+  <FONT COLOR=green><EM>--  This is the generic next Choice_Function for the low-level fieldtype</EM></FONT>
+  <FONT COLOR=green><EM>--  representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
+  <FONT COLOR=green><EM>--  the call to the Next implementation for the type.</EM></FONT>
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#64_13">Generic_Prev</A><FONT COLOR=red><A NAME="89_13"></A></FONT> (<FONT COLOR=red><A NAME="89_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                          <FONT COLOR=red><A NAME="90_27">Usr</A></FONT> : <A HREF="system__ads.htm#23_9">System</A>.<A HREF="system__ads.htm#49_9">Address</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>;
+   <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13">Generic_Prev</A>);
+  <FONT COLOR=green><EM>--  This is the generic prev Choice_Function for the low-level fieldtype</EM></FONT>
+  <FONT COLOR=green><EM>--  representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
+  <FONT COLOR=green><EM>--  the call to the Previous implementation for the type.</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
new file mode 100644 (file)
index 0000000..508b3e6
--- /dev/null
@@ -0,0 +1,102 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types-user.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-user.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--               Terminal_Interface.Curses.Forms.Field_Types.User           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#45_58">User</A><FONT COLOR=red><A NAME="43_53"></A></FONT> <b>is</b>
+   <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#43_53">User</A>);
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+   <b>subtype</b> <FONT COLOR=red><A NAME="46_12">C_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+
+   <b>type</b> <FONT COLOR=red><A NAME="48_9">User_Defined_Field_Type</A></FONT> <b>is</b> <b>abstract</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
+  <FONT COLOR=green><EM>--  This is the root of the mechanism we use to create field types in</EM></FONT>
+  <FONT COLOR=green><EM>--  Ada95. You should your own type derive from this one and implement</EM></FONT>
+  <FONT COLOR=green><EM>--  the Field_Check and Character_Check functions for your own type.</EM></FONT>
+
+   <b>type</b> User_Defined_Field_Type_Access <b>is</b> <b>access</b> <b>all</b>
+     <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>'Class;
+
+   <b>function</b> <FONT COLOR=red><A NAME="56_13">Field_Check</A></FONT>
+     (<FONT COLOR=red><A NAME="57_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+      Typ : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>) <b>return</b> Boolean
+      <b>is</b> <b>abstract</b>;
+  <FONT COLOR=green><EM>--  If True is returned, the field is considered valid, otherwise it is</EM></FONT>
+  <FONT COLOR=green><EM>--  invalid.</EM></FONT>
+
+   <b>function</b> <FONT COLOR=red><A NAME="63_13">Character_Check</A></FONT>
+     (Ch  : Character;
+      Typ : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>) <b>return</b> Boolean
+      <b>is</b> <b>abstract</b>;
+  <FONT COLOR=green><EM>--  If True is returned, the character is considered as valid for the</EM></FONT>
+  <FONT COLOR=green><EM>--  field, otherwise as invalid.</EM></FONT>
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#49_14">Set_Field_Type</A><FONT COLOR=red><A NAME="70_14"></A></FONT> (<FONT COLOR=red><A NAME="70_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                             Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>);
+  <FONT COLOR=green><EM>--  This should work for all types derived from User_Defined_Field_Type.</EM></FONT>
+  <FONT COLOR=green><EM>--  No need to reimplement it for your derived type.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  +----------------------------------------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  | Private Part.</EM></FONT>
+  <FONT COLOR=green><EM>--  | Used by the Choice child package.</EM></FONT>
+<b>private</b>
+   <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#107_13">C_Generic_Type</A><FONT COLOR=red><A NAME="81_13"></A></FONT>   <b>return</b> C_Field_Type;
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#83_13">Generic_Field_Check</A><FONT COLOR=red><A NAME="83_13"></A></FONT> (<FONT COLOR=red><A NAME="83_34">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+                                 <FONT COLOR=red><A NAME="84_34">Usr</A></FONT> : <A HREF="system__ads.htm#23_9">System</A>.<A HREF="system__ads.htm#49_9">Address</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+   <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_13">Generic_Field_Check</A>);
+  <FONT COLOR=green><EM>--  This is the generic Field_Check_Function for the low-level fieldtype</EM></FONT>
+  <FONT COLOR=green><EM>--  representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
+  <FONT COLOR=green><EM>--  the call to the Field_Check implementation for the type.</EM></FONT>
+
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#94_13">Generic_Char_Check</A><FONT COLOR=red><A NAME="90_13"></A></FONT> (Ch  : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+                                <FONT COLOR=red><A NAME="91_33">Usr</A></FONT> : <A HREF="system__ads.htm#23_9">System</A>.<A HREF="system__ads.htm#49_9">Address</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+   <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_13">Generic_Char_Check</A>);
+  <FONT COLOR=green><EM>--  This is the generic Char_Check_Function for the low-level fieldtype</EM></FONT>
+  <FONT COLOR=green><EM>--  representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
+  <FONT COLOR=green><EM>--  the call to the Character_Check implementation for the type.</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.User;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_types__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_types__ads.htm
new file mode 100644 (file)
index 0000000..9e086ca
--- /dev/null
@@ -0,0 +1,245 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_types.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                 Terminal_Interface.Curses.Forms.Field_Types              --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.11 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Interfaces.C;
+
+<b>package</b> Terminal_Interface.Curses.Forms.Field_Types <b>is</b>
+   <b>pragma</b> Preelaborate <A HREF="i-c__ads.htm>0_20">(</A>Terminal_Interface.Curses.Forms.Field_Types);
+   <b>use</b> <b>type</b><FONT COLOR=red><A NAME="46_12"> </A></FONT>Interfaces.C.int;
+   <b>subtype</b> C_Int <b>is</b> Interfaces.C.int;
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_fieldtype.3x.html">form_fieldtype.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>type</b> Field_Type <b>is</b> <b>abstract</b> <b>tagged</b> <b>null</b> <b>record</b>;
+  <FONT COLOR=green><EM>--  Abstract base type for all field types. A concrete field type</EM></FONT>
+  <FONT COLOR=green><EM>--  is an extension that adds some data elements describing formats or</EM></FONT>
+  <FONT COLOR=green><EM>--  boundary values for the type and validation routines.</EM></FONT>
+  <FONT COLOR=green><EM>--  For the builtin low-level fieldtypes, the validation routines are</EM></FONT>
+  <FONT COLOR=green><EM>--  already defined by the low-level C library.</EM></FONT>
+  <FONT COLOR=green><EM>--  The builtin types like Alpha or AlphaNumeric etc. are defined in</EM></FONT>
+  <FONT COLOR=green><EM>--  child packages of this package. You may use one of them as example</EM></FONT>
+  <FONT COLOR=green><EM>--  how to create you own child packages for low-level field types that</EM></FONT>
+  <FONT COLOR=green><EM>--  you may have already written in C.</EM></FONT>
+
+   <b>type</b> Field_Type_Access <b>is</b> <b>access</b> <b>all</b> Field_Type'Class;
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>procedure</b> Set_Field_Type (Fld      : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field</A>;
+                             Fld_Type : <b>in</b> Field_Type) <b>is</b> <b>abstract</b>;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_fieldtype.3x.html">set_field_type()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  But: we hide the vararg mechanism of the C interface. You always</EM></FONT>
+  <FONT COLOR=green><EM>--       have to pass a single Field_Type parameter.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  ---------------------------------------------------------------------</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field_validation.3x.html">form_field_validation.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>function</b> Get_Type (Fld : <b>in</b> Field) <b>return</b> Field_Type_Access;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_validation.3x.html">field_type()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: field_arg()</EM></FONT>
+  <FONT COLOR=green><EM>--  In Ada95 we can combine these. If you try to retrieve the field type</EM></FONT>
+  <FONT COLOR=green><EM>--  that is not defined as extension of the abstract tagged type above,</EM></FONT>
+  <FONT COLOR=green><EM>--  you will raise a Form_Exception.</EM></FONT>
+  <FONT COLOR=green><EM>--  This is not inlined</EM></FONT>
+
+  <FONT COLOR=green><EM>--  +----------------------------------------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  | Private Part.</EM></FONT>
+  <FONT COLOR=green><EM>--  | Most of this is used by the implementations of the child packages.</EM></FONT>
+  <FONT COLOR=green><EM>--  |</EM></FONT>
+<b>private</b>
+   <b>type</b> Makearg_Function <b>is</b> <b>access</b>
+     <b>function</b> (Args : System.Address) <b>return</b> System.Address;
+   <b>pragma</b> Convention (C, Makearg_Function);
+
+   <b>type</b> Copyarg_Function <b>is</b> <b>access</b>
+     <b>function</b> (Usr : System.Address) <b>return</b> System.Address;
+   <b>pragma</b> Convention (C, Copyarg_Function);
+
+   <b>type</b> Freearg_Function <b>is</b> <b>access</b>
+     <b>procedure</b> (Usr : System.Address);
+   <b>pragma</b> Convention (C, Freearg_Function);
+
+   <b>type</b> Field_Check_Function<FONT COLOR=red><A NAME="105_29"> </A></FONT><b>is</b> <b>access</b>
+     <b>function</b> (Fld : Field; Usr : System.Address) <b>return</b> C_Int;
+   <b>pragma</b> Convention (C, Field_Check_Function);
+
+   <b>type</b> Char_Check_Function<FONT COLOR=red><A NAME="109_28"> </A></FONT><b>is</b> <b>access</b>
+     <b>function</b> (Ch : C_Int<A HREF="terminal_interface-curses-forms-field_types__ads.htm<08_9">;</A> Usr : System.Address) <b>return</b> C_Int;
+   <b>pragma</b> Convention (C, Char_Check_Function);
+
+   <b>type</b> Choice_Function <b>is</b> <b>access</b>
+     <b>function</b> (Fld : Field; Usr : System.Address) <b>return</b> C_Int;
+   <b>pragma</b> Convention (C, Choice_Function);
+
+  <FONT COLOR=green><EM>--  +----------------------------------------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  | This must be in sync with the FIELDTYPE structure in form.h</EM></FONT>
+  <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>type</b> Low_Level_Field_Type <b>is</b>
+      <b>record</b>
+         Status :              <A HREF="interfac__ads.htm>3_9">Interfaces</A>.<A HREF="i-c__ads.htm>0_20">C</A>.<A HREF="i-c__ads.htm#37_9">short</A>;
+         <FONT COLOR=red><A NAME="123_10">Ref_Count</A></FONT> :           <A HREF="system__ads.htm>3_9">Interfaces</A>.C.long;
+         Left, Right :         <A HREF="terminal_interface-curses-forms-field_types__ads.htm#92_9">System</A>.Address;
+         Makearg :             <A HREF="terminal_interface-curses-forms-field_types__ads.htm#96_9">Makearg_Function</A>;
+         Copyarg :             <A HREF="terminal_interface-curses-forms-field_types__ads.htm<00_9">Copyarg_Function</A>;
+         Freearg :             <A HREF="terminal_interface-curses-forms-field_types__ads.htm<04_9">Freearg_Function</A>;
+         Fcheck :              <A HREF="terminal_interface-curses-forms-field_types__ads.htm<08_9">Field_Check_Function</A>;
+         Ccheck :              <A HREF="terminal_interface-curses-forms-field_types__ads.htm<12_9">Char_Check_Function</A>;
+         Next, Prev :          Choice_Function;
+      <b>end</b> <b>record</b>;
+   <b>pragma</b> Convention (C, Low_Level_Field_Type);
+   <b>type</b> C_Field_Type <b>is</b> <b>access</b> <b>all</b> Low_Level_Field_Type;
+
+   Null_Field_Type   : <b>constant</b> C_Field_Type := <b>null</b>;
+
+  <FONT COLOR=green><EM>--  +----------------------------------------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  | This four low-level fieldtypes are the ones associated with</EM></FONT>
+  <FONT COLOR=green><EM>--  | fieldtypes handled by this binding. Any other low-level fieldtype</EM></FONT>
+  <FONT COLOR=green><EM>--  | will result in a Form_Exception is function Get_Type.</EM></FONT>
+  <FONT COLOR=green><EM>--  |</EM></FONT>
+   M_Generic_Type   : C_Field_Type := <b>null</b>;
+   M_Generic_Choice : C_Field_Type := <b>null</b>;
+   M_Builtin_Router : C_Field_Type := <b>null</b>;
+   M_Choice_Router  : C_Field_Type := <b>null</b>;
+
+  <FONT COLOR=green><EM>--  Two wrapper functions to access those low-level fieldtypes defined</EM></FONT>
+  <FONT COLOR=green><EM>--  in this package.</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm>64_13">C_Builtin_Router</A><FONT COLOR=red><A NAME="149_13"></A></FONT> <b>return</b> C_Field_Type;
+   <b>function</b> C_Choice_Router  <b>return</b> C_Field_Type;
+
+   <b>procedure</b> Wrap_Builtin (Fld : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field</A>;
+                           Typ : Field_Type'Class<A HREF="terminal_interface-curses-forms-field_types__ads.htm<48_13">;</A>
+                           Cft : C_Field_Type := C_Builtin_Router);
+  <FONT COLOR=green><EM>--  This procedure has to be called by the Set_Field_Type implementation</EM></FONT>
+  <FONT COLOR=green><EM>--  for builtin low-level fieldtypes to replace it by an Ada95</EM></FONT>
+  <FONT COLOR=green><EM>--  conformant Field_Type object.</EM></FONT>
+  <FONT COLOR=green><EM>--  The parameter Cft must be C_Builtin_Router for regular low-level</EM></FONT>
+  <FONT COLOR=green><EM>--  fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for</EM></FONT>
+  <FONT COLOR=green><EM>--  low-level fieldtypes witch choice functions (like TYP_ENUM).</EM></FONT>
+  <FONT COLOR=green><EM>--  Any other value will raise a Form_Exception.</EM></FONT>
+
+   <b>function</b> Make_Arg (Args : System.Address) <b>return</b> System.Address;
+   <b>pragma</b> Convention (C, Make_Arg);
+  <FONT COLOR=green><EM>--  This is the Makearg_Function for the internal low-level types</EM></FONT>
+  <FONT COLOR=green><EM>--  introduced by this binding.</EM></FONT>
+
+   <b>function</b> Copy_Arg (Usr<A HREF="terminal_interface-curses-forms-field_types__ads.htm<67_13"> </A>: System.Address) <b>return</b> System.Address;
+   <b>pragma</b> Convention (C, Copy_Arg);
+  <FONT COLOR=green><EM>--  This is the Copyarg_Function for the internal low-level types</EM></FONT>
+  <FONT COLOR=green><EM>--  introduced by this binding.</EM></FONT>
+
+   <b>procedure</b> Free_Arg (Usr : System.Address);
+   <b>pragma</b> Convention (C, Free_Arg);
+  <FONT COLOR=green><EM>--  This is the Freearg_Function for the internal low-level types</EM></FONT>
+  <FONT COLOR=green><EM>--  introduced by this binding.</EM></FONT>
+
+   <b>function</b> Field_Check_Router (<FONT COLOR=red><A NAME="178_33">Fld</A></FONT> : <A HREF="system__ads.htm>3_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm<77_13"> </A>      Usr : System.Address) <b>return</b> C_Int;
+   <b>pragma</b> Convention (C, Field_Check_Router);
+  <FONT COLOR=green><EM>--  This is the Field_Check_Function for the internal low-level types</EM></FONT>
+  <FONT COLOR=green><EM>--  introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
+  <FONT COLOR=green><EM>--  type. It routes the call to the corresponding low-level validation</EM></FONT>
+  <FONT COLOR=green><EM>--  function.</EM></FONT>
+
+   <b>function</b> Char_Check_Router (<FONT COLOR=red><A NAME="186_32">Ch</A></FONT> : C_Int;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm<85_13"> </A>     Usr : System.Address) <b>return</b> C_Int;
+   <b>pragma</b> Convention (C, Char_Check_Router);
+  <FONT COLOR=green><EM>--  This is the Char_Check_Function for the internal low-level types</EM></FONT>
+  <FONT COLOR=green><EM>--  introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
+  <FONT COLOR=green><EM>--  type. It routes the call to the corresponding low-level validation</EM></FONT>
+  <FONT COLOR=green><EM>--  function.</EM></FONT>
+
+   <b>function</b> Next_Router (<FONT COLOR=red><A NAME="194_26">Fld</A></FONT> : <A HREF="system__ads.htm>3_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm<93_13">Usr</A> : System.Address) <b>return</b> C_Int;
+   <b>pragma</b> Convention (C, Next_Router);
+  <FONT COLOR=green><EM>--  This is the Choice_Function for the internal low-level types</EM></FONT>
+  <FONT COLOR=green><EM>--  introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
+  <FONT COLOR=green><EM>--  type. It routes the call to the corresponding low-level next_choice</EM></FONT>
+  <FONT COLOR=green><EM>--  function.</EM></FONT>
+
+   <b>function</b> Prev_Router (<FONT COLOR=red><A NAME="202_26">Fld</A></FONT> : <A HREF="system__ads.htm>3_9">Field</A>;
+                         <A HREF="terminal_interface-curses-forms-field_types__ads.htm>01_13">Usr</A> : System.Address) <b>return</b> C_Int;
+   <b>pragma</b> Convention (C, Prev_Router);
+  <FONT COLOR=green><EM>--  This is the Choice_Function for the internal low-level types</EM></FONT>
+  <FONT COLOR=green><EM>--  introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
+  <FONT COLOR=green><EM>--  type. It routes the call to the corresponding low-level prev_choice</EM></FONT>
+  <FONT COLOR=green><EM>--  function.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  This is the Argument structure maintained by all low-level field types</EM></FONT>
+  <FONT COLOR=green><EM>--  introduced by this binding.</EM></FONT>
+   <b>type</b> Argument <b>is</b> <b>record</b>
+      <FONT COLOR=red><A NAME="213_7">Typ</A></FONT> : <A HREF="system__ads.htm>3_9">Field_Type_Access</A>;  <FONT COLOR=green><EM>--  the Field_Type creating this record</EM></FONT>
+      Usr : System.Address;     <FONT COLOR=green><EM>--  original arg for builtin low-level types</EM></FONT>
+      Cft : C_Field_Type;       <FONT COLOR=green><EM>--  the original low-level type</EM></FONT>
+   <b>end</b> <b>record</b>;
+   <b>type</b> Argument_Access <b>is</b> <b>access</b> <b>all</b> Argument;
+
+  <FONT COLOR=green><EM>--  +----------------------------------------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  |</EM></FONT>
+  <FONT COLOR=green><EM>--  | Some Imports of libform routines to deal with low-level fieldtypes.</EM></FONT>
+  <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> New_Fieldtype (Fcheck : <A HREF="terminal_interface-curses-forms-field_types__ads.htm<08_9">Field_Check_Function</A>;
+                           Ccheck : Char_Check_Function)
+     <b>return</b> C_Field_Type;
+   <b>pragma</b> Import (C, New_Fieldtype, "new_fieldtype");
+
+   <b>function</b> Set_Fieldtype_Arg (Cft : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#92_9">C_Field_Type</A>;
+                               Mak : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#96_9">Makearg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm<67_13">Make_Arg</A>'<b>Access</b>;
+                               Cop : <A HREF="terminal_interface-curses-forms-field_types__ads.htm<00_9">Copyarg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm<72_14">Copy_Arg</A>'<b>Access</b>;
+            <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12"> </A>                  Fre : Freearg_Function := Free_Arg'<b>Access</b>)
+     <b>return</b> C_Int;
+   <b>pragma</b> Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
+
+   <b>function</b> Set_Fieldtype_Choice (Cft : C_Field_Type;
+            <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12"> </A>                     Next, Prev : Choice_Function)
+     <b>return</b> C_Int;
+   <b>pragma</b> Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
new file mode 100644 (file)
index 0000000..0c554af
--- /dev/null
@@ -0,0 +1,75 @@
+<HEAD><TITLE>terminal_interface-curses-forms-field_user_data.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_user_data.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--               Terminal_Interface.Curses.Forms.Field_User_Data            --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="44_9">User</A></FONT> <b>is</b> <b>limited</b> <b>private</b>;
+   <b>type</b> <A HREF="terminal_interface__ads.htm#41_9">User_Access</A> <b>is</b> <b>access</b> User<A HREF="terminal_interface-curses-forms__ads.htm#49_35">;</A>
+<b>package</b> Terminal_Interface.Curses.Forms.Field_User_Data <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Forms.Field_User_Data);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field_userptr.3x.html">form_field_userptr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>procedure</b> Set_User_Data (Fld  : <b>in</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">Field</A>;
+                            Data : <b>in</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_userptr.3x.html">set_field_userptr</A></EM></FONT>
+   <b>pragma</b> Inline (Set_User_Data);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>procedure</b> Get_User_Data (Fld  : <b>in</b>  <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">Field</A>;
+                            Data : <b>out</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>function</b> Get_User_Data (Fld  : <b>in</b>  Field) <b>return</b> User_Access;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Sama as function</EM></FONT>
+   <b>pragma</b> Inline (Get_User_Data);
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
new file mode 100644 (file)
index 0000000..21453c8
--- /dev/null
@@ -0,0 +1,75 @@
+<HEAD><TITLE>terminal_interface-curses-forms-form_user_data.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-form_user_data.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                Terminal_Interface.Curses.Forms.Form_User_Data            --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.11 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="44_9">User</A></FONT> <b>is</b> <b>limited</b> <b>private</b>;
+   <b>type</b> <A HREF="terminal_interface__ads.htm#41_9">User_Access</A> <b>is</b> <b>access</b> User<A HREF="terminal_interface-curses-forms__ads.htm#49_35">;</A>
+<b>package</b> Terminal_Interface.Curses.Forms.Form_User_Data <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Forms.Form_User_Data);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_userptr.3x.html">form_userptr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>procedure</b> Set_User_Data (Frm  : <b>in</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">Form</A>;
+                            Data : <b>in</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_userptr.3x.html">set_form_userptr</A></EM></FONT>
+   <b>pragma</b> Inline (Set_User_Data);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>procedure</b> Get_User_Data (Frm  : <b>in</b>  <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">Form</A>;
+                            Data : <b>out</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>function</b> Get_User_Data (Frm  : <b>in</b>  Form) <b>return</b> User_Access;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Get_User_Data);
+
+<b>end</b> Terminal_Interface.Curses.Forms.Form_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-forms__ads.htm b/Ada95/html/ada/terminal_interface-curses-forms__ads.htm
new file mode 100644 (file)
index 0000000..6390aee
--- /dev/null
@@ -0,0 +1,785 @@
+<HEAD><TITLE>terminal_interface-curses-forms.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                      Terminal_Interface.Curses.Form                      --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.20 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  form binding.</EM></FONT>
+<FONT COLOR=green><EM>--  This module is generated. Please don't change it manually!</EM></FONT>
+<FONT COLOR=green><EM>--  Run the generator instead.</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<b>with</b> <A HREF="ada__ads.htm<8_9">System</A>;
+<b>with</b> <A HREF="interfac__ads.htm>3_9">Ada</A>.Characters.Latin_1;
+<b>with</b> Interfaces.C;
+
+<b>package</b> Terminal_Interface.Curses.Forms <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Forms);
+   <b>pragma</b> Linker_Options ("-lform");
+   <b>pragma</b> Linker_Options ("-lAdaCurses");
+   <b>pragma</b> Linker_Options ("-lncurses");
+
+   Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
+
+   <b>type</b> <FONT COLOR=red><A NAME="58_9">Field</A></FONT>        <b>is</b> <b>private</b>;
+   <b>type</b> Form         <b>is</b> <b>private</b>;
+
+   <FONT COLOR=red><A NAME="61_4">Null_Field</A></FONT>        : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#58_9">Field</A>;
+   Null_Form         : <b>constant</b> Form;
+
+   <b>type</b> Field_Justification <b>is</b> (None,
+                                Left,
+                                Center,
+                                Right);
+
+   <b>pragma</b> Warnings (Off);
+   <b>type</b> Field_Option_Set <b>is</b>
+      <b>record</b>
+         Visible     : Boolean;
+         Active      : Boolean;
+         Public      : Boolean;
+         Edit        : Boolean;
+         Wrap        : Boolean;
+         Blank       : Boolean;
+         Auto_Skip   : Boolean;
+         Null_Ok     : Boolean;
+         Pass_Ok     : Boolean;
+         Static      : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses-forms__ads.htm#69_9">;</A>
+   <b>pragma</b> Pack (Field_Option_Set);
+   <b>pragma</b> Convention (C, Field_Option_Set);
+
+   <b>for</b> Field_Option_Set <b>use</b>
+      <b>record</b>
+         Visible     <b>at</b> 0 <b>range</b>  0 ..  0;
+         Active      <b>at</b> 0 <b>range</b>  1 ..  1;
+         Public      <b>at</b> 0 <b>range</b>  2 ..  2;
+         Edit        <b>at</b> 0 <b>range</b>  3 ..  3;
+         Wrap        <b>at</b> 0 <b>range</b>  4 ..  4;
+         Blank       <b>at</b> 0 <b>range</b>  5 ..  5;
+         Auto_Skip   <b>at</b> 0 <b>range</b>  6 ..  6;
+         Null_Ok     <b>at</b> 0 <b>range</b>  7 ..  7;
+         Pass_Ok     <b>at</b> 0 <b>range</b>  8 ..  8;
+         Static      <b>at</b> 0 <b>range</b>  9 ..  9;
+      <b>end</b> <b>record</b>;
+   <b>for</b> Field_Option_Set'Size <b>use</b> 32;
+  <FONT COLOR=green><EM>--  Please note: this rep. clause is generated and may be</EM></FONT>
+  <FONT COLOR=green><EM>--               different on your system.Dnl</EM></FONT>
+
+   <b>pragma</b> Warnings (On);
+
+   <b>function</b> Default_Field_Options <b>return</b> Field_Option_Set;
+  <FONT COLOR=green><EM>--  The initial defaults for the field options.</EM></FONT>
+   <b>pragma</b> Inline (Default_Field_Options);
+
+   <b>pragma</b> Warnings (Off);
+   <b>type</b> Form_Option_Set <b>is</b>
+      <b>record</b>
+         NL_Overload : Boolean;
+         BS_Overload : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses-forms__ads.htm<09_9">;</A>
+   <b>pragma</b> Pack (Form_Option_Set);
+   <b>pragma</b> Convention (C, Form_Option_Set);
+
+   <b>for</b> Form_Option_Set <b>use</b>
+      <b>record</b>
+         NL_Overload <b>at</b> 0 <b>range</b>  0 ..  0;
+         BS_Overload <b>at</b> 0 <b>range</b>  1 ..  1;
+      <b>end</b> <b>record</b>;
+   <b>for</b> Form_Option_Set'Size <b>use</b> 32;
+  <FONT COLOR=green><EM>--  Please note: this rep. clause is generated and may be</EM></FONT>
+  <FONT COLOR=green><EM>--               different on your system.Dnl</EM></FONT>
+
+   <b>pragma</b> Warnings (On);
+
+   <b>function</b> Default_Form_Options <b>return</b> Form_Option_Set;
+  <FONT COLOR=green><EM>--  The initial defaults for the form options.</EM></FONT>
+   <b>pragma</b> Inline (Default_Form_Options);
+
+   <b>type</b> Buffer_Number <b>is</b> <b>new</b> Natural;
+
+   <b>type</b> Field_Array <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> <b>aliased</b> Field;
+   <b>pragma</b> Convention (C, Field_Array);
+
+   <b>type</b> Field_Array_Access <b>is</b> <b>access</b> Field_Array;
+
+   <b>procedure</b> Free (FA          : <b>in</b> <b>out</b> Field_Array_Access;
+                   Free_Fields : <b>in</b> Boolean := False);
+  <FONT COLOR=green><EM>--  Release the memory for an allocated field array</EM></FONT>
+  <FONT COLOR=green><EM>--  If Free_Fields is True, call Delete() for all the fields in</EM></FONT>
+  <FONT COLOR=green><EM>--  the array.</EM></FONT>
+
+   <b>subtype</b> Form_Request_Code <b>is</b> Key_Code <b>range</b> (Key_Max + 1) .. (Key_Max + 57);
+
+  <FONT COLOR=green><EM>--  The prefix F_ stands for "Form Request"</EM></FONT>
+   F_Next_Page                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 1;
+   F_Previous_Page            : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 2;
+   F_First_Page               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 3;
+   F_Last_Page                : <b>constant</b> Form_Request_Code := Key_Max + 4;
+
+   F_Next_Field               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 5;
+   F_Previous_Field           : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 6;
+   F_First_Field              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 7;
+   F_Last_Field               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 8;
+   F_Sorted_Next_Field        : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 9;
+   F_Sorted_Previous_Field    : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 10;
+   F_Sorted_First_Field       : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 11;
+   F_Sorted_Last_Field        : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 12;
+   F_Left_Field               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 13;
+   F_Right_Field              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 14;
+   F_Up_Field                 : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 15;
+   F_Down_Field               : <b>constant</b> Form_Request_Code := Key_Max + 16;
+
+   F_Next_Char                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 17;
+   F_Previous_Char            : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 18;
+   F_Next_Line                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 19;
+   F_Previous_Line            : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 20;
+   F_Next_Word                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 21;
+   F_Previous_Word            : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 22;
+   F_Begin_Field              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 23;
+   F_End_Field                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 24;
+   F_Begin_Line               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 25;
+   F_End_Line                 : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 26;
+   F_Left_Char                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 27;
+   F_Right_Char               : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 28;
+   F_Up_Char                  : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 29;
+   F_Down_Char                : <b>constant</b> Form_Request_Code := Key_Max + 30;
+
+   F_New_Line                 : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 31;
+   F_Insert_Char              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 32;
+   F_Insert_Line              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 33;
+   F_Delete_Char              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 34;
+   F_Delete_Previous          : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 35;
+   F_Delete_Line              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 36;
+   F_Delete_Word              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 37;
+   F_Clear_EOL                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 38;
+   F_Clear_EOF                : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 39;
+   F_Clear_Field              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 40;
+   F_Overlay_Mode             : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 41;
+   F_Insert_Mode              : <b>constant</b> Form_Request_Code := Key_Max + 42;
+
+  <FONT COLOR=green><EM>--  Vertical Scrolling</EM></FONT>
+   F_ScrollForward_Line       : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 43;
+   F_ScrollBackward_Line      : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 44;
+   F_ScrollForward_Page       : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 45;
+   F_ScrollBackward_Page      : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 46;
+   F_ScrollForward_HalfPage   : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 47;
+   F_ScrollBackward_HalfPage  : <b>constant</b> Form_Request_Code := Key_Max + 48;
+
+  <FONT COLOR=green><EM>--  Horizontal Scrolling</EM></FONT>
+   F_HScrollForward_Char      : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 49;
+   F_HScrollBackward_Char     : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 50;
+   F_HScrollForward_Line      : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 51;
+   F_HScrollBackward_Line     : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 52;
+   F_HScrollForward_HalfLine  : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 53;
+   F_HScrollBackward_HalfLine : <b>constant</b> Form_Request_Code := Key_Max + 54;
+
+   F_Validate_Field           : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 55;
+   F_Next_Choice              : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 56;
+   F_Previous_Choice          : <b>constant</b> Form_Request_Code := Key_Max + 57;
+
+  <FONT COLOR=green><EM>--  For those who like the old 'C' style request names</EM></FONT>
+   REQ_NEXT_PAGE    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Page;
+   REQ_PREV_PAGE    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Page;
+   REQ_FIRST_PAGE   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_First_Page;
+   REQ_LAST_PAGE    : Form_Request_Code <b>renames</b> F_Last_Page;
+
+   REQ_NEXT_FIELD   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Field;
+   REQ_PREV_FIELD   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Field;
+   REQ_FIRST_FIELD  : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_First_Field;
+   REQ_LAST_FIELD   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Last_Field;
+   REQ_SNEXT_FIELD  : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Sorted_Next_Field;
+   REQ_SPREV_FIELD  : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Sorted_Previous_Field;
+   REQ_SFIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Sorted_First_Field;
+   REQ_SLAST_FIELD  : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Sorted_Last_Field;
+   REQ_LEFT_FIELD   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Left_Field;
+   REQ_RIGHT_FIELD  : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Right_Field;
+   REQ_UP_FIELD     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Up_Field;
+   REQ_DOWN_FIELD   : Form_Request_Code <b>renames</b> F_Down_Field;
+
+   REQ_NEXT_CHAR    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Char;
+   REQ_PREV_CHAR    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Char;
+   REQ_NEXT_LINE    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Line;
+   REQ_PREV_LINE    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Line;
+   REQ_NEXT_WORD    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Word;
+   REQ_PREV_WORD    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Word;
+   REQ_BEG_FIELD    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Begin_Field;
+   REQ_END_FIELD    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_End_Field;
+   REQ_BEG_LINE     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Begin_Line;
+   REQ_END_LINE     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_End_Line;
+   REQ_LEFT_CHAR    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Left_Char;
+   REQ_RIGHT_CHAR   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Right_Char;
+   REQ_UP_CHAR      : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Up_Char;
+   REQ_DOWN_CHAR    : Form_Request_Code <b>renames</b> F_Down_Char;
+
+   REQ_NEW_LINE     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_New_Line;
+   REQ_INS_CHAR     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Insert_Char;
+   REQ_INS_LINE     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Insert_Line;
+   REQ_DEL_CHAR     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Delete_Char;
+   REQ_DEL_PREV     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Delete_Previous;
+   REQ_DEL_LINE     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Delete_Line;
+   REQ_DEL_WORD     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Delete_Word;
+   REQ_CLR_EOL      : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Clear_EOL;
+   REQ_CLR_EOF      : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Clear_EOF;
+   REQ_CLR_FIELD    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Clear_Field;
+   REQ_OVL_MODE     : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Overlay_Mode;
+   REQ_INS_MODE     : Form_Request_Code <b>renames</b> F_Insert_Mode;
+
+   REQ_SCR_FLINE    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollForward_Line;
+   REQ_SCR_BLINE    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollBackward_Line;
+   REQ_SCR_FPAGE    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollForward_Page;
+   REQ_SCR_BPAGE    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollBackward_Page;
+   REQ_SCR_FHPAGE   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollForward_HalfPage;
+   REQ_SCR_BHPAGE   : Form_Request_Code <b>renames</b> F_ScrollBackward_HalfPage;
+
+   REQ_SCR_FCHAR    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollForward_Char;
+   REQ_SCR_BCHAR    : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollBackward_Char;
+   REQ_SCR_HFLINE   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollForward_Line;
+   REQ_SCR_HBLINE   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollBackward_Line;
+   REQ_SCR_HFHALF   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollForward_HalfLine;
+   REQ_SCR_HBHALF   : Form_Request_Code <b>renames</b> F_HScrollBackward_HalfLine;
+
+   REQ_VALIDATION   : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Validate_Field;
+   REQ_NEXT_CHOICE  : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Choice;
+   REQ_PREV_CHOICE  : Form_Request_Code <b>renames</b> F_Previous_Choice;
+
+
+   <b>procedure</b> Request_Name (Key  : <b>in</b> Form_Request_Code;
+                           Name : <b>out</b> String);
+
+   <b>function</b>  Request_Name (Key : Form_Request_Code) <b>return</b> String;
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Request_Name);
+
+  <FONT COLOR=green><EM>------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  Exceptions  --</EM></FONT>
+  <FONT COLOR=green><EM>------------------</EM></FONT>
+   Form_Exception : <b>exception</b>;
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>function</b> Create (Height       : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                    Width        : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
+                    Top          : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                    Left         : Column_Position;
+                    Off_Screen   : <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Natural</A> := 0;
+                    More_Buffers : Buffer_Number := Buffer_Number'First)
+                    <b>return</b> Field;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  An overloaded Create is defined later. Pragma Inline appears there.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>function</b> New_Field (Height       : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                       Width        : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
+                       Top          : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                       Left         : Column_Position;
+                       Off_Screen   : <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Natural</A> := 0;
+                       More_Buffers : Buffer_Number := Buffer_Number'First)
+                       <b>return</b> Field <b>renames</b> Create;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></FONT>
+   <b>pragma</b> Inline (New_Field);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>procedure</b> Delete (Fld : <b>in</b> <b>out</b> Field);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_new.3x.html">free_field()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Reset Fld to Null_Field</EM></FONT>
+  <FONT COLOR=green><EM>--  An overloaded Delete is defined later. Pragma Inline appears there.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_4">|</EM></FONT>
+   <b>function</b> Duplicate (Fld  : <A HREF="terminal_interface-curses__ads.htm#60_9">Field</A>;
+                       Top  : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                       Left : Column_Position) <b>return</b> Field;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_new.3x.html">dup_field()</A></EM></FONT>
+   <b>pragma</b> Inline (Duplicate);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_5">|</EM></FONT>
+   <b>function</b> Link (Fld  : <A HREF="terminal_interface-curses__ads.htm#60_9">Field</A>;
+                  Top  : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                  Left : Column_Position) <b>return</b> Field;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_new.3x.html">link_field()</A></EM></FONT>
+   <b>pragma</b> Inline (Link);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field_just.3x.html">form_field_just.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_6">|</EM></FONT>
+   <b>procedure</b> Set_Justification (Fld  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#63_9">Field</A>;
+                                Just : <b>in</b> Field_Justification := None);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_just.3x.html">set_field_just()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Justification);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_7">|</EM></FONT>
+   <b>function</b> Get_Justification (Fld : Field) <b>return</b> Field_Justification;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_just.3x.html">field_just()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Justification);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_8">|</EM></FONT>
+   <b>procedure</b> Set_Buffer
+     (Fld    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Field</A>;
+      Buffer : <b>in</b> Buffer_Number := Buffer_Number'First;
+      Str    : <b>in</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_buffer()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Not inlined</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_9">|</EM></FONT>
+   <b>procedure</b> Get_Buffer
+     (Fld    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Field</A>;
+      Buffer : <b>in</b> Buffer_Number := Buffer_Number'First;
+      Str    : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></FONT>
+
+   <b>function</b> Get_Buffer
+     (Fld    : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Field</A>;
+      Buffer : <b>in</b> Buffer_Number := Buffer_Number'First) <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same but as function</EM></FONT>
+   <b>pragma</b> Inline (Get_Buffer);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_10">|</EM></FONT>
+   <b>procedure</b> Set_Status (Fld    : <b>in</b> Field;
+                         Status : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_status()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Status);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_11">|</EM></FONT>
+   <b>function</b> Changed (Fld : Field) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_buffer.3x.html">field_status()</A></EM></FONT>
+   <b>pragma</b> Inline (Changed);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_12">|</EM></FONT>
+   <b>procedure</b> Set_Maximum_Size (Fld : <b>in</b> Field;
+                               Max : <b>in</b> Natural := 0);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_max()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Maximum_Size);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_13">|</EM></FONT>
+   <b>procedure</b> Set_Options (Fld     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#69_9">Field</A>;
+                          Options : <b>in</b> Field_Option_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_opts.3x.html">set_field_opts()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_14">|</EM></FONT>
+   <b>procedure</b> Switch_Options (Fld     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#69_9">Field</A>;
+                             Options : <b>in</b> Field_Option_Set;
+                             On      : Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_opts.3x.html">field_opts_on()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: field_opts_off()</EM></FONT>
+  <FONT COLOR=green><EM>--  An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_15">|</EM></FONT>
+   <b>procedure</b> Get_Options (Fld     : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm#69_9">Field</A>;
+                          Options : <b>out</b> Field_Option_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_16">|</EM></FONT>
+   <b>function</b> Get_Options (Fld : Field := Null_Field)
+                         <b>return</b> Field_Option_Set;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_17">|</EM></FONT>
+   <b>procedure</b> Set_Foreground
+     (Fld   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
+      Fore  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_fore()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Foreground);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_18">|</EM></FONT>
+   <b>procedure</b> Foreground (Fld  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
+                         Fore : <b>out</b> Character_Attribute_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_19">|</EM></FONT>
+   <b>procedure</b> Foreground (Fld   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
+                         Fore  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
+                         Color : <b>out</b> Color_Pair);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></FONT>
+   <b>pragma</b> Inline (Foreground);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_20">|</EM></FONT>
+   <b>procedure</b> Set_Background
+     (Fld   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
+      Back  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_back()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Background);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_21">|</EM></FONT>
+   <b>procedure</b> Background (Fld  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
+                         Back : <b>out</b> Character_Attribute_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_22">|</EM></FONT>
+   <b>procedure</b> Background (Fld   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
+                         Back  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
+                         Color : <b>out</b> Color_Pair);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></FONT>
+   <b>pragma</b> Inline (Background);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_23">|</EM></FONT>
+   <b>procedure</b> Set_Pad_Character (Fld : <b>in</b> Field;
+                                Pad : <b>in</b> Character := Space);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_pad()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Pad_Character);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_24">|</EM></FONT>
+   <b>procedure</b> Pad_Character (Fld : <b>in</b>  Field;
+                            Pad : <b>out</b> Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_attributes.3x.html">field_pad()</A></EM></FONT>
+   <b>pragma</b> Inline (Pad_Character);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field_info.3x.html">form_field_info.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_25">|</EM></FONT>
+   <b>procedure</b> Info (Fld                : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#63_12">Field</A>;
+                   Lines              : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                   Columns            : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
+                   First_Row          : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                   First_Column       : <b>out</b> Column_Position;
+                   Off_Screen         : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Natural</A>;
+                   Additional_Buffers : <b>out</b> Buffer_Number);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_info.3x.html">field_info()</A></EM></FONT>
+   <b>pragma</b> Inline (Info);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_26">|</EM></FONT>
+   <b>procedure</b> Dynamic_Info (Fld     : <b>in</b> Field;
+                           Lines   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                           Columns : <b>out</b> Column_Count;
+                           Max     : <b>out</b> Natural);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field_info.3x.html">dynamic_field_info()</A></EM></FONT>
+   <b>pragma</b> Inline (Dynamic_Info);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_win.3x.html">form_win.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_27">|</EM></FONT>
+   <b>procedure</b> Set_Window (<FONT COLOR=red><A NAME="510_26">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Form</A>;
+                         Win : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_win.3x.html">set_form_win()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_28">|</EM></FONT>
+   <b>function</b> Get_Window (Frm : Form) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_win.3x.html">form_win()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_29">|</EM></FONT>
+   <b>procedure</b> Set_Sub_Window (<FONT COLOR=red><A NAME="521_30">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Form</A>;
+                             Win : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_win.3x.html">set_form_sub()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Sub_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_30">|</EM></FONT>
+   <b>function</b> Get_Sub_Window (Frm : Form) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_win.3x.html">form_sub()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Sub_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_31">|</EM></FONT>
+   <b>procedure</b> Scale (Frm     : <b>in</b> Form;
+                    Lines   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                    Columns : <b>out</b> Column_Count);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_win.3x.html">scale_form()</A></EM></FONT>
+   <b>pragma</b> Inline (Scale);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_hook.3x.html">form_hook.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>type</b> Form_Hook_Function <b>is</b> <b>access</b> <b>procedure</b> (Frm : <b>in</b> Form);
+   <b>pragma</b> Convention (C, Form_Hook_Function);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_32">|</EM></FONT>
+   <b>procedure</b> Set_Field_Init_Hook (Frm  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#541_9">Form</A>;
+                                  Proc : <b>in</b> Form_Hook_Function);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_hook.3x.html">set_field_init()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Field_Init_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_33">|</EM></FONT>
+   <b>procedure</b> Set_Field_Term_Hook (Frm  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#541_9">Form</A>;
+                                  Proc : <b>in</b> Form_Hook_Function);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_hook.3x.html">set_field_term()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Field_Term_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_34">|</EM></FONT>
+   <b>procedure</b> Set_Form_Init_Hook (Frm  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#541_9">Form</A>;
+                                 Proc : <b>in</b> Form_Hook_Function);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_hook.3x.html">set_form_init()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Form_Init_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_35">|</EM></FONT>
+   <b>procedure</b> Set_Form_Term_Hook (Frm  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#541_9">Form</A>;
+                                 Proc : <b>in</b> Form_Hook_Function);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_hook.3x.html">set_form_term()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Form_Term_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_36">|</EM></FONT>
+   <b>function</b> Get_Field_Init_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_hook.3x.html">field_init()</A></EM></FONT>
+   <b>pragma</b> Import (C, Get_Field_Init_Hook, "field_init");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_37">|</EM></FONT>
+   <b>function</b> Get_Field_Term_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_hook.3x.html">field_term()</A></EM></FONT>
+   <b>pragma</b> Import (C, Get_Field_Term_Hook, "field_term");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_38">|</EM></FONT>
+   <b>function</b> Get_Form_Init_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_hook.3x.html">form_init()</A></EM></FONT>
+   <b>pragma</b> Import (C, Get_Form_Init_Hook, "form_init");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_39">|</EM></FONT>
+   <b>function</b> Get_Form_Term_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_hook.3x.html">form_term()</A></EM></FONT>
+   <b>pragma</b> Import (C, Get_Form_Term_Hook, "form_term");
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_field.3x.html">form_field.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_40">|</EM></FONT>
+   <b>procedure</b> Redefine (Frm  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<37_9">Form</A>;
+                       Flds : <b>in</b> Field_Array_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></FONT>
+   <b>pragma</b> Inline (Redefine);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_41">|</EM></FONT>
+   <b>procedure</b> Set_Fields (Frm  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<37_9">Form</A>;
+                         Flds : <b>in</b> Field_Array_Access) <b>renames</b> Redefine;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Fields);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_42">|</EM></FONT>
+   <b>function</b> Fields (Frm   : Form;
+                    Index : Positive) <b>return</b> Field;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field.3x.html">form_fields()</A></EM></FONT>
+   <b>pragma</b> Inline (Fields);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_43">|</EM></FONT>
+   <b>function</b> Field_Count (Frm : Form) <b>return</b> Natural;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field.3x.html">field_count()</A></EM></FONT>
+   <b>pragma</b> Inline (Field_Count);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_44">|</EM></FONT>
+   <b>procedure</b> Move (Fld    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Field</A>;
+                   Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                   Column : <b>in</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_field.3x.html">move_field()</A></EM></FONT>
+   <b>pragma</b> Inline (Move);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_new.3x.html">form_new.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_45">|</EM></FONT>
+   <b>function</b> Create (Fields : Field_Array_Access) <b>return</b> Form;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></FONT>
+   <b>pragma</b> Inline (Create);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_46">|</EM></FONT>
+   <b>function</b> New_Form (Fields : Field_Array_Access) <b>return</b> Form
+     <b>renames</b> Create;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></FONT>
+   <b>pragma</b> Inline (New_Form);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_47">|</EM></FONT>
+   <b>procedure</b> Delete (Frm : <b>in</b> <b>out</b> Form);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_new.3x.html">free_form()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Reset Frm to Null_Form</EM></FONT>
+   <b>pragma</b> Inline (Delete);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_opts.3x.html">form_opts.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_48">|</EM></FONT>
+   <b>procedure</b> Set_Options (Frm     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<09_9">Form</A>;
+                          Options : <b>in</b> Form_Option_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_opts.3x.html">set_form_opts()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Options);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_49">|</EM></FONT>
+   <b>procedure</b> Switch_Options (Frm     : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<09_9">Form</A>;
+                             Options : <b>in</b> Form_Option_Set;
+                             On      : Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_opts.3x.html">form_opts_on()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: form_opts_off()</EM></FONT>
+   <b>pragma</b> Inline (Switch_Options);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_50">|</EM></FONT>
+   <b>procedure</b> Get_Options (Frm     : <b>in</b>  <A HREF="terminal_interface-curses-forms__ads.htm<09_9">Form</A>;
+                          Options : <b>out</b> Form_Option_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_51">|</EM></FONT>
+   <b>function</b> Get_Options (Frm : Form := Null_Form) <b>return</b> Form_Option_Set;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Options);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_post.3x.html">form_post.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_52">|</EM></FONT>
+   <b>procedure</b> Post (Frm  : <b>in</b> Form;
+                   Post : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_post.3x.html">post_form()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: unpost_form()</EM></FONT>
+   <b>pragma</b> Inline (Post);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_cursor.3x.html">form_cursor.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_53">|</EM></FONT>
+   <b>procedure</b> Position_Cursor (Frm : Form);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_cursor.3x.html">pos_form_cursor()</A></EM></FONT>
+   <b>pragma</b> Inline (Position_Cursor);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_data.3x.html">form_data.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_54">|</EM></FONT>
+   <b>function</b> Data_Ahead (Frm : Form) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_data.3x.html">data_ahead()</A></EM></FONT>
+   <b>pragma</b> Inline (Data_Ahead);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_55">|</EM></FONT>
+   <b>function</b> Data_Behind (Frm : Form) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_data.3x.html">data_behind()</A></EM></FONT>
+   <b>pragma</b> Inline (Data_Behind);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_driver.3x.html">form_driver.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>type</b> Driver_Result <b>is</b> (<FONT COLOR=red><A NAME="710_27">Form_Ok</A></FONT>,
+                          <FONT COLOR=red><A NAME="711_27">Request_Denied</A></FONT>,
+                          <FONT COLOR=red><A NAME="712_27">Unknown_Request</A></FONT>,
+                          Invalid_Field);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_56">|</EM></FONT>
+   <b>function</b> Driver (Frm : <A HREF="terminal_interface-curses__ads.htm#68_9">Form</A>;
+                    Key : Key_Code) <b>return</b> Driver_Result;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_driver.3x.html">form_driver()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Driver not inlined</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_page.3x.html">form_page.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>type</b> Page_Number <b>is</b> <b>new</b> Natural;
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_57">|</EM></FONT>
+   <b>procedure</b> Set_Current (<FONT COLOR=red><A NAME="728_27">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+                          Fld : <b>in</b> Field);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_page.3x.html">set_current_field()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Current);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_58">|</EM></FONT>
+   <b>function</b> Current (Frm : <b>in</b> Form) <b>return</b> Field;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_page.3x.html">current_field()</A></EM></FONT>
+   <b>pragma</b> Inline (Current);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_59">|</EM></FONT>
+   <b>procedure</b> Set_Page (Frm  : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#724_9">Form</A>;
+                       Page : <b>in</b> Page_Number := Page_Number'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_page.3x.html">set_form_page()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Page);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_60">|</EM></FONT>
+   <b>function</b> Page (Frm : Form) <b>return</b> Page_Number;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_page.3x.html">form_page()</A></EM></FONT>
+   <b>pragma</b> Inline (Page);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_61">|</EM></FONT>
+   <b>function</b> Get_Index (Fld : Field) <b>return</b> Positive;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_page.3x.html">field_index()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Please note that in this binding we start the numbering of fields</EM></FONT>
+  <FONT COLOR=green><EM>--  with 1. So this is number is one more than you get from the low</EM></FONT>
+  <FONT COLOR=green><EM>--  level call.</EM></FONT>
+   <b>pragma</b> Inline (Get_Index);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/form_new_page.3x.html">form_new_page.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_62">|</EM></FONT>
+   <b>procedure</b> Set_New_Page (Fld      : <b>in</b> Field;
+                           New_Page : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_new_page.3x.html">set_new_page()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_New_Page);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_63">|</EM></FONT>
+   <b>function</b> Is_New_Page (Fld : Field) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/form_new_page.3x.html">new_page()</A></EM></FONT>
+   <b>pragma</b> Inline (Is_New_Page);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>private</b>
+   <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#58_9">Field</A> <b>is</b> <b>new</b> <A HREF="system__ads.htm>3_9">System</A>.<A HREF="s-stoele__ads.htm>2_16">Storage_Elements</A>.<A HREF="s-stoele__ads.htm#70_9">Integer_Address</A>;
+   <b>type</b> Form  <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+
+   <A HREF="terminal_interface-curses-forms__ads.htm#61_4">Null_Field</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#58_9">Field</A> := 0;
+   Null_Form  : <b>constant</b> Form  := 0;
+
+<b>end</b> Terminal_Interface.Curses.Forms;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm b/Ada95/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
new file mode 100644 (file)
index 0000000..fb48573
--- /dev/null
@@ -0,0 +1,80 @@
+<HEAD><TITLE>terminal_interface-curses-menus-item_user_data.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus-item_user_data.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--               Terminal_Interface.Curses.Menus.Item_User_Data             --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.11 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="44_9">User</A></FONT> <b>is</b> <b>limited</b> <b>private</b>;
+   <b>type</b> <A HREF="terminal_interface__ads.htm#41_9">User_Access</A> <b>is</b> <b>access</b> User<A HREF="terminal_interface-curses-menus__ads.htm#49_35">;</A>
+<b>package</b> Terminal_Interface.Curses.Menus.Item_User_Data <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Menus.Item_User_Data);
+
+  <FONT COLOR=green><EM>--  The binding uses the same user pointer for menu items</EM></FONT>
+  <FONT COLOR=green><EM>--  as the low level C implementation. So you can safely</EM></FONT>
+  <FONT COLOR=green><EM>--  read or write the user pointer also with the C routines</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>procedure</b> Set_User_Data (Itm  : <b>in</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">Item</A>;
+                            Data : <b>in</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_userptr.3x.html">set_item_userptr</A></EM></FONT>
+   <b>pragma</b> Inline (Set_User_Data);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>procedure</b> Get_User_Data (Itm  : <b>in</b>  <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">Item</A>;
+                            Data : <b>out</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>function</b> Get_User_Data (Itm  : <b>in</b>  Item) <b>return</b> User_Access;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Get_User_Data);
+
+<b>end</b> Terminal_Interface.Curses.Menus.Item_User_Data;
+
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm b/Ada95/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
new file mode 100644 (file)
index 0000000..b1dc8a0
--- /dev/null
@@ -0,0 +1,75 @@
+<HEAD><TITLE>terminal_interface-curses-menus-menu_user_data.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus-menu_user_data.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--               Terminal_Interface.Curses.Menus.Menu_User_Data             --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.11 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="44_9">User</A></FONT> <b>is</b> <b>limited</b> <b>private</b>;
+   <b>type</b> <A HREF="terminal_interface__ads.htm#41_9">User_Access</A> <b>is</b> <b>access</b> User<A HREF="terminal_interface-curses-menus__ads.htm#49_35">;</A>
+<b>package</b> Terminal_Interface.Curses.Menus.Menu_User_Data <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Menus.Menu_User_Data);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_userptr.3x.html">menu_userptr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>procedure</b> Set_User_Data (Men  : <b>in</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">Menu</A>;
+                            Data : <b>in</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_userptr.3x.html">set_menu_userptr</A></EM></FONT>
+   <b>pragma</b> Inline (Set_User_Data);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>procedure</b> Get_User_Data (Men  : <b>in</b>  <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">Menu</A>;
+                            Data : <b>out</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>function</b> Get_User_Data (Men  : <b>in</b>  Menu) <b>return</b> User_Access;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Get_User_Data);
+
+<b>end</b> Terminal_Interface.Curses.Menus.Menu_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-menus__ads.htm b/Ada95/html/ada/terminal_interface-curses-menus__ads.htm
new file mode 100644 (file)
index 0000000..13256b4
--- /dev/null
@@ -0,0 +1,675 @@
+<HEAD><TITLE>terminal_interface-curses-menus.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                      Terminal_Interface.Curses.Menu                      --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.19 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  menu binding.</EM></FONT>
+<FONT COLOR=green><EM>--  This module is generated. Please don't change it manually!</EM></FONT>
+<FONT COLOR=green><EM>--  Run the generator instead.</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm>3_9">System</A>;
+<b>with</b> <A HREF="ada__ads.htm<8_9">Interfaces</A>.C;
+<b>with</b> Ada.Characters.Latin_1;
+
+<b>package</b> Terminal_Interface.Curses.Menus <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Menus);
+   <b>pragma</b> Linker_Options ("-lmenu");
+   <b>pragma</b> Linker_Options ("-lAdaCurses");
+   <b>pragma</b> Linker_Options ("-lncurses");
+
+   Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
+
+   <b>type</b> <FONT COLOR=red><A NAME="58_9">Item</A></FONT> <b>is</b> <b>private</b>;
+   <b>type</b> Menu <b>is</b> <b>private</b>;
+
+  <FONT COLOR=green><EM>---------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  Interface constants  --</EM></FONT>
+  <FONT COLOR=green><EM>---------------------------</EM></FONT>
+   <FONT COLOR=red><A NAME="64_4">Null_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#58_9">Item</A>;
+   Null_Menu : <b>constant</b> Menu;
+
+   <b>subtype</b> Menu_Request_Code <b>is</b> Key_Code
+     <b>range</b> (Key_Max + 1) .. (Key_Max + 17);
+
+  <FONT COLOR=green><EM>--  The prefix M_ stands for "Menu Request"</EM></FONT>
+   M_Left_Item       : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 1;
+   M_Right_Item      : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 2;
+   M_Up_Item         : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 3;
+   M_Down_Item       : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 4;
+   M_ScrollUp_Line   : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 5;
+   M_ScrollDown_Line : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 6;
+   M_ScrollDown_Page : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 7;
+   M_ScrollUp_Page   : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 8;
+   M_First_Item      : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 9;
+   M_Last_Item       : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 10;
+   M_Next_Item       : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 11;
+   M_Previous_Item   : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 12;
+   M_Toggle_Item     : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 13;
+   M_Clear_Pattern   : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 14;
+   M_Back_Pattern    : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 15;
+   M_Next_Match      : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 16;
+   M_Previous_Match  : <b>constant</b> Menu_Request_Code := Key_Max + 17;
+
+  <FONT COLOR=green><EM>--  For those who like the old 'C' names for the request codes</EM></FONT>
+   REQ_LEFT_ITEM     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Left_Item;
+   REQ_RIGHT_ITEM    : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Right_Item;
+   REQ_UP_ITEM       : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Up_Item;
+   REQ_DOWN_ITEM     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Down_Item;
+   REQ_SCR_ULINE     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_ScrollUp_Line;
+   REQ_SCR_DLINE     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_ScrollDown_Line;
+   REQ_SCR_DPAGE     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_ScrollDown_Page;
+   REQ_SCR_UPAGE     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_ScrollUp_Page;
+   REQ_FIRST_ITEM    : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_First_Item;
+   REQ_LAST_ITEM     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Last_Item;
+   REQ_NEXT_ITEM     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Next_Item;
+   REQ_PREV_ITEM     : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Previous_Item;
+   REQ_TOGGLE_ITEM   : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Toggle_Item;
+   REQ_CLEAR_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Clear_Pattern;
+   REQ_BACK_PATTERN  : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Back_Pattern;
+   REQ_NEXT_MATCH    : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Next_Match;
+   REQ_PREV_MATCH    : Menu_Request_Code <b>renames</b> M_Previous_Match;
+
+   <b>procedure</b> Request_Name (Key  : <b>in</b> Menu_Request_Code;
+                           Name : <b>out</b> String);
+
+   <b>function</b>  Request_Name (Key : Menu_Request_Code) <b>return</b> String;
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+
+  <FONT COLOR=green><EM>------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  Exceptions  --</EM></FONT>
+  <FONT COLOR=green><EM>------------------</EM></FONT>
+
+   Menu_Exception : <b>exception</b>;
+  <FONT COLOR=green><EM>--</EM></FONT>
+  <FONT COLOR=green><EM>--  Menu options</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   <b>pragma</b> Warnings (Off);
+   <b>type</b> Menu_Option_Set <b>is</b>
+      <b>record</b>
+         One_Valued        : Boolean;
+         Show_Descriptions : Boolean;
+         Row_Major_Order   : Boolean;
+         Ignore_Case       : Boolean;
+         Show_Matches      : Boolean;
+         Non_Cyclic        : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses-menus__ads.htm<22_9">;</A>
+   <b>pragma</b> Pack (Menu_Option_Set);
+   <b>pragma</b> Convention (C, Menu_Option_Set);
+
+   <b>for</b> Menu_Option_Set <b>use</b>
+      <b>record</b>
+         One_Valued        <b>at</b> 0 <b>range</b>  0 ..  0;
+         Show_Descriptions <b>at</b> 0 <b>range</b>  1 ..  1;
+         Row_Major_Order   <b>at</b> 0 <b>range</b>  2 ..  2;
+         Ignore_Case       <b>at</b> 0 <b>range</b>  3 ..  3;
+         Show_Matches      <b>at</b> 0 <b>range</b>  4 ..  4;
+         Non_Cyclic        <b>at</b> 0 <b>range</b>  5 ..  5;
+      <b>end</b> <b>record</b>;
+   <b>for</b> Menu_Option_Set'Size <b>use</b> 32;
+  <FONT COLOR=green><EM>--  Please note: this rep. clause is generated and may be</EM></FONT>
+  <FONT COLOR=green><EM>--               different on your system.</EM></FONT>
+   <b>pragma</b> Warnings (On);
+
+   <b>function</b> Default_Menu_Options <b>return</b> Menu_Option_Set;
+  <FONT COLOR=green><EM>--  Initial default options for a menu.</EM></FONT>
+   <b>pragma</b> Inline (Default_Menu_Options);
+  <FONT COLOR=green><EM>--</EM></FONT>
+  <FONT COLOR=green><EM>--  Item options</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   <b>pragma</b> Warnings (Off);
+   <b>type</b> Item_Option_Set <b>is</b>
+      <b>record</b>
+         Selectable  : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses-menus__ads.htm<55_9">;</A>
+   <b>pragma</b> Pack (Item_Option_Set);
+   <b>pragma</b> Convention (C, Item_Option_Set);
+
+   <b>for</b> Item_Option_Set <b>use</b>
+      <b>record</b>
+         Selectable  <b>at</b> 0 <b>range</b>  0 ..  0;
+      <b>end</b> <b>record</b>;
+   <b>for</b> Item_Option_Set'Size <b>use</b> 32;
+  <FONT COLOR=green><EM>--  Please note: this rep. clause is generated and may be</EM></FONT>
+  <FONT COLOR=green><EM>--               different on your system.</EM></FONT>
+   <b>pragma</b> Warnings (On);
+
+   <b>function</b> Default_Item_Options <b>return</b> Item_Option_Set;
+  <FONT COLOR=green><EM>--  Initial default options for an item.</EM></FONT>
+   <b>pragma</b> Inline (Default_Item_Options);
+
+  <FONT COLOR=green><EM>--</EM></FONT>
+  <FONT COLOR=green><EM>--  Item Array</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   <b>type</b> Item_Array <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> <b>aliased</b> Item;
+   <b>pragma</b> Convention (C, Item_Array);
+
+   <b>type</b> Item_Array_Access <b>is</b> <b>access</b> Item_Array;
+
+   <b>procedure</b> Free (IA         : <b>in</b> <b>out</b> Item_Array_Access;
+                   Free_Items : Boolean := False);
+  <FONT COLOR=green><EM>--  Release the memory for an allocated item array</EM></FONT>
+  <FONT COLOR=green><EM>--  If Free_Items is True, call Delete() for all the items in</EM></FONT>
+  <FONT COLOR=green><EM>--  the array.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>function</b> Create (Name        : String;
+                    Description : String := "") <b>return</b> Item;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Not inlined.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>function</b> New_Item (Name        : String;
+             <A HREF="terminal_interface-curses-menus__ads.htm<94_13"> </A>        Description : String := "") <b>return</b> Item
+     <b>renames</b> Create;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>procedure</b> Delete (Itm : <b>in</b> <b>out</b> Item);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_new.3x.html">free_item()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Resets Itm to Null_Item</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/mitem_value.3x.html">mitem_value.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_4">|</EM></FONT>
+   <b>procedure</b> Set_Value (Itm   : <b>in</b> Item;
+                        Value : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_value.3x.html">set_item_value()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Value);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_5">|</EM></FONT>
+   <b>function</b> Value (Itm : Item) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_value.3x.html">item_value()</A></EM></FONT>
+   <b>pragma</b> Inline (Value);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/mitem_visible.3x.html">mitem_visible.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_6">|</EM></FONT>
+   <b>function</b> Visible (Itm : Item) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_visible.3x.html">item_visible()</A></EM></FONT>
+   <b>pragma</b> Inline (Visible);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_7">|</EM></FONT>
+   <b>procedure</b> Set_Options (Itm     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<55_9">Item</A>;
+                          Options : <b>in</b> Item_Option_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_opts.3x.html">set_item_opts()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  An overloaded Set_Options is defined later. Pragma Inline appears there</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_8">|</EM></FONT>
+   <b>procedure</b> Switch_Options (Itm     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<55_9">Item</A>;
+                             Options : <b>in</b> Item_Option_Set;
+                             On      : Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_opts.3x.html">item_opts_on()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: item_opts_off()</EM></FONT>
+  <FONT COLOR=green><EM>--  An overloaded Switch_Options is defined later.</EM></FONT>
+  <FONT COLOR=green><EM>--  Pragma Inline appears there</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_9">|</EM></FONT>
+   <b>procedure</b> Get_Options (Itm     : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm<55_9">Item</A>;
+                          Options : <b>out</b> Item_Option_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_10">|</EM></FONT>
+   <b>function</b> Get_Options (Itm : Item := Null_Item) <b>return</b> Item_Option_Set;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  An overloaded Get_Options is defined later. Pragma Inline appears there</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_11">|</EM></FONT>
+   <b>procedure</b> Name (Itm  : <b>in</b> Item;
+                   Name : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></FONT>
+   <b>function</b>  Name (Itm : Item) <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Implemented as function</EM></FONT>
+   <b>pragma</b> Inline (Name);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_12">|</EM></FONT>
+   <b>procedure</b> Description (Itm         : <b>in</b> Item;
+                          Description : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></FONT>
+
+   <b>function</b>  Description (Itm : Item) <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Implemented as function</EM></FONT>
+   <b>pragma</b> Inline (Description);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_13">|</EM></FONT>
+   <b>procedure</b> Set_Current (<FONT COLOR=red><A NAME="292_27">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+                          Itm : <b>in</b> Item);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_current.3x.html">set_current_item()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Current);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_14">|</EM></FONT>
+   <b>function</b> Current (Men : Menu) <b>return</b> Item;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_current.3x.html">current_item()</A></EM></FONT>
+   <b>pragma</b> Inline (Current);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_15">|</EM></FONT>
+   <b>procedure</b> Set_Top_Row (Men  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Menu</A>;
+                          Line : <b>in</b> Line_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_current.3x.html">set_top_row()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Top_Row);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_16">|</EM></FONT>
+   <b>function</b> Top_Row (Men : Menu) <b>return</b> Line_Position;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_current.3x.html">top_row()</A></EM></FONT>
+   <b>pragma</b> Inline (Top_Row);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_17">|</EM></FONT>
+   <b>function</b> Get_Index (Itm : Item) <b>return</b> Positive;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/mitem_current.3x.html">item_index()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Please note that in this binding we start the numbering of items</EM></FONT>
+  <FONT COLOR=green><EM>--  with 1. So this is number is one more than you get from the low</EM></FONT>
+  <FONT COLOR=green><EM>--  level call.</EM></FONT>
+   <b>pragma</b> Inline (Get_Index);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_post.3x.html">menu_post.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_18">|</EM></FONT>
+   <b>procedure</b> Post (Men  : <b>in</b> Menu;
+                   Post : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_post.3x.html">post_menu()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: unpost_menu()</EM></FONT>
+   <b>pragma</b> Inline (Post);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_19">|</EM></FONT>
+   <b>procedure</b> Set_Options (Men     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<22_9">Menu</A>;
+                          Options : <b>in</b> Menu_Option_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_opts.3x.html">set_menu_opts()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Options);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_20">|</EM></FONT>
+   <b>procedure</b> Switch_Options (Men     : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<22_9">Menu</A>;
+                             Options : <b>in</b> Menu_Option_Set;
+                             On      : Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_opts.3x.html">menu_opts_on()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: menu_opts_off()</EM></FONT>
+   <b>pragma</b> Inline (Switch_Options);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_21">|</EM></FONT>
+   <b>procedure</b> Get_Options (Men     : <b>in</b>  <A HREF="terminal_interface-curses-menus__ads.htm<22_9">Menu</A>;
+                          Options : <b>out</b> Menu_Option_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_22">|</EM></FONT>
+   <b>function</b> Get_Options (Men : Menu := Null_Menu) <b>return</b> Menu_Option_Set;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Options);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_win.3x.html">menu_win.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_23">|</EM></FONT>
+   <b>procedure</b> Set_Window (<FONT COLOR=red><A NAME="365_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Menu</A>;
+                         Win : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_win.3x.html">set_menu_win()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_24">|</EM></FONT>
+   <b>function</b> Get_Window (Men : Menu) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_win.3x.html">menu_win()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_25">|</EM></FONT>
+   <b>procedure</b> Set_Sub_Window (<FONT COLOR=red><A NAME="376_30">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Menu</A>;
+                             Win : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_win.3x.html">set_menu_sub()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Sub_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_26">|</EM></FONT>
+   <b>function</b> Get_Sub_Window (Men : Menu) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_win.3x.html">menu_sub()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Sub_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_27">|</EM></FONT>
+   <b>procedure</b> Scale (Men     : <b>in</b> Menu;
+                    Lines   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                    Columns : <b>out</b> Column_Count);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_win.3x.html">scale_menu()</A></EM></FONT>
+   <b>pragma</b> Inline (Scale);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_cursor.3x.html">menu_cursor.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_28">|</EM></FONT>
+   <b>procedure</b> Position_Cursor (Men : Menu);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_cursor.3x.html">pos_menu_cursor()</A></EM></FONT>
+   <b>pragma</b> Inline (Position_Cursor);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_mark.3x.html">menu_mark.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_29">|</EM></FONT>
+   <b>procedure</b> Set_Mark (Men  : <b>in</b> Menu;
+                       Mark : <b>in</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_mark.3x.html">set_menu_mark()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Mark);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_30">|</EM></FONT>
+   <b>procedure</b> Mark (Men  : <b>in</b>  Menu;
+                   Mark : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></FONT>
+
+   <b>function</b>  Mark (Men : Menu) <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Implemented as function</EM></FONT>
+   <b>pragma</b> Inline (Mark);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_31">|</EM></FONT>
+   <b>procedure</b> Set_Foreground
+     (Men   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+      Fore  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_fore()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Foreground);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_32">|</EM></FONT>
+   <b>procedure</b> Foreground (Men   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+                         Fore  : <b>out</b> Character_Attribute_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">menu_fore()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_33">|</EM></FONT>
+   <b>procedure</b> Foreground (Men   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+                         Fore  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
+                         Color : <b>out</b> Color_Pair);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">menu_fore()</A></EM></FONT>
+   <b>pragma</b> Inline (Foreground);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_34">|</EM></FONT>
+   <b>procedure</b> Set_Background
+     (Men   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+      Back  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_back()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Background);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_35">|</EM></FONT>
+   <b>procedure</b> Background (Men  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+                         Back : <b>out</b> Character_Attribute_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">menu_back()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  <A NAME="AFU_36">|</EM></FONT>
+
+   <b>procedure</b> Background (Men   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+                         Back  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
+                         Color : <b>out</b> Color_Pair);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">menu_back()</A></EM></FONT>
+   <b>pragma</b> Inline (Background);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_37">|</EM></FONT>
+   <b>procedure</b> Set_Grey
+     (Men   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+      Grey  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_grey()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Grey);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_38">|</EM></FONT>
+   <b>procedure</b> Grey (Men  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+                   Grey : <b>out</b> Character_Attribute_Set);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">menu_grey()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_39">|</EM></FONT>
+   <b>procedure</b> Grey
+     (Men   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
+      Grey  : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
+      Color : <b>out</b> Color_Pair);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">menu_grey()</A></EM></FONT>
+   <b>pragma</b> Inline (Grey);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_40">|</EM></FONT>
+   <b>procedure</b> Set_Pad_Character (Men : <b>in</b> Menu;
+                                Pad : <b>in</b> Character := Space);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_pad()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Pad_Character);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_41">|</EM></FONT>
+   <b>procedure</b> Pad_Character (Men : <b>in</b>  Menu;
+                            Pad : <b>out</b> Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_attribs.3x.html">menu_pad()</A></EM></FONT>
+   <b>pragma</b> Inline (Pad_Character);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_spacing.3x.html">menu_spacing.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_42">|</EM></FONT>
+   <b>procedure</b> Set_Spacing (Men   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Menu</A>;
+                          Descr : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> := 0;
+                          Row   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>   := 0;
+                          Col   : <b>in</b> Column_Position := 0);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_spacing.3x.html">set_menu_spacing()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Spacing);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_43">|</EM></FONT>
+   <b>procedure</b> Spacing (Men   : <b>in</b> Menu;
+                      Descr : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+                      Row   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                      Col   : <b>out</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_spacing.3x.html">menu_spacing()</A></EM></FONT>
+   <b>pragma</b> Inline (Spacing);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_pattern.3x.html">menu_pattern.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_44">|</EM></FONT>
+   <b>function</b> Set_Pattern (Men  : Menu;
+                         Text : String) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_pattern.3x.html">set_menu_pattern()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Return TRUE if the pattern matches, FALSE otherwise</EM></FONT>
+   <b>pragma</b> Inline (Set_Pattern);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_45">|</EM></FONT>
+   <b>procedure</b> Pattern (Men  : <b>in</b>  Menu;
+                      Text : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_pattern.3x.html">menu_pattern()</A></EM></FONT>
+   <b>pragma</b> Inline (Pattern);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_format.3x.html">menu_format.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_46">|</EM></FONT>
+   <b>procedure</b> Set_Format (Men     : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#63_12">Menu</A>;
+                         Lines   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                         Columns : <b>in</b> Column_Count);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_format.3x.html">set_menu_format()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Format);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_47">|</EM></FONT>
+   <b>procedure</b> Format (Men     : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#63_12">Menu</A>;
+                     Lines   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                     Columns : <b>out</b> Column_Count);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_format.3x.html">menu_format()</A></EM></FONT>
+   <b>pragma</b> Inline (Format);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>type</b> Menu_Hook_Function <b>is</b> <b>access</b> <b>procedure</b> (Men : <b>in</b> Menu);
+   <b>pragma</b> Convention (C, Menu_Hook_Function);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_48">|</EM></FONT>
+   <b>procedure</b> Set_Item_Init_Hook (Men  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#557_9">Menu</A>;
+                                 Proc : <b>in</b> Menu_Hook_Function);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_hook.3x.html">set_item_init()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Item_Init_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_49">|</EM></FONT>
+   <b>procedure</b> Set_Item_Term_Hook (Men  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#557_9">Menu</A>;
+                                 Proc : <b>in</b> Menu_Hook_Function);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_hook.3x.html">set_item_term()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Item_Term_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_50">|</EM></FONT>
+   <b>procedure</b> Set_Menu_Init_Hook (Men  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#557_9">Menu</A>;
+                                 Proc : <b>in</b> Menu_Hook_Function);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_hook.3x.html">set_menu_init()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Menu_Init_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_51">|</EM></FONT>
+   <b>procedure</b> Set_Menu_Term_Hook (Men  : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#557_9">Menu</A>;
+                                 Proc : <b>in</b> Menu_Hook_Function);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_hook.3x.html">set_menu_term()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Menu_Term_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_52">|</EM></FONT>
+   <b>function</b> Get_Item_Init_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_hook.3x.html">item_init()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Item_Init_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_53">|</EM></FONT>
+   <b>function</b> Get_Item_Term_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_hook.3x.html">item_term()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Item_Term_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_54">|</EM></FONT>
+   <b>function</b> Get_Menu_Init_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_hook.3x.html">menu_init()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Menu_Init_Hook);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_55">|</EM></FONT>
+   <b>function</b> Get_Menu_Term_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_hook.3x.html">menu_term()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Menu_Term_Hook);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_items.3x.html">menu_items.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_56">|</EM></FONT>
+   <b>procedure</b> Redefine (Men   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<81_9">Menu</A>;
+                       Items : <b>in</b> Item_Array_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_items.3x.html">set_menu_items()</A></EM></FONT>
+   <b>pragma</b> Inline (Redefine);
+
+   <b>procedure</b> Set_Items (Men   : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<81_9">Menu</A>;
+                  <A HREF="terminal_interface-curses-menus__ads.htm#614_14"> </A>     Items : <b>in</b> Item_Array_Access) <b>renames</b> Redefine;
+   <b>pragma</b> Inline (Set_Items);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_57">|</EM></FONT>
+   <b>function</b> Items (Men   : Menu;
+                   Index : Positive) <b>return</b> Item;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_items.3x.html">menu_items()</A></EM></FONT>
+   <b>pragma</b> Inline (Items);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_58">|</EM></FONT>
+   <b>function</b> Item_Count (Men : Menu) <b>return</b> Natural;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_items.3x.html">item_count()</A></EM></FONT>
+   <b>pragma</b> Inline (Item_Count);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_new.3x.html">menu_new.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_59">|</EM></FONT>
+   <b>function</b> Create (Items : Item_Array_Access) <b>return</b> Menu;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_new.3x.html">new_menu()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Not inlined</EM></FONT>
+
+   <b>function</b> New_Menu (Items : Item_Array_Access) <b>return</b> Menu <b>renames</b> Create;
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_60">|</EM></FONT>
+   <b>procedure</b> Delete (Men : <b>in</b> <b>out</b> Menu);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_new.3x.html">free_menu()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Reset Men to Null_Menu</EM></FONT>
+  <FONT COLOR=green><EM>--  Not inlined</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/menu_new.3x.html">menu_new.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>type</b> Driver_Result <b>is</b> (<FONT COLOR=red><A NAME="651_27">Menu_Ok</A></FONT>,
+                          <FONT COLOR=red><A NAME="652_27">Request_Denied</A></FONT>,
+                          <FONT COLOR=red><A NAME="653_27">Unknown_Request</A></FONT>,
+                          No_Match);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_61">|</EM></FONT>
+   <b>function</b> Driver (Men : <A HREF="terminal_interface-curses__ads.htm#68_9">Menu</A>;
+                    Key : Key_Code) <b>return</b> Driver_Result;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/menu_new.3x.html">menu_driver()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Driver is not inlined</EM></FONT>
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+<b>private</b>
+   <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#58_9">Item</A>   <b>is</b> <b>new</b> <A HREF="system__ads.htm>3_9">System</A>.<A HREF="s-stoele__ads.htm>2_16">Storage_Elements</A>.<A HREF="s-stoele__ads.htm#70_9">Integer_Address</A>;
+   <b>type</b> Menu   <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+
+   <A HREF="terminal_interface-curses-menus__ads.htm#64_4">Null_Item</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#58_9">Item</A> := 0;
+   Null_Menu : <b>constant</b> Menu := 0;
+
+<b>end</b> Terminal_Interface.Curses.Menus;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-mouse__ads.htm b/Ada95/html/ada/terminal_interface-curses-mouse__ads.htm
new file mode 100644 (file)
index 0000000..4ebdcd8
--- /dev/null
@@ -0,0 +1,225 @@
+<HEAD><TITLE>terminal_interface-curses-mouse.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-mouse.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                      Terminal_Interface.Curses.Mouse                     --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.18 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  mouse binding.</EM></FONT>
+<FONT COLOR=green><EM>--  This module is generated. Please don't change it manually!</EM></FONT>
+<FONT COLOR=green><EM>--  Run the generator instead.</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<b>with</b> System;
+
+<b>package</b> Terminal_Interface.Curses.Mouse <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Mouse);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  Please note, that in ncurses-1.9.9e documentation mouse support</EM></FONT>
+  <FONT COLOR=green><EM>--  is still marked as experimental. So also this binding will change</EM></FONT>
+  <FONT COLOR=green><EM>--  if the ncurses methods change.</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   <b>type</b> Event_Mask <b>is</b> <b>private</b>;
+   <FONT COLOR=red><A NAME="59_4">No_Events</A></FONT>  : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+   All_Events : <b>constant</b> Event_Mask;
+
+   <b>type</b> Mouse_Button <b>is</b> (<FONT COLOR=red><A NAME="62_26">Left</A></FONT>,    <FONT COLOR=green><EM>-- aka: Button 1</EM></FONT>
+                         <FONT COLOR=red><A NAME="63_26">Middle</A></FONT>,  <FONT COLOR=green><EM>-- aka: Button 2</EM></FONT>
+                         <FONT COLOR=red><A NAME="64_26">Right</A></FONT>,   <FONT COLOR=green><EM>-- aka: Button 3</EM></FONT>
+                         <FONT COLOR=red><A NAME="65_26">Button4</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 4</EM></FONT>
+                         <FONT COLOR=red><A NAME="66_26">Control</A></FONT>, <FONT COLOR=green><EM>-- Control Key</EM></FONT>
+                         <FONT COLOR=red><A NAME="67_26">Shift</A></FONT>,   <FONT COLOR=green><EM>-- Shift Key</EM></FONT>
+                         Alt);    <FONT COLOR=green><EM>-- ALT Key</EM></FONT>
+
+   <b>subtype</b> <FONT COLOR=red><A NAME="70_12">Real_Buttons</A></FONT>  <b>is</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A> <b>range</b> <A HREF="terminal_interface-curses-mouse__ads.htm#65_26">Left</A> .. Button4;
+   <b>subtype</b> Modifier_Keys <b>is</b> Mouse_Button <b>range</b> Control .. Alt;
+
+   <b>type</b> Button_State <b>is</b> (<FONT COLOR=red><A NAME="73_26">Released</A></FONT>,
+                         <FONT COLOR=red><A NAME="74_26">Pressed</A></FONT>,
+                         Clicked,
+                         <FONT COLOR=red><A NAME="76_26">Double_Clicked</A></FONT>,
+                         Triple_Clicked);
+
+   <b>type</b> Button_States <b>is</b> <b>array</b> (Button_State) <b>of</b> Boolean;
+   <b>pragma</b> Pack (Button_States);
+
+   All_Clicks : <b>constant</b> Button_States := (Clicked .. Triple_Clicked => True,
+                         <A HREF="terminal_interface-curses-mouse__ads.htm#78_9"> </A>                 <b>others</b> => False);
+   All_States : <b>constant</b> Button_States := (<b>others</b> => True);
+
+   <b>type</b> Mouse_Event <b>is</b> <b>private</b>;
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>function</b> Has_Mouse <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  Return true if a mouse device is supported, false otherwise.</EM></FONT>
+
+   <b>procedure</b> Register_Reportable_Event
+     (Button : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Mouse_Button</A>;
+      <FONT COLOR=red><A NAME="97_7">State</A></FONT>  : <b>in</b> Button_State;
+      Mask   : <b>in</b> <b>out</b> Event_Mask);
+  <FONT COLOR=green><EM>--  Stores the event described by the button and the state in the mask.</EM></FONT>
+  <FONT COLOR=green><EM>--  Before you call this the first time, you should init the mask</EM></FONT>
+  <FONT COLOR=green><EM>--  with the Empty_Mask constant</EM></FONT>
+   <b>pragma</b> Inline (Register_Reportable_Event);
+
+   <b>procedure</b> Register_Reportable_Events
+     (Button : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#78_9">Mouse_Button</A>;
+      <FONT COLOR=red><A NAME="106_7">State</A></FONT>  : <b>in</b> Button_States;
+      Mask   : <b>in</b> <b>out</b> Event_Mask);
+  <FONT COLOR=green><EM>--  Register all events described by the Button and the State bitmap.</EM></FONT>
+  <FONT COLOR=green><EM>--  Before you call this the first time, you should init the mask</EM></FONT>
+  <FONT COLOR=green><EM>--  with the Empty_Mask constant</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+  <FONT COLOR=green><EM>--  There is one difference to mousmask(): we return the value of the</EM></FONT>
+  <FONT COLOR=green><EM>--  old mask, that means the event mask value before this call.</EM></FONT>
+   <b>function</b> Start_Mouse (Mask : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := All_Events)
+                         <b>return</b> Event_Mask;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_mouse.3x.html">mousemask()</A></EM></FONT>
+   <b>pragma</b> Inline (Start_Mouse);
+
+   <b>procedure</b> End_Mouse (Mask : <b>in</b> Event_Mask := No_Events);
+  <FONT COLOR=green><EM>--  Terminates the mouse, restores the specified event mask</EM></FONT>
+   <b>pragma</b> Inline (End_Mouse);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>function</b> Get_Mouse <b>return</b> Mouse_Event;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_mouse.3x.html">getmouse()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Mouse);
+
+   <b>procedure</b> Get_Event (Event  : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Mouse_Event</A>;
+                        Y      : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                        X      : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Column_Position</A>;
+                        Button : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Mouse_Button</A>;
+                        State  : <b>out</b> Button_State);
+  <FONT COLOR=green><EM>--  !!! Warning: X and Y are screen coordinates. Due to ripped of lines they</EM></FONT>
+  <FONT COLOR=green><EM>--  may not be identical to window coordinates.</EM></FONT>
+   <b>pragma</b> Inline (Get_Event);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>procedure</b> Unget_Mouse (Event : <b>in</b> Mouse_Event);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_mouse.3x.html">ungetmouse()</A></EM></FONT>
+   <b>pragma</b> Inline (Unget_Mouse);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_4">|</EM></FONT>
+   <b>function</b> Enclosed_In_Window (<FONT COLOR=red><A NAME="144_33">Win</A></FONT>    : <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Window</A> := Standard_Window;
+                                Event  : Mouse_Event) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_mouse.3x.html">wenclose()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  But : use event instead of screen coordinates.</EM></FONT>
+   <b>pragma</b> Inline (Enclosed_In_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_5">|</EM></FONT>
+   <b>function</b> Mouse_Interval (Msec : Natural := 200) <b>return</b> Natural;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_mouse.3x.html">mouseinterval()</A></EM></FONT>
+   <b>pragma</b> Inline (Mouse_Interval);
+
+<b>private</b>
+   <b>type</b> Event_Mask <b>is</b> <b>new</b> Interfaces.C.unsigned_long;
+
+   <b>type</b> Mouse_Event <b>is</b>
+      <b>record</b>
+         Id      : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm>3_9">Interfaces</A>.<A HREF="i-c__ads.htm>0_20">C</A>.<A HREF="i-c__ads.htm#36_9">short</A>'First) ..
+                                 Integer (<A HREF="interfac__ads.htm>3_9">Interfaces</A>.<A HREF="i-c__ads.htm>0_20">C</A>.<A HREF="i-c__ads.htm#35_9">short</A>'Last);
+         X, Y, Z : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm>3_9">Interfaces</A>.<A HREF="i-c__ads.htm>0_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>'First) ..
+         <FONT COLOR=red><A NAME="163_10"> </A></FONT>         <A HREF="terminal_interface-curses-mouse__ads.htm#57_9"> </A>             Integer (Interfaces.C.int'Last);
+         Bstate  : Event_Mask;
+      <b>end</b> <b>record</b>;
+   <b>pragma</b> Convention (C, Mouse_Event);
+   <b>pragma</b> Pack (Mouse_Event);
+
+   <b>for</b> Mouse_Event <b>use</b>
+      <b>record</b>
+         Id      <b>at</b> 0 <b>range</b>   0 ..  15;
+         X       <b>at</b> 0 <b>range</b>  32 ..  63;
+         Y       <b>at</b> 0 <b>range</b>  64 ..  95;
+         Z       <b>at</b> 0 <b>range</b>  96 .. 127;
+         Bstate  <b>at</b> 0 <b>range</b> 128 .. 159;
+      <b>end</b> <b>record</b>;
+     <FONT COLOR=green><EM>--  Please note: this rep. clause is generated and may be</EM></FONT>
+     <FONT COLOR=green><EM>--               different on your system.</EM></FONT>
+
+   Generation_Bit_Order : <b>constant</b> System.Bit_Order := System.Low_Order_First;
+  <FONT COLOR=green><EM>--  This constant may be different on your system.</EM></FONT>
+
+   <FONT COLOR=red><A NAME="183_4">BUTTON1_RELEASED</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000001#;
+   <FONT COLOR=red><A NAME="184_4">BUTTON1_PRESSED</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000002#;
+   <FONT COLOR=red><A NAME="185_4">BUTTON1_CLICKED</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000004#;
+   <FONT COLOR=red><A NAME="186_4">BUTTON1_DOUBLE_CLICKED</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000010#;
+   <FONT COLOR=red><A NAME="187_4">BUTTON1_TRIPLE_CLICKED</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000020#;
+   <FONT COLOR=red><A NAME="188_4">BUTTON1_RESERVED_EVENT</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000040#;
+   <FONT COLOR=red><A NAME="189_4">BUTTON2_RELEASED</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000100#;
+   <FONT COLOR=red><A NAME="190_4">BUTTON2_PRESSED</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000200#;
+   <FONT COLOR=red><A NAME="191_4">BUTTON2_CLICKED</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000400#;
+   <FONT COLOR=red><A NAME="192_4">BUTTON2_DOUBLE_CLICKED</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000001000#;
+   <FONT COLOR=red><A NAME="193_4">BUTTON2_TRIPLE_CLICKED</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000002000#;
+   <FONT COLOR=red><A NAME="194_4">BUTTON2_RESERVED_EVENT</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000004000#;
+   <FONT COLOR=red><A NAME="195_4">BUTTON3_RELEASED</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000010000#;
+   <FONT COLOR=red><A NAME="196_4">BUTTON3_PRESSED</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000020000#;
+   <FONT COLOR=red><A NAME="197_4">BUTTON3_CLICKED</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000040000#;
+   <FONT COLOR=red><A NAME="198_4">BUTTON3_DOUBLE_CLICKED</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000100000#;
+   <FONT COLOR=red><A NAME="199_4">BUTTON3_TRIPLE_CLICKED</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000200000#;
+   <FONT COLOR=red><A NAME="200_4">BUTTON3_RESERVED_EVENT</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000400000#;
+   <FONT COLOR=red><A NAME="201_4">BUTTON4_RELEASED</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00001000000#;
+   <FONT COLOR=red><A NAME="202_4">BUTTON4_PRESSED</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00002000000#;
+   <FONT COLOR=red><A NAME="203_4">BUTTON4_CLICKED</A></FONT>           : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00004000000#;
+   <FONT COLOR=red><A NAME="204_4">BUTTON4_DOUBLE_CLICKED</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00010000000#;
+   <FONT COLOR=red><A NAME="205_4">BUTTON4_TRIPLE_CLICKED</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00020000000#;
+   <FONT COLOR=red><A NAME="206_4">BUTTON4_RESERVED_EVENT</A></FONT>    : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00040000000#;
+   <FONT COLOR=red><A NAME="207_4">BUTTON_CTRL</A></FONT>               : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00100000000#;
+   <FONT COLOR=red><A NAME="208_4">BUTTON_SHIFT</A></FONT>              : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00200000000#;
+   <FONT COLOR=red><A NAME="209_4">BUTTON_ALT</A></FONT>                : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00400000000#;
+   <FONT COLOR=red><A NAME="210_4">ALL_MOUSE_EVENTS</A></FONT>          : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00777777777#;
+   <FONT COLOR=red><A NAME="211_4">BUTTON1_EVENTS</A></FONT>            : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000077#;
+   <FONT COLOR=red><A NAME="212_4">BUTTON2_EVENTS</A></FONT>            : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000007700#;
+   <FONT COLOR=red><A NAME="213_4">BUTTON3_EVENTS</A></FONT>            : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000770000#;
+   BUTTON4_EVENTS            : <b>constant</b> Event_Mask := 8#00077000000#;
+
+
+   <A HREF="terminal_interface-curses-mouse__ads.htm#59_4">No_Events</A>  : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm>09_4">0</A>;
+   All_Events : <b>constant</b> Event_Mask := ALL_MOUSE_EVENTS;
+
+<b>end</b> Terminal_Interface.Curses.Mouse;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-panels-user_data__ads.htm b/Ada95/html/ada/terminal_interface-curses-panels-user_data__ads.htm
new file mode 100644 (file)
index 0000000..e5f370c
--- /dev/null
@@ -0,0 +1,75 @@
+<HEAD><TITLE>terminal_interface-curses-panels-user_data.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-panels-user_data.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                 Terminal_Interface.Curses.Panels.User_Data               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.11 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+<b>generic</b>
+   <b>type</b> User <b>is</b> <b>limited</b> <b>private</b>;
+   <b>type</b> <A HREF="terminal_interface__ads.htm#41_9">User_Access</A> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-panels__ads.htm#43_35">User</A>;
+<b>package</b> Terminal_Interface.Curses.Panels.User_Data<A HREF="terminal_interface-curses-panels__ads.htm#43_35"> </A><b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Panels.User_Data);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>procedure</b> Set_User_Data (Pan  : <b>in</b> Panel;
+                            Data : <b>in</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">set_panel_userptr</A></EM></FONT>
+   <b>pragma</b> Inline (Set_User_Data);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>procedure</b> Get_User_Data (Pan  : <b>in</b>  Panel;
+                            Data : <b>out</b> User_Access);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>function</b> Get_User_Data (Pan  : <b>in</b>  Panel) <b>return</b> User_Access;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Get_User_Data);
+
+<b>end</b> Terminal_Interface.Curses.Panels.User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-panels__ads.htm b/Ada95/html/ada/terminal_interface-curses-panels__ads.htm
new file mode 100644 (file)
index 0000000..2896c40
--- /dev/null
@@ -0,0 +1,153 @@
+<HEAD><TITLE>terminal_interface-curses-panels.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-panels.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                      Terminal_Interface.Curses.Panels                    --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.13 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> System;
+
+<b>package</b> Terminal_Interface.Curses.Panels <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Panels);
+   <b>pragma</b> Linker_Options ("-lpanel");
+   <b>pragma</b> Linker_Options ("-lAdaCurses");
+   <b>pragma</b> Linker_Options ("-lncurses");
+
+   <b>type</b> Panel <b>is</b> <b>private</b>;
+
+  <FONT COLOR=green><EM>---------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  Interface constants  --</EM></FONT>
+  <FONT COLOR=green><EM>---------------------------</EM></FONT>
+   Null_Panel : <b>constant</b> Panel;
+
+  <FONT COLOR=green><EM>-------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  Exceptions   --</EM></FONT>
+  <FONT COLOR=green><EM>-------------------</EM></FONT>
+
+   Panel_Exception : <b>exception</b>;
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>function</b> Create (Win : Window) <b>return</b> Panel;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (Create);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>function</b> New_Panel (Win : Window) <b>return</b> Panel <b>renames</b> Create;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (New_Panel);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>procedure</b> Bottom (Pan : <b>in</b> Panel);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">bottom_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (Bottom);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_4">|</EM></FONT>
+   <b>procedure</b> Top (Pan : <b>in</b> Panel);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">top_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (Top);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_5">|</EM></FONT>
+   <b>procedure</b> Show (Pan : <b>in</b> Panel);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">show_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (Show);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_6">|</EM></FONT>
+   <b>procedure</b> Update_Panels;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">update_panels()</A></EM></FONT>
+   <b>pragma</b> Import (C, Update_Panels, "update_panels");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_7">|</EM></FONT>
+   <b>procedure</b> Hide (Pan : <b>in</b> Panel);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">hide_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (Hide);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_8">|</EM></FONT>
+   <b>function</b> Get_Window (Pan : Panel) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">panel_window()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_9">|</EM></FONT>
+   <b>function</b> Panel_Window (Pan : Panel) <b>return</b> Window <b>renames</b> Get_Window;
+   <b>pragma</b> Inline (Panel_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_10">|</EM></FONT>
+   <b>procedure</b> Replace (<FONT COLOR=red><A NAME="112_23">Pan</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Panel</A>;
+                      Win : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">replace_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (Replace);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_11">|</EM></FONT>
+   <b>procedure</b> Move (Pan    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Panel</A>;
+                   Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                   Column : <b>in</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">move_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (Move);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_12">|</EM></FONT>
+   <b>function</b> Is_Hidden (Pan : Panel) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">panel_hidden()</A></EM></FONT>
+   <b>pragma</b> Inline (Is_Hidden);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_13">|</EM></FONT>
+   <b>function</b> Above (Pan : Panel) <b>return</b> Panel;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">panel_above()</A></EM></FONT>
+   <b>pragma</b> Import (C, Above, "panel_above");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_14">|</EM></FONT>
+   <b>function</b> Below (Pan : Panel) <b>return</b> Panel;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">panel_below()</A></EM></FONT>
+   <b>pragma</b> Import (C, Below, "panel_below");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_15">|</EM></FONT>
+   <b>procedure</b> Delete (Pan : <b>in</b> <b>out</b> Panel);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/panel.3x.html">del_panel()</A></EM></FONT>
+   <b>pragma</b> Inline (Delete);
+
+   <b>private</b>
+      <b>type</b> Panel <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+      Null_Panel : <b>constant</b> Panel := 0;
+
+<b>end</b> Terminal_Interface.Curses.Panels;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm b/Ada95/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
new file mode 100644 (file)
index 0000000..43ed85d
--- /dev/null
@@ -0,0 +1,75 @@
+<HEAD><TITLE>terminal_interface-curses-text_io-complex_io.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-complex_io.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--               Terminal_Interface.Curses.Text_IO.Complex_IO               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-numeri__ads.htm#19_13">Numerics</A>.<A HREF="a-ngcoty__ads.htm#43_22">Generic_Complex_Types</A>;
+
+<b>generic</b>
+   <b>with</b> <b>package</b> <FONT COLOR=red><A NAME="44_17">Complex_Types</A></FONT> <b>is</b> <b>new</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-numeri__ads.htm#19_13">Numerics</A>.<A HREF="a-ngcoty__ads.htm#43_22">Generic_Complex_Types</A> (<>);
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="46_43">Complex_IO</A></FONT> <b>is</b>
+
+   <b>use</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#44_17">Complex_Types</A>;
+
+   Default_Fore : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 2;
+   Default_Aft  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="a-ngcoty__ads.htm#41_9">Real</A>'<b>Digits</b> - 1;
+   Default_Exp  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 3;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-complex_io__adb.htm#48_14">Put</A><FONT COLOR=red><A NAME="54_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="55_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Item : <b>in</b> <A HREF="a-ngcoty__ads.htm#47_9">Complex</A>;
+      Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
+      Aft  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
+      Exp  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-complex_io__adb.htm#63_14">Put</A><FONT COLOR=red><A NAME="61_14"></A></FONT>
+     (Item : <b>in</b> <A HREF="a-ngcoty__ads.htm#47_9">Complex</A>;
+      Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
+      Aft  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
+      Exp  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+
+<b>private</b>
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#61_14">Put</A>);
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Complex_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm b/Ada95/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
new file mode 100644 (file)
index 0000000..1092bcf
--- /dev/null
@@ -0,0 +1,71 @@
+<HEAD><TITLE>terminal_interface-curses-text_io-decimal_io.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-decimal_io.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--               Terminal_Interface.Curses.Text_IO.Decimal_IO               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>delta</b> <> <b>digits</b> <>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Decimal_IO</A></FONT> <b>is</b>
+
+   Default_Fore : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>'Fore;
+   Default_Aft  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>'Aft;
+   Default_Exp  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="50_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="51_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+      Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
+      Aft  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
+      Exp  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#66_14">Put</A><FONT COLOR=red><A NAME="57_14"></A></FONT>
+     (Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+      Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
+      Aft  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
+      Exp  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+
+<b>private</b>
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#57_14">Put</A>);
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Decimal_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm b/Ada95/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
new file mode 100644 (file)
index 0000000..7bb5955
--- /dev/null
@@ -0,0 +1,68 @@
+<HEAD><TITLE>terminal_interface-curses-text_io-enumeration_io.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-enumeration_io.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--             Terminal_Interface.Curses.Text_IO.Enumeration_IO             --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="42_9">Enum</A></FONT> <b>is</b> (<>);
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Enumeration_IO</A></FONT> <b>is</b>
+
+   Default_Width : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
+   Default_Setting : <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#53_46">Mixed_Case</A>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#50_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="50_7">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+      Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
+      Set   : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := Default_Setting);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#71_14">Put</A><FONT COLOR=red><A NAME="55_14"></A></FONT>
+     (Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+      Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
+      Set   : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := Default_Setting);
+
+<b>private</b>
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14">Put</A>);
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Enumeration_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm b/Ada95/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
new file mode 100644 (file)
index 0000000..550a3ff
--- /dev/null
@@ -0,0 +1,71 @@
+<HEAD><TITLE>terminal_interface-curses-text_io-fixed_io.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-fixed_io.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                Terminal_Interface.Curses.Text_IO.Fixed_IO                --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>delta</b> <>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Fixed_IO</A></FONT> <b>is</b>
+
+   Default_Fore : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>'Fore;
+   Default_Aft  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>'Aft;
+   Default_Exp  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="50_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="51_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+      Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
+      Aft  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
+      Exp  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#66_14">Put</A><FONT COLOR=red><A NAME="57_14"></A></FONT>
+     (Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+      Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
+      Aft  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
+      Exp  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+
+<b>private</b>
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#57_14">Put</A>);
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Fixed_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-text_io-float_io__ads.htm b/Ada95/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
new file mode 100644 (file)
index 0000000..e6e7e21
--- /dev/null
@@ -0,0 +1,71 @@
+<HEAD><TITLE>terminal_interface-curses-text_io-float_io.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-float_io.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                Terminal_Interface.Curses.Text_IO.Float_IO                --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>digits</b> <>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Float_IO</A></FONT> <b>is</b>
+
+   Default_Fore : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 2;
+   Default_Aft  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>'<b>Digits</b> - 1;
+   Default_Exp  : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 3;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="50_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="51_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+      Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
+      Aft  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
+      Exp  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#66_14">Put</A><FONT COLOR=red><A NAME="57_14"></A></FONT>
+     (Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+      Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
+      Aft  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
+      Exp  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+
+<b>private</b>
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#57_14">Put</A>);
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Float_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm b/Ada95/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
new file mode 100644 (file)
index 0000000..4d92767
--- /dev/null
@@ -0,0 +1,68 @@
+<HEAD><TITLE>terminal_interface-curses-text_io-integer_io.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-integer_io.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--               Terminal_Interface.Curses.Text_IO.Integer_IO               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>range</b> <>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Integer_IO</A></FONT> <b>is</b>
+
+   Default_Width : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>'Width;
+   Default_Base  : <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := 10;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="50_7">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+      Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
+      Base  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := Default_Base);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#61_14">Put</A><FONT COLOR=red><A NAME="55_14"></A></FONT>
+     (Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+      Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
+      Base  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := Default_Base);
+
+<b>private</b>
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#55_14">Put</A>);
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Integer_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm b/Ada95/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
new file mode 100644 (file)
index 0000000..b652c1b
--- /dev/null
@@ -0,0 +1,68 @@
+<HEAD><TITLE>terminal_interface-curses-text_io-modular_io.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-modular_io.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--               Terminal_Interface.Curses.Text_IO.Modular_IO               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>generic</b>
+   <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>mod</b> <>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Modular_IO</A></FONT> <b>is</b>
+
+   Default_Width : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>'Width;
+   Default_Base  : <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := 10;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="50_7">Win</A></FONT>   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+      Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
+      Base  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := Default_Base);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#61_14">Put</A><FONT COLOR=red><A NAME="55_14"></A></FONT>
+     (Item  : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+      Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
+      Base  : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := Default_Base);
+
+<b>private</b>
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#55_14">Put</A>);
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Modular_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses-text_io__ads.htm b/Ada95/html/ada/terminal_interface-curses-text_io__ads.htm
new file mode 100644 (file)
index 0000000..6e6d963
--- /dev/null
@@ -0,0 +1,141 @@
+<HEAD><TITLE>terminal_interface-curses-text_io.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                     Terminal_Interface.Curses.Text_IO                    --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.11 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-textio__ads.htm#51_13">Text_IO</A>;
+<b>with</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>;
+
+<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__adb.htm#41_40">Text_IO</A><FONT COLOR=red><A NAME="44_35"></A></FONT> <b>is</b>
+
+   <b>use</b> <b>type</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-textio__ads.htm#51_13">Text_IO</A>.<A HREF="a-textio__ads.htm#66_9">Count</A>;
+   <b>subtype</b> <FONT COLOR=red><A NAME="47_12">Count</A></FONT> <b>is</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-textio__ads.htm#51_13">Text_IO</A>.<A HREF="a-textio__ads.htm#66_9">Count</A>;
+   <b>subtype</b> <FONT COLOR=red><A NAME="48_12">Positive_Count</A></FONT> <b>is</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last;
+
+   <b>subtype</b> <FONT COLOR=red><A NAME="50_12">Field</A></FONT> <b>is</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-textio__ads.htm#51_13">Text_IO</A>.<A HREF="a-textio__ads.htm#76_12">Field</A>;
+   <b>subtype</b> <FONT COLOR=red><A NAME="51_12">Number_Base</A></FONT> <b>is</b> Integer <b>range</b> 2 .. 16;
+
+   <b>type</b> <FONT COLOR=red><A NAME="53_9">Type_Set</A></FONT> <b>is</b> (Lower_Case, Upper_Case, Mixed_Case);
+
+  <FONT COLOR=green><EM>--  For most of the routines you will see a version without a Window</EM></FONT>
+  <FONT COLOR=green><EM>--  type parameter. They will operate on a default window, which can</EM></FONT>
+  <FONT COLOR=green><EM>--  be set by the user. It is initially equal to Standard_Window.</EM></FONT>
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#45_14">Set_Window</A><FONT COLOR=red><A NAME="59_14"></A></FONT> (<FONT COLOR=red><A NAME="59_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>);
+  <FONT COLOR=green><EM>--  Set Win as the default window</EM></FONT>
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#51_13">Get_Window</A><FONT COLOR=red><A NAME="62_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+  <FONT COLOR=green><EM>--  Get the current default window</EM></FONT>
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#62_14">Flush</A><FONT COLOR=red><A NAME="65_14"></A></FONT> (<FONT COLOR=red><A NAME="65_21">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>);
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#68_14">Flush</A><FONT COLOR=red><A NAME="66_14"></A></FONT>;
+
+  <FONT COLOR=green><EM>--------------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>-- Specification of line and page lengths --</EM></FONT>
+  <FONT COLOR=green><EM>--------------------------------------------</EM></FONT>
+
+  <FONT COLOR=green><EM>--  There are no set routines in this package. I assume, that you allocate</EM></FONT>
+  <FONT COLOR=green><EM>--  the window with an appropriate size.</EM></FONT>
+  <FONT COLOR=green><EM>--  A scroll-window is interpreted as an page with unbounded page length,</EM></FONT>
+  <FONT COLOR=green><EM>--  i.e. it returns the conventional 0 as page length.</EM></FONT>
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#83_13">Line_Length</A><FONT COLOR=red><A NAME="77_13"></A></FONT> (<FONT COLOR=red><A NAME="77_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#95_13">Line_Length</A><FONT COLOR=red><A NAME="78_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#101_13">Page_Length</A><FONT COLOR=red><A NAME="80_13"></A></FONT> (<FONT COLOR=red><A NAME="80_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#117_13">Page_Length</A><FONT COLOR=red><A NAME="81_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
+
+  <FONT COLOR=green><EM>------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>-- Column, Line, and Page Control --</EM></FONT>
+  <FONT COLOR=green><EM>------------------------------------</EM></FONT>
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#126_14">New_Line</A><FONT COLOR=red><A NAME="86_14"></A></FONT> (<FONT COLOR=red><A NAME="86_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; Spacing : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1);
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#143_14">New_Line</A><FONT COLOR=red><A NAME="87_14"></A></FONT> (Spacing : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#149_14">New_Page</A><FONT COLOR=red><A NAME="89_14"></A></FONT> (<FONT COLOR=red><A NAME="89_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>);
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#155_14">New_Page</A><FONT COLOR=red><A NAME="90_14"></A></FONT>;
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#161_14">Set_Col</A><FONT COLOR=red><A NAME="92_14"></A></FONT> (<FONT COLOR=red><A NAME="92_23">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;  To : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#189_14">Set_Col</A><FONT COLOR=red><A NAME="93_14"></A></FONT> (To : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#195_14">Set_Line</A><FONT COLOR=red><A NAME="95_14"></A></FONT> (<FONT COLOR=red><A NAME="95_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; To : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#218_14">Set_Line</A><FONT COLOR=red><A NAME="96_14"></A></FONT> (To : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#224_13">Col</A><FONT COLOR=red><A NAME="98_13"></A></FONT> (<FONT COLOR=red><A NAME="98_18">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#238_13">Col</A><FONT COLOR=red><A NAME="99_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
+
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#244_13">Line</A><FONT COLOR=red><A NAME="101_13"></A></FONT> (<FONT COLOR=red><A NAME="101_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
+   <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#258_13">Line</A><FONT COLOR=red><A NAME="102_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
+
+  <FONT COLOR=green><EM>-----------------------</EM></FONT>
+  <FONT COLOR=green><EM>-- Characters-Output --</EM></FONT>
+  <FONT COLOR=green><EM>-----------------------</EM></FONT>
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#268_14">Put</A><FONT COLOR=red><A NAME="108_14"></A></FONT> (<FONT COLOR=red><A NAME="108_19">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; Item : <b>in</b> Character);
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#286_14">Put</A><FONT COLOR=red><A NAME="109_14"></A></FONT> (Item : <b>in</b> Character);
+
+  <FONT COLOR=green><EM>--------------------</EM></FONT>
+  <FONT COLOR=green><EM>-- Strings-Output --</EM></FONT>
+  <FONT COLOR=green><EM>--------------------</EM></FONT>
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#296_14">Put</A><FONT COLOR=red><A NAME="115_14"></A></FONT> (<FONT COLOR=red><A NAME="115_19">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; Item : <b>in</b> String);
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#314_14">Put</A><FONT COLOR=red><A NAME="116_14"></A></FONT> (Item : <b>in</b> String);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#320_14">Put_Line</A><FONT COLOR=red><A NAME="118_14"></A></FONT>
+     (<FONT COLOR=red><A NAME="119_7">Win</A></FONT>  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Item : <b>in</b> String);
+
+   <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#329_14">Put_Line</A><FONT COLOR=red><A NAME="122_14"></A></FONT>
+     (Item : <b>in</b> String);
+
+  <FONT COLOR=green><EM>--  Exceptions</EM></FONT>
+
+   <FONT COLOR=red><A NAME="127_4">Status_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#21_4">Status_Error</A>;
+   <FONT COLOR=red><A NAME="128_4">Mode_Error</A></FONT>   : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#22_4">Mode_Error</A>;
+   <FONT COLOR=red><A NAME="129_4">Name_Error</A></FONT>   : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#23_4">Name_Error</A>;
+   <FONT COLOR=red><A NAME="130_4">Use_Error</A></FONT>    : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#24_4">Use_Error</A>;
+   <FONT COLOR=red><A NAME="131_4">Device_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#25_4">Device_Error</A>;
+   <FONT COLOR=red><A NAME="132_4">End_Error</A></FONT>    : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#26_4">End_Error</A>;
+   <FONT COLOR=red><A NAME="133_4">Data_Error</A></FONT>   : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#27_4">Data_Error</A>;
+   <FONT COLOR=red><A NAME="134_4">Layout_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#28_4">Layout_Error</A>;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface-curses__ads.htm b/Ada95/html/ada/terminal_interface-curses__ads.htm
new file mode 100644 (file)
index 0000000..bbdf734
--- /dev/null
@@ -0,0 +1,1743 @@
+<HEAD><TITLE>terminal_interface-curses.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                         Terminal_Interface.Curses                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996                          --</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  @Revision: 1.24 @</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  curses binding.</EM></FONT>
+<FONT COLOR=green><EM>--  This module is generated. Please don't change it manually!</EM></FONT>
+<FONT COLOR=green><EM>--  Run the generator instead.</EM></FONT>
+<FONT COLOR=green><EM>--  |</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm>3_9">System</A>.Storage_Elements;
+<b>with</b> Interfaces.C;  <FONT COLOR=green><EM>--  We need this for some assertions.</EM></FONT>
+
+<b>package</b> Terminal_Interface.Curses <b>is</b>
+   <b>pragma</b> Preelaborate (Terminal_Interface.Curses);
+   <b>pragma</b> Linker_Options ("-lAdaCurses");
+   <b>pragma</b> Linker_Options ("-lncurses");
+
+   <FONT COLOR=red><A NAME="54_4">NC_Major_Version</A></FONT> : <b>constant</b> := 5;<FONT COLOR=green><EM>--  Major version of the library</EM></FONT>
+   NC_Minor_Version : <b>constant</b> := 0;<FONT COLOR=green><EM>--  Minor version of the library</EM></FONT>
+   NC_Version : <b>constant</b> String := "5.0"; <FONT COLOR=green><EM>--  Version of library</EM></FONT>
+
+   <b>type</b> Window <b>is</b> <b>private</b>;
+   Null_Window : <b>constant</b> Window;
+
+   <b>type</b> <FONT COLOR=red><A NAME="61_9">Line_Position</A></FONT>   <b>is</b> <b>new</b> Natural;<FONT COLOR=green><EM>--  line coordinate</EM></FONT>
+   <b>type</b> Column_Position <b>is</b> <b>new</b> Natural;<FONT COLOR=green><EM>--  column coordinate</EM></FONT>
+
+   <b>subtype</b> Line_Count   <b>is</b> Line_Position   <b>range</b> 1 .. Line_Position'Last;
+  <FONT COLOR=green><EM>--  Type to count lines. We do not allow null windows, so must be positive</EM></FONT>
+   <b>subtype</b> Column_Count <b>is</b> Column_Position <b>range</b> 1 .. Column_Position'Last;
+  <FONT COLOR=green><EM>--  Type to count columns. We do not allow null windows, so must be positive</EM></FONT>
+
+   <b>type</b> Key_Code <b>is</b> <b>new</b> Natural;
+  <FONT COLOR=green><EM>--  That is anything including real characters, special keys and logical</EM></FONT>
+  <FONT COLOR=green><EM>--  request codes.</EM></FONT>
+
+   <b>subtype</b> Real_Key_Code <b>is</b> Key_Code <b>range</b> 0 .. 8#777#;
+  <FONT COLOR=green><EM>--  This are the codes that potentially represent a real keystroke.</EM></FONT>
+  <FONT COLOR=green><EM>--  Not all codes may be possible on a specific terminal. To check the</EM></FONT>
+  <FONT COLOR=green><EM>--  availability of a special key, the Has_Key function is provided.</EM></FONT>
+
+   <b>subtype</b> Special_Key_Code <b>is</b> Real_Key_Code
+     <b>range</b> 8#400# .. Real_Key_Code'Last;
+  <FONT COLOR=green><EM>--  Type for a function- or special key number</EM></FONT>
+
+   <b>subtype</b> Normal_Key_Code <b>is</b> Real_Key_Code <b>range</b>
+     Character'Pos (Character'First) .. Character'Pos (Character'Last);
+  <FONT COLOR=green><EM>--  This are the codes for regular (incl. non-graphical) characters.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  Constants for function- and special keys</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   Key_None                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#400#;
+   Key_Code_Yes                   : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#400#;
+   Key_Min                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#401#;
+   Key_Break                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#401#;
+   Key_Cursor_Down                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#402#;
+   Key_Cursor_Up                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#403#;
+   Key_Cursor_Left                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#404#;
+   Key_Cursor_Right               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#405#;
+   Key_Home                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#406#;
+   Key_Backspace                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#407#;
+   Key_F0                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#410#;
+   Key_F1                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#411#;
+   Key_F2                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#412#;
+   Key_F3                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#413#;
+   Key_F4                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#414#;
+   Key_F5                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#415#;
+   Key_F6                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#416#;
+   Key_F7                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#417#;
+   Key_F8                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#420#;
+   Key_F9                         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#421#;
+   Key_F10                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#422#;
+   Key_F11                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#423#;
+   Key_F12                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#424#;
+   Key_F13                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#425#;
+   Key_F14                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#426#;
+   Key_F15                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#427#;
+   Key_F16                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#430#;
+   Key_F17                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#431#;
+   Key_F18                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#432#;
+   Key_F19                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#433#;
+   Key_F20                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#434#;
+   Key_F21                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#435#;
+   Key_F22                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#436#;
+   Key_F23                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#437#;
+   Key_F24                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#440#;
+   Key_Delete_Line                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#510#;
+   Key_Insert_Line                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#511#;
+   Key_Delete_Char                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#512#;
+   Key_Insert_Char                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#513#;
+   Key_Exit_Insert_Mode           : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#514#;
+   Key_Clear_Screen               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#515#;
+   Key_Clear_End_Of_Screen        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#516#;
+   Key_Clear_End_Of_Line          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#517#;
+   Key_Scroll_1_Forward           : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#520#;
+   Key_Scroll_1_Backward          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#521#;
+   Key_Next_Page                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#522#;
+   Key_Previous_Page              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#523#;
+   Key_Set_Tab                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#524#;
+   Key_Clear_Tab                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#525#;
+   Key_Clear_All_Tabs             : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#526#;
+   Key_Enter_Or_Send              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#527#;
+   Key_Soft_Reset                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#530#;
+   Key_Reset                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#531#;
+   Key_Print                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#532#;
+   Key_Bottom                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#533#;
+   Key_Upper_Left_Of_Keypad       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#534#;
+   Key_Upper_Right_Of_Keypad      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#535#;
+   Key_Center_Of_Keypad           : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#536#;
+   Key_Lower_Left_Of_Keypad       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#537#;
+   Key_Lower_Right_Of_Keypad      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#540#;
+   Key_Back_Tab                   : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#541#;
+   Key_Beginning                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#542#;
+   Key_Cancel                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#543#;
+   Key_Close                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#544#;
+   Key_Command                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#545#;
+   Key_Copy                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#546#;
+   Key_Create                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#547#;
+   Key_End                        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#550#;
+   Key_Exit                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#551#;
+   Key_Find                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#552#;
+   Key_Help                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#553#;
+   Key_Mark                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#554#;
+   Key_Message                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#555#;
+   Key_Move                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#556#;
+   Key_Next                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#557#;
+   Key_Open                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#560#;
+   Key_Options                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#561#;
+   Key_Previous                   : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#562#;
+   Key_Redo                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#563#;
+   Key_Reference                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#564#;
+   Key_Refresh                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#565#;
+   Key_Replace                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#566#;
+   Key_Restart                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#567#;
+   Key_Resume                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#570#;
+   Key_Save                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#571#;
+   Key_Shift_Begin                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#572#;
+   Key_Shift_Cancel               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#573#;
+   Key_Shift_Command              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#574#;
+   Key_Shift_Copy                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#575#;
+   Key_Shift_Create               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#576#;
+   Key_Shift_Delete_Char          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#577#;
+   Key_Shift_Delete_Line          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#600#;
+   Key_Select                     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#601#;
+   Key_Shift_End                  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#602#;
+   Key_Shift_Clear_End_Of_Line    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#603#;
+   Key_Shift_Exit                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#604#;
+   Key_Shift_Find                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#605#;
+   Key_Shift_Help                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#606#;
+   Key_Shift_Home                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#607#;
+   Key_Shift_Insert_Char          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#610#;
+   Key_Shift_Cursor_Left          : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#611#;
+   Key_Shift_Message              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#612#;
+   Key_Shift_Move                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#613#;
+   Key_Shift_Next_Page            : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#614#;
+   Key_Shift_Options              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#615#;
+   Key_Shift_Previous_Page        : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#616#;
+   Key_Shift_Print                : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#617#;
+   Key_Shift_Redo                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#620#;
+   Key_Shift_Replace              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#621#;
+   Key_Shift_Cursor_Right         : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#622#;
+   Key_Shift_Resume               : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#623#;
+   Key_Shift_Save                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#624#;
+   Key_Shift_Suspend              : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#625#;
+   Key_Shift_Undo                 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#626#;
+   Key_Suspend                    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#627#;
+   Key_Undo                       : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#630#;
+   Key_Mouse                      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#631#;
+   Key_Resize                     : <b>constant</b> Special_Key_Code := 8#632#;
+
+   Key_Max                        : <b>constant</b> Special_Key_Code
+     := Special_Key_Code'Last;
+
+   <b>subtype</b> User_Key_Code <b>is</b> Key_Code
+     <b>range</b> (Key_Max + 129) .. Key_Code'Last;
+  <FONT COLOR=green><EM>--  This is reserved for user defined key codes. The range between Key_Max</EM></FONT>
+  <FONT COLOR=green><EM>--  and the first user code is reserved for subsystems like menu and forms.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  For those who like to use the original key names we produce them were</EM></FONT>
+  <FONT COLOR=green><EM>--  they differ from the original. Please note that they may differ in</EM></FONT>
+  <FONT COLOR=green><EM>--  lower/upper case.</EM></FONT>
+   KEY_DOWN         : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Cursor_Down;
+   KEY_UP           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Cursor_Up;
+   KEY_LEFT         : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Cursor_Left;
+   KEY_RIGHT        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Cursor_Right;
+   KEY_DL           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Delete_Line;
+   KEY_IL           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Insert_Line;
+   KEY_DC           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Delete_Char;
+   KEY_IC           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Insert_Char;
+   KEY_EIC          : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Exit_Insert_Mode;
+   KEY_CLEAR        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_Screen;
+   KEY_EOS          : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_End_Of_Screen;
+   KEY_EOL          : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_End_Of_Line;
+   KEY_SF           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Scroll_1_Forward;
+   KEY_SR           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Scroll_1_Backward;
+   KEY_NPAGE        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Next_Page;
+   KEY_PPAGE        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Previous_Page;
+   KEY_STAB         : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Set_Tab;
+   KEY_CTAB         : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_Tab;
+   KEY_CATAB        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_All_Tabs;
+   KEY_ENTER        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Enter_Or_Send;
+   KEY_SRESET       : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Soft_Reset;
+   KEY_LL           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Bottom;
+   KEY_A1           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Upper_Left_Of_Keypad;
+   KEY_A3           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Upper_Right_Of_Keypad;
+   KEY_B2           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Center_Of_Keypad;
+   KEY_C1           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Lower_Left_Of_Keypad;
+   KEY_C3           : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Lower_Right_Of_Keypad;
+   KEY_BTAB         : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Back_Tab;
+   KEY_BEG          : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Beginning;
+   KEY_SBEG         : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Begin;
+   KEY_SCANCEL      : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Cancel;
+   KEY_SCOMMAND     : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Command;
+   KEY_SCOPY        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Copy;
+   KEY_SCREATE      : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Create;
+   KEY_SDC          : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Delete_Char;
+   KEY_SDL          : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Delete_Line;
+   KEY_SEND         : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_End;
+   KEY_SEOL         : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Clear_End_Of_Line;
+   KEY_SEXIT        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Exit;
+   KEY_SFIND        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Find;
+   KEY_SHELP        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Help;
+   KEY_SHOME        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Home;
+   KEY_SIC          : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Insert_Char;
+   KEY_SLEFT        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Cursor_Left;
+   KEY_SMESSAGE     : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Message;
+   KEY_SMOVE        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Move;
+   KEY_SNEXT        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Next_Page;
+   KEY_SOPTIONS     : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Options;
+   KEY_SPREVIOUS    : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Previous_Page;
+   KEY_SPRINT       : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Print;
+   KEY_SREDO        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Redo;
+   KEY_SREPLACE     : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Replace;
+   KEY_SRIGHT       : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Cursor_Right;
+   KEY_SRSUME       : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Resume;
+   KEY_SSAVE        : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Save;
+   KEY_SSUSPEND     : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Suspend;
+   KEY_SUNDO        : Special_Key_Code <b>renames</b> Key_Shift_Undo;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+   <b>type</b><A HREF="terminal_interface-curses__ads.htm>77_9"> </A>Color_Number <b>is</b> <b>range</b><A HREF="interfac__ads.htm>3_9"> </A>0 .. Integer<A HREF="i-c__ads.htm#36_9"> </A>(Interfaces.C.short'Last);
+   <b>for</b> Color_Number'Size <b>use</b> Interfaces.C.short'Size;
+  <FONT COLOR=green><EM>--  (n)curses uses a short for the color index</EM></FONT>
+  <FONT COLOR=green><EM>--  The model is, that a Color_Number is an index into an array of</EM></FONT>
+  <FONT COLOR=green><EM>--  (potentially) definable colors. Some of those indices are</EM></FONT>
+  <FONT COLOR=green><EM>--  predefined (see below), although they may not really exist.</EM></FONT>
+
+   Black    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 0;
+   Red      : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 1;
+   Green    : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 2;
+   Yellow   : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 3;
+   Blue     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 4;
+   Magenta  : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 5;
+   Cyan     : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 6;
+   White    : <b>constant</b> Color_Number := 7;
+
+   <b>type</b><A HREF="terminal_interface-curses__ads.htm>93_9"> </A>RGB_Value <b>is</b> <b>range</b><A HREF="interfac__ads.htm>3_9"> </A>0 .. Integer<A HREF="i-c__ads.htm#36_9"> </A>(Interfaces.C.short'Last);
+   <b>for</b> RGB_Value'Size <b>use</b> Interfaces.C.short'Size;
+  <FONT COLOR=green><EM>--  Some system may allow to redefine a color by setting RGB values.</EM></FONT>
+
+   <b>type</b><A HREF="terminal_interface-curses__ads.htm>97_9"> </A>Color_Pair <b>is</b> <b>range</b> 0 .. 255;
+   <b>for</b> Color_Pair'Size <b>use</b> 8;
+   <b>subtype</b> Redefinable_Color_Pair <b>is</b> Color_Pair <b>range</b> 1 .. 255;
+  <FONT COLOR=green><EM>--  (n)curses reserves 1 Byte for the color-pair number. Color Pair 0</EM></FONT>
+  <FONT COLOR=green><EM>--  is fixed (Black & White). A color pair is simply a combination of</EM></FONT>
+  <FONT COLOR=green><EM>--  two colors described by Color_Numbers, one for the foreground and</EM></FONT>
+  <FONT COLOR=green><EM>--  the other for the background</EM></FONT>
+
+   <b>type</b> Character_Attribute_Set <b>is</b>
+      <b>record</b>
+         Stand_Out               : Boolean;
+         Under_Line              : Boolean;
+         Reverse_Video           : Boolean;
+         Blink                   : Boolean;
+         Dim_Character           : Boolean;
+         Bold_Character          : Boolean;
+         Alternate_Character_Set : Boolean;
+         Invisible_Character     : Boolean;
+         Protected_Character     : Boolean;
+         Horizontal              : Boolean;
+         Left                    : Boolean;
+         Low                     : Boolean;
+         Right                   : Boolean;
+         Top                     : Boolean;
+         Vertical                : Boolean;
+      <b>end</b> <b>record</b><A HREF="terminal_interface-curses__ads.htm#305_9">;</A>
+   <b>pragma</b> Pack (Character_Attribute_Set);
+   <b>pragma</b> Convention (C, Character_Attribute_Set);
+
+   <b>for</b> Character_Attribute_Set <b>use</b>
+      <b>record</b>
+         Stand_Out               <b>at</b> 0 <b>range</b>  0 ..  0;
+         Under_Line              <b>at</b> 0 <b>range</b>  1 ..  1;
+         Reverse_Video           <b>at</b> 0 <b>range</b>  2 ..  2;
+         Blink                   <b>at</b> 0 <b>range</b>  3 ..  3;
+         Dim_Character           <b>at</b> 0 <b>range</b>  4 ..  4;
+         Bold_Character          <b>at</b> 0 <b>range</b>  5 ..  5;
+         Alternate_Character_Set <b>at</b> 0 <b>range</b>  6 ..  6;
+         Invisible_Character     <b>at</b> 0 <b>range</b>  7 ..  7;
+         Protected_Character     <b>at</b> 0 <b>range</b>  8 ..  8;
+         Horizontal              <b>at</b> 0 <b>range</b>  9 ..  9;
+         Left                    <b>at</b> 0 <b>range</b> 10 .. 10;
+         Low                     <b>at</b> 0 <b>range</b> 11 .. 11;
+         Right                   <b>at</b> 0 <b>range</b> 12 .. 12;
+         Top                     <b>at</b> 0 <b>range</b> 13 .. 13;
+         Vertical                <b>at</b> 0 <b>range</b> 14 .. 14;
+      <b>end</b> <b>record</b>;
+   <b>for</b> Character_Attribute_Set'Size <b>use</b> 16;
+  <FONT COLOR=green><EM>--  Please note: this rep. clause is generated and may be</EM></FONT>
+  <FONT COLOR=green><EM>--               different on your system.</EM></FONT>
+  <FONT COLOR=green><EM>--  (n)curses uses all but the lowes 16 Bits for Attributes.</EM></FONT>
+
+   Normal_Video : <b>constant</b> Character_Attribute_Set := (<b>others</b> => False);
+
+   <b>type</b> Attributed_Character <b>is</b>
+      <b>record</b>
+         Attr  : <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
+         Color : Color_Pair;
+         Ch    : Character;
+      <b>end</b> <b>record</b>;
+   <b>pragma</b> Convention (C, Attributed_Character);
+  <FONT COLOR=green><EM>--  This is the counterpart for the chtype in C.</EM></FONT>
+
+   <b>for</b> Attributed_Character <b>use</b>
+      <b>record</b>
+         Ch    <b>at</b> 0 <b>range</b>  0 ..  7;
+         Color <b>at</b> 0 <b>range</b>  8 .. 15;
+         Attr  <b>at</b> 0 <b>range</b> 16 .. 31;
+      <b>end</b> <b>record</b>;
+   <b>for</b> Attributed_Character'Size <b>use</b> 32;
+     <FONT COLOR=green><EM>--  Please note: this rep. clause is generated and may be</EM></FONT>
+     <FONT COLOR=green><EM>--               different on your system.</EM></FONT>
+
+   Default_Character : <b>constant</b> Attributed_Character
+     := (Ch    => <A HREF="terminal_interface-curses__ads.htm>97_9">Character</A>'First,
+         Color => Color_Pair'First,
+         Attr  => (<b>others</b> => False)); <FONT COLOR=green><EM>--  preelaboratable Normal_Video</EM></FONT>
+
+   <b>type</b> Attributed_String <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> Attributed_Character;
+   <b>pragma</b> Pack (Attributed_String);
+  <FONT COLOR=green><EM>--  In this binding we allow strings of attributed characters.</EM></FONT>
+
+  <FONT COLOR=green><EM>------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  Exceptions  --</EM></FONT>
+  <FONT COLOR=green><EM>------------------</EM></FONT>
+   <FONT COLOR=red><A NAME="383_4">Curses_Exception</A></FONT>     : <b>exception</b>;
+   Wrong_Curses_Version : <b>exception</b>;
+
+  <FONT COLOR=green><EM>--  Those exceptions are raised by the ETI (Extended Terminal Interface)</EM></FONT>
+  <FONT COLOR=green><EM>--  subpackets for Menu and Forms handling.</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   <FONT COLOR=red><A NAME="389_4">Eti_System_Error</A></FONT>    : <b>exception</b>;
+   <FONT COLOR=red><A NAME="390_4">Eti_Bad_Argument</A></FONT>    : <b>exception</b>;
+   <FONT COLOR=red><A NAME="391_4">Eti_Posted</A></FONT>          : <b>exception</b>;
+   <FONT COLOR=red><A NAME="392_4">Eti_Connected</A></FONT>       : <b>exception</b>;
+   <FONT COLOR=red><A NAME="393_4">Eti_Bad_State</A></FONT>       : <b>exception</b>;
+   <FONT COLOR=red><A NAME="394_4">Eti_No_Room</A></FONT>         : <b>exception</b>;
+   <FONT COLOR=red><A NAME="395_4">Eti_Not_Posted</A></FONT>      : <b>exception</b>;
+   <FONT COLOR=red><A NAME="396_4">Eti_Unknown_Command</A></FONT> : <b>exception</b>;
+   <FONT COLOR=red><A NAME="397_4">Eti_No_Match</A></FONT>        : <b>exception</b>;
+   <FONT COLOR=red><A NAME="398_4">Eti_Not_Selectable</A></FONT>  : <b>exception</b>;
+   <FONT COLOR=red><A NAME="399_4">Eti_Not_Connected</A></FONT>   : <b>exception</b>;
+   <FONT COLOR=red><A NAME="400_4">Eti_Request_Denied</A></FONT>  : <b>exception</b>;
+   <FONT COLOR=red><A NAME="401_4">Eti_Invalid_Field</A></FONT>   : <b>exception</b>;
+   Eti_Current         : <b>exception</b>;
+
+  <FONT COLOR=green><EM>--------------------------------------------------------------------------</EM></FONT>
+  <FONT COLOR=green><EM>--  External C variables</EM></FONT>
+  <FONT COLOR=green><EM>--  Conceptually even in C this are kind of constants, but they are</EM></FONT>
+  <FONT COLOR=green><EM>--  initialized and sometimes changed by the library routines at runtime</EM></FONT>
+  <FONT COLOR=green><EM>--  depending on the type of terminal. I believe the best way to model</EM></FONT>
+  <FONT COLOR=green><EM>--  this is to use functions.</EM></FONT>
+  <FONT COLOR=green><EM>--------------------------------------------------------------------------</EM></FONT>
+
+   <b>function</b> Lines <A HREF="terminal_interface-curses__ads.htm#411_13"> </A>          <b>return</b> Line_Count;
+   <b>pragma</b> Inline (Lines);
+
+   <b>function</b> Columns          <b>return</b> Column_Count;
+   <b>pragma</b> Inline (Columns);
+
+   <b>function</b> Tab_Size         <b>return</b> Natural;
+   <b>pragma</b> Inline (Tab_Size);
+
+   <b>function</b> Number_Of_Colors <b>return</b> Natural;
+   <b>pragma</b> Inline (Number_Of_Colors);
+
+   <b>function</b> Number_Of_Color_Pairs <b>return</b> Natural;
+   <b>pragma</b> Inline (Number_Of_Color_Pairs);
+
+   ACS_Map : <b>array</b> (Character'Val (0) .. Character'Val (127)) <b>of</b>
+     Attributed_Character;
+   <b>pragma</b> Import (C, ACS_Map, "acs_map");
+  <FONT COLOR=green><EM>--</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+  <FONT COLOR=green><EM>--  Constants for several symbols from the Alternate Character Set</EM></FONT>
+  <FONT COLOR=green><EM>--  You must use this constants as indices into the ACS_Map array</EM></FONT>
+  <FONT COLOR=green><EM>--  to get the corresponding attributed character at runtime.</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   ACS_Upper_Left_Corner    : <b>constant</b> Character := 'l';
+   ACS_Lower_Left_Corner    : <b>constant</b> Character := 'm';
+   ACS_Upper_Right_Corner   : <b>constant</b> Character := 'k';
+   ACS_Lower_Right_Corner   : <b>constant</b> Character := 'j';
+   ACS_Left_Tee             : <b>constant</b> Character := 't';
+   ACS_Right_Tee            : <b>constant</b> Character := 'u';
+   ACS_Bottom_Tee           : <b>constant</b> Character := 'v';
+   ACS_Top_Tee              : <b>constant</b> Character := 'w';
+   ACS_Horizontal_Line      : <b>constant</b> Character := 'q';
+   ACS_Vertical_Line        : <b>constant</b> Character := 'x';
+   ACS_Plus_Symbol          : <b>constant</b> Character := 'n';
+   ACS_Scan_Line_1          : <b>constant</b> Character := 'o';
+   ACS_Scan_Line_9          : <b>constant</b> Character := 's';
+   ACS_Diamond              : <b>constant</b> Character := Character'Val (96);
+   ACS_Checker_Board        : <b>constant</b> Character := 'a';
+   ACS_Degree               : <b>constant</b> Character := 'f';
+   ACS_Plus_Minus           : <b>constant</b> Character := 'g';
+   ACS_Bullet               : <b>constant</b> Character := '~';
+   ACS_Left_Arrow           : <b>constant</b> Character := ',';
+   ACS_Right_Arrow          : <b>constant</b> Character := '+';
+   ACS_Down_Arrow           : <b>constant</b> Character := '.';
+   ACS_Up_Arrow             : <b>constant</b> Character := '-';
+   ACS_Board_Of_Squares     : <b>constant</b> Character := 'h';
+   ACS_Lantern              : <b>constant</b> Character := 'i';
+   ACS_Solid_Block          : <b>constant</b> Character := '0';
+   ACS_Scan_Line_3          : <b>constant</b> Character := 'p';
+   ACS_Scan_Line_7          : <b>constant</b> Character := 'r';
+   ACS_Less_Or_Equal        : <b>constant</b> Character := 'y';
+   ACS_Greater_Or_Equal     : <b>constant</b> Character := 'z';
+   ACS_PI                   : <b>constant</b> Character := '{';
+   ACS_Not_Equal            : <b>constant</b> Character := '|';
+   ACS_Sterling             : <b>constant</b> Character := '}';
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Not implemented: newterm, set_term, delscreen</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_1">|</EM></FONT>
+   <b>function</b> Standard_Window <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_initscr.3x.html">stdscr</A></EM></FONT>
+   <b>pragma</b> Inline (Standard_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_2">|</EM></FONT>
+   <b>procedure</b> Init_Screen;
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_3">|</EM></FONT>
+   <b>procedure</b> Init_Windows <b>renames</b> Init_Screen;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_initscr.3x.html">initscr()</A></EM></FONT>
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#482_14">Init_Screen</A>);
+   <b>pragma</b> Inline (Init_Windows);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_4">|</EM></FONT>
+   <b>procedure</b> End_Windows;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_initscr.3x.html">endwin()</A></EM></FONT>
+   <b>procedure</b> End_Screen <b>renames</b> End_Windows;
+   <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#490_14">End_Windows</A>);
+   <b>pragma</b> Inline (End_Screen);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_5">|</EM></FONT>
+   <b>function</b> Is_End_Window <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_initscr.3x.html">isendwin()</A></EM></FONT>
+   <b>pragma</b> Inline (Is_End_Window);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_move.3x.html">curs_move.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_6">|</EM></FONT>
+   <b>procedure</b> Move_Cursor (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                          Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                          Column : <b>in</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_move.3x.html">wmove()</A></EM></FONT>
+   <b>pragma</b> Inline (Move_Cursor);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_7">|</EM></FONT>
+   <b>procedure</b> Add (Win :  <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
+                  Ch  :  <b>in</b> Attributed_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_addch.3x.html">waddch()</A></EM></FONT>
+
+   <b>procedure</b> Add (Win :  <b>in</b> Window := Standard_Window;
+                  Ch  :  <b>in</b> Character);
+  <FONT COLOR=green><EM>--  Add a single character at the current logical cursor position to</EM></FONT>
+  <FONT COLOR=green><EM>--  the window. Use the current windows attributes.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_8">|</EM></FONT>
+   <b>procedure</b> Add
+     (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+      Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Column_Position</A>;
+      Ch     : <b>in</b> Attributed_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_addch.3x.html">mvwaddch()</A></EM></FONT>
+
+   <b>procedure</b> Add
+     (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+      Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Column : <b>in</b> Column_Position;
+      Ch     : <b>in</b> Character);
+  <FONT COLOR=green><EM>--  Move to the position and add a single character into the window</EM></FONT>
+  <FONT COLOR=green><EM>--  There are more Add routines, so the Inline pragma follows later</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_9">|</EM></FONT>
+   <b>procedure</b> Add_With_Immediate_Echo
+     (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
+      Ch  : <b>in</b> Attributed_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_addch.3x.html">wechochar()</A></EM></FONT>
+
+   <b>procedure</b> Add_With_Immediate_Echo
+     (Win : <b>in</b> Window := Standard_Window;
+      Ch  : <b>in</b> Character);
+  <FONT COLOR=green><EM>--  Add a character and do an immediate resfresh of the screen.</EM></FONT>
+   <b>pragma</b> Inline (Add_With_Immediate_Echo);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_window.3x.html">curs_window.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_10">|</EM></FONT>
+   <b>function</b> Create
+     (Number_Of_Lines       : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+      Number_Of_Columns     : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
+      First_Line_Position   : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      First_Column_Position : Column_Position) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">newwin()</A></EM></FONT>
+   <b>pragma</b> Inline (Create);
+
+   <b>function</b> New_Window
+     (Number_Of_Lines       : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+      Number_Of_Columns     : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
+      First_Line_Position   : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      First_Column_Position : Column_Position) <b>return</b> Window
+     <b>renames</b> Create;
+   <b>pragma</b> Inline (New_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_11">|</EM></FONT>
+   <b>procedure</b> Delete (Win : <b>in</b> <b>out</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">delwin()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Reset Win to Null_Window</EM></FONT>
+   <b>pragma</b> Inline (Delete);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_12">|</EM></FONT>
+   <b>function</b> Sub_Window
+     (Win                   : <A HREF="terminal_interface-curses__ads.htm#63_12">Window</A> := Standard_Window;
+      Number_Of_Lines       : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+      Number_Of_Columns     : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
+      First_Line_Position   : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      First_Column_Position : Column_Position) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">subwin()</A></EM></FONT>
+   <b>pragma</b> Inline (Sub_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_13">|</EM></FONT>
+   <b>function</b> Derived_Window
+     (Win                   : <A HREF="terminal_interface-curses__ads.htm#63_12">Window</A> := Standard_Window;
+      Number_Of_Lines       : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+      Number_Of_Columns     : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
+      First_Line_Position   : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      First_Column_Position : Column_Position) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">derwin()</A></EM></FONT>
+   <b>pragma</b> Inline (Derived_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_14">|</EM></FONT>
+   <b>function</b> Duplicate (Win : Window) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">dupwin()</A></EM></FONT>
+   <b>pragma</b> Inline (Duplicate);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_15">|</EM></FONT>
+   <b>procedure</b> Move_Window (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
+                          Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                          Column : <b>in</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">mvwin()</A></EM></FONT>
+   <b>pragma</b> Inline (Move_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_16">|</EM></FONT>
+   <b>procedure</b> Move_Derived_Window (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
+                                  Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                                  Column : <b>in</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">mvderwin()</A></EM></FONT>
+   <b>pragma</b> Inline (Move_Derived_Window);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_17">|</EM></FONT>
+   <b>procedure</b> Synchronize_Upwards (Win : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">wsyncup()</A></EM></FONT>
+   <b>pragma</b> Import (C, Synchronize_Upwards, "wsyncup");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_18">|</EM></FONT>
+   <b>procedure</b> Synchronize_Downwards (Win : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">wsyncdown()</A></EM></FONT>
+   <b>pragma</b> Import (C, Synchronize_Downwards, "wsyncdown");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_19">|</EM></FONT>
+   <b>procedure</b> Set_Synch_Mode (Win  : <b>in</b> Window := Standard_Window;
+                             Mode : <b>in</b> Boolean := False);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_window.3x.html">syncok()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Synch_Mode);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_20">|</EM></FONT>
+   <b>procedure</b> Add (Win : <b>in</b> Window := Standard_Window;
+                  Str : <b>in</b> String;
+                  Len : <b>in</b> Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_addstr.3x.html">waddnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: waddstr()</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_21">|</EM></FONT>
+   <b>procedure</b> Add (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                  Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                  Column : <b>in</b> Column_Position;
+                  Str    : <b>in</b> String;
+                  Len    : <b>in</b> Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_addstr.3x.html">mvwaddnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: mvwaddstr()</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_22">|</EM></FONT>
+   <b>procedure</b> Add (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#375_9">Window</A> := Standard_Window;
+                  Str : <b>in</b> Attributed_String;
+                  Len : <b>in</b> Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_addchstr.3x.html">waddchnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: waddchstr()</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_23">|</EM></FONT>
+   <b>procedure</b> Add (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                  Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                  Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#375_9">Column_Position</A>;
+                  Str    : <b>in</b> Attributed_String;
+                  Len    : <b>in</b> Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_addchstr.3x.html">mvwaddchnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: mvwaddchstr()</EM></FONT>
+   <b>pragma</b> Inline (Add);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_border.3x.html">curs_border.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_24">|</EM></FONT>
+   <b>procedure</b> Border
+     (Win                       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
+      Left_Side_Symbol          : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
+      Right_Side_Symbol         : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
+      Top_Side_Symbol           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
+      Bottom_Side_Symbol        : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
+      Upper_Left_Corner_Symbol  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
+      Upper_Right_Corner_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
+      Lower_Left_Corner_Symbol  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
+      Lower_Right_Corner_Symbol : <b>in</b> Attributed_Character := Default_Character
+     );
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_border.3x.html">wborder()</A></EM></FONT>
+   <b>pragma</b> Inline (Border);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_25">|</EM></FONT>
+   <b>procedure</b> Box
+     (Win               : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
+      Vertical_Symbol   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
+      Horizontal_Symbol : <b>in</b> Attributed_Character := Default_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_border.3x.html">box()</A></EM></FONT>
+   <b>pragma</b> Inline (Box);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_26">|</EM></FONT>
+   <b>procedure</b> Horizontal_Line
+     (Win         : <b>in</b> Window := Standard_Window;
+      Line_Size   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Natural</A>;
+      Line_Symbol : <b>in</b> Attributed_Character := Default_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_border.3x.html">whline()</A></EM></FONT>
+   <b>pragma</b> Inline (Horizontal_Line);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_27">|</EM></FONT>
+   <b>procedure</b> Vertical_Line
+     (Win         : <b>in</b> Window := Standard_Window;
+      Line_Size   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Natural</A>;
+      Line_Symbol : <b>in</b> Attributed_Character := Default_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_border.3x.html">wvline()</A></EM></FONT>
+   <b>pragma</b> Inline (Vertical_Line);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_28">|</EM></FONT>
+   <b>function</b> Get_Keystroke (Win : Window := Standard_Window)
+                           <b>return</b> Real_Key_Code;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getch.3x.html">wgetch()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Get a character from the keyboard and echo it - if enabled - to the</EM></FONT>
+  <FONT COLOR=green><EM>--  window.</EM></FONT>
+  <FONT COLOR=green><EM>--  If for any reason (i.e. a timeout) we couldn't get a character the</EM></FONT>
+  <FONT COLOR=green><EM>--  returned keycode is Key_None.</EM></FONT>
+   <b>pragma</b> Inline (Get_Keystroke);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_29">|</EM></FONT>
+   <b>procedure</b> Undo_Keystroke (Key : <b>in</b> Real_Key_Code);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getch.3x.html">ungetch()</A></EM></FONT>
+   <b>pragma</b> Inline (Undo_Keystroke);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_30">|</EM></FONT>
+   <b>function</b> Has_Key (Key : Special_Key_Code) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getch.3x.html">has_key()</A></EM></FONT>
+   <b>pragma</b> Inline (Has_Key);
+
+  <FONT COLOR=green><EM>--  |</EM></FONT>
+  <FONT COLOR=green><EM>--  | Some helper functions</EM></FONT>
+  <FONT COLOR=green><EM>--  |</EM></FONT>
+   <b>function</b> Is_Function_Key (Key : Special_Key_Code) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  Return True if the Key is a function key (i.e. one of F0 .. F63)</EM></FONT>
+   <b>pragma</b> Inline (Is_Function_Key);
+
+   <b>subtype</b> Function_Key_Number <b>is</b> Integer <b>range</b> 0 .. 63;
+  <FONT COLOR=green><EM>--  (n)curses allows for 64 function keys.</EM></FONT>
+
+   <b>function</b> Function_Key (Key : Real_Key_Code) <b>return</b> Function_Key_Number;
+  <FONT COLOR=green><EM>--  Return the number of the function key. If the code is not a</EM></FONT>
+  <FONT COLOR=green><EM>--  function key, a CONSTRAINT_ERROR will be raised.</EM></FONT>
+   <b>pragma</b> Inline (Function_Key);
+
+   <b>function</b> Function_Key_Code (Key : Function_Key_Number) <b>return</b> Real_Key_Code;
+  <FONT COLOR=green><EM>--  Return the key code for a given functionkey number.</EM></FONT>
+   <b>pragma</b> Inline (Function_Key_Code);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_31">|</EM></FONT>
+   <b>procedure</b> Switch_Character_Attribute
+     (Win  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Window</A> := Standard_Window;
+      Attr : <b>in</b> Character_Attribute_Set := Normal_Video;
+      On   : <b>in</b> Boolean := True);<FONT COLOR=green><EM>--  if False we switch Off.</EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_attr.3x.html">wattron()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: wattroff()</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_32">|</EM></FONT>
+   <b>procedure</b> Set_Character_Attributes
+     (Win   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Window</A> := Standard_Window;
+      Attr  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_attr.3x.html">wattrset()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Character_Attributes);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_33">|</EM></FONT>
+   <b>function</b> Get_Character_Attribute
+     (Win : <b>in</b> Window := Standard_Window) <b>return</b> Character_Attribute_Set;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_34">|</EM></FONT>
+   <b>function</b> Get_Character_Attribute
+     (Win : <b>in</b> Window := Standard_Window) <b>return</b> Color_Pair;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Character_Attribute);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_35">|</EM></FONT>
+   <b>procedure</b> Set_Color (Win  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Window</A> := Standard_Window;
+                        Pair : <b>in</b> Color_Pair);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_attr.3x.html">wcolor_set()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Color);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_36">|</EM></FONT>
+   <b>procedure</b> Change_Attributes
+     (Win   : <b>in</b> Window := Standard_Window;
+      Count : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Integer</A> := -1;
+      Attr  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_attr.3x.html">wchgat()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_37">|</EM></FONT>
+   <b>procedure</b> Change_Attributes
+     (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+      Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A> := Line_Position'First;
+      Column : <b>in</b> Column_Position := Column_Position'First;
+      Count  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Integer</A> := -1;
+      Attr   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color  : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_attr.3x.html">mvwchgat()</A></EM></FONT>
+   <b>pragma</b> Inline (Change_Attributes);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_38">|</EM></FONT>
+   <b>procedure</b> Beep;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_beep.3x.html">beep()</A></EM></FONT>
+   <b>pragma</b> Inline (Beep);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_39">|</EM></FONT>
+   <b>procedure</b> Flash_Screen;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_beep.3x.html">flash()</A></EM></FONT>
+   <b>pragma</b> Inline (Flash_Screen);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  | Not implemented : typeahead</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+  <FONT COLOR=green><EM>--  <A NAME="AFU_40">|</EM></FONT>
+   <b>procedure</b> Set_Cbreak_Mode (SwitchOn : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">cbreak()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: nocbreak()</EM></FONT>
+   <b>pragma</b> Inline (Set_Cbreak_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_41">|</EM></FONT>
+   <b>procedure</b> Set_Raw_Mode (SwitchOn : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">raw()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: noraw()</EM></FONT>
+   <b>pragma</b> Inline (Set_Raw_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_42">|</EM></FONT>
+   <b>procedure</b> Set_Echo_Mode (SwitchOn : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">echo()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: noecho()</EM></FONT>
+   <b>pragma</b> Inline (Set_Echo_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_43">|</EM></FONT>
+   <b>procedure</b> Set_Meta_Mode (Win      : <b>in</b> Window := Standard_Window;
+                            SwitchOn : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">meta()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Meta_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_44">|</EM></FONT>
+   <b>procedure</b> Set_KeyPad_Mode (Win      : <b>in</b> Window := Standard_Window;
+                              SwitchOn : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">keypad()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_KeyPad_Mode);
+
+   <b>type</b> Half_Delay_Amount <b>is</b> <b>range</b> 1 .. 255;
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_45">|</EM></FONT>
+   <b>procedure</b> Half_Delay (Amount : <b>in</b> Half_Delay_Amount);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">halfdelay()</A></EM></FONT>
+   <b>pragma</b> Inline (Half_Delay);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_46">|</EM></FONT>
+   <b>procedure</b> Set_Flush_On_Interrupt_Mode
+     (Win  : <b>in</b> Window := Standard_Window;
+      Mode : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">intrflush()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Flush_On_Interrupt_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_47">|</EM></FONT>
+   <b>procedure</b> Set_Queue_Interrupt_Mode
+     (Win   : <b>in</b> Window := Standard_Window;
+      Flush : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">qiflush()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: noqiflush()</EM></FONT>
+   <b>pragma</b> Inline (Set_Queue_Interrupt_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_48">|</EM></FONT>
+   <b>procedure</b> Set_NoDelay_Mode
+     (Win  : <b>in</b> Window := Standard_Window;
+      Mode : <b>in</b> Boolean := False);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">nodelay()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_NoDelay_Mode);
+
+   <b>type</b> Timeout_Mode <b>is</b> (Blocking, Non_Blocking, Delayed);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_49">|</EM></FONT>
+   <b>procedure</b> Set_Timeout_Mode (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#896_9">Window</A> := Standard_Window;
+                               Mode   : <b>in</b> Timeout_Mode;
+                               Amount : <b>in</b> Natural);<FONT COLOR=green><EM>--  in Miliseconds</EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">wtimeout()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Instead of overloading the semantic of the sign of amount, we</EM></FONT>
+  <FONT COLOR=green><EM>--  introduce the Timeout_Mode parameter. This should improve</EM></FONT>
+  <FONT COLOR=green><EM>--  readability. For Blocking and Non_Blocking, the Amount is not</EM></FONT>
+  <FONT COLOR=green><EM>--  evaluated.</EM></FONT>
+  <FONT COLOR=green><EM>--  We don't inline this procedure.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_50">|</EM></FONT>
+   <b>procedure</b> Set_Escape_Timer_Mode
+     (Win       : <b>in</b> Window := Standard_Window;
+      Timer_Off : <b>in</b> Boolean := False);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inopts.3x.html">notimeout()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Escape_Timer_Mode);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_51">|</EM></FONT>
+   <b>procedure</b> Set_NL_Mode (SwitchOn : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_outopts.3x.html">nl()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: nonl()</EM></FONT>
+   <b>pragma</b> Inline (Set_NL_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_52">|</EM></FONT>
+   <b>procedure</b> Clear_On_Next_Update
+     (Win      : <b>in</b> Window := Standard_Window;
+      Do_Clear : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_outopts.3x.html">clearok()</A></EM></FONT>
+   <b>pragma</b> Inline (Clear_On_Next_Update);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_53">|</EM></FONT>
+   <b>procedure</b> Use_Insert_Delete_Line
+     (Win    : <b>in</b> Window := Standard_Window;
+      Do_Idl : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_outopts.3x.html">idlok()</A></EM></FONT>
+   <b>pragma</b> Inline (Use_Insert_Delete_Line);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_54">|</EM></FONT>
+   <b>procedure</b> Use_Insert_Delete_Character
+     (Win    : <b>in</b> Window := Standard_Window;
+      Do_Idc : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_outopts.3x.html">idcok()</A></EM></FONT>
+   <b>pragma</b> Inline (Use_Insert_Delete_Character);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_55">|</EM></FONT>
+   <b>procedure</b> Leave_Cursor_After_Update
+     (Win      : <b>in</b> Window := Standard_Window;
+      Do_Leave : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_outopts.3x.html">leaveok()</A></EM></FONT>
+   <b>pragma</b> Inline (Leave_Cursor_After_Update);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_56">|</EM></FONT>
+   <b>procedure</b> Immediate_Update_Mode
+     (Win  : <b>in</b> Window := Standard_Window;
+      Mode : <b>in</b> Boolean := False);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_outopts.3x.html">immedok()</A></EM></FONT>
+   <b>pragma</b> Inline (Immediate_Update_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_57">|</EM></FONT>
+   <b>procedure</b> Allow_Scrolling
+     (Win  : <b>in</b> Window := Standard_Window;
+      Mode : <b>in</b> Boolean := False);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_outopts.3x.html">scrollok()</A></EM></FONT>
+   <b>pragma</b> Inline (Allow_Scrolling);
+
+   <b>function</b> Scrolling_Allowed (Win : Window := Standard_Window) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  There is no such function in the C interface.</EM></FONT>
+   <b>pragma</b> Inline (Scrolling_Allowed);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_58">|</EM></FONT>
+   <b>procedure</b> Set_Scroll_Region
+     (Win         : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+      Top_Line    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+      Bottom_Line : <b>in</b> Line_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_outopts.3x.html">wsetscrreg()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Scroll_Region);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_59">|</EM></FONT>
+   <b>procedure</b> Update_Screen;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_refresh.3x.html">doupdate()</A></EM></FONT>
+   <b>pragma</b> Inline (Update_Screen);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_60">|</EM></FONT>
+   <b>procedure</b> Refresh (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_refresh.3x.html">wrefresh()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  There is an overloaded Refresh for Pads.</EM></FONT>
+  <FONT COLOR=green><EM>--  The Inline pragma appears there</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_61">|</EM></FONT>
+   <b>procedure</b> Refresh_Without_Update
+     (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_refresh.3x.html">wnoutrefresh()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  There is an overloaded Refresh_Without_Update for Pads.</EM></FONT>
+  <FONT COLOR=green><EM>--  The Inline pragma appears there</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_62">|</EM></FONT>
+   <b>procedure</b> Redraw (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_refresh.3x.html">redrawwin()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_63">|</EM></FONT>
+   <b>procedure</b> Redraw (Win        : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                     Begin_Line : <b>in</b> Line_Position;
+                     Line_Count : <b>in</b> Positive);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_refresh.3x.html">wredrawln()</A></EM></FONT>
+   <b>pragma</b> Inline (Redraw);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_64">|</EM></FONT>
+   <b>procedure</b> Erase (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_clear.3x.html">werase()</A></EM></FONT>
+   <b>pragma</b> Inline (Erase);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_65">|</EM></FONT>
+   <b>procedure</b> Clear
+     (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_clear.3x.html">wclear()</A></EM></FONT>
+   <b>pragma</b> Inline (Clear);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_66">|</EM></FONT>
+   <b>procedure</b> Clear_To_End_Of_Screen
+     (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_clear.3x.html">wclrtobot()</A></EM></FONT>
+   <b>pragma</b> Inline (Clear_To_End_Of_Screen);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_67">|</EM></FONT>
+   <b>procedure</b> Clear_To_End_Of_Line
+     (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_clear.3x.html">wclrtoeol()</A></EM></FONT>
+   <b>pragma</b> Inline (Clear_To_End_Of_Line);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_68">|</EM></FONT>
+   <b>procedure</b> Set_Background
+     (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
+      Ch  : <b>in</b> Attributed_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdset()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Background);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_69">|</EM></FONT>
+   <b>procedure</b> Change_Background
+     (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
+      Ch  : <b>in</b> Attributed_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgd()</A></EM></FONT>
+   <b>pragma</b> Inline (Change_Background);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_70">|</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Get_Background</A> (Win : Window := Standard_Window)
+     <b>return</b> Attributed_Character;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdget()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Background);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_71">|</EM></FONT>
+   <b>procedure</b> Untouch (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_touch.3x.html">untouchwin()</A></EM></FONT>
+   <b>pragma</b> Inline (Untouch);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_72">|</EM></FONT>
+   <b>procedure</b> Touch (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_touch.3x.html">touchwin()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_73">|</EM></FONT>
+   <b>procedure</b> Touch (Win   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                    Start : <b>in</b> Line_Position;
+                    Count : <b>in</b> Positive);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_touch.3x.html">touchline()</A></EM></FONT>
+   <b>pragma</b> Inline (Touch);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_74">|</EM></FONT>
+   <b>procedure</b> Change_Lines_Status (Win   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                                  Start : <b>in</b> Line_Position;
+                                  Count : <b>in</b> Positive;
+                                  State : <b>in</b> Boolean);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_touch.3x.html">wtouchln()</A></EM></FONT>
+   <b>pragma</b> Inline (Change_Lines_Status);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_75">|</EM></FONT>
+   <b>function</b> Is_Touched (Win  : <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                        Line : Line_Position) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_touch.3x.html">is_linetouched()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_76">|</EM></FONT>
+   <b>function</b> Is_Touched (Win : Window := Standard_Window) <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_touch.3x.html">is_wintouched()</A></EM></FONT>
+   <b>pragma</b> Inline (Is_Touched);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_77">|</EM></FONT>
+   <b>procedure</b> Copy
+     (<FONT COLOR=red><A NAME="1109_7">Source_Window</A></FONT>            : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+      Destination_Window       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
+      Source_Top_Row           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Source_Left_Column       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      Destination_Top_Row      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Destination_Left_Column  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      Destination_Bottom_Row   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Destination_Right_Column : <b>in</b> Column_Position;
+      Non_Destructive_Mode     : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_overlay.3x.html">copywin()</A></EM></FONT>
+   <b>pragma</b> Inline (Copy);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_78">|</EM></FONT>
+   <b>procedure</b> Overwrite (<FONT COLOR=red><A NAME="1122_25">Source_Window</A></FONT>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+                        Destination_Window : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_overlay.3x.html">overwrite()</A></EM></FONT>
+   <b>pragma</b> Inline (Overwrite);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_79">|</EM></FONT>
+   <b>procedure</b> Overlay (<FONT COLOR=red><A NAME="1128_23">Source_Window</A></FONT>      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
+                      Destination_Window : <b>in</b> Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_overlay.3x.html">overlay()</A></EM></FONT>
+   <b>pragma</b> Inline (Overlay);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_80">|</EM></FONT>
+   <b>procedure</b> Insert_Delete_Lines
+     (Win   : <b>in</b> Window  := Standard_Window;
+      Lines : <b>in</b> Integer := 1);<FONT COLOR=green><EM>--  default is to insert one line above</EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_deleteln.3x.html">winsdelln()</A></EM></FONT>
+   <b>pragma</b> Inline (Insert_Delete_Lines);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_81">|</EM></FONT>
+   <b>procedure</b> Delete_Line (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_deleteln.3x.html">wdeleteln()</A></EM></FONT>
+   <b>pragma</b> Inline (Delete_Line);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_82">|</EM></FONT>
+   <b>procedure</b> Insert_Line (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_deleteln.3x.html">winsertln()</A></EM></FONT>
+   <b>pragma</b> Inline (Insert_Line);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_83">|</EM></FONT>
+   <b>procedure</b> Get_Size
+     (Win               : <b>in</b> Window := Standard_Window;
+      Number_Of_Lines   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+      Number_Of_Columns : <b>out</b> Column_Count);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getyx.3x.html">getmaxyx()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Size);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_84">|</EM></FONT>
+   <b>procedure</b> Get_Window_Position
+     (Win             : <b>in</b> Window := Standard_Window;
+      Top_Left_Line   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Top_Left_Column : <b>out</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getyx.3x.html">getbegyx()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Window_Position);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_85">|</EM></FONT>
+   <b>procedure</b> Get_Cursor_Position
+     (Win    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+      Line   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Column : <b>out</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getyx.3x.html">getyx()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Cursor_Position);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_86">|</EM></FONT>
+   <b>procedure</b> Get_Origin_Relative_To_Parent
+     (Win                : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
+      Top_Left_Line      : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Top_Left_Column    : <b>out</b> Column_Position;
+      Is_Not_A_Subwindow : <b>out</b> Boolean);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getyx.3x.html">getparyx()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Instead of placing -1 in the coordinates as return, we use a boolean</EM></FONT>
+  <FONT COLOR=green><EM>--  to return the info that the window has no parent.</EM></FONT>
+   <b>pragma</b> Inline (Get_Origin_Relative_To_Parent);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_87">|</EM></FONT>
+   <b>function</b> New_Pad (Lines   : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+                     Columns : Column_Count) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_pad.3x.html">newpad()</A></EM></FONT>
+   <b>pragma</b> Inline (New_Pad);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_88">|</EM></FONT>
+   <b>function</b> Sub_Pad
+     (Pad                   : <A HREF="terminal_interface-curses__ads.htm#63_12">Window</A>;
+      Number_Of_Lines       : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
+      Number_Of_Columns     : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
+      First_Line_Position   : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      First_Column_Position : Column_Position) <b>return</b> Window;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_pad.3x.html">subpad()</A></EM></FONT>
+   <b>pragma</b> Inline (Sub_Pad);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_89">|</EM></FONT>
+   <b>procedure</b> Refresh
+     (Pad                      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
+      Source_Top_Row           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Source_Left_Column       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      Destination_Top_Row      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Destination_Left_Column  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      Destination_Bottom_Row   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Destination_Right_Column : <b>in</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_pad.3x.html">prefresh()</A></EM></FONT>
+   <b>pragma</b> Inline (Refresh);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_90">|</EM></FONT>
+   <b>procedure</b> Refresh_Without_Update
+     (Pad                      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
+      Source_Top_Row           : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Source_Left_Column       : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      Destination_Top_Row      : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Destination_Left_Column  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+      Destination_Bottom_Row   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Destination_Right_Column : <b>in</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_pad.3x.html">pnoutrefresh()</A></EM></FONT>
+   <b>pragma</b> Inline (Refresh_Without_Update);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_91">|</EM></FONT>
+   <b>procedure</b> Add_Character_To_Pad_And_Echo_It
+     (Pad : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A>;
+      Ch  : <b>in</b> Attributed_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_pad.3x.html">pechochar()</A></EM></FONT>
+
+   <b>procedure</b> Add_Character_To_Pad_And_Echo_It
+     (Pad : <b>in</b> Window;
+      Ch  : <b>in</b> Character);
+   <b>pragma</b> Inline (Add_Character_To_Pad_And_Echo_It);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_scroll.3x.html">curs_scroll.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_92">|</EM></FONT>
+   <b>procedure</b> Scroll (Win    : <b>in</b> Window  := Standard_Window;
+                     Amount : <b>in</b> Integer := 1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_scroll.3x.html">wscrl()</A></EM></FONT>
+   <b>pragma</b> Inline (Scroll);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_93">|</EM></FONT>
+   <b>procedure</b> Delete_Character (Win : <b>in</b> Window := Standard_Window);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_delch.3x.html">wdelch()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_94">|</EM></FONT>
+   <b>procedure</b> Delete_Character
+     (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+      Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Column : <b>in</b> Column_Position);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_delch.3x.html">mvwdelch()</A></EM></FONT>
+   <b>pragma</b> Inline (Delete_Character);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_95">|</EM></FONT>
+   <b>function</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Peek</A> (Win : Window := Standard_Window)
+     <b>return</b> Attributed_Character;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inch.3x.html">winch()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_96">|</EM></FONT>
+   <b>function</b> Peek
+     (Win    : <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+      Line   : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Column : Column_Position) <b>return</b> Attributed_Character;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inch.3x.html">mvwinch()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  More Peek's follow, pragma Inline appears later.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_97">|</EM></FONT>
+   <b>procedure</b> Insert (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
+                     Ch  : <b>in</b> Attributed_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_winch.3x.html">winsch()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_98">|</EM></FONT>
+   <b>procedure</b> Insert (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                     Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                     Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Column_Position</A>;
+                     Ch     : <b>in</b> Attributed_Character);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_winch.3x.html">mvwinsch()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_99">|</EM></FONT>
+   <b>procedure</b> Insert (Win : <b>in</b> Window := Standard_Window;
+                     Str : <b>in</b> String;
+                     Len : <b>in</b> Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_winch.3x.html">winsnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: winsstr()</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_100">|</EM></FONT>
+   <b>procedure</b> Insert (Win    : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                     Line   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                     Column : <b>in</b> Column_Position;
+                     Str    : <b>in</b> String;
+                     Len    : <b>in</b> Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_winch.3x.html">mvwinsnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: mvwinsstr()</EM></FONT>
+   <b>pragma</b> Inline (Insert);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_101">|</EM></FONT>
+   <b>procedure</b> Peek (Win : <b>in</b>  Window := Standard_Window;
+                   Str : <b>out</b> String;
+                   Len : <b>in</b>  Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_instr.3x.html">winnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: winstr()</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_102">|</EM></FONT>
+   <b>procedure</b> Peek (Win    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                   Line   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                   Column : <b>in</b>  Column_Position;
+                   Str    : <b>out</b> String;
+                   Len    : <b>in</b>  Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_instr.3x.html">mvwinnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: mvwinstr()</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_103">|</EM></FONT>
+   <b>procedure</b> Peek (Win : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#375_9">Window</A> := Standard_Window;
+                   Str : <b>out</b> Attributed_String;
+                   Len : <b>in</b>  Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inchstr.3x.html">winchnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: winchstr()</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_104">|</EM></FONT>
+   <b>procedure</b> Peek (Win    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                   Line   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                   Column : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#375_9">Column_Position</A>;
+                   Str    : <b>out</b> Attributed_String;
+                   Len    : <b>in</b>  Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_inchstr.3x.html">mvwinchnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: mvwinchstr()</EM></FONT>
+  <FONT COLOR=green><EM>--  We don't inline the Peek procedures</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_105">|</EM></FONT>
+   <b>procedure</b> Get (Win : <b>in</b>  Window := Standard_Window;
+                  Str : <b>out</b> String;
+                  Len : <b>in</b>  Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getstr.3x.html">wgetnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: wgetstr()</EM></FONT>
+
+   <b>procedure</b> Get (Win    : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
+                  Line   : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+                  Column : <b>in</b>  Column_Position;
+                  Str    : <b>out</b> String;
+                  Len    : <b>in</b>  Integer := -1);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_getstr.3x.html">wgetnstr()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  not specified in ncurses, should be: mvwgetnstr()</EM></FONT>
+  <FONT COLOR=green><EM>--       and mvwgetstr() (which exists)</EM></FONT>
+  <FONT COLOR=green><EM>--  Get is not inlined</EM></FONT>
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+   <b>type</b> Soft_Label_Key_Format <b>is</b> (Three_Two_Three,
+                                  Four_Four,
+                                  PC_Style,             <FONT COLOR=green><EM>--  ncurses specific</EM></FONT>
+        <FONT COLOR=red><A NAME="1397_9"> </A></FONT>                         PC_Style_With_Index); <FONT COLOR=green><EM>--  "</EM></FONT>
+   <b>type</b> <FONT COLOR=red><A NAME="1398_9">Label_Number</A></FONT> <b>is</b> <b>new</b> Positive <b>range</b> 1 .. 12;
+   <b>type</b> Label_Justification <b>is</b> (Left, Centered, Right);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_106">|</EM></FONT>
+   <b>procedure</b> Init_Soft_Label_Keys
+     (Format : <b>in</b> Soft_Label_Key_Format := Three_Two_Three);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_init()</A></EM></FONT>
+   <b>pragma</b> Inline (Init_Soft_Label_Keys);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_107">|</EM></FONT>
+   <b>procedure</b> Set_Soft_Label_Key (Label : <b>in</b> Label_Number;
+                                 Text  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm<398_9">String</A>;
+                                 Fmt   : <b>in</b> Label_Justification := Left);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_set()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  We don't inline this procedure</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_108">|</EM></FONT>
+   <b>procedure</b> Refresh_Soft_Label_Keys;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_refresh()</A></EM></FONT>
+   <b>pragma</b> Inline (Refresh_Soft_Label_Keys);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_109">|</EM></FONT>
+   <b>procedure</b> Refresh_Soft_Label_Keys_Without_Update;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_noutrefresh()</A></EM></FONT>
+   <b>pragma</b> Inline (Refresh_Soft_Label_Keys_Without_Update);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_110">|</EM></FONT>
+   <b>procedure</b> Get_Soft_Label_Key (Label : <b>in</b> Label_Number;
+                                 Text  : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_111">|</EM></FONT>
+   <b>function</b> Get_Soft_Label_Key (Label : <b>in</b> Label_Number) <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Get_Soft_Label_Key);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_112">|</EM></FONT>
+   <b>procedure</b> Clear_Soft_Label_Keys;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_clear()</A></EM></FONT>
+   <b>pragma</b> Inline (Clear_Soft_Label_Keys);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_113">|</EM></FONT>
+   <b>procedure</b> Restore_Soft_Label_Keys;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_restore()</A></EM></FONT>
+   <b>pragma</b> Inline (Restore_Soft_Label_Keys);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_114">|</EM></FONT>
+   <b>procedure</b> Touch_Soft_Label_Keys;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_touch()</A></EM></FONT>
+   <b>pragma</b> Inline (Touch_Soft_Label_Keys);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_115">|</EM></FONT>
+   <b>procedure</b> Switch_Soft_Label_Key_Attributes
+     (Attr : <b>in</b> Character_Attribute_Set;
+      On   : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_attron()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: slk_attroff()</EM></FONT>
+   <b>pragma</b> Inline (Switch_Soft_Label_Key_Attributes);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_116">|</EM></FONT>
+   <b>procedure</b> Set_Soft_Label_Key_Attributes
+     (Attr  : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
+      Color : <b>in</b> Color_Pair := Color_Pair'First);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_attrset()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Soft_Label_Key_Attributes);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_117">|</EM></FONT>
+   <b>function</b> Get_Soft_Label_Key_Attributes <b>return</b> Character_Attribute_Set;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_118">|</EM></FONT>
+   <b>function</b> Get_Soft_Label_Key_Attributes <b>return</b> Color_Pair;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></FONT>
+   <b>pragma</b> Inline (Get_Soft_Label_Key_Attributes);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_119">|</EM></FONT>
+   <b>procedure</b> Set_Soft_Label_Key_Color (Pair : <b>in</b> Color_Pair);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_slk.3x.html">slk_color()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Soft_Label_Key_Color);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/keyok.3x.html">keyok.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_120">|</EM></FONT>
+   <b>procedure</b> Enable_Key (Key    : <b>in</b> Special_Key_Code;
+                         Enable : <b>in</b> Boolean := True);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/keyok.3x.html">keyok()</A></EM></FONT>
+   <b>pragma</b> Inline (Enable_Key);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/define_key.3x.html">define_key.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_121">|</EM></FONT>
+   <b>procedure</b> Define_Key (Definition : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#77_12">String</A>;
+                         Key        : <b>in</b> Special_Key_Code);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/define_key.3x.html">define_key()</A></EM></FONT>
+   <b>pragma</b> Inline (Define_Key);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_util.3x.html">curs_util.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  | Not implemented : filter, use_env, putwin, getwin</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+  <FONT COLOR=green><EM>--  <A NAME="AFU_122">|</EM></FONT>
+   <b>procedure</b> Key_Name (Key  : <b>in</b>  Real_Key_Code;
+                       Name : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  The external name for a real keystroke.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_123">|</EM></FONT>
+   <b>function</b> Key_Name (Key  : <b>in</b>  Real_Key_Code) <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+  <FONT COLOR=green><EM>--  We don't inline this routine</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_124">|</EM></FONT>
+   <b>procedure</b> Un_Control (Ch  : <b>in</b> Attributed_Character;
+                         Str : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_125">|</EM></FONT>
+   <b>function</b> Un_Control (Ch  : <b>in</b> Attributed_Character) <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Un_Control);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_126">|</EM></FONT>
+   <b>procedure</b> Delay_Output (Msecs : <b>in</b> Natural);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_util.3x.html">delay_output()</A></EM></FONT>
+   <b>pragma</b> Inline (Delay_Output);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_127">|</EM></FONT>
+   <b>procedure</b> Flush_Input;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_util.3x.html">flushinp()</A></EM></FONT>
+   <b>pragma</b> Inline (Flush_Input);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_128">|</EM></FONT>
+   <b>function</b> Baudrate <b>return</b> Natural;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">baudrate()</A></EM></FONT>
+   <b>pragma</b> Inline (Baudrate);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_129">|</EM></FONT>
+   <b>function</b> Erase_Character <b>return</b> Character;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">erasechar()</A></EM></FONT>
+   <b>pragma</b> Inline (Erase_Character);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_130">|</EM></FONT>
+   <b>function</b> Kill_Character <b>return</b> Character;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">killchar()</A></EM></FONT>
+   <b>pragma</b> Inline (Kill_Character);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_131">|</EM></FONT>
+   <b>function</b> Has_Insert_Character <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">has_ic()</A></EM></FONT>
+   <b>pragma</b> Inline (Has_Insert_Character);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_132">|</EM></FONT>
+   <b>function</b> Has_Insert_Line <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">has_il()</A></EM></FONT>
+   <b>pragma</b> Inline (Has_Insert_Line);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_133">|</EM></FONT>
+   <b>function</b> Supported_Attributes <b>return</b> Character_Attribute_Set;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">termattrs()</A></EM></FONT>
+   <b>pragma</b> Inline (Supported_Attributes);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_134">|</EM></FONT>
+   <b>procedure</b> Long_Name (Name : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_135">|</EM></FONT>
+   <b>function</b> Long_Name <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Long_Name);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_136">|</EM></FONT>
+   <b>procedure</b> Terminal_Name (Name : <b>out</b> String);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_137">|</EM></FONT>
+   <b>function</b> Terminal_Name <b>return</b> String;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  Same as function</EM></FONT>
+   <b>pragma</b> Inline (Terminal_Name);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_color.3x.html">curs_color.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_138">|</EM></FONT>
+   <b>procedure</b> Start_Color;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_color.3x.html">start_clolor()</A></EM></FONT>
+   <b>pragma</b> Import (C, Start_Color, "start_color");
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_139">|</EM></FONT>
+   <b>procedure</b> Init_Pair (Pair : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Redefinable_Color_Pair</A>;
+                        Fore : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A>;
+                        Back : <b>in</b> Color_Number);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_color.3x.html">init_pair()</A></EM></FONT>
+   <b>pragma</b> Inline (Init_Pair);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_140">|</EM></FONT>
+   <b>procedure</b> Pair_Content (Pair : <b>in</b> Color_Pair;
+                           Fore : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A>;
+                           Back : <b>out</b> Color_Number);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_color.3x.html">pair_content()</A></EM></FONT>
+   <b>pragma</b> Inline (Pair_Content);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_141">|</EM></FONT>
+   <b>function</b> Has_Colors <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_color.3x.html">has_colors()</A></EM></FONT>
+   <b>pragma</b> Inline (Has_Colors);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_142">|</EM></FONT>
+   <b>procedure</b> Init_Color (Color : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>93_9">Color_Number</A>;
+                         Red   : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>93_9">RGB_Value</A>;
+                         Green : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>93_9">RGB_Value</A>;
+                         Blue  : <b>in</b> RGB_Value);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_color.3x.html">init_color()</A></EM></FONT>
+   <b>pragma</b> Inline (Init_Color);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_143">|</EM></FONT>
+   <b>function</b> Can_Change_Color <b>return</b> Boolean;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_color.3x.html">can_change_color()</A></EM></FONT>
+   <b>pragma</b> Inline (Can_Change_Color);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_144">|</EM></FONT>
+   <b>procedure</b> Color_Content (Color : <b>in</b>  <A HREF="terminal_interface-curses__ads.htm>93_9">Color_Number</A>;
+                            Red   : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>93_9">RGB_Value</A>;
+                            Green : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>93_9">RGB_Value</A>;
+                            Blue  : <b>out</b> RGB_Value);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_color.3x.html">color_content()</A></EM></FONT>
+   <b>pragma</b> Inline (Color_Content);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Man page <A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+
+  <FONT COLOR=green><EM>--  | Not implemented: getsyx, setsyx</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   <b>type</b> Curses_Mode <b>is</b> (Curses, Shell);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_145">|</EM></FONT>
+   <b>procedure</b> Save_Curses_Mode (Mode : <b>in</b> Curses_Mode);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_kernel.3x.html">def_prog_mode()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: def_shell_mode()</EM></FONT>
+   <b>pragma</b> Inline (Save_Curses_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_146">|</EM></FONT>
+   <b>procedure</b> Reset_Curses_Mode (Mode : <b>in</b> Curses_Mode);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_kernel.3x.html">reset_prog_mode()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  AKA: reset_shell_mode()</EM></FONT>
+   <b>pragma</b> Inline (Reset_Curses_Mode);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_147">|</EM></FONT>
+   <b>procedure</b> Save_Terminal_State;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_kernel.3x.html">savetty()</A></EM></FONT>
+   <b>pragma</b> Inline (Save_Terminal_State);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_148">|</EM></FONT>
+   <b>procedure</b> Reset_Terminal_State;
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_kernel.3x.html">resetty();</A></EM></FONT>
+   <b>pragma</b> Inline (Reset_Terminal_State);
+
+   <b>type</b> Stdscr_Init_Proc <b>is</b> <b>access</b>
+      <b>function</b> (Win     : <A HREF="terminal_interface-curses__ads.htm#65_12">Window</A>;
+                Columns :<A HREF="terminal_interface-curses__ads.htm<670_9"> </A>Column_Count) <b>return</b> Integer;
+   <b>pragma</b> Convention (C, Stdscr_Init_Proc);
+  <FONT COLOR=green><EM>--  N.B.: the return value is actually ignored, but it seems to be</EM></FONT>
+  <FONT COLOR=green><EM>--        a good practice to return 0 if you think all went fine</EM></FONT>
+  <FONT COLOR=green><EM>--        and -1 otherwise.</EM></FONT>
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_149">|</EM></FONT>
+   <b>procedure</b> Rip_Off_Lines (Lines : <b>in</b> <A HREF="terminal_interface-curses__ads.htm<670_9">Integer</A>;
+                            Proc  : <b>in</b> Stdscr_Init_Proc);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_kernel.3x.html">ripoffline()</A></EM></FONT>
+  <FONT COLOR=green><EM>--  N.B.: to be more precise, this uses a ncurses specific enhancement of</EM></FONT>
+  <FONT COLOR=green><EM>--        ripoffline(), in which the Lines argument absolute value is the</EM></FONT>
+  <FONT COLOR=green><EM>--        number of lines to be ripped of. The official ripoffline() only</EM></FONT>
+  <FONT COLOR=green><EM>--        uses the sign of Lines to rip of a single line from bottom or top.</EM></FONT>
+   <b>pragma</b> Inline (Rip_Off_Lines);
+
+   <b>type</b> Cursor_Visibility <b>is</b> (Invisible, Normal, Very_Visible);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_150">|</EM></FONT>
+   <b>procedure</b> Set_Cursor_Visibility (Visibility : <b>in</b> <b>out</b> Cursor_Visibility);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_kernel.3x.html">curs_set()</A></EM></FONT>
+   <b>pragma</b> Inline (Set_Cursor_Visibility);
+
+  <FONT COLOR=green><EM>--  <A NAME="AFU_151">|</EM></FONT>
+   <b>procedure</b> Nap_Milli_Seconds (Ms : <b>in</b> Natural);
+  <FONT COLOR=green><EM>--  AKA: <A HREF="../man/curs_kernel.3x.html">napms()</A></EM></FONT>
+   <b>pragma</b> Inline (Nap_Milli_Seconds);
+
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+  <FONT COLOR=green><EM>--  | Some usefull helpers.</EM></FONT>
+  <FONT COLOR=green><EM>--  |=====================================================================</EM></FONT>
+   <b>type</b> Transform_Direction <b>is</b> (From_Screen, To_Screen);
+   <b>procedure</b> Transform_Coordinates
+     (W      : <b>in</b> Window := Standard_Window;
+      Line   : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+      Column : <b>in</b> <b>out</b> Column_Position;
+      Dir    : <b>in</b> Transform_Direction := From_Screen);
+  <FONT COLOR=green><EM>--  This procedure transforms screen coordinates into coordinates relative</EM></FONT>
+  <FONT COLOR=green><EM>--  to the window and vice versa, depending on the Dir parmeter.</EM></FONT>
+  <FONT COLOR=green><EM>--  Screen coordinates are the position informations on the physical device.</EM></FONT>
+  <FONT COLOR=green><EM>--  An Curses_Exception will be raised if Line and Column are not in the</EM></FONT>
+  <FONT COLOR=green><EM>--  Window or if you pass the Null_Window as argument.</EM></FONT>
+  <FONT COLOR=green><EM>--  We don't inline this procedure</EM></FONT>
+
+<b>private</b>
+   <b>type</b> Window <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+   Null_Window : <b>constant</b> Window := 0;
+
+  <FONT COLOR=green><EM>--  The next constants are generated and may be different on your</EM></FONT>
+  <FONT COLOR=green><EM>--  architecture.</EM></FONT>
+  <FONT COLOR=green><EM>--</EM></FONT>
+   Offset_maxy    : <b>constant</b> Natural :=  2;<FONT COLOR=green><EM>--  short</EM></FONT>
+   Offset_maxx    : <b>constant</b> Natural :=  3;<FONT COLOR=green><EM>--  short</EM></FONT>
+   Offset_begy    : <b>constant</b> Natural :=  4;<FONT COLOR=green><EM>--  short</EM></FONT>
+   Offset_begx    : <b>constant</b> Natural :=  5;<FONT COLOR=green><EM>--  short</EM></FONT>
+   Offset_cury    : <b>constant</b> Natural :=  0;<FONT COLOR=green><EM>--  short</EM></FONT>
+   Offset_curx    : <b>constant</b> Natural :=  1;<FONT COLOR=green><EM>--  short</EM></FONT>
+   Offset_yoffset : <b>constant</b> Natural := 36;<FONT COLOR=green><EM>--  short</EM></FONT>
+   Offset_pary    : <b>constant</b> Natural := 13;<FONT COLOR=green><EM>--  int</EM></FONT>
+   Offset_parx    : <b>constant</b> Natural := 12;<FONT COLOR=green><EM>--  int</EM></FONT>
+   Offset_scroll  : <b>constant</b> Natural := 27;<FONT COLOR=green><EM>--  char</EM></FONT>
+   Sizeof_bool    : <b>constant</b> Natural :=  1;<FONT COLOR=green><EM>--  bool</EM></FONT>
+   Offset_XY      : <b>constant</b> Natural :=  1;<FONT COLOR=green><EM>--  int</EM></FONT>
+
+
+<b>end</b> Terminal_Interface.Curses;
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/ada/terminal_interface__ads.htm b/Ada95/html/ada/terminal_interface__ads.htm
new file mode 100644 (file)
index 0000000..1016556
--- /dev/null
@@ -0,0 +1,53 @@
+<HEAD><TITLE>terminal_interface.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                           GNAT ncurses Binding                           --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                            Terminal_Interface                            --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>--                                 S P E C                                  --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a  --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the            --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including      --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish,      --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell       --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is    --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions:                 --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included  --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software.                   --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</EM></FONT>
+<FONT COLOR=green><EM>--                                                                          --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright   --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the     --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written       --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization.                                                           --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996</EM></FONT>
+<FONT COLOR=green><EM>--  Version Control:</EM></FONT>
+<FONT COLOR=green><EM>--  $Revision: 1.10 $</EM></FONT>
+<FONT COLOR=green><EM>--  Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <FONT COLOR=red><A NAME="41_9">Terminal_Interface</A></FONT> <b>is</b>
+   <b>pragma</b> Pure (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>);
+<FONT COLOR=green><EM>--</EM></FONT>
+<FONT COLOR=green><EM>--  Everything is in the child units</EM></FONT>
+<FONT COLOR=green><EM>--</EM></FONT>
+<b>end</b> Terminal_Interface;
+
+
+</PRE></BODY></HTML>
\ No newline at end of file
diff --git a/Ada95/html/curs_addch.3x.html b/Ada95/html/curs_addch.3x.html
deleted file mode 100644 (file)
index 5903801..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-       <STRONG>addch</STRONG>,  <STRONG>waddch</STRONG>,  <STRONG>mvaddch</STRONG>,  <STRONG>mvwaddch</STRONG>, <STRONG>echochar</STRONG>, <STRONG>wechochar</STRONG> -
-       add a character (with attributes) to a <STRONG>curses</STRONG> window, then
-       advance the cursor
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
-
-       <STRONG>int</STRONG> <STRONG>addch(chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>waddch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvaddch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwaddch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>echochar(chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wechochar(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>addch</STRONG>,  <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG> and <STRONG>mvwaddch</STRONG> routines put the
-       character <EM>ch</EM> into the given window at its  current  window
-       position,  which  is then advanced.  They are analogous to
-       <STRONG>putchar</STRONG> in <STRONG><A HREF="stdio.3.html">stdio(3)</A></STRONG>.  If the advance is at the right  mar-
-       gin,  the  cursor  automatically wraps to the beginning of
-       the next line.  At the bottom  of  the  current  scrolling
-       region,  if  <STRONG>scrollok</STRONG>  is enabled, the scrolling region is
-       scrolled up one line.
-
-       If <EM>ch</EM> is a tab, newline, or backspace, the cursor is moved
-       appropriately within the window.  Backspace moves the cur-
-       sor one character left; at the left edge of  a  window  it
-       does  nothing.   Newline  does  a <STRONG>clrtoeol</STRONG>, then moves the
-       cursor to  the  window  left  margin  on  the  next  line,
-       scrolling  the window if on the last line).  Tabs are con-
-       sidered to be at every eighth column.
-
-       If <EM>ch</EM> is any control character other than tab, newline, or
-       backspace,  it  is  drawn  in  <STRONG>^</STRONG><EM>X</EM> notation.  Calling <STRONG>winch</STRONG>
-       after adding a control character does not return the char-
-       acter  itself, but instead returns the ^-representation of
-       the control character.  (To emit control characters liter-
-       ally, use <STRONG>echochar</STRONG>.)
-
-       Video attributes can be combined with a character argument
-       passed to <STRONG>addch</STRONG> or related functions by logical-ORing them
-       into  the  character.   (Thus, text, including attributes,
-       can be copied from one place to  another  using  <STRONG>inch</STRONG>  and
-       <STRONG>addch</STRONG>.).   See the <STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> page for values of prede-
-       fined video attribute constants that can be usefully OR'ed
-       into characters.
-
-       The  <STRONG>echochar</STRONG>  and  <STRONG>wechochar</STRONG> routines are equivalent to a
-       call to <STRONG>addch</STRONG> followed by a call to <STRONG>refresh</STRONG>, or a call  to
-       <STRONG>waddch</STRONG> followed by a call to <STRONG>wrefresh</STRONG>.  The knowledge that
-       only a single character is being output is used  and,  for
-       non-control  characters,  a  considerable performance gain
-
-   <STRONG>Line</STRONG> <STRONG>Graphics</STRONG>
-       The  following  variables  may be used to add line drawing
-       characters to the screen with routines of the  <STRONG>addch</STRONG>  fam-
-       ily.   The  default  character listed below is used if the
-       <STRONG>acsc</STRONG>  capability  doesn't   define   a   terminal-specific
-       replacement for it (but see the EXTENSIONS section below).
-       The names are taken from VT100 nomenclature.
-
-       l  l  l  _  _  _  l   l   l.    <EM>Name</EM> <EM>Default</EM>   <EM>Description</EM>
-       ACS_ULCORNER   +    upper         left-hand         corner
-       ACS_LLCORNER   +    lower         left-hand         corner
-       ACS_URCORNER   +    upper         right-hand        corner
-       ACS_LRCORNER   +    lower        right-hand         corner
-       ACS_RTEE  +    right     tee    ACS_LTEE  +    left    tee
-       ACS_BTEE  +    bottom    tee    ACS_TTEE  +    top     tee
-       ACS_HLINE -    horizontal   line   ACS_VLINE |    vertical
-       line  ACS_PLUS  +    plus   ACS_S1    -    scan   line   1
-       ACS_S9    _    scan   line  9  ACS_DIAMOND    +    diamond
-       ACS_CKBOARD    :    checker        board         (stipple)
-       ACS_DEGREE     '    degree                          symbol
-       ACS_PLMINUS    #    plus/minus  ACS_BULLET     o    bullet
-       ACS_LARROW     &lt;    arrow           pointing          left
-       ACS_RARROW     &gt;    arrow          pointing          right
-       ACS_DARROW     v    arrow           pointing          down
-       ACS_UARROW     ^    arrow pointing up ACS_BOARD #    board
-       of      squares     ACS_LANTERN    #    lantern     symbol
-       ACS_BLOCK #    solid square block ACS_S3    -    scan line
-       3  ACS_S7    -    scan  line  7  ACS_LEQUAL     &lt;    less-
-       than-or-equal-to      ACS_GEQUAL     &gt;    greater-than-or-
-       equal-to  ACS_PI    *    greek pi ACS_NEQUAL     !    not-
-       equal ACS_STERLING   f    pound-sterling symbol
-
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
-       success  (the  SVr4 manuals specify only "an integer value
-       other than <STRONG>ERR</STRONG>") upon successful completion, unless other-
-       wise noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       Note  that  <STRONG>addch</STRONG>,  <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be
-       macros.
-
-
-</PRE>
-<H2>EXTENSIONS</H2><PRE>
-       The following extended <STRONG>curses</STRONG> features are available  only
-       on  PC-clone consoles and compatible terminals obeying the
-       ANSI.SYS de-facto standard for terminal control sequences.
-       They are not part of XSI curses.
-
-       The attribute A_ALTCHARSET actually forces literal display
-       of PC ROM characters  including  the  high-half  graphics.
-       the card-suit characters, up and down-arrow, and most oth-
-       ers in the range 0-32.  (In a terminfo entry designed  for
-       use  with  <STRONG>ncurses</STRONG>,  the high-half characters are obtained
-       using this attribute with an <STRONG>acsc</STRONG> string in which the sec-
-       ond of each pair is a high-half character.)
-
-       Giving  <STRONG>wechochar</STRONG>  an  argument with its high bit set will
-       produce the corresponding high-half  ASCII  graphic  (SVr4
-       curses also has this feature but does not document it).  A
-       control-character argument, however,  will  not  typically
-       produce  the corresponding graphic; characters such as CR,
-       NL, FF and TAB are typically interpreted  by  the  console
-       driver  itself,  and ESC will be interpreted as the leader
-       of a control sequence.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       All these functions are described in the XSI Curses  stan-
-       dard,  Issue  4.  The defaults specified for forms-drawing
-       characters apply in the POSIX locale.
-
-       The seven ACS symbols starting with <STRONG>ACS_S3</STRONG> were not  docu-
-       mented  in  any publicly released System V.  However, many
-       publicly available terminfos include <STRONG>acsc</STRONG> strings in which
-       their key characters (pryz{|}) are embedded, and a second-
-       hand list of their  character  descriptions  has  come  to
-       light.   The ACS-prefixed names for them were invented for
-       <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>,  <STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>,
-       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>, <STRONG><A HREF="putc.3s.html">putc(3S)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
diff --git a/Ada95/html/curs_mouse.3x.html b/Ada95/html/curs_mouse.3x.html
deleted file mode 100644 (file)
index 82622ed..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-       <STRONG>getmouse</STRONG>,  <STRONG>ungetmouse</STRONG>, <STRONG>mousemask</STRONG> - mouse interface through
-       curses
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
-
-       <STRONG>typedef</STRONG> <STRONG>unsigned</STRONG> <STRONG>long</STRONG> <STRONG>mmask_t;</STRONG>
-
-       <STRONG>typedef</STRONG> <STRONG>struct</STRONG>
-       <STRONG>{</STRONG>
-           <STRONG>short</STRONG> <STRONG>id;</STRONG>         <EM>/*</EM> <EM>ID</EM> <EM>to</EM> <EM>distinguish</EM> <EM>multiple</EM> <EM>devices</EM> <EM>*/</EM>
-           <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>y,</STRONG> <STRONG>z;</STRONG>      <EM>/*</EM> <EM>event</EM> <EM>coordinates</EM> <EM>*/</EM>
-           <STRONG>mmask_t</STRONG> <STRONG>bstate;</STRONG>   <EM>/*</EM> <EM>button</EM> <EM>state</EM> <EM>bits</EM> <EM>*/</EM>
-       <STRONG>}</STRONG>
-       <STRONG>MEVENT;</STRONG>
-       <STRONG>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*event);</STRONG>
-       <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*event);</STRONG>
-       <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <STRONG>newmask,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*oldmask);</STRONG>
-       <STRONG>bool</STRONG> <STRONG>wenclose(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x)</STRONG>
-       <STRONG>int</STRONG> <STRONG>mouseinterval(int</STRONG> <STRONG>erval)</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These functions provide an interface to mouse events  from
-       <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>.   Mouse  events  are represented by <STRONG>KEY_MOUSE</STRONG>
-       pseudo-key values in the <STRONG>wgetch</STRONG> input stream.
-
-       To make mouse events visible, use the <STRONG>mousemask</STRONG>  function.
-       This  will  set  the  mouse  events  to  be  reported.  By
-       default, no mouse events are reported.  The function  will
-       return  a  mask  to  indicate which of the specified mouse
-       events can be reported; on complete failure it returns  0.
-       If  oldmask is non-NULL, this function fills the indicated
-       location with the previous value  of  the  given  window's
-       mouse event mask.
-
-       As  a  side  effect, setting a zero mousemask may turn off
-       the mouse pointer; setting a nonzero mask may turn it  on.
-       Whether this happens is device-dependent.
-
-       Here are the mouse event type masks:
-
-       l  l  _ _ l l.  <EM>Name</EM> <EM>Description</EM> BUTTON1_PRESSED     mouse
-       button  1  down  BUTTON1_RELEASED    mouse  button  1   up
-       BUTTON1_CLICKED     mouse       button      1      clicked
-       BUTTON1_DOUBLE_CLICKED   mouse  button  1  double  clicked
-       BUTTON1_TRIPLE_CLICKED   mouse  button  1  triple  clicked
-       BUTTON2_PRESSED     mouse       button       2        down
-       BUTTON2_RELEASED    mouse        button        2        up
-       BUTTON2_CLICKED     mouse      button      2       clicked
-       BUTTON2_DOUBLE_CLICKED   mouse  button  2  double  clicked
-       BUTTON2_TRIPLE_CLICKED   mouse  button  2  triple  clicked
-       BUTTON3_PRESSED     mouse        button       3       down
-       BUTTON3_DOUBLE_CLICKED   mouse  button  3  double  clicked
-       BUTTON3_TRIPLE_CLICKED   mouse  button  3  triple  clicked
-       BUTTON4_PRESSED     mouse       button       4        down
-       BUTTON4_RELEASED    mouse        button        4        up
-       BUTTON4_CLICKED     mouse      button      4       clicked
-       BUTTON4_DOUBLE_CLICKED   mouse  button  4  double  clicked
-       BUTTON4_TRIPLE_CLICKED   mouse  button  4  triple  clicked
-       BUTTON_SHIFT   shift  was  down during button state change
-       BUTTON_CTRL    control was down during button state change
-       BUTTON_ALT     alt  was  down  during  button state change
-       ALL_MOUSE_EVENTS    report  all   button   state   changes
-       REPORT_MOUSE_POSITION    report mouse movement
-
-       Once  a  class of mouse events have been made visible in a
-       window, calling the <STRONG>wgetch</STRONG> function  on  that  window  may
-       return  <STRONG>KEY_MOUSE</STRONG>  as  an indicator that a mouse event has
-       been queued.  To read the event data and pop the event off
-       the queue, call <STRONG>getmouse</STRONG>.  This function will return <STRONG>OK</STRONG> if
-       a mouse event is actually visible in the given window, <STRONG>ERR</STRONG>
-       otherwise.   When  <STRONG>getmouse</STRONG> returns <STRONG>OK</STRONG>, the data deposited
-       as y and x in the  event  structure  coordinates  will  be
-       screen-relative  character-cell coordinates.  The returned
-       state mask will have exactly one bit set to  indicate  the
-       event type.
-
-       The  <STRONG>ungetmouse</STRONG>  function  behaves analogously to <STRONG>ungetch</STRONG>.
-       It pushes a <STRONG>KEY_MOUSE</STRONG> event  onto  the  input  queue,  and
-       associates  with  that  event  the  given  state  data and
-       screen-relative character-cell coordinates.
-
-       The <STRONG>wenclose</STRONG>  function  tests  whether  a  given  pair  of
-       screen-relative  character-cell coordinates is enclosed by
-       a given window, returning TRUE if it is and  FALSE  other-
-       wise.   It  is  useful  for determining what subset of the
-       screen windows enclose the location of a mouse event.
-
-       The <STRONG>mouseinterval</STRONG> function sets the maximum time (in thou-
-       sands  of  a  second)  that  can  elapse between press and
-       release events in order for them to  be  recognized  as  a
-       click.  This function returns the previous interval value.
-       The default is one fifth of a second.
-
-       Note that mouse events will be ignored when  input  is  in
-       cooked mode, and will cause an error beep when cooked mode
-       is being simulated in a window by a function such as  <STRONG>get-</STRONG>
-       <STRONG>str</STRONG> that expects a linefeed for input-loop termination.
-
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines  return  the  integer <STRONG>ERR</STRONG> upon failure or <STRONG>OK</STRONG>
-       upon successful completion.
-
-       These calls were designed for  <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>,  and  are  not
-       found in SVr4 curses, 4.4BSD curses, or any other previous
-       version of curses.
-
-       The feature macro <STRONG>NCURSES_MOUSE_VERSION</STRONG> is provided so the
-       preprocessor  can  be  used to test whether these features
-       are present (its value is 1).   NOTE:  THIS  INTERFACE  IS
-       EXPERIMENTAL  AND IS SUBJECT TO CHANGE WITHOUT NOTICE!  If
-       the interface is changed, the value of  <STRONG>NCURSES_MOUSE_VER-</STRONG>
-       <STRONG>SION</STRONG> will be incremented.
-
-       The  order  of the <STRONG>MEVENT</STRONG> structure members is not guaran-
-       teed.  Additional fields may be added to the structure  in
-       the future.
-
-       Under  <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>,  these  calls  are  implemented  using
-       either xterm's built-in mouse-tracking API  or  Alessandro
-       Rubini's  gpm  server.   If  you are using something other
-       than xterm there is no gpm daemon running on your machine,
-       mouse  events  will not be visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG> (and the
-       <STRONG>wmousemask</STRONG> function will always return <STRONG>0</STRONG>).
-
-       The z member in the event structure is not presently used.
-       It  is  intended  for use with touch screens (which may be
-       pressure-sensitive)   or   with   3D-mice/trackballs/power
-       gloves.
-
-
-</PRE>
-<H2>BUGS</H2><PRE>
-       Mouse  events under xterm will not in fact be ignored dur-
-       ing cooked mode, if they have been enabled by  <STRONG>wmousemask</STRONG>.
-       Instead,  the  xterm  mouse report sequence will appear in
-       the string read.
-
-       Mouse events under xterm will not be detected correctly in
-       a window with its keypad bit off.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
index 50ec3abc5b40151d4698240d6130b64d58aeae3b..333c1321c78b02893b04d3df13f9cca7cfc9d0f8 100644 (file)
@@ -7,8 +7,8 @@
 </HEAD>
 <BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
 <H1>Ada95 Binding for ncurses</H1>
-The ncurses Ada95 binding is &copy; 1996 by 
-<A HREF="mailto:Juergen.Pfeifer@T-Online.de">J&uuml;rgen Pfeifer</A>.
+The ncurses Ada95 binding is &copy; 1996-1999 by 
+<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
 <P>
                                                                          
 Permission is hereby granted to reproduce and distribute this
@@ -24,14 +24,14 @@ This binding comes AS IS with no warranty, implied or expressed.
 <HR SIZE=3 NOSHADE>
 <H2>General Remarks</H2>
 <UL>
-<LI>This document describes Version 00.93 of the binding.</LI>
+<LI>This document describes Version 01.00 of the binding.</LI>
 <LI>The functionality is modelled to be compatible with the ncurses
 package, a clone of the SVr4 curses model.<BR>
 I did the development on an Intel box running 
-<A HREF="http://www.linux.org">Linux</A> 1.3.x and 2.0,
+<A HREF="http://www.linux.org">Linux</A> 1.3.x, 2.0, 2.2
 ncurses-4.x and the 
 <A HREF="http://www.gnat.com">GNU Ada Translator</A>
-gnat-3.09. For any older versions of ncurses and gnat
+gnat versions 3.10p to 3.11p. For any older versions of ncurses and gnat
 it is not guaranteed to work.</LI>
 <LI>You must have the m4 macroprocessor to build this package.
 If you don't have this program, you can get the FSF version
@@ -83,46 +83,47 @@ forms subsystem.</LI>
 
 <H2>Hierarchy of packages</H2>
 <UL>
-<LI><A HREF="terminal_interface_s.html">Terminal_Interface</A>
-    <UL><LI><A HREF="terminal_interface-curses_s.html">Curses</A>
-       <UL><LI><A HREF="terminal_interface-curses-mouse_s.html">Mouse</A>
-            <LI><A HREF="terminal_interface-curses-panels_s.html">Panels</A>
-            <UL><LI><A HREF="terminal_interface-curses-panels-user_data_s.html">User_Data</A>
+<LI><A HREF="ada/terminal_interface__ads.htm">Terminal_Interface</A>
+    <UL><LI><A HREF="ada/terminal_interface-curses__ads.htm">Curses</A>
+       <UL><LI><A HREF="ada/terminal_interface-curses-mouse__ads.htm">Mouse</A>
+            <LI><A HREF="ada/terminal_interface-curses-panels__ads.htm">Panels</A>
+            <UL><LI><A HREF="ada/terminal_interface-curses-panels-user_data__ads.htm">User_Data</A>
             </UL>
-           <LI><A HREF="terminal_interface-curses-menus_s.html">Menus</A>
-               <UL><LI><A HREF="terminal_interface-curses-menus-menu_user_data_s.html">Menu_User_Data</A>
-                   <LI><A HREF="terminal_interface-curses-menus-item_user_data_s.html">Item_User_Data</A>
+           <LI><A HREF="ada/terminal_interface-curses-menus__ads.htm">Menus</A>
+               <UL><LI><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm">Menu_User_Data</A>
+                   <LI><A HREF="ada/terminal_interface-curses-menus-item_user_data__ads.htm">Item_User_Data</A>
                </UL>    
-           <LI><A HREF="terminal_interface-curses-forms_s.html">Forms</A>
-               <UL><LI><A HREF="terminal_interface-curses-forms-form_user_data_s.html">Form_User_Data</A>
-                   <LI><A HREF="terminal_interface-curses-forms-field_user_data_s.html">Field_User_Data</A>
-                   <LI><A HREF="terminal_interface-curses-forms-field_types_s.html">Field_Types</A>                 
-                   <UL><LI><A HREF="terminal_interface-curses-forms-field_types-alpha_s.html">Alpha</A>
-                       <LI><A HREF="terminal_interface-curses-forms-field_types-alphanumeric_s.html">AlphaNumeric</A>
-                       <LI><A HREF="terminal_interface-curses-forms-field_types-intfield_s.html">IntField</A>
-                       <LI><A HREF="terminal_interface-curses-forms-field_types-numeric_s.html">Numeric</A>
-                       <LI><A HREF="terminal_interface-curses-forms-field_types-regexp_s.html">RegExp</A>
-                       <LI><A HREF="terminal_interface-curses-forms-field_types-ipv4_address_s.html">IPV4_Address</A>
-                       <LI><A HREF="terminal_interface-curses-forms-field_types-enumeration_s.html">Enumeration</A>
-                       <UL><LI><A HREF="terminal_interface-curses-forms-field_types-enumeration-ada_s.html">Ada</A>
+           <LI><A HREF="ada/terminal_interface-curses-forms__ads.htm">Forms</A>
+               <UL><LI><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm">Form_User_Data</A>
+                   <LI><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm">Field_User_Data</A>
+                   <LI><A HREF="ada/terminal_interface-curses-forms-field_types__ads.htm">Field_Types</A>                   
+                   <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-alpha__ads.htm">Alpha</A>
+                       <LI><A HREF="ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm">AlphaNumeric</A>
+                       <LI><A HREF="ada/terminal_interface-curses-forms-field_types-intfield__ads.htm">IntField</A>
+                       <LI><A HREF="ada/terminal_interface-curses-forms-field_types-numeric__ads.htm">Numeric</A>
+                       <LI><A HREF="ada/terminal_interface-curses-forms-field_types-regexp__ads.htm">RegExp</A>
+                       <LI><A HREF="ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm">IPV4_Address</A>
+                       <LI><A HREF="ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm">Enumeration</A>
+                       <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm">Ada</A>
                        </UL>
-                       <LI><A HREF="terminal_interface-curses-forms-field_types-user_s.html">User</A>
-                       <UL><LI><A HREF="terminal_interface-curses-forms-field_types-user-choice_s.html">Choice</A>
+                       <LI><A HREF="ada/terminal_interface-curses-forms-field_types-user__ads.htm">User</A>
+                       <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm">Choice</A>
                         </UL>
                      </UL>   
                </UL>   
-           <LI><A HREF="terminal_interface-curses-text_io_s.html">Text_IO</A>
-               <UL><LI><A HREF="terminal_interface-curses-text_io-integer_io_s.html">Integer_IO</A>
-                   <LI><A HREF="terminal_interface-curses-text_io-float_io_s.html">Float_IO</A>
-                   <LI><A HREF="terminal_interface-curses-text_io-fixed_io_s.html">Fixed_IO</A>
-                   <LI><A HREF="terminal_interface-curses-text_io-decimal_io_s.html">Decimal_IO</A>
-                   <LI><A HREF="terminal_interface-curses-text_io-modular_io_s.html">Modular_IO</A>
-                   <LI><A HREF="terminal_interface-curses-text_io-enumeration_io_s.html">Enumeration_IO</A>
-                   <LI><A HREF="terminal_interface-curses-text_io-complex_io_s.html">Complex_IO</A>
+           <LI><A HREF="ada/terminal_interface-curses-text_io__ads.htm">Text_IO</A>
+               <UL><LI><A HREF="ada/terminal_interface-curses-text_io-integer_io__ads.htm">Integer_IO</A>
+                   <LI><A HREF="ada/terminal_interface-curses-text_io-float_io__ads.htm">Float_IO</A>
+                   <LI><A HREF="ada/terminal_interface-curses-text_io-fixed_io__ads.htm">Fixed_IO</A>
+                   <LI><A HREF="ada/terminal_interface-curses-text_io-decimal_io__ads.htm">Decimal_IO</A>
+                   <LI><A HREF="ada/terminal_interface-curses-text_io-modular_io__ads.htm">Modular_IO</A>
+                   <LI><A HREF="ada/terminal_interface-curses-text_io-enumeration_io__ads.htm">Enumeration_IO</A>
+                   <LI><A HREF="ada/terminal_interface-curses-text_io-complex_io__ads.htm">Complex_IO</A>
                </UL>
          </UL>
      </UL>        
 </UL>
+If you want to navigate through the html pages of the package specs, click <A HREF="ada/index.htm">here</A>.
 <H2>Implementation Details</H2>
 <H4>Behind the abstraction</H4>
 All the new types like <STRONG>Window</STRONG>, <STRONG>Panel</STRONG>,
diff --git a/Ada95/html/man/curs_addch.3x.html b/Ada95/html/man/curs_addch.3x.html
new file mode 100644 (file)
index 0000000..1fc7261
--- /dev/null
@@ -0,0 +1,174 @@
+<HTML>
+<BODY>
+<PRE>
+       <STRONG>addch</STRONG>,  <STRONG>waddch</STRONG>,  <STRONG>mvaddch</STRONG>,  <STRONG>mvwaddch</STRONG>, <STRONG>echochar</STRONG>, <STRONG>wechochar</STRONG> -
+       add a character (with attributes) to a <STRONG>curses</STRONG> window, then
+       advance the cursor
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+
+       <STRONG>int</STRONG> <STRONG>addch(chtype</STRONG> <STRONG>ch);</STRONG>
+       <STRONG>int</STRONG> <STRONG>waddch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvaddch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwaddch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
+       <STRONG>int</STRONG> <STRONG>echochar(chtype</STRONG> <STRONG>ch);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wechochar(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <STRONG>addch</STRONG>,  <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG> and <STRONG>mvwaddch</STRONG> routines put the
+       character <EM>ch</EM> into the given window at its  current  window
+       position,  which  is then advanced.  They are analogous to
+       <STRONG>putchar</STRONG> in <STRONG><A HREF="stdio.3.html">stdio(3)</A></STRONG>.  If the advance is at the right  mar-
+       gin,  the  cursor  automatically wraps to the beginning of
+       the next line.  At the bottom  of  the  current  scrolling
+       region,  if  <STRONG>scrollok</STRONG>  is enabled, the scrolling region is
+       scrolled up one line.
+
+       If <EM>ch</EM> is a tab, newline, or backspace, the cursor is moved
+       appropriately within the window.  Backspace moves the cur-
+       sor one character left; at the left edge of  a  window  it
+       does  nothing.   Newline  does  a <STRONG>clrtoeol</STRONG>, then moves the
+       cursor to  the  window  left  margin  on  the  next  line,
+       scrolling  the window if on the last line).  Tabs are con-
+       sidered to be at every eighth column.
+
+       If <EM>ch</EM> is any control character other than tab, newline, or
+       backspace,  it  is  drawn  in  <STRONG>^</STRONG><EM>X</EM> notation.  Calling <STRONG>winch</STRONG>
+       after adding a control character does not return the char-
+       acter  itself, but instead returns the ^-representation of
+       the control character.
+
+       Video attributes can be combined with a character argument
+       passed to <STRONG>addch</STRONG> or related functions by logical-ORing them
+       into the character.  (Thus,  text,  including  attributes,
+       can  be  copied  from  one place to another using <STRONG>inch</STRONG> and
+       <STRONG>addch</STRONG>.).  See the <STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> page for values of  prede-
+       fined video attribute constants that can be usefully OR'ed
+       into characters.
+
+       The <STRONG>echochar</STRONG> and <STRONG>wechochar</STRONG> routines are  equivalent  to  a
+       call  to <STRONG>addch</STRONG> followed by a call to <STRONG>refresh</STRONG>, or a call to
+       <STRONG>waddch</STRONG> followed by a call to <STRONG>wrefresh</STRONG>.  The knowledge that
+       only  a  single character is being output is used and, for
+       non-control characters, a  considerable  performance  gain
+       may  be  seen  by  using  these  routines instead of their
+       The following variables may be used to  add  line  drawing
+       characters  to  the screen with routines of the <STRONG>addch</STRONG> fam-
+       ily.  The default character listed below is  used  if  the
+       <STRONG>acsc</STRONG>   capability   doesn't   define  a  terminal-specific
+       replacement for it (but see the EXTENSIONS section below).
+       The names are taken from VT100 nomenclature.
+
+       l   l   l   _  _  _  l  l  l.   <EM>Name</EM> <EM>Default</EM>   <EM>Description</EM>
+       ACS_BLOCK #    solid square block ACS_BOARD #    board  of
+       squares ACS_BTEE  +    bottom tee ACS_BULLET     o    bul-
+       let    ACS_CKBOARD    :    checker     board     (stipple)
+       ACS_DARROW     v    arrow           pointing          down
+       ACS_DEGREE     '    degree symbol ACS_DIAMOND    +    dia-
+       mond          ACS_GEQUAL     >    greater-than-or-equal-to
+       ACS_HLINE -    horizontal line ACS_LANTERN    #    lantern
+       symbol     ACS_LARROW     <    arrow     pointing     left
+       ACS_LEQUAL     <    less-than-or-equal-to
+       ACS_LLCORNER   +    lower         left-hand         corner
+       ACS_LRCORNER   +    lower        right-hand         corner
+       ACS_LTEE  +    left    tee   ACS_NEQUAL     !    not-equal
+       ACS_PI    *    greek   pi   ACS_PLMINUS    #    plus/minus
+       ACS_PLUS  +    plus   ACS_RARROW     >    arrow   pointing
+       right ACS_RTEE  +    right tee ACS_S1    -    scan line  1
+       ACS_S3    -    scan  line  3  ACS_S7    -    scan  line  7
+       ACS_S9    _    scan line 9 ACS_STERLING   f    pound-ster-
+       ling         symbol         ACS_TTEE  +    top         tee
+       ACS_UARROW     ^    arrow           pointing            up
+       ACS_ULCORNER   +    upper         left-hand         corner
+       ACS_URCORNER   +    upper        right-hand         corner
+       ACS_VLINE |    vertical line
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
+       success (the SVr4 manuals specify only "an  integer  value
+       other than <STRONG>ERR</STRONG>") upon successful completion, unless other-
+       wise noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note that <STRONG>addch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and  <STRONG>echochar</STRONG>  may  be
+       macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       All  these functions are described in the XSI Curses stan-
+       dard, Issue 4.  The defaults specified  for  forms-drawing
+       characters apply in the POSIX locale.
+
+       Some  ACS symbols (ACS_S3, ACS_S7, ACS_LEQUAL, ACS_GEQUAL,
+       ACS_PI, ACS_NEQUAL, ACS_STERLING) were not  documented  in
+       any  publicly  released  System V.  However, many publicly
+       available terminfos include <STRONG>acsc</STRONG> strings  in  which  their
+       key  characters  (pryz{|}) are embedded, and a second-hand
+       <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>,  <STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>,
+       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>, <STRONG><A HREF="putc.3s.html">putc(3S)</A></STRONG>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+</BODY>
+</HTML>
similarity index 95%
rename from Ada95/html/curs_addchstr.3x.html
rename to Ada95/html/man/curs_addchstr.3x.html
index 3572b8c34dd7c568ddae4a80a782645bb63e3a16..67f565d48464f55b02869acb55b41bbfe695a7b9 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>addchstr</STRONG>,  <STRONG>addchnstr</STRONG>,  <STRONG>waddchstr</STRONG>,  <STRONG>waddchnstr</STRONG>, <STRONG>mvaddchstr</STRONG>,
        <STRONG>mvaddchnstr</STRONG>, <STRONG>mvwaddchstr</STRONG>, <STRONG>mvwaddchnstr</STRONG> - add a  string  of
@@ -8,7 +8,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>addchstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
        <STRONG>int</STRONG> <STRONG>addchnstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
similarity index 95%
rename from Ada95/html/curs_addstr.3x.html
rename to Ada95/html/man/curs_addstr.3x.html
index 916aafb95fd22ee02d22b5402ec9d9a48dc62090..6ca3cc775a2739afe9362c7e4acc274c1b472ef6 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>addstr</STRONG>,  <STRONG>addnstr</STRONG>,  <STRONG>waddstr</STRONG>, <STRONG>waddnstr</STRONG>, <STRONG>mvaddstr</STRONG>, <STRONG>mvaddnstr</STRONG>,
        <STRONG>mvwaddstr</STRONG>, <STRONG>mvwaddnstr</STRONG> - add a string of  characters  to  a
@@ -8,7 +8,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>addstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
        <STRONG>int</STRONG> <STRONG>addnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
similarity index 72%
rename from Ada95/html/curs_attr.3x.html
rename to Ada95/html/man/curs_attr.3x.html
index dd64b5b480575e0dd2a9f5ca0551a9fa57f9b2bd..5891268fd6cad16344ffda567511b25494bfb9d8 100644 (file)
@@ -1,40 +1,45 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>attroff</STRONG>,  <STRONG>wattroff</STRONG>,  <STRONG>attron</STRONG>,  <STRONG>wattron</STRONG>,  <STRONG>attrset</STRONG>, <STRONG>wattrset</STRONG>,
-       <STRONG>standend</STRONG>, <STRONG>wstandend</STRONG>, <STRONG>standout</STRONG>, <STRONG>wstandout</STRONG> - <STRONG>curses</STRONG>  charac-
-       ter and window attribute control routines
+       <STRONG>color_set</STRONG>,  <STRONG>wcolor_set</STRONG>,  <STRONG>standend</STRONG>,  <STRONG>wstandend</STRONG>,   <STRONG>standout</STRONG>,
+       <STRONG>wstandout</STRONG>  - <STRONG>curses</STRONG> character and window attribute control
+       routines
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
        <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <STRONG>attrs);</STRONG>
        <STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
        <STRONG>int</STRONG> <STRONG>attron(int</STRONG> <STRONG>attrs);</STRONG>
        <STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
        <STRONG>int</STRONG> <STRONG>attrset(int</STRONG> <STRONG>attrs);</STRONG>
        <STRONG>int</STRONG> <STRONG>wattrset(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
+       <STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <STRONG>color_pair_number,</STRONG> <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>short</STRONG> <STRONG>color_pair_number,</STRONG>
+             <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
        <STRONG>int</STRONG> <STRONG>standend(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>standout(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>wstandout(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>attr_t</STRONG> <STRONG>attr_get(void);</STRONG>
-       <STRONG>attr_t</STRONG> <STRONG>wattr_get(WINDOW</STRONG> <STRONG>*);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attr_off(attr_t</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattr_off(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attr_set(attr_t</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattr_set(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG>  <STRONG>chgat(int</STRONG>  <STRONG>n,</STRONG>  <STRONG>attr_t</STRONG>  <STRONG>attr,</STRONG>  <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG>
-       <STRONG>*opts)</STRONG>
-       <STRONG>int</STRONG> <STRONG>wchgat(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
+       <STRONG>int</STRONG> <STRONG>attr_get(attr_t</STRONG> <STRONG>*attrs,</STRONG> <STRONG>short</STRONG> <STRONG>*pair,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattr_get(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>*attrs,</STRONG> <STRONG>short</STRONG> <STRONG>*pair,</STRONG>
+              <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attr_off(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattr_off(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attr_set(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattr_set(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>chgat(int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG> <STRONG>short</STRONG> <STRONG>color,</STRONG>
+             <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
+       <STRONG>int</STRONG> <STRONG>wchgat(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
              <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
        <STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
              <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
-             <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG>
+             <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG> <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
 
 
 </PRE>
        The routine <STRONG>attrset</STRONG> sets the  current  attributes  of  the
        given  window to <EM>attrs</EM>.  The routine <STRONG>attroff</STRONG> turns off the
        named attributes without turning any other  attributes  on
-       or  off.  The routine <STRONG>attron</STRONG> turns on the named attributes
-       without affecting any others.  The routine <STRONG>standout</STRONG> is the
        same  as  <STRONG>attron(A_STANDOUT)</STRONG>.  The routine <STRONG>standend</STRONG> is the
        same as <STRONG>attrset(A_NORMAL)</STRONG> or <STRONG>attrset(0)</STRONG>, that is, it turns
        off all attributes.
-       the given window; <STRONG>attr_get</STRONG> returns the  current  attribute
-       for   <STRONG>stdscr</STRONG>.   The  remaining  <STRONG>attr_</STRONG>*  functions  operate
-       exactly like the  corresponding  <STRONG>attr</STRONG>*  functions,  except
-       that they take arguments of type <STRONG>attr_t</STRONG> rather than <STRONG>int</STRONG>.
+
+       The  routine <STRONG>color_set</STRONG> sets the current color of the given
+       window to the foreground/background combination  described
+       by  the  color_pair_number. The parameter opts is reserved
+       for future use, applications must supply a null pointer.
+
+       The routine <STRONG>wattr_get</STRONG> returns the  current  attribute  and
+       color pair for the given window; <STRONG>attr_get</STRONG> returns the cur-
+       rent attribute and color pair for <STRONG>stdscr</STRONG>.   The  remaining
+       <STRONG>attr_</STRONG>*  functions  operate  exactly like the corresponding
+       <STRONG>attr</STRONG>* functions, except that they take arguments  of  type
+       <STRONG>attr_t</STRONG> rather than <STRONG>int</STRONG>.
 
        The routine <STRONG>chgat</STRONG> changes the attributes of a given number
        of characters starting at the current cursor  location  of
@@ -76,7 +87,7 @@
        future (leave it <STRONG>NULL</STRONG>).
 
    <STRONG>Attributes</STRONG>
-       The following video attributes, defined in <STRONG>&lt;curses.h&gt;</STRONG>, can
+       The following video attributes, defined in <STRONG><curses.h></STRONG>, can
        be passed to the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or
        OR'ed with the characters passed to <STRONG>addch</STRONG>.
 
        ingful (they are implemented as macro-expanded assignments
        and  simply  return their argument).  The SVr4 manual page
        claims (falsely) that these routines always return <STRONG>1</STRONG>.
-
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
        Note that <STRONG>attroff</STRONG>,  <STRONG>wattroff</STRONG>,  <STRONG>attron</STRONG>,  <STRONG>wattron</STRONG>,  <STRONG>attrset</STRONG>,
        <STRONG>wattrset</STRONG>, <STRONG>standend</STRONG> and <STRONG>standout</STRONG> may be macros.
 
        dard, Issue 4.  The standard defined  the  dedicated  type
        for  highlights,  <STRONG>attr_t</STRONG>,  which  is  not  defined in SVr4
        curses. The functions taking <STRONG>attr_t</STRONG> arguments are not sup-
+       ported under SVr4.
+
+       The  XSI  Curses  standard  states that whether the tradi-
        tional  functions  <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG>  can  manipulate
        attributes  other  than <STRONG>A_BLINK</STRONG>, <STRONG>A_BOLD</STRONG>, <STRONG>A_DIM</STRONG>, <STRONG>A_REVERSE</STRONG>,
        <STRONG>A_STANDOUT</STRONG>, or <STRONG>A_UNDERLINE</STRONG> is "unspecified".   Under  this
 
 
 
-
-
-
-
-
-
-
-
-
-
-
 
 
 </PRE>
similarity index 90%
rename from Ada95/html/curs_beep.3x.html
rename to Ada95/html/man/curs_beep.3x.html
index 1abad227a010c1d73d24aa01d6407a8aa75049c7..930780ae1bd258b3b95f781ea806b506036bd10c 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>beep</STRONG>, <STRONG>flash</STRONG> - <STRONG>curses</STRONG> bell and screen flash routines
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>beep(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>flash(void);</STRONG>
similarity index 95%
rename from Ada95/html/curs_bkgd.3x.html
rename to Ada95/html/man/curs_bkgd.3x.html
index 6a3396ca6c1979b59c74bc53d24e9105abfe1663..f84ee4490c33bff47731325a79eb48d973f09ade 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>bkgdset</STRONG>,  <STRONG>wbkgdset</STRONG>, <STRONG>bkgd</STRONG>, <STRONG>wbkgd</STRONG> - <STRONG>curses</STRONG> window background
        manipulation routines
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>void</STRONG> <STRONG>bkgdset(const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
        <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
similarity index 95%
rename from Ada95/html/curs_border.3x.html
rename to Ada95/html/man/curs_border.3x.html
index 1d45fa20fba369d5b9a34c967ffe6df113226ff5..dd4c0ca6e6b2f28798b7bf1917b07a4696bf9b78 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>border</STRONG>,  <STRONG>wborder</STRONG>, <STRONG>box</STRONG>, <STRONG>hline</STRONG>, <STRONG>whline</STRONG>, <STRONG>vline</STRONG>, <STRONG>wvline</STRONG> - cre-
        ate <STRONG>curses</STRONG> borders, horizontal and vertical lines
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
        <STRONG>int</STRONG> <STRONG>border(chtype</STRONG> <STRONG>ls,</STRONG> <STRONG>chtype</STRONG> <STRONG>rs,</STRONG> <STRONG>chtype</STRONG> <STRONG>ts,</STRONG> <STRONG>chtype</STRONG> <STRONG>bs,</STRONG>
           <STRONG>chtype</STRONG> <STRONG>tl,</STRONG> <STRONG>chtype</STRONG> <STRONG>tr,</STRONG> <STRONG>chtype</STRONG> <STRONG>bl,</STRONG> <STRONG>chtype</STRONG> <STRONG>br);</STRONG>
        <STRONG>int</STRONG> <STRONG>wborder(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ls,</STRONG> <STRONG>chtype</STRONG> <STRONG>rs,</STRONG>
@@ -35,7 +35,7 @@
        any of these arguments is zero, then the following default
        values  (defined in <STRONG>curses.h</STRONG>) are used instead: <STRONG>ACS_VLINE</STRONG>,
        <STRONG>ACS_VLINE</STRONG>,     <STRONG>ACS_HLINE</STRONG>,     <STRONG>ACS_HLINE</STRONG>,     <STRONG>ACS_ULCORNER</STRONG>,
-       <STRONG>ACS_URCORNER</STRONG>, <STRONG>ACS_BLCORNER</STRONG>, <STRONG>ACS_BRCORNER</STRONG>.
+       <STRONG>ACS_URCORNER</STRONG>, <STRONG>ACS_LLCORNER</STRONG>, <STRONG>ACS_LRCORNER</STRONG>.
 
        <STRONG>box(</STRONG><EM>win</EM><STRONG>,</STRONG>  <EM>verch</EM><STRONG>,</STRONG>  <EM>horch</EM><STRONG>)</STRONG>  is a shorthand for the following
        call: <STRONG>wborder(</STRONG><EM>win</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG>  <STRONG>0,</STRONG>  <STRONG>0,</STRONG>  <STRONG>0,</STRONG>
similarity index 94%
rename from Ada95/html/curs_clear.3x.html
rename to Ada95/html/man/curs_clear.3x.html
index f2f3edf393074c1209021a79efeb51365068f0a3..be7651bd8ab49617963871a99934805cebf3883d 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>erase</STRONG>,  <STRONG>werase</STRONG>,  <STRONG>clear</STRONG>,  <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, <STRONG>wclrtobot</STRONG>, <STRONG>clr-</STRONG>
        <STRONG>toeol</STRONG>, <STRONG>wclrtoeol</STRONG> - clear all or part of a <STRONG>curses</STRONG> window
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>erase(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>werase(WINDOW</STRONG> <STRONG>*win);</STRONG>
similarity index 97%
rename from Ada95/html/curs_color.3x.html
rename to Ada95/html/man/curs_color.3x.html
index dab8b2fe934974cbba362fca15b7f44a8467daeb..a360965ef1d408919bed888b7bc46cae8b9b1fca 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>start_color</STRONG>,     <STRONG>init_pair</STRONG>,     <STRONG>init_color</STRONG>,    <STRONG>has_colors</STRONG>,
        <STRONG>can_change_color</STRONG>,  <STRONG>color_content</STRONG>,  <STRONG>pair_content</STRONG>  -  <STRONG>curses</STRONG>
@@ -8,7 +8,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG><curses.h></STRONG>
        <STRONG>int</STRONG> <STRONG>start_color(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_pair(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>f,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_color(short</STRONG> <STRONG>color,</STRONG> <STRONG>short</STRONG> <STRONG>r,</STRONG> <STRONG>short</STRONG> <STRONG>g,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
@@ -30,7 +30,7 @@
        background color (for the blank field on which the charac-
        ters are displayed).  A programmer  initializes  a  color-
        pair  with  the routine <STRONG>init_pair</STRONG>.  After it has been ini-
-       tialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>), a macro  defined  in  <STRONG>&lt;curses.h&gt;</STRONG>,
+       tialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>), a macro  defined  in  <STRONG><curses.h></STRONG>,
        can be used as a new video attribute.
 
        If  a  terminal  is capable of redefining colors, the pro-
similarity index 92%
rename from Ada95/html/curs_delch.3x.html
rename to Ada95/html/man/curs_delch.3x.html
index ebc8578127592f1fa08dd2609937b256c840b517..38b9946c07beb4c696861dd635659ce1fc358548 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>delch</STRONG>,  <STRONG>wdelch</STRONG>, <STRONG>mvdelch</STRONG>, <STRONG>mvwdelch</STRONG> - delete character under
        the cursor in a <STRONG>curses</STRONG> window
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>delch(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>wdelch(WINDOW</STRONG> <STRONG>*win);</STRONG>
similarity index 92%
rename from Ada95/html/curs_deleteln.3x.html
rename to Ada95/html/man/curs_deleteln.3x.html
index b0a74abffafaae8e5f3a4f8049db453f6f5499d9..f177ee27a375ca518168c16dbc5a69fbdc258cb7 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>deleteln</STRONG>,  <STRONG>wdeleteln</STRONG>,  <STRONG>insdelln</STRONG>, <STRONG>winsdelln</STRONG>, <STRONG>insertln</STRONG>, <STRONG>win-</STRONG>
        <STRONG>sertln</STRONG> - delete and insert lines in a <STRONG>curses</STRONG> window
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>deleteln(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>wdeleteln(WINDOW</STRONG> <STRONG>*win);</STRONG>
@@ -51,7 +51,7 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       Note that all but <STRONG>winsdelln</STRONG> may be macros.
+       Note that all but <STRONG>winsdelln</STRONG> may be macros.
 
        These  routines  do  not require a hardware line delete or
        insert feature in the terminal.  In fact, they  won't  use
similarity index 96%
rename from Ada95/html/curs_getch.3x.html
rename to Ada95/html/man/curs_getch.3x.html
index 52d2397659c526d4e386eb04c27325be30f0d03b..376dd5995a95e80adcd7adc273e42c24d18254b7 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>getch</STRONG>,  <STRONG>wgetch</STRONG>,  <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>, <STRONG>ungetch</STRONG> - get (or push
        back) characters from <STRONG>curses</STRONG> terminal keyboard
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>getch(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*win);</STRONG>
@@ -45,7 +45,7 @@
        If  <STRONG>keypad</STRONG>  is  <STRONG>TRUE</STRONG>,  and  a function key is pressed, the
        token for that function key is returned instead of the raw
        characters.    Possible   function  keys  are  defined  in
-       <STRONG>&lt;curses.h&gt;</STRONG> as macros with  values  outside  the  range  of
+       <STRONG><curses.h></STRONG> as macros with  values  outside  the  range  of
        8-bit  characters  whose  names  begin  with <STRONG>KEY_.</STRONG> Thus, a
        variable intended to hold the return value of  a  function
        key must be of short size or larger.
@@ -64,7 +64,7 @@
 
 
    <STRONG>Function</STRONG> <STRONG>Keys</STRONG>
-       The  following function keys, defined in <STRONG>&lt;curses.h&gt;</STRONG>, might
+       The  following function keys, defined in <STRONG><curses.h></STRONG>, might
        be returned by <STRONG>getch</STRONG> if <STRONG>keypad</STRONG>  has  been  enabled.   Note
        that  not  all  of  these are necessarily supported on any
        particular terminal.
@@ -74,8 +74,8 @@
        KEY_BREAK/Break  key  KEY_DOWN/The  four  arrow  keys  ...
        KEY_UP  KEY_LEFT  KEY_RIGHT KEY_HOME/Home key (upward+left
        arrow) KEY_BACKSPACE/Backspace  KEY_F0/T{  Function  keys;
-       space  for 64 keys is reserved.  T} KEY_F(<EM>n</EM>)/T{ For 0 &lt;= <EM>n</EM>
-       &lt;=   63   T}   KEY_DL/Delete   line   KEY_IL/Insert   line
+       space  for 64 keys is reserved.  T} KEY_F(<EM>n</EM>)/T{ For 0 <= <EM>n</EM>
+       <=   63   T}   KEY_DL/Delete   line   KEY_IL/Insert   line
        KEY_DC/Delete character KEY_IC/Insert char or enter insert
        mode KEY_EIC/Exit insert char mode KEY_CLEAR/Clear  screen
        KEY_EOS/Clear  to  end  of  screen KEY_EOL/Clear to end of
        Note that <STRONG>getch</STRONG>, <STRONG>mvgetch</STRONG>, and <STRONG>mvwgetch</STRONG> may be macros.
 
        Historically, the set of keypad macros was largely defined
-       by  the  extremely  function-key-rich keyboard of the AT&amp;T
+       by  the  extremely  function-key-rich keyboard of the AT&T
        7300, aka 3B1, aka Safari 4.   Modern  personal  computers
        usually  have  only a small subset of these.  IBM PC-style
        consoles  typically  support  little  more  than   <STRONG>KEY_UP</STRONG>,
similarity index 96%
rename from Ada95/html/curs_getstr.3x.html
rename to Ada95/html/man/curs_getstr.3x.html
index 9d14eb7c141b6731da9c5c748177ab11a72b318b..384545e0967525432903a1dbe0a57d30de6f4e34 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>getstr</STRONG>,  <STRONG>wgetstr</STRONG>,  <STRONG>mvgetstr</STRONG>,  <STRONG>mvwgetstr</STRONG>, <STRONG>wgetnstr</STRONG> - accept
        character strings from <STRONG>curses</STRONG> terminal keyboard
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>getstr(char</STRONG> <STRONG>*str);</STRONG>
        <STRONG>int</STRONG> <STRONG>getnstr(char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
similarity index 89%
rename from Ada95/html/curs_getyx.3x.html
rename to Ada95/html/man/curs_getyx.3x.html
index 89231567456d6efc85918ffd3a28391bf83260c0..1c1b5e77e6460193ce4aa0aef5353279706566a7 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>getyx</STRONG>,  <STRONG>getparyx</STRONG>,  <STRONG>getbegyx</STRONG>,  <STRONG>getmaxyx</STRONG> - get <STRONG>curses</STRONG> cursor
        and window coordinates
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>void</STRONG> <STRONG>getyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
        <STRONG>void</STRONG> <STRONG>getparyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
@@ -39,7 +39,7 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       All of these interfaces are macros and  that  "<STRONG>&amp;</STRONG>"  is  not
+       All of these interfaces are macros and  that  "<STRONG>&</STRONG>"  is  not
        necessary before the variables <EM>y</EM> and <EM>x</EM>.
 
 
similarity index 87%
rename from Ada95/html/curs_inch.3x.html
rename to Ada95/html/man/curs_inch.3x.html
index cb7dd9be3e3f5c2de3aa18ea5e7f534506e5b4df..a63105403d2384787e6c207ca7b94a474f9bef68 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>inch</STRONG>,  <STRONG>winch</STRONG>,  <STRONG>mvinch</STRONG>,  <STRONG>mvwinch</STRONG>  -  get  a  character  and
        attributes from a <STRONG>curses</STRONG> window
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>chtype</STRONG> <STRONG>inch(void);</STRONG>
        <STRONG>chtype</STRONG> <STRONG>winch(WINDOW</STRONG> <STRONG>*win);</STRONG>
@@ -21,7 +21,7 @@
        the   current  position  in  the  named  window.   If  any
        attributes are set for that  position,  their  values  are
        OR'ed  into  the  value  returned.   Constants  defined in
-       <STRONG>&lt;curses.h&gt;</STRONG> can be used with the <STRONG>&amp;</STRONG> (logical  AND)  operator
+       <STRONG><curses.h></STRONG> can be used with the <STRONG>&</STRONG> (logical  AND)  operator
        to extract the character or attributes alone.
 
 
similarity index 91%
rename from Ada95/html/curs_inchstr.3x.html
rename to Ada95/html/man/curs_inchstr.3x.html
index c8b5fde8912c2db9b1b5b16d1157897f147b9221..9a14c855244ee390f98874ac637348fab5531adf 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>inchstr</STRONG>,   <STRONG>inchnstr</STRONG>,   <STRONG>winchstr</STRONG>,   <STRONG>winchnstr</STRONG>,   <STRONG>mvinchstr</STRONG>,
        <STRONG>mvinchnstr</STRONG>, <STRONG>mvwinchstr</STRONG>, <STRONG>mvwinchnstr</STRONG>  -  get  a  string  of
@@ -8,7 +8,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>inchstr(chtype</STRONG> <STRONG>*chstr);</STRONG>
        <STRONG>int</STRONG> <STRONG>inchnstr(chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
@@ -28,8 +28,8 @@
        named window and ending at the right margin of the window.
        The  four  functions with <EM>n</EM> as the last argument, return a
        leading substring at most <EM>n</EM> characters long (exclusive  of
-       the  trailing (chtype)0).  Constants defined in <STRONG>&lt;curses.h&gt;</STRONG>
-       can be used with the <STRONG>&amp;</STRONG> (logical AND) operator  to  extract
+       the  trailing (chtype)0).  Constants defined in <STRONG><curses.h></STRONG>
+       can be used with the <STRONG>&</STRONG> (logical AND) operator  to  extract
        the  character or the attribute alone from any position in
        the <EM>chstr</EM> [see <STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>].
 
similarity index 97%
rename from Ada95/html/curs_initscr.3x.html
rename to Ada95/html/man/curs_initscr.3x.html
index 78d883ab9a2816aeb43b6240d835b3241bc64ee9..38e367baa95c72a5dabe132fa7dc00a8579d1439 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>initscr</STRONG>,  <STRONG>newterm</STRONG>, <STRONG>endwin</STRONG>, <STRONG>isendwin</STRONG>, <STRONG>set_term</STRONG>, <STRONG>delscreen</STRONG> -
        <STRONG>curses</STRONG> screen initialization and manipulation routines
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>WINDOW</STRONG> <STRONG>*initscr(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>endwin(void);</STRONG>
similarity index 98%
rename from Ada95/html/curs_inopts.3x.html
rename to Ada95/html/man/curs_inopts.3x.html
index 47eab78c83669e9b32bfa05810fc5ee9595d39ac..4f82389bc8dbe0adc16d414f72c31ad97b765edc 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>key-</STRONG>
        <STRONG>pad</STRONG>, <STRONG>meta</STRONG>,  <STRONG>nodelay</STRONG>,  <STRONG>notimeout</STRONG>,  <STRONG>raw</STRONG>,  <STRONG>noraw</STRONG>,  <STRONG>noqiflush</STRONG>,
@@ -9,7 +9,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>nocbreak(void);</STRONG>
        Issue 4.
 
        The  ncurses  library obeys the XPG4 standard and the his-
-       torical practice of the AT&amp;T  curses  implementations,  in
+       torical practice of the AT&T  curses  implementations,  in
        that  the  echo bit is cleared when curses initializes the
        terminal state.  BSD curses differed from  this  slightly;
        ity,  set echo or noecho explicitly just after initializa-
similarity index 92%
rename from Ada95/html/curs_insch.3x.html
rename to Ada95/html/man/curs_insch.3x.html
index 36b7f32bb27d31cf2cb37f6d8cc8bf7cad6cd413..1281ca92d8cea7ec18c31a325c130b2c69a0d3f5 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>insch</STRONG>,  <STRONG>winsch</STRONG>,  <STRONG>mvinsch</STRONG>,  <STRONG>mvwinsch</STRONG>  -  insert a character
        before cursor in a <STRONG>curses</STRONG> window
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>insch(chtype</STRONG> <STRONG>ch);</STRONG>
        <STRONG>int</STRONG> <STRONG>winsch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
similarity index 93%
rename from Ada95/html/curs_insstr.3x.html
rename to Ada95/html/man/curs_insstr.3x.html
index a6fe2b450c6cce79eea00e3e3f5bbc40d14a1915..b33902a00e57281e2c2d28ffdaf0a74365f10f10 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>insstr</STRONG>,  <STRONG>insnstr</STRONG>,  <STRONG>winsstr</STRONG>, <STRONG>winsnstr</STRONG>, <STRONG>mvinsstr</STRONG>, <STRONG>mvinsnstr</STRONG>,
        <STRONG>mvwinsstr</STRONG>, <STRONG>mvwinsnstr</STRONG> - insert string before cursor  in  a
@@ -8,7 +8,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
        <STRONG>int</STRONG> <STRONG>insstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
        <STRONG>int</STRONG> <STRONG>insnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
        <STRONG>int</STRONG> <STRONG>winsstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
@@ -29,7 +29,7 @@
        acters  on  the line being lost.  The cursor position does
        not change (after moving to <EM>y</EM>, <EM>x</EM>, if specified). The  four
        routines with <EM>n</EM> as the last argument insert a leading sub-
-       string of at most <EM>n</EM> characters.  If <EM>n</EM>&lt;=0, then the  entire
+       string of at most <EM>n</EM> characters.  If <EM>n</EM><=0, then the  entire
        string is inserted.
 
        If  a  character in <EM>str</EM> is a tab, newline, carriage return
@@ -40,7 +40,7 @@
        in the <STRONG>^</STRONG><EM>X</EM> notation.  Calling <STRONG>winch</STRONG> after adding a  control
        character (and moving to it, if necessary) does not return
        the control character, but instead returns a character  in
-       the the ^-representation of the control character.
+       the ^-representation of the control character.
 
 
 </PRE>
similarity index 95%
rename from Ada95/html/curs_instr.3x.html
rename to Ada95/html/man/curs_instr.3x.html
index 487bd07caa4ea2dd6c8c74bedd2a0876fac06974..863bc616043e625c476d77386424c3a5c14b3f6b 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>instr</STRONG>,  <STRONG>innstr</STRONG>, <STRONG>winstr</STRONG>, <STRONG>winnstr</STRONG>, <STRONG>mvinstr</STRONG>, <STRONG>mvinnstr</STRONG>, <STRONG>mvwin-</STRONG>
        <STRONG>str</STRONG>, <STRONG>mvwinnstr</STRONG> - get a string of characters from a  <STRONG>curses</STRONG>
@@ -8,7 +8,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>instr(char</STRONG> <STRONG>*str);</STRONG>
        <STRONG>int</STRONG> <STRONG>innstr(char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
similarity index 92%
rename from Ada95/html/curs_kernel.3x.html
rename to Ada95/html/man/curs_kernel.3x.html
index fe706d521f7868173640d89728dd707b51abc5ec..9e88ccaaceb6018139b66682031d232555fedcc2 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>def_prog_mode</STRONG>,       <STRONG>def_shell_mode</STRONG>,      <STRONG>reset_prog_mode</STRONG>,
        <STRONG>reset_shell_mode</STRONG>, <STRONG>resetty</STRONG>, <STRONG>savetty</STRONG>, <STRONG>getsyx</STRONG>, <STRONG>setsyx</STRONG>, <STRONG>ripof-</STRONG>
@@ -8,7 +8,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>def_prog_mode(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>def_shell_mode(void);</STRONG>
@@ -73,7 +73,7 @@
        dow that has been allocated and an integer with the number
        of columns in the window.  Inside this initialization rou-
        tine, the integer variables <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  (defined  in
-       <STRONG>&lt;curses.h&gt;</STRONG>) are not guaranteed to be accurate and <STRONG>wrefresh</STRONG>
+       <STRONG><curses.h></STRONG>) are not guaranteed to be accurate and <STRONG>wrefresh</STRONG>
        or <STRONG>doupdate</STRONG> must not be called.  It is allowable  to  call
        <STRONG>wnoutrefresh</STRONG> during the initialization routine.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&amp;</STRONG> is not necessary  before
+       Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&</STRONG> is not necessary  before
        the variables <EM>y</EM> and <EM>x</EM>.
 
-       The  SVr4 man pages warn that the return value of <STRONG>curs_set</STRONG>
-       "is currently incorrect".   This  implementation  gets  it
-       right, but it may be unwise to count on the correctness of
-       the return value anywhere else.
+       Older  SVr4  man  pages  warn  that  the  return  value of
+       <STRONG>curs_set</STRONG> "is currently  incorrect".   This  implementation
+       gets  it  right, but it may be unwise to count on the cor-
+       rectness of the return value anywhere else.
 
 
 </PRE>
diff --git a/Ada95/html/man/curs_mouse.3x.html b/Ada95/html/man/curs_mouse.3x.html
new file mode 100644 (file)
index 0000000..57b93a5
--- /dev/null
@@ -0,0 +1,224 @@
+<HTML>
+<BODY>
+<PRE>
+       <STRONG>getmouse</STRONG>,  <STRONG>ungetmouse</STRONG>,  <STRONG>mousemask</STRONG>, <STRONG>wenclose</STRONG>, <STRONG>wmouse_trafo</STRONG>,
+       <STRONG>mouseinterval</STRONG> - mouse interface through curses
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+
+       <STRONG>typedef</STRONG> <STRONG>unsigned</STRONG> <STRONG>long</STRONG> <STRONG>mmask_t;</STRONG>
+
+       <STRONG>typedef</STRONG> <STRONG>struct</STRONG>
+       <STRONG>{</STRONG>
+           <STRONG>short</STRONG> <STRONG>id;</STRONG>         <EM>/*</EM> <EM>ID</EM> <EM>to</EM> <EM>distinguish</EM> <EM>multiple</EM> <EM>devices</EM> <EM>*/</EM>
+           <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>y,</STRONG> <STRONG>z;</STRONG>      <EM>/*</EM> <EM>event</EM> <EM>coordinates</EM> <EM>*/</EM>
+           <STRONG>mmask_t</STRONG> <STRONG>bstate;</STRONG>   <EM>/*</EM> <EM>button</EM> <EM>state</EM> <EM>bits</EM> <EM>*/</EM>
+       <STRONG>}</STRONG>
+       <STRONG>MEVENT;</STRONG>
+       <STRONG>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*event);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*event);</STRONG>
+       <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <STRONG>newmask,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*oldmask);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>wenclose(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>wmouse_trafo(const</STRONG> <STRONG>WINDOW*</STRONG> <STRONG>win,</STRONG>  <STRONG>int*</STRONG>  <STRONG>pY,</STRONG>  <STRONG>int*</STRONG>  <STRONG>pX,</STRONG>
+       <STRONG>bool</STRONG> <STRONG>to_screen);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mouseinterval(int</STRONG> <STRONG>erval);</STRONG>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       These  functions provide an interface to mouse events from
+       <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>.  Mouse events are  represented  by  <STRONG>KEY_MOUSE</STRONG>
+       pseudo-key values in the <STRONG>wgetch</STRONG> input stream.
+
+       To  make mouse events visible, use the <STRONG>mousemask</STRONG> function.
+       This will  set  the  mouse  events  to  be  reported.   By
+       default,  no mouse events are reported.  The function will
+       return a mask to indicate which  of  the  specified  mouse
+       events  can be reported; on complete failure it returns 0.
+       If oldmask is non-NULL, this function fills the  indicated
+       location  with  the  previous  value of the given window's
+       mouse event mask.
+
+       As a side effect, setting a zero mousemask  may  turn  off
+       the  mouse pointer; setting a nonzero mask may turn it on.
+       Whether this happens is device-dependent.
+
+       Here are the mouse event type masks:
+
+       l l _ _ l l.   <EM>Name</EM> <EM>Description</EM>  BUTTON1_PRESSED     mouse
+       button   1  down  BUTTON1_RELEASED    mouse  button  1  up
+       BUTTON1_CLICKED     mouse      button      1       clicked
+       BUTTON1_DOUBLE_CLICKED   mouse  button  1  double  clicked
+       BUTTON1_TRIPLE_CLICKED   mouse  button  1  triple  clicked
+       BUTTON2_PRESSED     mouse        button       2       down
+       BUTTON2_RELEASED    mouse        button        2        up
+       BUTTON2_CLICKED     mouse       button      2      clicked
+       BUTTON2_DOUBLE_CLICKED   mouse  button  2  double  clicked
+       BUTTON3_RELEASED    mouse        button        3        up
+       BUTTON3_CLICKED     mouse      button      3       clicked
+       BUTTON3_DOUBLE_CLICKED   mouse  button  3  double  clicked
+       BUTTON3_TRIPLE_CLICKED   mouse  button  3  triple  clicked
+       BUTTON4_PRESSED     mouse        button       4       down
+       BUTTON4_RELEASED    mouse        button        4        up
+       BUTTON4_CLICKED     mouse       button      4      clicked
+       BUTTON4_DOUBLE_CLICKED   mouse  button  4  double  clicked
+       BUTTON4_TRIPLE_CLICKED   mouse  button  4  triple  clicked
+       BUTTON_SHIFT   shift was down during button  state  change
+       BUTTON_CTRL    control was down during button state change
+       BUTTON_ALT     alt was down  during  button  state  change
+       ALL_MOUSE_EVENTS    report   all   button   state  changes
+       REPORT_MOUSE_POSITION    report mouse movement
+
+       Once a class of mouse events have been made visible  in  a
+       window,  calling  the  <STRONG>wgetch</STRONG>  function on that window may
+       return <STRONG>KEY_MOUSE</STRONG> as an indicator that a  mouse  event  has
+       been queued.  To read the event data and pop the event off
+       the queue, call <STRONG>getmouse</STRONG>.  This function will return <STRONG>OK</STRONG> if
+       a mouse event is actually visible in the given window, <STRONG>ERR</STRONG>
+       otherwise.  When <STRONG>getmouse</STRONG> returns <STRONG>OK</STRONG>, the  data  deposited
+       as  y  and  x  in  the event structure coordinates will be
+       screen-relative character-cell coordinates.  The  returned
+       state  mask  will have exactly one bit set to indicate the
+       event type.
+
+       The <STRONG>ungetmouse</STRONG> function behaves  analogously  to  <STRONG>ungetch</STRONG>.
+       It  pushes  a  <STRONG>KEY_MOUSE</STRONG>  event  onto the input queue, and
+       associates with  that  event  the  given  state  data  and
+       screen-relative character-cell coordinates.
+
+       The  <STRONG>wenclose</STRONG>  function  tests  whether  a  given  pair of
+       screen-relative character-cell coordinates is enclosed  by
+       a  given  window, returning TRUE if it is and FALSE other-
+       wise.  It is useful for determining  what  subset  of  the
+       screen windows enclose the location of a mouse event.
+
+       The <STRONG>wmouse_trafo</STRONG> function transforms a given pair of coor-
+       dinates from stdscr-relative coordinates  to  screen-rela-
+       tive  coordinates  or  vice  versa.  Please remember, that
+       stdscr-relative coordinates are not  always  identical  to
+       screen-relative   coordinates  due  to  the  mechanism  to
+       reserve lines on top or bottom of  the  screen  for  other
+       purposes  (ripoff() call, see also slk_...  functions). If
+       the parameter <STRONG>to_screen</STRONG> is <STRONG>TRUE</STRONG>, the pointers <STRONG>pY,</STRONG> <STRONG>pX</STRONG>  must
+       reference  the coordinates of a location inside the window
+       <STRONG>win</STRONG>. They are converted to screen-relative coordinates and
+       returned  through the pointers. If the conversion was suc-
+       cessful, the function returns <STRONG>TRUE</STRONG>. If one of the  parame-
+       ters  was  NULL  or the location is not inside the window,
+       <STRONG>FALSE</STRONG> is returned. If <STRONG>to_screen</STRONG> is <STRONG>FALSE</STRONG>, the pointers <STRONG>pY,</STRONG>
+       encloses  this  point.  In  this case the function returns
+       <STRONG>TRUE</STRONG>. If one of the parameters is NULL or the point is not
+       inside  the window, <STRONG>FALSE</STRONG> is returned. Please notice, that
+       the referenced coordinates are only replaced by  the  con-
+       verted coordinates if the transformation was successful.
+
+       The <STRONG>mouseinterval</STRONG> function sets the maximum time (in thou-
+       sands of a second)  that  can  elapse  between  press  and
+       release  events  in  order  for them to be recognized as a
+       click.  This function returns the previous interval value.
+       The default is one fifth of a second.
+
+       Note  that  mouse  events will be ignored when input is in
+       cooked mode, and will cause an error beep when cooked mode
+       is  being simulated in a window by a function such as <STRONG>get-</STRONG>
+       <STRONG>str</STRONG> that expects a linefeed for input-loop termination.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG> and <STRONG>mouseinterval</STRONG> return the  integer
+       <STRONG>ERR</STRONG>  upon failure or <STRONG>OK</STRONG> upon successful completion. <STRONG>mouse-</STRONG>
+       <STRONG>mask</STRONG> returns the mask of reportable events.  <STRONG>wenclose</STRONG>  and
+       <STRONG>wmouse_trafo</STRONG> are boolean functions returning <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>
+       depending on their test result.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       These calls were designed for  <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>,  and  are  not
+       found in SVr4 curses, 4.4BSD curses, or any other previous
+       version of curses.
+
+       The feature macro <STRONG>NCURSES_MOUSE_VERSION</STRONG> is provided so the
+       preprocessor  can  be  used to test whether these features
+       are present (its value is 1).   NOTE:  THIS  INTERFACE  IS
+       EXPERIMENTAL  AND IS SUBJECT TO CHANGE WITHOUT NOTICE!  If
+       the interface is changed, the value of  <STRONG>NCURSES_MOUSE_VER-</STRONG>
+       <STRONG>SION</STRONG> will be incremented.
+
+       The  order  of the <STRONG>MEVENT</STRONG> structure members is not guaran-
+       teed.  Additional fields may be added to the structure  in
+       the future.
+
+       Under  <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>,  these  calls  are  implemented  using
+       either xterm's built-in mouse-tracking API  or  Alessandro
+       Rubini's  gpm  server.   If  you are using something other
+       than xterm there is no gpm daemon running on your machine,
+       mouse  events  will not be visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG> (and the
+       <STRONG>wmousemask</STRONG> function will always return <STRONG>0</STRONG>).
+
+       The z member in the event structure is not presently used.
+       It  is  intended  for use with touch screens (which may be
+       pressure-sensitive)   or   with   3D-mice/trackballs/power
+       gloves.
+       Mouse  events under xterm will not in fact be ignored dur-
+       ing cooked mode, if they have been enabled by  <STRONG>wmousemask</STRONG>.
+       Instead,  the  xterm  mouse report sequence will appear in
+       the string read.
+
+       Mouse events under xterm will not be detected correctly in
+       a window with its keypad bit off.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+</BODY>
+</HTML>
similarity index 91%
rename from Ada95/html/curs_move.3x.html
rename to Ada95/html/man/curs_move.3x.html
index 4edbae804ffb9cfae59ae6b867e80aeb5a09f418..0fdf84b24640993bdb10f54eb225e98711f20f2d 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>move</STRONG>, <STRONG>wmove</STRONG> - move <STRONG>curses</STRONG> window cursor
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>move(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
        <STRONG>int</STRONG> <STRONG>wmove(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
similarity index 93%
rename from Ada95/html/curs_outopts.3x.html
rename to Ada95/html/man/curs_outopts.3x.html
index 7c5ec4bba89460923e713e01dbaefbf40e79c5a2..72401f5d7797d6e614ab1da338e552173fd30f1f 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>clearok</STRONG>,   <STRONG>idlok</STRONG>,   <STRONG>idcok</STRONG>   <STRONG>immedok</STRONG>,  <STRONG>leaveok</STRONG>,  <STRONG>setscrreg</STRONG>,
        <STRONG>wsetscrreg</STRONG>, <STRONG>scrollok</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG> - <STRONG>curses</STRONG> output options
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>clearok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
        <STRONG>int</STRONG> <STRONG>idlok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
@@ -97,7 +97,7 @@
        The  <STRONG>nl</STRONG>  and  <STRONG>nonl</STRONG> routines control whether the underlying
        display device translates the return key into  newline  on
        input,  and  whether it translates newline into return and
-       line-feed on output (in either case,  the  call  <STRONG>addch('0)</STRONG>
+       line-feed on output (in either case, the call  <STRONG>addch('\n')</STRONG>
        does the equivalent of return and line feed on the virtual
        screen).  Initially, these translations do occur.  If  you
        disable  them using <STRONG>nonl</STRONG>, <STRONG>curses</STRONG> will be able to make bet-
        The  XSI  Curses  standard is ambiguous on the question of
        whether <STRONG>raw</STRONG>() should disable the  CRLF  translations  con-
        trolled by <STRONG>nl</STRONG>() and <STRONG>nonl</STRONG>().  BSD curses did turn off these
-       translations; AT&amp;T curses (at least as late as  SVr1)  did
+       translations; AT&T curses (at least as late as  SVr1)  did
        not.   We choose to do so, on the theory that a programmer
        requesting raw input wants a clean (ideally  8-bit  clean)
        connection that the operating system does not mess with.
 
        The  XSI  Curses standard does not mention that the cursor
        should be made invisible  as  a  side-effect  of  <STRONG>leaveok</STRONG>.
-       SVr4 curses does this.
+       SVr4  curses  documentation  does  this, but the code does
+       not.
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       Note  that <STRONG>clearok</STRONG>, <STRONG>leaveok</STRONG>, <STRONG>scrollok</STRONG>, <STRONG>idcok</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG> and
+       Note that <STRONG>clearok</STRONG>, <STRONG>leaveok</STRONG>, <STRONG>scrollok</STRONG>, <STRONG>idcok</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG>  and
        <STRONG>setscrreg</STRONG> may be macros.
 
        The <STRONG>immedok</STRONG> routine is useful for windows that are used as
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>,         <STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>,        <STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>,
+       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>,        <STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>,         <STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>,
        <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>, <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
 
 
 
 
 
-
 </PRE>
 </BODY>
 </HTML>
similarity index 95%
rename from Ada95/html/curs_overlay.3x.html
rename to Ada95/html/man/curs_overlay.3x.html
index 4c892d664c1628b1d25e79180d940e75cdf6e861..e9c155e1ac2cfc76bd96f79b59a242cfc40efbb4 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>overlay</STRONG>, <STRONG>overwrite</STRONG>, <STRONG>copywin</STRONG> - overlay and manipulate over-
        lapped <STRONG>curses</STRONG> windows
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>overlay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*srcwin,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*dstwin);</STRONG>
        <STRONG>int</STRONG> <STRONG>overwrite(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*srcwin,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*dstwin);</STRONG>
similarity index 97%
rename from Ada95/html/curs_pad.3x.html
rename to Ada95/html/man/curs_pad.3x.html
index 721b8ed974576fb0ffe8a2f2215ac43f73104f39..d8eccd6bb2ab543d6057d0ac08038c16e5b873e0 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>newpad</STRONG>, <STRONG>subpad</STRONG>, <STRONG>prefresh</STRONG>, <STRONG>pnoutrefresh</STRONG>, <STRONG>pechochar</STRONG> - create
        and display <STRONG>curses</STRONG> pads
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>WINDOW</STRONG> <STRONG>*newpad(int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols);</STRONG>
        <STRONG>WINDOW</STRONG> <STRONG>*subpad(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
similarity index 93%
rename from Ada95/html/curs_print.3x.html
rename to Ada95/html/man/curs_print.3x.html
index 9848edf9b4517ce2f0ba8fc2fe3fbda7b920be14..e3dc345a59ce58ba56fc6c8318ae4763eda9e8a3 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>mcprint</STRONG> - ship binary data to printer
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>mcprint(char</STRONG> <STRONG>*data,</STRONG> <STRONG>int</STRONG> <STRONG>len);</STRONG>
 
similarity index 88%
rename from Ada95/html/curs_printw.3x.html
rename to Ada95/html/man/curs_printw.3x.html
index 899d97413db259fafd988b90bf8d415571948897..a50bad36ba3d931b8a291c25dc90e3919377fd59 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>printw</STRONG>,  <STRONG>wprintw</STRONG>,  <STRONG>mvprintw</STRONG>,  <STRONG>mvwprintw</STRONG>,  <STRONG>vwprintw</STRONG> - print
        formatted output in <STRONG>curses</STRONG> windows
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>printw(char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
        <STRONG>int</STRONG> <STRONG>wprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
@@ -15,7 +15,7 @@
        <STRONG>int</STRONG> <STRONG>mvwprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG>
              <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg]</STRONG> ...);
 
-       <STRONG>#include</STRONG> <STRONG>&lt;varargs.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><varargs.h></STRONG>
        <STRONG>int</STRONG> <STRONG>vwprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>varglist);</STRONG>
 
 
@@ -29,7 +29,7 @@
        The   <STRONG>vwprintw</STRONG>   routine  is  analogous  to  <STRONG>vprintf</STRONG>  [see
        <STRONG><A HREF="printf.3s.html">printf(3S)</A></STRONG>] and performs a <STRONG>wprintw</STRONG> using a variable  argu-
        ment  list.  The third argument is a <STRONG>va_list</STRONG>, a pointer to
-       a list of arguments, as defined in <STRONG>&lt;varargs.h&gt;</STRONG>.
+       a list of arguments, as defined in <STRONG><varargs.h></STRONG>.
 
 
 </PRE>
@@ -44,7 +44,7 @@
        The XSI Curses standard, Issue  4  describes  these  func-
        tions.   The  function <STRONG>vwprintw</STRONG> is marked TO BE WITHDRAWN,
        and is to be replaced by a function  <STRONG>vw_printw</STRONG>  using  the
-       <STRONG>&lt;stdarg.h&gt;</STRONG> interface.
+       <STRONG><stdarg.h></STRONG> interface.
 
 
 </PRE>
similarity index 97%
rename from Ada95/html/curs_refresh.3x.html
rename to Ada95/html/man/curs_refresh.3x.html
index 9e44730f1b1ea029f3ea1763a784b216374b8e6d..51a6a3b27c90fb8112f5e1d01d7ca0ad82cc67fc 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>refresh</STRONG>, <STRONG>wrefresh</STRONG>, <STRONG>wnoutrefresh</STRONG>, <STRONG>doupdate</STRONG>, <STRONG>redrawwin</STRONG>, <STRONG>wre-</STRONG>
        <STRONG>drawln</STRONG> - refresh <STRONG>curses</STRONG> windows and lines
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>refresh(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>wrefresh(WINDOW</STRONG> <STRONG>*win);</STRONG>
similarity index 92%
rename from Ada95/html/curs_scanw.3x.html
rename to Ada95/html/man/curs_scanw.3x.html
index 5dfe2078f6e408385adce39732caa709125df229..521d3c29c9e283c6f18446cf13efa21f32f001d3 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>scanw</STRONG>,  <STRONG>wscanw</STRONG>,  <STRONG>mvscanw</STRONG>, <STRONG>mvwscanw</STRONG>, <STRONG>vwscanw</STRONG> - convert for-
        matted input from a <STRONG>curses</STRONG> widow
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>scanw(char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
        <STRONG>int</STRONG> <STRONG>wscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
@@ -28,7 +28,7 @@
        The <STRONG>vwscanw</STRONG> routine is similar to <STRONG>vwprintw</STRONG> in that it per-
        forms  a <STRONG>wscanw</STRONG> using a variable argument list.  The third
        argument is a <EM>va</EM>_<EM>list</EM>, a pointer to a list  of  arguments,
-       as defined in <STRONG>&lt;varargs.h&gt;</STRONG>.
+       as defined in <STRONG><varargs.h></STRONG>.
 
 
 </PRE>
@@ -46,7 +46,7 @@
        The XSI Curses standard, Issue  4  describes  these  func-
        tions.   The  function  <STRONG>vwscanw</STRONG> is marked TO BE WITHDRAWN,
        and is to be replaced by a  function  <STRONG>vw_scanw</STRONG>  using  the
-       <STRONG>&lt;stdarg.h&gt;</STRONG> interface.
+       <STRONG><stdarg.h></STRONG> interface.
 
 
 </PRE>
similarity index 95%
rename from Ada95/html/curs_scr_dmp.3x.html
rename to Ada95/html/man/curs_scr_dmp.3x.html
index 5565d2352fd5ad781cad96e70b2b2b15b6c3f11a..5c613394e2001a53a2d9a256b950ed76489e4166 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>scr_dump</STRONG>,  <STRONG>scr_restore</STRONG>, <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG> - read (write) a
        <STRONG>curses</STRONG> screen from (to) a file
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>scr_dump(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
        <STRONG>int</STRONG> <STRONG>scr_restore(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
diff --git a/Ada95/html/man/curs_scr_dump.3x.html b/Ada95/html/man/curs_scr_dump.3x.html
new file mode 100644 (file)
index 0000000..5c61339
--- /dev/null
@@ -0,0 +1,122 @@
+<HTML>
+<BODY>
+<PRE>
+       <STRONG>scr_dump</STRONG>,  <STRONG>scr_restore</STRONG>, <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG> - read (write) a
+       <STRONG>curses</STRONG> screen from (to) a file
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+
+       <STRONG>int</STRONG> <STRONG>scr_dump(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
+       <STRONG>int</STRONG> <STRONG>scr_restore(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
+       <STRONG>int</STRONG> <STRONG>scr_init(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
+       <STRONG>int</STRONG> <STRONG>scr_set(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The <STRONG>scr_dump</STRONG> routine dumps the  current  contents  of  the
+       virtual screen to the file <EM>filename</EM>.
+
+       The  <STRONG>scr_restore</STRONG>  routine  sets  the virtual screen to the
+       contents of <EM>filename</EM>, which must have been  written  using
+       <STRONG>scr_dump</STRONG>.   The  next call to <STRONG>doupdate</STRONG> restores the screen
+       to the way it looked in the dump file.
+
+       The <STRONG>scr_init</STRONG> routine reads in the contents of <EM>filename</EM> and
+       uses  them  to initialize the <STRONG>curses</STRONG> data structures about
+       what the terminal currently has on  its  screen.   If  the
+       data  is  determined  to  be  valid, <STRONG>curses</STRONG> bases its next
+       update of the  screen  on  this  information  rather  than
+       clearing  the  screen and starting from scratch.  <STRONG>scr_init</STRONG>
+       is used after <STRONG>initscr</STRONG> or  a  <STRONG>system</STRONG>  [see  <STRONG>system</STRONG>(BA_LIB)]
+       call  to  share  the screen with another process which has
+       done a <STRONG>scr_dump</STRONG>  after  its  <STRONG>endwin</STRONG>  call.   The  data  is
+       declared  invalid  if  the terminfo capabilities <STRONG>rmcup</STRONG> and
+       <STRONG>nrrmc</STRONG> exist; also if the  terminal  has  been  written  to
+       since the preceding <STRONG>scr_dump</STRONG> call.
+
+       The  <STRONG>scr_set</STRONG>  routine  is a combination of <STRONG>scr_restore</STRONG> and
+       <STRONG>scr_init</STRONG>.  It tells the program that  the  information  in
+       <EM>filename</EM> is what is currently on the screen, and also what
+       the program wants on the screen.  This can be  thought  of
+       as a screen inheritance function.
+
+       To  read (write) a window from (to) a file, use the <STRONG>getwin</STRONG>
+       and <STRONG>putwin</STRONG> routines [see <STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>].
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       All routines return the integer <STRONG>ERR</STRONG> upon  failure  and  <STRONG>OK</STRONG>
+       upon success.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       Note  that  <STRONG>scr_init</STRONG>,  <STRONG>scr_set</STRONG>,  and  <STRONG>scr_restore</STRONG>  may  be
+       macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The XSI Curses standard, Issue 4,  describes  these  func-
+       is also considered invalid "if the time-stamp of  the  tty
+       is old" but don't define "old".
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>,       <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>,      <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>,
+       <STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>, <STRONG><A HREF="system.3s.html">system(3S)</A></STRONG>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+</BODY>
+</HTML>
similarity index 94%
rename from Ada95/html/curs_scroll.3x.html
rename to Ada95/html/man/curs_scroll.3x.html
index 9c3ebe7fe785081c90acdba1f36abc1a1e8f0dc0..c8908a56153e198a002883279765a393a3fab7f0 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>scroll</STRONG>, <STRONG>srcl</STRONG>, <STRONG>wscrl</STRONG> - scroll a <STRONG>curses</STRONG> window
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>scroll(WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>scrl(int</STRONG> <STRONG>n);</STRONG>
similarity index 50%
rename from Ada95/html/curs_slk.3x.html
rename to Ada95/html/man/curs_slk.3x.html
index ea4a16af4a577b6f2bd9c18c7303e893fa6a5705..d76728a97fa66fa43a8709cf7a85f3a3727bbac1 100644 (file)
@@ -1,14 +1,15 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>slk_init</STRONG>,     <STRONG>slk_set</STRONG>,    <STRONG>slk_refresh</STRONG>,    <STRONG>slk_noutrefresh</STRONG>,
        <STRONG>slk_label</STRONG>, <STRONG>slk_clear</STRONG>, <STRONG>slk_restore</STRONG>, <STRONG>slk_touch</STRONG>,  <STRONG>slk_attron</STRONG>,
-       <STRONG>slk_attrset</STRONG>, <STRONG>slk_attroff</STRONG> - <STRONG>curses</STRONG> soft label routines
+       <STRONG>slk_attrset</STRONG>,  <STRONG>slk_attroff</STRONG>,  <STRONG>slk_color</STRONG>  - <STRONG>curses</STRONG> soft label
+       routines
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>slk_init(int</STRONG> <STRONG>fmt);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_set(int</STRONG> <STRONG>labnum,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*label,</STRONG> <STRONG>int</STRONG> <STRONG>fmt);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_clear(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_restore(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_touch(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_attron(attr_t</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_attrset(attr_t</STRONG> <STRONG>attrs);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attron(const</STRONG> <STRONG>chtype</STRONG> <STRONG>attrs);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attrset(const</STRONG> <STRONG>chtype</STRONG> <STRONG>attrs);</STRONG>
        <STRONG>attr_t</STRONG> <STRONG>slk_attr(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_attroff(attr_t</STRONG> <STRONG>attrs);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attroff(const</STRONG> <STRONG>chtype</STRONG> <STRONG>attrs);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_color(short</STRONG> <STRONG>color_pair_number);</STRONG>
 
 
 </PRE>
 <H2>DESCRIPTION</H2><PRE>
        The slk* functions manipulate the set of soft function-key
-       labels that exist on many terminals.  For those  terminals
+       labels  that exist on many terminals.  For those terminals
        that do not have soft labels, <STRONG>curses</STRONG> takes over the bottom
-       line of <STRONG>stdscr</STRONG>, reducing the size of <STRONG>stdscr</STRONG> and the  vari-
-       able  <STRONG>LINES</STRONG>.  <STRONG>curses</STRONG> standardizes on eight labels of up to
-       eight characters each. In addition to  this,  the  ncurses
-       implementation  supports  a  mode  where  it  simulates 12
-       labels of up to five characters each. This is most  common
-       for  todays  PC  like  enduser  devices.  Please note that
+       line  of <STRONG>stdscr</STRONG>, reducing the size of <STRONG>stdscr</STRONG> and the vari-
+       able <STRONG>LINES</STRONG>.  <STRONG>curses</STRONG> standardizes on eight labels of up  to
+       eight  characters  each.  In addition to this, the ncurses
+       implementation supports  a  mode  where  it  simulates  12
+       labels  of up to five characters each. This is most common
+       for todays PC like  enduser  devices.   Please  note  that
        ncurses simulates this mode by taking over up to two lines
-       at  the  bottom  of  the screen, it doesn't try to use any
+       at the bottom of the screen, it doesn't  try  to  use  any
        hardware support for this mode.
 
-       The <STRONG>slk_init</STRONG> routine must  be  called  before  <STRONG>initscr</STRONG>  or
+       The  <STRONG>slk_init</STRONG>  routine  must  be  called before <STRONG>initscr</STRONG> or
        <STRONG>newterm</STRONG> is called.  If <STRONG>initscr</STRONG> eventually uses a line from
        <STRONG>stdscr</STRONG> to emulate the soft labels, then <EM>fmt</EM> determines how
-       the  labels  are arranged on the screen.  Setting <EM>fmt</EM> to <STRONG>0</STRONG>
+       the labels are arranged on the screen.  Setting <EM>fmt</EM>  to  <STRONG>0</STRONG>
        indicates a 3-2-3 arrangement of the labels, <STRONG>1</STRONG> indicates a
        4-4 arrangement and <STRONG>2</STRONG> indicates the PC like 4-4-4 mode. If
-       <STRONG>fmt</STRONG> is set to <STRONG>3</STRONG>, it is again the PC like 4-4-4  mode,  but
-       in  addition  an index line is generated, helping the user
+       <STRONG>fmt</STRONG>  is  set to <STRONG>3</STRONG>, it is again the PC like 4-4-4 mode, but
+       in addition an index line is generated, helping  the  user
        to identify the key numbers easily.
 
-       The <STRONG>slk_set</STRONG> routine requires <EM>labnum</EM> to be a label  number,
+       The  <STRONG>slk_set</STRONG> routine requires <EM>labnum</EM> to be a label number,
        from <STRONG>1</STRONG> to <STRONG>8</STRONG> (resp. <STRONG>12</STRONG>); <EM>label</EM> must be the string to be put
-       on the label, up  to  eight  (resp.  five)  characters  in
-       length.   A  null string or a null pointer sets up a blank
-       label. <EM>fmt</EM> is either <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG>,  indicating  whether  the
-       label  is  to be left-justified, centered, or right-justi-
-       fied, respectively, within the label.
+       on  the  label,  up  to  eight  (resp. five) characters in
+       length.  A null string or a null pointer sets up  a  blank
+       label.  <EM>fmt</EM>  is  either <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG>, indicating whether the
+       label is  to be left-justified, centered, or  right-justi-
+       the <STRONG>wrefresh</STRONG> and <STRONG>wnoutrefresh</STRONG> routines.
 
+       The <STRONG>slk_label</STRONG> routine returns the current label for  label
+       number  <EM>labnum</EM>, with leading and trailing blanks stripped.
 
-       The  <STRONG>slk_label</STRONG> routine returns the current label for label
-       number <EM>labnum</EM>, with leading and trailing blanks  stripped.
-
-       The  <STRONG>slk_clear</STRONG>  routine  clears  the  soft labels from the
+       The <STRONG>slk_clear</STRONG> routine clears  the  soft  labels  from  the
        screen.
 
-       The <STRONG>slk_restore</STRONG> routine, restores the soft labels  to  the
+       The  <STRONG>slk_restore</STRONG>  routine, restores the soft labels to the
        screen after a <STRONG>slk_clear</STRONG> has been performed.
 
-       The  <STRONG>slk_touch</STRONG>  routine  forces  all the soft labels to be
+       The <STRONG>slk_touch</STRONG> routine forces all the  soft  labels  to  be
        output the next time a <STRONG>slk_noutrefresh</STRONG> is performed.
 
        The <STRONG>slk_attron</STRONG>, <STRONG>slk_attrset</STRONG>, <STRONG>slk_attroff</STRONG> and <STRONG>slk_attr</STRONG> rou-
        tines correspond to <STRONG>attron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>attroff</STRONG> and <STRONG>attr_get</STRONG>.
-       They have an effect only if soft labels are  simulated  on
-       the  bottom line of the screen.  The default highlight for
+       They  have  an effect only if soft labels are simulated on
+       the bottom line of the screen.  The default highlight  for
        soft keys is A_STANDOUT (as in System V curses, which does
        not document this fact).
 
+       The <STRONG>slk_color</STRONG> routine corresponds to <STRONG>color_set</STRONG>. It has  an
+       effect  only  if  soft  labels are simulated on the bottom
+       line of the screen.
+
+
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
        These routines return <STRONG>ERR</STRONG> upon failure and OK (SVr4 speci-
        fies only "an integer value other than <STRONG>ERR</STRONG>") upon success-
-       ful  completion.  <STRONG>slk_attr</STRONG>  returns the attribute used for
+       ful completion. <STRONG>slk_attr</STRONG> returns the  attribute  used  for
        the soft keys.
 
        <STRONG>slk_label</STRONG> returns <STRONG>NULL</STRONG> on error.
 
 </PRE>
 <H2>PORTABILITY</H2><PRE>
-       The  XSI  Curses  standard, Issue 4, describes these func-
-       tions.  It changes the argument  type  of  the  attribute-
-       manipulation     functions     <STRONG>slk_attron</STRONG>,    <STRONG>slk_attroff</STRONG>,
-       <STRONG>slk_attrset</STRONG> to be <STRONG>attr_t</STRONG>, and adds <STRONG>const</STRONG>  qualifiers.  The
-       format  codes  <STRONG>2</STRONG>  and  <STRONG>3</STRONG>  for  <STRONG>slk_init()</STRONG> and the function
+       The XSI Curses standard, Issue 4,  describes  these  func-
+       tions.   It  changes  the  argument type of the attribute-
+       manipulation    functions     <STRONG>slk_attron</STRONG>,     <STRONG>slk_attroff</STRONG>,
+       <STRONG>slk_attrset</STRONG>  to  be <STRONG>attr_t</STRONG>, and adds <STRONG>const</STRONG> qualifiers. The
+       format codes <STRONG>2</STRONG> and  <STRONG>3</STRONG>  for  <STRONG>slk_init()</STRONG>  and  the  function
        <STRONG>slk_attr</STRONG> are specific to ncurses.
 
 
 
 
 
-
-
-
-
-
-
 </PRE>
 </BODY>
 </HTML>
similarity index 96%
rename from Ada95/html/curs_termattrs.3x.html
rename to Ada95/html/man/curs_termattrs.3x.html
index d0a174314389bf39b6b3ef5ff105daaba85a754a..fcc417a21b210e6536f403e5871c9fa41e555014 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>baudrate</STRONG>,  <STRONG>erasechar</STRONG>,  <STRONG>has_ic</STRONG>, <STRONG>has_il</STRONG>, <STRONG>killchar</STRONG>, <STRONG>longname</STRONG>,
        <STRONG>termattrs</STRONG>, <STRONG>termname</STRONG> - <STRONG>curses</STRONG> environment query routines
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>baudrate(void);</STRONG>
        <STRONG>char</STRONG> <STRONG>erasechar(void);</STRONG>
similarity index 63%
rename from Ada95/html/curs_termcap.3x.html
rename to Ada95/html/man/curs_termcap.3x.html
index 5f448c49369fed5397e97369325e950df7eedb9e..62830ae90be8060df2929f6eae2dda4091d958d2 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, <STRONG>tgetstr</STRONG>, <STRONG>tgoto</STRONG>, <STRONG>tputs</STRONG> - direct
        <STRONG>curses</STRONG> interface to the terminfo capability database
@@ -7,8 +7,8 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
-       <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+       <STRONG>#include</STRONG> <STRONG><term.h></STRONG>
        <STRONG>int</STRONG> <STRONG>tgetent(const</STRONG> <STRONG>char</STRONG> <STRONG>*bp,</STRONG> <STRONG>char</STRONG> <STRONG>*name);</STRONG>
        <STRONG>int</STRONG> <STRONG>tgetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*id);</STRONG>
        <STRONG>int</STRONG> <STRONG>tgetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*id);</STRONG>
        terminfo  database  could  not  be  found.   The emulation
        ignores the buffer pointer <EM>bp</EM>.
 
-       The <STRONG>tgetflag</STRONG> routine gets the boolean entry for <EM>id</EM>.
+       The <STRONG>tgetflag</STRONG> routine gets the boolean  entry  for  <EM>id</EM>,  or
+       zero if it is not available.
 
-       The <STRONG>tgetnum</STRONG> routine gets the numeric entry for <EM>id</EM>.
+       The  <STRONG>tgetnum</STRONG>  routine gets the numeric entry for <EM>id</EM>, or -1
+       if it is not available.
 
-       The <STRONG>tgetstr</STRONG> routine returns the string entry for <EM>id</EM>.   Use
-       <STRONG>tputs</STRONG> to output the returned string.
+       The <STRONG>tgetstr</STRONG> routine returns the string entry  for  <EM>id</EM>,  or
+       zero  if  it  is  not  available.  Use <STRONG>tputs</STRONG> to output the
+       returned string.
 
-       The  <STRONG>tgoto</STRONG>  routine  instantiates  the parameters into the
-       given capability.  The output from this routine is  to  be
+       The <STRONG>tgoto</STRONG> routine instantiates  the  parameters  into  the
+       given  capability.   The output from this routine is to be
        passed to <STRONG>tputs</STRONG>.
 
-       The  <STRONG>tputs</STRONG>  routine  is described on the <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       The <STRONG>tputs</STRONG> routine is described  on  the  <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
        manual page.  It can retrieve capabilities by either term-
        cap or terminfo name.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Except  where  explicitly  noted,  routines that return an
-       integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4  only  speci-
-       fies  "an  integer  value other than <STRONG>ERR</STRONG>") upon successful
+       Except where explicitly noted,  routines  that  return  an
+       integer  return  <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 only speci-
+       fies "an integer value other than  <STRONG>ERR</STRONG>")  upon  successful
        completion.
 
        Routines that return pointers return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>BUGS</H2><PRE>
        If you call <STRONG>tgetstr</STRONG> to fetch <STRONG>ca</STRONG> or any other parameterized
+       string, be aware that it  will  be  returned  in  terminfo
+       notation,  not  the older and not-quite-compatible termcap
        notation.  This won't cause problems if all you do with it
-       is call <STRONG>tgoto</STRONG> or <STRONG>tparm</STRONG>, which both expand  terminfo-style.
+       is  call <STRONG>tgoto</STRONG> or <STRONG>tparm</STRONG>, which both expand terminfo-style.
 
-       Because  terminfo  conventions for representing padding in
-       string capabilities differ  from  termcap's,  <STRONG>tputs("50");</STRONG>
-       will  put  out a literal "50" rather than busy-waiting for
+       Because terminfo conventions for representing  padding  in
+       string  capabilities  differ  from termcap's, <STRONG>tputs("50");</STRONG>
+       will put out a literal "50" rather than  busy-waiting  for
        50 milliseconds.  Cope with it.
 
 
 </PRE>
 <H2>PORTABILITY</H2><PRE>
-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.   However,  they are marked TO BE WITHDRAWN and may
+       The  XSI  Curses  standard,  Issue 4 describes these func-
+       tions.  However, they are marked TO BE WITHDRAWN  and  may
        be removed in future versions.
 
-       Neither the XSI Curses standard nor  the  SVr4  man  pages
-       documented  the return values of <STRONG>tgetent</STRONG> correctly, though
+       Neither  the  XSI  Curses  standard nor the SVr4 man pages
+       documented the return values of <STRONG>tgetent</STRONG> correctly,  though
        all three were in fact returned ever since SVr1.
 
 
 
 
 
-
-
-
 
 
 
similarity index 86%
rename from Ada95/html/curs_terminfo.3x.html
rename to Ada95/html/man/curs_terminfo.3x.html
index 85d536f449f4c7b37b940aee2fb5310cf5466b33..2f90578c67cff8f033ce00bab26e82c5a6645e24 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>setupterm</STRONG>, <STRONG>setterm</STRONG>, <STRONG>set_curterm</STRONG>, <STRONG>del_curterm</STRONG>, <STRONG>restartterm</STRONG>,
        <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>putp</STRONG>, <STRONG>vidputs</STRONG>,  <STRONG>vidattr</STRONG>,  <STRONG>mvcur</STRONG>,  <STRONG>tigetflag</STRONG>,
@@ -9,8 +9,8 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
-       <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+       <STRONG>#include</STRONG> <STRONG><term.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>setupterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*term,</STRONG> <STRONG>int</STRONG> <STRONG>fildes,</STRONG> <STRONG>int</STRONG> <STRONG>*errret);</STRONG>
        <STRONG>int</STRONG> <STRONG>setterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*term);</STRONG>
        <EM>name</EM> passed to them, such as <STRONG>xenl</STRONG>.
 
        The <STRONG>tigetflag</STRONG> routine returns the value <STRONG>-1</STRONG> if  <EM>capname</EM>  is
-       not a boolean capability.
+       not  a  boolean  capability,  or  <STRONG>0</STRONG>  if it is cancelled or
+       absent from the terminal description.
 
-       The  <STRONG>tigetnum</STRONG>  routine  returns the value <STRONG>-2</STRONG> if <EM>capname</EM> is
-       not a numeric capability.
+       The <STRONG>tigetnum</STRONG> routine returns the value <STRONG>-2</STRONG>  if  <EM>capname</EM>  is
+       not  a  numeric  capability,  or  <STRONG>-1</STRONG> if it is cancelled or
+       absent from the terminal description.
 
        The <STRONG>tigetstr</STRONG> routine returns the value <STRONG>(char</STRONG> <STRONG>*)-1</STRONG> if  <EM>cap-</EM>
-       <EM>name</EM> is not a string capability.
+       <EM>name</EM>  is  not a string capability, or <STRONG>0</STRONG> if it is cancelled
+       or absent from the terminal description.
 
        The <EM>capname</EM> for each capability is given in the table col-
-       umn entitled <EM>capname</EM> code in the capabilities  section  of
+       umn  entitled  <EM>capname</EM> code in the capabilities section of
        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
        <STRONG>char</STRONG> <STRONG>*boolnames</STRONG>, <STRONG>*boolcodes</STRONG>, <STRONG>*boolfnames</STRONG>
 
-       <STRONG>char</STRONG> <STRONG>*numnames</STRONG>, <STRONG>*numcodes</STRONG>, <STRONG>*numfnames</STRONG>
 
-       <STRONG>char</STRONG> <STRONG>*strnames</STRONG>, <STRONG>*strcodes</STRONG>, <STRONG>*strfnames</STRONG>
-       <STRONG>termcap</STRONG> codes, and the full C names, for each of the  <STRONG>ter-</STRONG>
+       These null-terminated arrays  contain  the  <EM>capnames</EM>,  the
+       <STRONG>termcap</STRONG>  codes, and the full C names, for each of the <STRONG>ter-</STRONG>
        <STRONG>minfo</STRONG> variables.
 
 
 </PRE>
 <H2>RETURN VALUE</H2><PRE>
-       Routines  that  return  an integer return <STRONG>ERR</STRONG> upon failure
-       and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value  other  than
-       <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise noted
+       Routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure
+       and  <STRONG>OK</STRONG>  (SVr4 only specifies "an integer value other than
+       <STRONG>ERR</STRONG>") upon successful completion, unless  otherwise  noted
        in the preceding routine descriptions.
 
        Routines that return pointers always return <STRONG>NULL</STRONG> on error.
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The  <STRONG>setupterm</STRONG> routine should be used in place of <STRONG>setterm</STRONG>.
-       It may be useful when you want to test for terminal  capa-
-       bilities  without  committing to the allocation of storage
+       The <STRONG>setupterm</STRONG> routine should be used in place of  <STRONG>setterm</STRONG>.
+       It  may be useful when you want to test for terminal capa-
+       bilities without committing to the allocation  of  storage
        involved in <STRONG>initscr</STRONG>.
 
        Note that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
 
 </PRE>
 <H2>PORTABILITY</H2><PRE>
-       The function <STRONG>setterm</STRONG> is not described in  the  XSI  Curses
-       standard  and  must be considered non-portable.  All other
+       The  function  <STRONG>setterm</STRONG>  is not described in the XSI Curses
+       standard and must be considered non-portable.   All  other
        functions are as described in the XSI curses standard.
 
-       In System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return  type
-       and  returns  <STRONG>OK</STRONG>  or <STRONG>ERR</STRONG>.  We have chosen to implement the
+       In  System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return type
+       and returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.  We have chosen  to  implement  the
        XSI Curses semantics.
 
        In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>,  <STRONG>curs_term-</STRONG>
+       <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>,  <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>, <STRONG>curs_term-</STRONG>
        <STRONG><A HREF="cap.3x.html">cap(3X)</A></STRONG>, <STRONG><A HREF="putc.3s.html">putc(3S)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
 
 
-
-
 </PRE>
 </BODY>
 </HTML>
similarity index 95%
rename from Ada95/html/curs_touch.3x.html
rename to Ada95/html/man/curs_touch.3x.html
index b38a2566c8431867649555c6b93be257b23ac311..1f558bf853c701931b337333679c552b353eee65 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>touchwin</STRONG>, <STRONG>touchline</STRONG>, <STRONG>untouchwin</STRONG>, <STRONG>wtouchln</STRONG>, <STRONG>is_linetouched</STRONG>,
        <STRONG>is_wintouched</STRONG> - <STRONG>curses</STRONG> refresh control routines
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
        <STRONG>int</STRONG> <STRONG>touchwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>touchline(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>start,</STRONG> <STRONG>int</STRONG> <STRONG>count);</STRONG>
        <STRONG>int</STRONG> <STRONG>untouchwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
similarity index 95%
rename from Ada95/html/curs_util.3x.html
rename to Ada95/html/man/curs_util.3x.html
index 34d167d1f52f8eca511da4a5706ec8dbfc546cc1..e6d8f742d60c1a30990026474c6752dd5f631064 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>unctrl</STRONG>,   <STRONG>keyname</STRONG>,   <STRONG>filter</STRONG>,   <STRONG>use_env</STRONG>,   <STRONG>putwin</STRONG>,  <STRONG>getwin</STRONG>,
        <STRONG>delay_output</STRONG>, <STRONG>flushinp</STRONG> - miscellaneous <STRONG>curses</STRONG> utility rou-
@@ -8,7 +8,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <STRONG>c);</STRONG>
        <STRONG>char</STRONG> <STRONG>*keyname(int</STRONG> <STRONG>c);</STRONG>
@@ -85,8 +85,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       Note  that  <STRONG>unctrl</STRONG>  is  a macro, which is defined in &lt;<STRONG>unc-</STRONG>
-       <STRONG>trl.h</STRONG>&gt;.
+       Note  that  <STRONG>unctrl</STRONG>  is  a macro, which is defined in <<STRONG>unc-</STRONG>
+       <STRONG>trl.h</STRONG>>.
 
 
 </PRE>
similarity index 97%
rename from Ada95/html/curs_window.3x.html
rename to Ada95/html/man/curs_window.3x.html
index 70a2236cb6cfcc190efde1afd5646c5e62420115..c4e2738d531d47ef74947d61ce4970e4813d61b3 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>newwin</STRONG>,  <STRONG>delwin</STRONG>,  <STRONG>mvwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>dupwin</STRONG>,
        <STRONG>wsyncup</STRONG>, <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>,  <STRONG>wsyncdown</STRONG>  -  create  <STRONG>curses</STRONG>
@@ -8,10 +8,10 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>WINDOW</STRONG> <STRONG>*newwin(int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG> <STRONG>int</STRONG> <STRONG>begin_y,</STRONG>
-             <STRONG>intbegin_x);</STRONG>
+             <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
        <STRONG>int</STRONG> <STRONG>delwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
        <STRONG>WINDOW</STRONG> <STRONG>*subwin(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
similarity index 84%
rename from Ada95/html/define_key.3x.html
rename to Ada95/html/man/define_key.3x.html
index 585285cddf74e47d19bc57213481aebd8551e77c..2e18202b0b6fadd4efbd07485871fc949a85bfe4 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>define_key</STRONG> - define a keycode
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>define_key(char</STRONG> <STRONG>*definition,</STRONG> <STRONG>int</STRONG> <STRONG>keycode);</STRONG>
 
@@ -20,7 +20,9 @@
        terminfo database.
 
        If  the  given string is null, any existing definition for
-       the keycode is removed.
+       the keycode is removed.  Similarly, if the  given  keycode
+       is  negative  or  zero,  any existing string for the given
+       definition is removed.
 
 
 </PRE>
@@ -63,8 +65,6 @@
 
 
 
-
-
 </PRE>
 </BODY>
 </HTML>
similarity index 93%
rename from Ada95/html/dft_fgbg.3x.html
rename to Ada95/html/man/dft_fgbg.3x.html
index b13ea12d569210f7ac64adaddf36f22c4d80e75b..a19446f7736dc3a19f235c8079c073f760e9dbd7 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>dft_fgbg</STRONG> - use terminal's default colors
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>use_default_colors(void);</STRONG>
 
similarity index 96%
rename from Ada95/html/form.3x.html
rename to Ada95/html/man/form.3x.html
index 39b9e4f3f1c5ba6c3e164d80d318eb14175612d7..ef414e32b3951ffe7463adeec81e70f897177edc 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form</STRONG> - curses extension for programming forms
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
 
 
 </PRE>
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       files <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       files <STRONG><curses.h></STRONG> and <STRONG><eti.h></STRONG>.
 
        In your library list, libform.a  should  be  before  libn-
        curses.a; that is, you want to say `-lform -lncurses', not
similarity index 83%
rename from Ada95/html/form_cursor.3x.html
rename to Ada95/html/man/form_cursor.3x.html
index 6afc48cad7214c04482bcc3ac68fce8eaf4dd435..fbfbac863dbc39d07e108e08be7439506d039ce0 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_cursor</STRONG> - position a form window cursor
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int pos_form_cursor(FORM *form);
 
 
@@ -43,8 +43,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 75%
rename from Ada95/html/form_data.3x.html
rename to Ada95/html/man/form_data.3x.html
index 72eef44e36fab85404f876997ef6cc8e1307ba04..d07992cc5fd38cd1633822b20d4bfa2ddc15fe0d 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
-       <STRONG>form_data</STRONG> -
+       <STRONG>form_data</STRONG> - test for off-screen data in given forms
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        bool data_ahead(const FORM *form);
        bool data_behind(const FORM *form);
 
@@ -29,8 +29,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 95%
rename from Ada95/html/form_driver.3x.html
rename to Ada95/html/man/form_driver.3x.html
index c4d122c88ce7442c3ade6d29862483e058943230..c3c2a623a7432c426164e7bcff83efa2037a2912 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_driver</STRONG> - command-processing loop of the form system
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int form_driver(FORM *form, int c);
 
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       files <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       files <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 94%
rename from Ada95/html/form_field.3x.html
rename to Ada95/html/man/form_field.3x.html
index df9822f9fc60297578ff07cfd4e9d9bc3e36184b..470f01df22f74b7e3852dc7e861962a04368668b 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field</STRONG> - make and break connections between fields and
        forms
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_form_fields(FORM *form, FIELD **fields);
        FIELD **form_fields(const FORM *form);
        int field_count(const FORM *form);
similarity index 88%
rename from Ada95/html/form_field_attributes.3x.html
rename to Ada95/html/man/form_field_attributes.3x.html
index 3cef5851c71bb189566dd61a7d3b234d2e84f851..2408cbcb6f9132b9a6155b997a11a1b1779b8170 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field_attributes</STRONG>  -  color  and attribute control for
        form fields
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_field_fore(FIELD *field, chtype attr);
        chtype field_fore(const FIELD *field);
        int set_field_back(FIELD *field, chtype attr);
@@ -55,8 +55,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 88%
rename from Ada95/html/form_field_buffer.3x.html
rename to Ada95/html/man/form_field_buffer.3x.html
index 5fca73722037b802f626ac492ef5ef81a568e10c..5586ab10909588e28d83854590a3c39c482cfa23 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field_buffer</STRONG> - field buffer control
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int  set_field_buffer(FIELD  *field,  int  buf, const char
        *value);
        char *field_buffer(const FIELD *field, int buffer);
@@ -23,7 +23,7 @@
        may be allocated by applications through the <STRONG>nbuf</STRONG> argument
        of (see <STRONG><A HREF="form_field_new.3x.html">form_field_new(3X)</A></STRONG>) but are not manipulated by the
        forms  library.   The  function  <STRONG>field_buffer</STRONG>  returns the
-       foreground attribute.
+       address of the buffer.
 
        The function <STRONG>set_field_status</STRONG> sets the  associated  status
        flag  of  <EM>field</EM>; <STRONG>field_status</STRONG> gets the current value.  The
@@ -61,8 +61,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
similarity index 87%
rename from Ada95/html/form_field_info.3x.html
rename to Ada95/html/man/form_field_info.3x.html
index 334f0588a42114176a9f01f66142e875fb74d117..a13d3adae65da8848aa8549d42118ad8269c7a10 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field_info</STRONG> - retrieve field characteristics
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int field_info(const FIELD *field, int *rows, int *cols,
                      int *frow, int *fcol, int *nrow, int *nbuf);
        int dynamic_field_info(const FIELD *field, int *rows,  int
@@ -50,8 +50,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 85%
rename from Ada95/html/form_field_just.3x.html
rename to Ada95/html/man/form_field_just.3x.html
index c95657efebbcdfc57efc36d29388f7b0b7e714fe..3691707092ab7a5c4a57ad05782a95ca8843bac8 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field_just</STRONG> - retrieve field characteristics
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_field_just(FIELD *field, int justification);
        int field_just(const FIELD *field);
 
@@ -45,8 +45,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 90%
rename from Ada95/html/form_field_new.3x.html
rename to Ada95/html/man/form_field_new.3x.html
index 9860310bba74a8c1c83de76aa6655c1a845609ca..f581e77c9a2cd2f0b020053c20f004a25e9f1b9b 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field_new</STRONG> - create and destroy form fields
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        FIELD *new_field(int height, int width,
                         int toprow, int leftcol,
                         int offscreen, int nbuffers);
@@ -61,8 +61,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
similarity index 89%
rename from Ada95/html/form_field_opts.3x.html
rename to Ada95/html/man/form_field_opts.3x.html
index d1be72bc2937e119a25b2480c9c81e7e7bd21cf6..5eabb112ad6a8ff0ab40848530e9e520840989f1 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field_opts</STRONG> - set and get field options
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_field_opts(FIELD *field, OPTIONS opts);
        int field_opts_on(FIELD *field, OPTIONS opts);
        int field_opts_off(FIELD *field, OPTIONS opts);
@@ -85,8 +85,8 @@
        <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
 
 
-       <STRONG>NOTES</STRONG>  The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the
-              header file <STRONG>&lt;curses.h&gt;</STRONG>.
+       <STRONG>NOTES</STRONG>  The header file <STRONG><form.h></STRONG> automatically includes the
+              header file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 83%
rename from Ada95/html/form_field_userptr.3x.html
rename to Ada95/html/man/form_field_userptr.3x.html
index dc61c29c324211dcf5f462bc0a3a1aea9e1f66ed..5c626dd73799585d598512488bac3d634d0d8f8f 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field_userptr</STRONG>  -  associate  application  data with a
        form field
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_field_userptr(FIELD *field, void*userptr);
        void *field_userptr(const FIELD *field);
 
@@ -37,8 +37,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 95%
rename from Ada95/html/form_field_validation.3x.html
rename to Ada95/html/man/form_field_validation.3x.html
index a8b5671a69ac4f3049f9dc5e87ad331e939d62bc..34f39b45d9b95854f686f0e53553c733788eda9e 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_field_validation</STRONG> - data type validation for fields
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_field_type(FIELD *field, FIELDTYPE *type, ...);
        FIELDTYPE *field_type(const FIELD *field);
        void *field_arg(const FIELD *field);
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 93%
rename from Ada95/html/form_fieldtype.3x.html
rename to Ada95/html/man/form_fieldtype.3x.html
index d56915ef854adca19d71d24a0d41ccaa8ac4c4f3..f70a9400095efae69c092863d070dc288c1311d9 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_fieldtype</STRONG> - define validation-field types
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        FIELDTYPE *new_fieldtype(
            bool (* const field_check)(FIELD *, const void *),
            bool (* const char_check)(int, const void *));
@@ -92,8 +92,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
        All of the <STRONG>(char</STRONG> <STRONG>*)</STRONG> arguments of  these  functions  should
        actually  be <STRONG>(void</STRONG> <STRONG>*)</STRONG>.  The type has been left uncorrected
similarity index 87%
rename from Ada95/html/form_hook.3x.html
rename to Ada95/html/man/form_hook.3x.html
index d010b959a635f5c8e2ca3debc2ce2a22024faa96..698c07f877c6b18ce2220b3193ead98ba6dc2f8d 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_hook</STRONG> - set hooks for automatic invocation by applica-
        tions
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_field_init(FORM *form, void (*func)(FORM *));
        void (*)(FORM *) field_init(const FORM *form);
        int set_field_term(FORM *form, void (*func)(FORM *));
@@ -40,9 +40,9 @@
        any (<STRONG>NULL</STRONG> if there is no such hook).
 
        The  function  <STRONG>set_form_term</STRONG>  sets  a hook to be called at
-       form-unpost time and just before a page change change once
-       it  is  posted.   <STRONG>form_init</STRONG>  returns the current form term
-       hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
+       form-unpost time and just before a page change once it  is
+       posted.   <STRONG>form_init</STRONG> returns the current form term hook, if
+       any (<STRONG>NULL</STRONG> if there is no such hook).
 
 
 </PRE>
similarity index 84%
rename from Ada95/html/form_new.3x.html
rename to Ada95/html/man/form_new.3x.html
index 7527ca97cfe2132076e3dda4946d1ad20d5d179d..98dfd32678877cdfabdea52b19aae5ea6bf287c3 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_new</STRONG> - create and destroy forms
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        FORM *new_form(FIELD **fields);
        int free_form(FORM *form);
 
@@ -47,8 +47,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 84%
rename from Ada95/html/form_new_page.3x.html
rename to Ada95/html/man/form_new_page.3x.html
index b2f5deb4e7fcc6b3143a9f1cc4f2814c7ea723ae..ef7cffca514a7e3c8f02bcfaf0451ba65798e580 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_new_page</STRONG> - form pagination functions
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_new_page(FIELD *field, bool new_page_flag);
        bool new_page(const FIELD *field);
 
@@ -44,8 +44,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 87%
rename from Ada95/html/form_opts.3x.html
rename to Ada95/html/man/form_opts.3x.html
index 839facd1624d3a6d8592a4c61f0275f0c47db268..f4e6ce313e0e8b098fed6d3600e29fef65d45589 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_opts</STRONG> - set and get form options
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_form_opts(FORM *form, OPTIONS opts);
        int form_opts_on(FORM *form, OPTIONS opts);
        int form_opts_off(FORM *form, OPTIONS opts);
@@ -59,8 +59,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 88%
rename from Ada95/html/form_page.3x.html
rename to Ada95/html/man/form_page.3x.html
index 7715748ff5ab8d7cb05a09964f95cd5fd81a72d7..700f8e07548186e4a24127c06b1f937315cfea3a 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_page</STRONG> - set and get form page number
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_current_field(FORM *form, FIELD *field);
        FIELD *current_field(const FORM *);
        int set_form_page(FORM *form, int n);
@@ -61,8 +61,8 @@
 <H2>SEE ALSO</H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
 
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 87%
rename from Ada95/html/form_post.3x.html
rename to Ada95/html/man/form_post.3x.html
index 6ca869099b339f678a42920758c09fb12eb4b5ff..cec8b24541e2f9fddfd0be9f427dab567f1f3f26 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_post</STRONG>  -  write or erase forms from associated subwin-
        dows
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int post_form(FORM *form);
        int unpost_form(FORM *form);
 
@@ -61,8 +61,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
similarity index 83%
rename from Ada95/html/form_requestname.3x.html
rename to Ada95/html/man/form_requestname.3x.html
index ac1a5f3cd89e11a53f3e2384d61123c364426cb3..f37efdc4142c6589fa9b9d1a680237415624e4b3 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_requestname</STRONG> - handle printable form request names
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        const char *form_request_name(int request);
        int form_request_by_name(const char *name);
 
@@ -34,8 +34,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 83%
rename from Ada95/html/form_userptr.3x.html
rename to Ada95/html/man/form_userptr.3x.html
index 5eac8966c799ed130fbdc40ea9fe886e6546b2c3..49dbc78c6aed42088bc07be233eaca2ae8305504 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_userptr</STRONG> - associate application data with a form item
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_form_userptr(FORM *form, void *userptr);
        void* form_userptr(const FORM *form);
 
@@ -37,8 +37,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 84%
rename from Ada95/html/form_win.3x.html
rename to Ada95/html/man/form_win.3x.html
index 3d5e94b1b6f93a4dcf0c120a2d988787da8f1fb7..fdb60b7c85c566380dfa85c4ec8b6741428abbf8 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>form_win</STRONG>  - make and break form window and subwindow asso-
        ciations
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
        int set_form_win(FORM *form, WINDOW *win);
        WINDOW *form_win(const FORM *form);
        int set_form_sub(FORM *form, WINDOW *sub);
@@ -31,8 +31,8 @@
        treated as a request to change  the  system  default  form
        window or subwindow.
 
-       The   function   <STRONG>scale_window</STRONG>  returns  the  minimum  size
-       required for the subwindow of <EM>form</EM>.
+       The  function <STRONG>scale_form</STRONG> returns the minimum size required
+       for the subwindow of <EM>form</EM>.
 
 
 </PRE>
@@ -61,8 +61,8 @@
 <H2>SEE ALSO</H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
 
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><form.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 89%
rename from Ada95/html/keyok.3x.html
rename to Ada95/html/man/keyok.3x.html
index 3cf442dc1c6c4f2790efa124e60b66876b0d3696..ba188ece3b6d4c7457c4d3358b59cc01a60e0b2d 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>keyok</STRONG> - enable or disable a keycode
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>keyok(int</STRONG> <STRONG>keycode,</STRONG> <STRONG>bool</STRONG> <STRONG>enable);</STRONG>
 
similarity index 96%
rename from Ada95/html/menu.3x.html
rename to Ada95/html/man/menu.3x.html
index 68d79251cd1ed77b06780890bd17af4ea765fdaf..eee145d1ae4925b6136e0a9d15170a803238a47b 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu</STRONG> - curses extension for programming menus
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
 
 
 </PRE>
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       files <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       files <STRONG><curses.h></STRONG> and <STRONG><eti.h></STRONG>.
 
        In your library list, libmenu.a  should  be  before  libn-
        curses.a; that is, you want to say `-lmenu -lncurses', not
similarity index 90%
rename from Ada95/html/menu_attribs.3x.html
rename to Ada95/html/man/menu_attribs.3x.html
index 3bb11d64ae4aa89245de7ecec26c6505551ac685..a9110c00e7f478c7339a531bcadd57ddda28550c 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_attributes</STRONG> - color and attribute control for menus
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_fore(MENU *menu, chtype attr);
        chtype menu_fore(const MENU *menu);
        int set_menu_back(MENU *menu, chtype attr);
@@ -61,8 +61,8 @@
        <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages  whose  names  begin  "menu_"  for
        detailed descriptions of the entry points.
 
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 83%
rename from Ada95/html/menu_cursor.3x.html
rename to Ada95/html/man/menu_cursor.3x.html
index e65f687ecd6c155e48a73a40e48cef7ca3d7d3c3..71bd279e82236b866e3afec49e7bdeee6c50a08e 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_cursor</STRONG> - position a menu's cursor
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int pos_menu_cursor(const MENU *menu);
 
 
@@ -42,8 +42,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 50%
rename from Ada95/html/menu_driver.3x.html
rename to Ada95/html/man/menu_driver.3x.html
index 53babc7794bed2697222d04012976ba62cc6afda..40c11f8ab57234010a3585efd072073ef9b93e2d 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_driver</STRONG> - command-processing loop of the menu system
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int menu_driver(MENU *menu, int c);
 
 
 <H2>DESCRIPTION</H2><PRE>
        Once a menu has been posted (displayed), you should funnel
        input events to it through <STRONG>menu_driver</STRONG>.  This routine  has
-       two  major input cases; either the input is a menu naviga-
-       tion request or it's a  printable  ASCII  character.   The
-       menu driver requests are as follows:
+       three  major input cases; either the input is a menu navi-
+       gation request, it's a printable ASCII character or it  is
+       the  KEY_MOUSE special key associated with an mouse event.
+       The menu driver requests are as follows:
 
        REQ_LEFT_ITEM
             Move left to an item.
 
        REQ_TOGGLE_ITEM
             Select/deselect an item.
-
             Clear the menu pattern buffer.
 
        REQ_BACK_PATTERN
-            Delete   the  previous  character  from  the  pattern
+            Delete  the  previous  character  from  the   pattern
             buffer.
 
        REQ_NEXT_MATCH
        such match, <STRONG>menu_driver</STRONG> returns <STRONG>E_NO_MATCH</STRONG> and deletes the
        appended character from the buffer.
 
-       If  the  second  argument  is one of the above pre-defined
+       If the second argument is one  of  the  above  pre-defined
        requests, the corresponding action is performed.
 
-       If the second argument is neither printable ASCII nor  one
-       of  the above pre-defined menu requests, the drive assumes
-       it  is  an  application-specific   command   and   returns
-       <STRONG>E_UNKNOWN_COMMAND</STRONG>.  Application-defined commands should be
-       defined relative to  <STRONG>MAX_COMMAND</STRONG>,  the  maximum  value  of
-       these pre-defined requests.
-
+       If  the  second argument is the KEY_MOUSE special key, the
+       associated mouse event is translated into one of the above
+       pre-defined  requests.   Currently only clicks in the user
+       window (e.g. inside the menu display area or  the  decora-
+       tion  window)  are handled. If you click above the display
+       region of the menu, a REQ_SCR_ULINE is generated,  if  you
+       doubleclick  a  REQ_SCR_UPAGE  is  generated  and  if  you
+       tripleclick a REQ_FIRST_ITEM is generated.  If  you  click
+       below  the  display region of the menu, a REQ_SCR_DLINE is
+       generated, if you doubleclick a REQ_SCR_DPAGE is generated
+       and  if  you  tripleclick a REQ_LAST_ITEM is generated. If
+       you click at an item inside the display area of the  menu,
+       the menu cursor is positioned to that item. If you double-
+       click at  an  item  a  REQ_TOGGLE_ITEM  is  generated  and
+       <STRONG>E_UNKNOWN_COMMAND</STRONG>  is  returned.  This  return value makes
+       sense, because a double click usually means that an  item-
+       specific  action should be returned. It's exactly the pur-
+       pose of this return value to signal  that  an  application
+       specific command should be executed. If a translation into
+       a request was done, <STRONG>menu_driver</STRONG> returns the result of this
+       request.   If  you  clicked outside the user window or the
+       mouse event couldn't be translated into a menu request  an
+       <STRONG>E_REQUEST_DENIED</STRONG> is returned.
+
+       If  the second argument is neither printable ASCII nor one
+       of the above pre-defined menu requests or  KEY_MOUSE,  the
+       drive  assumes  it  is an application-specific command and
+       returns <STRONG>E_UNKNOWN_COMMAND</STRONG>.   Application-defined  commands
+       should  be  defined  relative  to <STRONG>MAX_COMMAND</STRONG>, the maximum
+       value of these pre-defined requests.
 
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
        <STRONG>menu_driver</STRONG> return one of the following error codes:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
             System error occurred (see <STRONG>errno</STRONG>).
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
+            Routine detected an incorrect or  out-of-range  argu-
             ment.
 
        <STRONG>E_BAD_STATE</STRONG>
 
        <STRONG>E_NO_MATCH</STRONG>
             Character failed to match.
+
+       <STRONG>E_REQUEST_DENIED</STRONG>
             The menu driver could not process the request.
 
 
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       files <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       files <STRONG><curses.h></STRONG>.
 
 
 </PRE>
 <H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
+       These  routines  emulate  the System V menu library.  They
+       were not supported on Version 7 or BSD versions. The  sup-
+       port for mouse events is ncurses specific.
 
 
 </PRE>
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 </PRE>
 </BODY>
 </HTML>
similarity index 87%
rename from Ada95/html/menu_format.3x.html
rename to Ada95/html/man/menu_format.3x.html
index e2ab655e14500a150a8ffec33ef68210affa5503..9c6e7a142001483f24ace7018c317fbf33224781 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_format</STRONG> - set and get menu sizes
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_format(MENU *menu, int rows, int cols);
        int menu_format(const MENU *menu, int *rows, int *cols);
 
@@ -55,8 +55,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 95%
rename from Ada95/html/menu_hook.3x.html
rename to Ada95/html/man/menu_hook.3x.html
index 1f6111145ebb6eb0201bb221a908a591cb336cae..edaeb7a3768e4622051a20609651dc893f83dc6a 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_hook</STRONG> - set hooks for automatic invocation by applica-
        tions
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_item_init(MENU *menu, void (*func)(MENU *));
        void (*)(MENU *) item_init(const MENU *menu);
        int set_item_term(MENU *menu, void (*func)(MENU *));
similarity index 88%
rename from Ada95/html/menu_items.3x.html
rename to Ada95/html/man/menu_items.3x.html
index 463ee587344395df71d70412b073fbcfa9dc943f..fb016b8c3d776e9a9cb569deb7a04dc97cf8c1a4 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_items</STRONG>  - make and break connections between items and
        menus
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_items(MENU *menu, ITEM **items);
        ITEM **menu_items(const MENU *menu);
        int item_count(const MENU *menu);
@@ -59,8 +59,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 87%
rename from Ada95/html/menu_mark.3x.html
rename to Ada95/html/man/menu_mark.3x.html
index d2e386f966965c85b7b2af700984bb117ceb3161..959dc1b5a39f6cf023c257b4ef2e5d4122407c2e 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_mark</STRONG> - get and set the menu mark string
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_mark(MENU *menu, const char *mark);
        const char *menu_mark(const MENU *menu);
 
@@ -53,8 +53,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 84%
rename from Ada95/html/menu_new.3x.html
rename to Ada95/html/man/menu_new.3x.html
index d125a4765966c75faa3922ec522a348c27ec5578..b96d85a20ffc8e78e5dfa0b6595b34edab47218b 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_new</STRONG> - create and destroy menus
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        MENU *new_menu(ITEM **items);
        int free_menu(MENU *menu);
 
@@ -47,8 +47,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 89%
rename from Ada95/html/menu_opts.3x.html
rename to Ada95/html/man/menu_opts.3x.html
index 2e4362ce963574ec0ea9e5657125b4eb89bb7ef0..8de4b8a204d28b851e8d06794fd52a42598ea2e6 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_opts</STRONG> - set and get menu options
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_opts(MENU *menu, OPTIONS opts);
        int menu_opts_on(MENU *menu, OPTIONS opts);
        int menu_opts_off(MENU *menu, OPTIONS opts);
@@ -72,8 +72,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 87%
rename from Ada95/html/menu_pattern.3x.html
rename to Ada95/html/man/menu_pattern.3x.html
index dc4d217e56a8ab4c9a2d33e73dab4663704a68f0..6effa22ef86a82052660457b6cb50328e0c7e228 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_pattern</STRONG> - get and set a menu's pattern buffer
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_pattern(MENU *menu, const char *pattern);
        char *menu_pattern(const MENU *menu);
 
@@ -53,8 +53,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 93%
rename from Ada95/html/menu_post.3x.html
rename to Ada95/html/man/menu_post.3x.html
index 65c79f9fa001db10a0b05e1875fc3b9d57e39671..3ac4793827b46271e64108f23e275c44d1b00f92 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_post</STRONG>  -  write or erase menus from associated subwin-
        dows
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int post_menu(MENU *menu);
        int unpost_menu(MENU *menu);
 
similarity index 83%
rename from Ada95/html/menu_requestname.3x.html
rename to Ada95/html/man/menu_requestname.3x.html
index 25b3f5454b8891f34d56f73b555a0b766afb8112..dd8f26e5546581d5e4e0a34c7339c52dc081f8b1 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_requestname</STRONG> - handle printable menu request names
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        const char *menu_request_name(int request);
        int menu_request_by_name(const char *name);
 
@@ -34,8 +34,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 89%
rename from Ada95/html/menu_spacing.3x.html
rename to Ada95/html/man/menu_spacing.3x.html
index 71b88170a064c5ed588082abd09402e7a23e63e8..8ed19c220a1ecc5700572c05dc136b9c00aa14d2 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_spacing</STRONG> - Control spacing between menu items.
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_spacing(MENU *menu,
                             int spc_description
                             int spc_rows,
@@ -52,8 +52,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 83%
rename from Ada95/html/menu_userptr.3x.html
rename to Ada95/html/man/menu_userptr.3x.html
index 68066579acd0f664068ade412f354c7559a40b49..606907b2e0f55dadf1b1f8882e8f9c7393ede88a 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_userptr</STRONG> - associate application data with a menu item
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_userptr(MENU *menu, void *userptr);
        void *menu_userptr(const MENU *menu);
 
@@ -37,8 +37,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 89%
rename from Ada95/html/menu_win.3x.html
rename to Ada95/html/man/menu_win.3x.html
index 08b0517c75165a143162a5306eca495f347f90ce..50b879a653bbc613a3e07a7ecc3ba711df986dc1 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>menu_win</STRONG>  - make and break menu window and subwindow asso-
        ciations
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_menu_win(MENU *menu, WINDOW *win);
        WINDOW *menu_win(const MENU *menu);
        int set_menu_sub(MENU *menu, WINDOW *sub);
@@ -61,8 +61,8 @@
 <H2>SEE ALSO</H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
 
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 87%
rename from Ada95/html/mitem_current.3x.html
rename to Ada95/html/man/mitem_current.3x.html
index d5cacd70e53b2a3976328fa45d8672b1659bc399..344ada631e504726b56b5e7852df1b64e042a68f 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>mitem_current</STRONG> - set and get current_menu_item
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_current_item(MENU *menu, const ITEM *item);
        ITEM *current_item(const MENU *menu);
        int set_top_row(MENU *menu, int row);
@@ -37,7 +37,7 @@
        <STRONG>current_item</STRONG> returns <STRONG>NULL</STRONG> on error.
 
        <STRONG>top_row</STRONG> and <STRONG>item_index</STRONG>  return  <STRONG>ERR</STRONG>  (the  general  <STRONG>curses</STRONG>
-       <STRONG>error</STRONG> <STRONG>value)</STRONG> <STRONG>on</STRONG> <STRONG>error.</STRONG>
+       error value) on error.
 
        <STRONG>set_current_item</STRONG> and <STRONG>set_top_row</STRONG> return one of the follow-
        ing:
@@ -61,8 +61,8 @@
 
 </PRE>
 <H2>SEE ALSO</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 78%
rename from Ada95/html/mitem_name.3x.html
rename to Ada95/html/man/mitem_name.3x.html
index 7af9608d5a5caf85bd6da235287ba022d9716493..6e3ebef36f2f43cceb408e500bc6db72e624a812 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>mitem_name</STRONG> - get menu item name and description fields
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        const char *item_name(const ITEM *item);
        const char *item_description(const ITEM *item);
 
@@ -31,8 +31,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 87%
rename from Ada95/html/mitem_new.3x.html
rename to Ada95/html/man/mitem_new.3x.html
index b2f5b020b1472a575176139653a39af51c1a0b4e..0c8e2a14fcaf0b08f2f514b278ef78432f983b49 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>mitem_new</STRONG> - create and destroy menu items
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        ITEM *new_item(const char *name, const char *description);
        int free_item(ITEM *item);
 
@@ -52,8 +52,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 86%
rename from Ada95/html/mitem_opts.3x.html
rename to Ada95/html/man/mitem_opts.3x.html
index 02fd97e01545ac3abfb4adcb89fcfa0857f4a702..a4224ff5ddb7c2fc8dd4a300b19334dc54e2cdd5 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>mitem_opts</STRONG> - set and get menu item options
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_item_opts(ITEM *item, OPTIONS opts);
        int item_opts_on(ITEM *item, OPTIONS opts);
        int item_opts_off(ITEM *item, OPTIONS opts);
@@ -51,8 +51,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 83%
rename from Ada95/html/mitem_userptr.3x.html
rename to Ada95/html/man/mitem_userptr.3x.html
index d39d1ff452f04de0e7b0577dc6c87a3c843d03a2..4d1616b67346b53fae942409bd0e79b2c608343e 100644 (file)
@@ -1,5 +1,5 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>mitem_userptr</STRONG>  -  associate  application  data with a menu
        item
@@ -7,7 +7,7 @@
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_item_userptr(ITEM *item, void *userptr);
        void *item_userptr(const ITEM *item);
 
@@ -37,8 +37,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 85%
rename from Ada95/html/mitem_value.3x.html
rename to Ada95/html/man/mitem_value.3x.html
index 451361dbce784885ec1a65fc5723a926cf39a7f6..8d13b911095e73363aaf3b8398744602f14dad3f 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>mitem_value</STRONG> - set and get menu item values
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        int set_item_value(ITEM *item, bool value);
        bool item_value(const ITEM *item);
 
@@ -43,8 +43,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
similarity index 76%
rename from Ada95/html/mitem_visible.3x.html
rename to Ada95/html/man/mitem_visible.3x.html
index cf4d67cca5bf2f8403fc297c9e466c6c29a99a28..86c4090aecfe1409ff305d671dc8f69aeb96cad8 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>mitem_visible</STRONG> - check visibility of a menu item
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
        bool item_visible(const ITEM *item);
 
 
@@ -25,8 +25,8 @@
 
 </PRE>
 <H2>NOTES</H2><PRE>
-       The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
-       file <STRONG>&lt;curses.h&gt;</STRONG>.
+       The header file <STRONG><menu.h></STRONG> automatically includes the header
+       file <STRONG><curses.h></STRONG>.
 
 
 </PRE>
diff --git a/Ada95/html/man/ncurses.3x.html b/Ada95/html/man/ncurses.3x.html
new file mode 100644 (file)
index 0000000..164ae90
--- /dev/null
@@ -0,0 +1,701 @@
+<HTML>
+<BODY>
+<PRE>
+       <STRONG>ncurses</STRONG> - CRT screen handling and optimization package
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+       The  <STRONG>ncurses</STRONG>  library  routines  give the user a terminal-
+       independent method  of  updating  character  screens  with
+       reasonable  optimization.   This  implementation  is ``new
+       curses'' (ncurses) and is  the  approved  replacement  for
+       4.4BSD classic curses, which has been discontinued.
+
+       The  <STRONG>ncurses</STRONG>  routines  emulate  the <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> library of
+       System V Release 4 UNIX, and the XPG4 curses standard (XSI
+       curses)  but the <STRONG>ncurses</STRONG> library is freely redistributable
+       in source form.  Differences  from  the  SVr4  curses  are
+       summarized  under  the  EXTENSIONS and BUGS sections below
+       and  described  in  detail  in  the  EXTENSIONS  and  BUGS
+       sections of individual man pages.
+
+       A  program  using  these  routines must be linked with the
+       <STRONG>-lncurses</STRONG> option, or (if it has been generated)  with  the
+       debugging  library  <STRONG>-lncurses_g</STRONG>.   (Your system integrator
+       may also have installed these libraries  under  the  names
+       <STRONG>-lcurses</STRONG> and <STRONG>-lcurses_g</STRONG>.)  The ncurses_g library generates
+       trace logs (in  a  file  called  'trace'  in  the  current
+       directory) that describe curses actions.
+
+       The  <STRONG>ncurses</STRONG>  package supports: overall screen, window and
+       pad manipulation; output  to  windows  and  pads;  reading
+       terminal input; control over terminal and <STRONG>curses</STRONG> input and
+       output  options;   environment   query   routines;   color
+       manipulation;   use   of   soft   label   keys;   terminfo
+       capabilities;   and   access   to   low-level    terminal-
+       manipulation routines.
+
+       To initialize the routines, the routine <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>
+       must be called before any of the other routines that  deal
+       with  windows  and  screens  are used.  The routine <STRONG>endwin</STRONG>
+       must be called before exiting.  To get character-at-a-time
+       input  without  echoing (most interactive, screen oriented
+       programs want this),  the  following  sequence  should  be
+       used:
+
+             <STRONG>initscr();</STRONG> <STRONG>cbreak();</STRONG> <STRONG>noecho();</STRONG>
+
+       Most programs would additionally use the sequence:
+
+             <STRONG>nonl();</STRONG>
+             <STRONG>intrflush(stdscr,</STRONG> <STRONG>FALSE);</STRONG>
+             <STRONG>keypad(stdscr,</STRONG> <STRONG>TRUE);</STRONG>
+
+       defined,  must  be  output.  This can be done by executing
+       the <STRONG>tput</STRONG> <STRONG>init</STRONG> command after the shell environment variable
+       <STRONG>TERM</STRONG>  has  been  exported.  <STRONG>tset(1)</STRONG> is usually responsible
+       for doing this.  [See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for further details.]
+
+       The  <STRONG>ncurses</STRONG>  library   permits   manipulation   of   data
+       structures,  called  <EM>windows</EM>,  which  can be thought of as
+       two-dimensional arrays of characters representing  all  or
+       part  of  a  CRT  screen.  A default window called <STRONG>stdscr</STRONG>,
+       which is the size of the  terminal  screen,  is  supplied.
+       Others may be created with <STRONG>newwin</STRONG>.
+
+       Note  that  <STRONG>curses</STRONG>  does  not  handle overlapping windows,
+       that's done by the <STRONG><A HREF="panel.3x.html">panel(3X)</A></STRONG> library. This means that  you
+       can  either  use  <STRONG>stdscr</STRONG>  or  divide the screen into tiled
+       windows and not using <STRONG>stdscr</STRONG> at all. Mixing the  two  will
+       result in unpredictable, and undesired, effects.
+
+       Windows are referred to by variables declared as <STRONG>WINDOW</STRONG> <STRONG>*</STRONG>.
+       These  data  structures  are  manipulated  with   routines
+       described  here and elsewhere in the <STRONG>ncurses</STRONG> manual pages.
+       Among which the most basic routines are  <STRONG>move</STRONG>  and  <STRONG>addch</STRONG>.
+       More  general versions of these routines are included with
+       names beginning with <STRONG>w</STRONG>, allowing the  user  to  specify  a
+       window.  The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.)
+
+       After using routines to manipulate a  window,  <STRONG>refresh</STRONG>  is
+       called,  telling <STRONG>curses</STRONG> to make the user's CRT screen look
+       like <STRONG>stdscr</STRONG>.  The characters in a window are  actually  of
+       type  <STRONG>chtype</STRONG>, (character and attribute data) so that other
+       information about the character may also  be  stored  with
+       each character.
+
+       Special  windows  called  <EM>pads</EM>  may  also  be manipulated.
+       These are windows which are not constrained to the size of
+       the  screen  and  whose  contents  need  not be completely
+       displayed.  See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG> for more information.
+
+       In addition to drawing characters  on  the  screen,  video
+       attributes  and  colors  may  be  supported,  causing  the
+       characters to show up in  such  modes  as  underlined,  in
+       reverse  video, or in color on terminals that support such
+       display enhancements.   Line  drawing  characters  may  be
+       specified  to be output.  On input, <STRONG>curses</STRONG> is also able to
+       translate arrow and function  keys  that  transmit  escape
+       sequences  into single values.  The video attributes, line
+       drawing characters, and input values use names, defined in
+       <STRONG><curses.h></STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, and <STRONG>KEY_LEFT</STRONG>.
+
+       If the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> are set, or
+       if the program is executing in a window environment,  line
+       and  column  information  in the environment will override
+       of a screen is changeable (see <STRONG>ENVIRONMENT</STRONG>).
+
+       If the  environment  variable  <STRONG>TERMINFO</STRONG>  is  defined,  any
+       program   using   <STRONG>curses</STRONG>   checks  for  a  local  terminal
+       definition before checking in  the  standard  place.   For
+       example,  if  <STRONG>TERM</STRONG>  is  set  to <STRONG>att4424</STRONG>, then the compiled
+       terminal definition is found in
+
+             <STRONG>@DATADIR@/terminfo/a/att4424</STRONG>.
+
+       (The <STRONG>a</STRONG> is copied from the first letter of <STRONG>att4424</STRONG> to avoid
+       creation  of  huge  directories.)  However, if <STRONG>TERMINFO</STRONG> is
+       set to <STRONG>$HOME/myterms</STRONG>, <STRONG>curses</STRONG> first checks
+
+             <STRONG>$HOME/myterms/a/att4424</STRONG>,
+
+       and if that fails, it then checks
+
+             <STRONG>@DATADIR@/terminfo/a/att4424</STRONG>.
+
+       This is useful for developing experimental definitions  or
+       when   write   permission  in  <STRONG>@DATADIR@/terminfo</STRONG>  is  not
+       available.
+
+       The integer  variables  <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  are  defined  in
+       <STRONG><curses.h></STRONG>  and will be filled in by <STRONG>initscr</STRONG> with the size
+       of the screen.  The constants  <STRONG>TRUE</STRONG>  and  <STRONG>FALSE</STRONG>  have  the
+       values <STRONG>1</STRONG> and <STRONG>0</STRONG>, respectively.
+
+       The  <STRONG>curses</STRONG>  routines  also  define  the <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> variable
+       <STRONG>curscr</STRONG> which is used for certain low-level operations like
+       clearing  and  redrawing a screen containing garbage.  The
+       <STRONG>curscr</STRONG> can be used in only a few routines.
+
+
+   <STRONG>Routine</STRONG> <STRONG>and</STRONG> <STRONG>Argument</STRONG> <STRONG>Names</STRONG>
+       Many <STRONG>curses</STRONG> routines  have  two  or  more  versions.   The
+       routines  prefixed  with <STRONG>w</STRONG> require a window argument.  The
+       routines prefixed with <STRONG>p</STRONG> require a  pad  argument.   Those
+       without a prefix generally use <STRONG>stdscr</STRONG>.
+
+       The routines prefixed with <STRONG>mv</STRONG> require a <EM>y</EM> and <EM>x</EM> coordinate
+       to move to before performing the appropriate action.   The
+       <STRONG>mv</STRONG>  routines  imply  a call to <STRONG>move</STRONG> before the call to the
+       other routine.  The coordinate <EM>y</EM> always refers to the  row
+       (of  the  window), and <EM>x</EM> always refers to the column.  The
+       upper left-hand corner is always (0,0), not (1,1).
+
+       The routines prefixed with <STRONG>mvw</STRONG> take both a window argument
+       and  <EM>x</EM>  and  <EM>y</EM> coordinates.  The window argument is always
+       specified before the coordinates.
+
+       <STRONG>WINDOW</STRONG>.
+
+       Option setting routines require a Boolean flag <EM>bf</EM> with the
+       value  <STRONG>TRUE</STRONG>  or  <STRONG>FALSE</STRONG>;  <EM>bf</EM>  is  always of type <STRONG>bool</STRONG>.  The
+       variables <EM>ch</EM> and <EM>attrs</EM> below are always  of  type  <STRONG>chtype</STRONG>.
+       The  types <STRONG>WINDOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined in
+       <STRONG><curses.h></STRONG>.  The type <STRONG>TERMINAL</STRONG>  is  defined  in  <STRONG><term.h></STRONG>.
+       All other arguments are integers.
+
+
+   <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
+       The following table lists each <STRONG>curses</STRONG> routine and the name
+       of the manual page on which  it  is  described.   Routines
+       flagged  with  `*'  are ncurses-specific, not described by
+       XPG4 or present in SVr4.
+
+       center tab(/); l l l l .  <STRONG>curses</STRONG> Routine Name/Manual  Page
+       Name  =  addch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>  addchnstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
+       addchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>         addnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
+       addstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>              attr_get/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       attr_off/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>               attr_on/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       attr_set/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>               attroff/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       attron/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>                 attrset/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       baudrate/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>             beep/<STRONG><A HREF="curs_beep.3x.html">curs_beep(3X)</A></STRONG>
+       bkgd/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>                   bkgdset/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>
+       border/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>                 box/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
+       can_change_color/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>     cbreak/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
+       chgat/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>                   clear/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>
+       clearok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>           clrtobot/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>
+       clrtoeol/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>       color_content/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>
+       color_set/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>           copywin/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG>
+       curs_set/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>     def_prog_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
+       def_shell_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>  define_key/<STRONG><A HREF="define_key.3x.html">define_key(3X)</A></STRONG>*
+       del_curterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>   delay_output/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
+       delch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>            deleteln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>
+       delscreen/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>          delwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
+       derwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>           doupdate/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
+       dupwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>                echo/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
+       echochar/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>            endwin/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>
+       erase/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>          erasechar/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
+       filter/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>                   flash/<STRONG><A HREF="curs_beep.3x.html">curs_beep(3X)</A></STRONG>
+       flushinp/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>             getbegyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG>
+       getbkgd/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>                 getch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>
+       getmaxyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG>           getmouse/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*
+       getnstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>            getparyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG>
+       getstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>              getsyx/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
+       getwin/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>                  getyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG>
+       halfdelay/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>        has_colors/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>
+       has_ic/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>        has_il/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
+       has_key/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>*              hline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
+       idcok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>              idlok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
+       immedok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>                inch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>
+       initscr/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>             innstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
+       insch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG>            insdelln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>
+       insertln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>         insnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
+       insstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>                instr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
+       intrflush/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>    is_linetouched/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>
+       is_wintouched/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>     isendwin/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>
+       keyname/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>                     keyok/<STRONG><A HREF="keyok.3x.html">keyok(3X)</A></STRONG>*
+       keypad/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>         killchar/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
+       leaveok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>       longname/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
+       mcprint/<STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG>*               meta/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
+       mouseinterval/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*    mousemask/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*
+       move/<STRONG><A HREF="curs_move.3x.html">curs_move(3X)</A></STRONG>                  mvaddch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>
+       mvaddchnstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG> mvaddchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
+       mvaddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>         mvaddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
+       mvchgat/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>              mvcur/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       mvdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>            mvderwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
+       mvgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>           mvgetnstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>
+       mvgetstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>           mvhline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
+       mvinch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>           mvinchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>
+       mvinchstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>         mvinnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
+       mvinsch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG>           mvinsnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
+       mvinsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>            mvinstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
+       mvprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>            mvscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>
+       mvwaddch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>     mvwaddchnstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
+       mvwaddchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>   mvwaddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
+       mvwaddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>           mvwchgat/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       mvwdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>            mvwgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>
+       mvwgetnstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>       mvwgetstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>
+       mvwhline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>             mvwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
+       mvwinch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>         mvwinchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>
+       mvwinchstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>       mvwinnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
+       mvwinsch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG>         mvwinsnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
+       mvwinsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>          mvwinstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
+       mvwprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>          mvwscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>
+       mvwvline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>             napms/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
+       newpad/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>               newterm/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>
+       newwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>                 nl/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
+       nocbreak/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>           nodelay/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
+       noecho/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>               nonl/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
+       noqiflush/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>            noraw/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
+       notimeout/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>         overlay/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG>
+       overwrite/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG>     pair_content/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>
+       pechochar/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>           pnoutrefresh/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>
+       prefresh/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>               printw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>
+       putp/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>                putwin/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
+       qiflush/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>                raw/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
+       redrawwin/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>        refresh/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
+       reset_prog_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
+       reset_shell_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>   resetty/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
+       resizeterm/<STRONG><A HREF="resizeterm.3x.html">resizeterm(3X)</A></STRONG>*   restartterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       ripoffline/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>         savetty/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
+       scanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>            scr_dump/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>
+       scroll/<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG>           scrollok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
+       set_curterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>    set_term/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>
+       setscrreg/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>          setsyx/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
+       setterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>      setupterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       slk_attr/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>*           slk_attr_off/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
+       slk_attr_on/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>         slk_attr_set/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
+       slk_attroff/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>           slk_attron/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
+       slk_attrset/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>            slk_clear/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
+       slk_color/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>               slk_init/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
+       slk_label/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>        slk_noutrefresh/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
+       slk_refresh/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>          slk_restore/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
+       slk_set/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>                slk_touch/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
+       standend/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>              standout/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       start_color/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>             subpad/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>
+       subwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>              syncok/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
+       termattrs/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>   termname/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
+       tgetent/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>         tgetflag/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>
+       tgetnum/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>          tgetstr/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>
+       tgoto/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>         tigetflag/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       tigetnum/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>      tigetstr/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       timeout/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>           touchline/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>
+       touchwin/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>            tparm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       tputs/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>             tputs/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       typeahead/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>             unctrl/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
+       ungetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>          ungetmouse/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*
+       untouchwin/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG> use_default_colors/<STRONG><A HREF="dft_fgbg.3x.html">dft_fgbg(3X)</A></STRONG>*
+       use_env/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>            vidattr/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
+       vidputs/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>            vline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
+       vw_printw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>          vw_scanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>
+       vwprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>            vwscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>
+       waddch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>         waddchnstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
+       waddchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>       waddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
+       waddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>            wattr_get/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       wattr_off/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>             wattr_on/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       wattr_set/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>             wattroff/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       wattron/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>               wattrset/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       wbkgd/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>                 wbkgdset/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>
+       wborder/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>               wchgat/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       wclear/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>             wclrtobot/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>
+       wclrtoeol/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>          wcolor_set/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       wcursyncup/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>           wdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>
+       wdeleteln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>       wechochar/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>
+       wenclose/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*             werase/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>
+       wgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>             wgetnstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>
+       wgetstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>             whline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
+       winch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>             winchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>
+       winchstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>           winnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
+       winsch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG>          winsdelln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>
+       winsertln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>       winsnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
+       winsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>              winstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
+       wmouse_trafo/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>            wmove/<STRONG><A HREF="curs_move.3x.html">curs_move(3X)</A></STRONG>
+       wnoutrefresh/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>      wprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>
+       wscrl/<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG>          wsetscrreg/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
+       wstandend/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>            wstandout/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
+       wsyncdown/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>          wsyncup/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
+       wtimeout/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>           wtouchln/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>
+       wvline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+       Routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure
+       and  an  integer  value  other  than  <STRONG>ERR</STRONG>  upon successful
+       completion,  unless  otherwise  noted   in   the   routine
+       descriptions.
+
+       All  macros  return  the  value  of  the <STRONG>w</STRONG> version, except
+       <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>,  <STRONG>getyx</STRONG>,  <STRONG>getbegyx</STRONG>,  <STRONG>getmaxyx</STRONG>.   The
+       return  values  of <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>,
+       and <STRONG>getmaxyx</STRONG> are undefined (<EM>i</EM>.<EM>e</EM>., these should not be used
+       as the right-hand side of assignment statements).
+
+       Routines that return pointers return <STRONG>NULL</STRONG> on error.
+
+
+</PRE>
+<H2>ENVIRONMENT</H2><PRE>
+       The   following   environment   symbols   are  useful  for
+       customizing the runtime behavior of the  <STRONG>ncurses</STRONG>  library.
+       The  most  important  ones  have been already discussed in
+       detail.
+
+       BAUDRATE
+            The debugging library checks this environment  symbol
+            when the application has redirected output to a file.
+            The symbol's numeric value is used for the  baudrate.
+            If  no value is found <STRONG>ncurses</STRONG> uses 9600.  This allows
+            testers to construct repeatable test-cases that  take
+            into account costs that depend on baudrate.
+
+       CC   When set, change occurrences of the command_character
+            (i.e., the <STRONG>cmdch</STRONG> capability) of the  loaded  terminfo
+            entries  to  the  value  of  this  symbol.   Very few
+            terminfo entries provide this feature.
+
+       COLUMNS
+            Specify  the  width  of  the  screen  in  characters.
+            Applications   running  in  a  windowing  environment
+            usually are able to obtain the width of the window in
+            which  they  are  executing.  If neither the $COLUMNS
+            value nor the terminal's screen  size  is  available,
+            <STRONG>ncurses</STRONG>  uses  the size which may be specified in the
+            terminfo database (i.e., the <STRONG>cols</STRONG> capability).
+
+            It is important that your application use  a  correct
+            size  for  the  screen.   However, this is not always
+            possible because your application may be running on a
+            host  which  does  not honor NAWS (Negotiations About
+
+            Either  COLUMNS  or  LINES  symbols  may be specified
+            independently.  This is mainly useful  to  circumvent
+            legacy  misfeatures  of  terminal descriptions, e.g.,
+            xterm which commonly specifies a 65 line screen.  For
+            best  results, <STRONG>lines</STRONG> and <STRONG>cols</STRONG> should not be specified
+            in a terminal description for terminals which are run
+            as emulations.
+
+            Use the <STRONG>use_env</STRONG> function to disable this feature.
+
+       ESCDELAY
+            Specifies  the total time, in milliseconds, for which
+            ncurses will await  a  character  sequence,  e.g.,  a
+            function  key.  The default value, 1000 milliseconds,
+            is enough for most  uses.   However,  it  is  made  a
+            variable to accommodate unusual applications.
+
+            The most common instance where you may wish to change
+            this value is to work with slow hosts, e.g.,  running
+            on  a  network.   If  the host cannot read characters
+            rapidly enough, it will have the same  effect  as  if
+            the  terminal did not send characters rapidly enough.
+            The library will still see a timeout.
+
+            Note that  xterm  mouse  events  are  built  up  from
+            character sequences received from the xterm.  If your
+            application makes heavy use of multiple-clicking, you
+            may  wish  to lengthen this default value because the
+            timeout applies to the composed multi-click event  as
+            well as the individual clicks.
+
+       HOME Tells  <STRONG>ncurses</STRONG> where your home directory is.  That is
+            where  it  may  read  and  write  auxiliary  terminal
+            descriptions:
+
+            $HOME/.termcap
+            $HOME/.terminfo
+
+       LINES
+            Like  COLUMNS,  specify  the  height of the screen in
+            characters.  See COLUMNS for a detailed  description.
+
+       MOUSE_BUTTONS_123
+            This applies only to the OS/2 EMX port.  It specifies
+            the order of buttons on the mouse.   OS/2  numbers  a
+            3-button mouse inconsistently from other platforms:
+
+            1 = left
+            2 = right
+            3 = middle.
+
+            123  or  321.   If  it is not specified, <STRONG>ncurses</STRONG> uses
+            132.
+
+       NCURSES_NO_PADDING
+            Most of the terminal  descriptions  in  the  terminfo
+            database  are  written for real "hardware" terminals.
+            Many people use terminal emulators  which  run  in  a
+            windowing    environment    and    use   curses-based
+            applications.  Terminal emulators can  duplicate  all
+            of  the important aspects of a hardware terminal, but
+            they do not have the  same  limitations.   The  chief
+            limitation of a hardware terminal from the standpoint
+            of your application is the  management  of  dataflow,
+            i.e.,   timing.    Unless   a  hardware  terminal  is
+            interfaced into a terminal concentrator  (which  does
+            flow  control),  it (or your application) must manage
+            dataflow, preventing overruns.  The cheapest solution
+            (no  hardware cost) is for your program to do this by
+            pausing  after  operations  that  the  terminal  does
+            slowly, such as clearing the display.
+
+            As  a  result,  many terminal descriptions (including
+            the vt100) have delay times embedded.  You  may  wish
+            to  use  these  descriptions, but not want to pay the
+            performance penalty.
+
+            Set the NCURSES_NO_PADDING symbol to disable all  but
+            mandatory  padding.   Mandatory  padding is used as a
+            part of special control sequences such as <EM>flash</EM>.
+
+       NCURSES_NO_SETBUF
+            Normally  <STRONG>ncurses</STRONG>  enables  buffered  output   during
+            terminal  initialization.   This  is done (as in SVr4
+            curses)  for  performance   reasons.    For   testing
+            purposes,  both  of <STRONG>ncurses</STRONG> and certain applications,
+            this  feature  is   made   optional.    Setting   the
+            NCURSES_NO_SETBUF variable disables output buffering,
+            leaving the output  in  the  original  (usually  line
+            buffered) mode.
+
+       NCURSES_TRACE
+            During  initialization, the <STRONG>ncurses</STRONG> debugging library
+            checks the NCURSES_TRACE symbol.  If it  is  defined,
+            to a numeric value, <STRONG>ncurses</STRONG> calls the <STRONG>trace</STRONG> function,
+            using that value as the argument.
+
+            The argument values, which are defined  in  <STRONG>curses.h</STRONG>,
+            provide  several  types of information.  When running
+            with traces enabled, your application will write  the
+            file <STRONG>trace</STRONG> to the current directory.
+
+       TERM Denotes  your  terminal  type.  Each terminal type is
+            If the  <STRONG>ncurses</STRONG>  library  has  been  configured  with
+            <EM>termcap</EM>  support, <STRONG>ncurses</STRONG> will check for a terminal's
+            description in termcap form if it is not available in
+            the terminfo database.
+
+            The   TERMCAP   symbol  contains  either  a  terminal
+            description (with newlines stripped out), or  a  file
+            name  telling  where  the  information denoted by the
+            TERM symbol  exists.   In  either  case,  setting  it
+            directs  <STRONG>ncurses</STRONG>  to  ignore the usual place for this
+            information, e.g., /etc/termcap.
+
+       TERMINFO
+            Overrides the directory in which <STRONG>ncurses</STRONG> searches for
+            your terminal description.  This is the simplest, but
+            not the only way to change the list  of  directories.
+            The complete list of directories in order follows:
+
+            -  the last directory to which <STRONG>ncurses</STRONG> wrote, if any,
+               is searched first.
+
+            -  the directory specified by the TERMINFO symbol
+
+            -  $HOME/.terminfo
+
+            -  directories listed in the TERMINFO_DIRS symbol
+
+            -  one or more directories whose names are configured
+               and  compiled  into  the  ncurses  library,  e.g.,
+               @DATADIR@/terminfo
+
+       TERMINFO_DIRS
+            Specifies  a  list  of  directories  to  search   for
+            terminal  descriptions.   The  list  is  separated by
+            colons (i.e., ":").  All of the terminal descriptions
+            are  in  terminfo  form,  which  makes a subdirectory
+            named for the first  letter  of  the  terminal  names
+            therein.
+
+       TERMPATH
+            If  TERMCAP  does  not  hold a file name then <STRONG>ncurses</STRONG>
+            checks the  TERMPATH  symbol.   This  is  a  list  of
+            filenames  separated  by  colons (i.e., ":").  If the
+            TERMPATH symbol is not  set,  <STRONG>ncurses</STRONG>  looks  in  the
+            files   /etc/termcap,   /usr/share/misc/termcap   and
+            $HOME/.termcap, in that order.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+       @DATADIR@/tabset
+            directory containing  initialization  files  for  the
+            terminal   capability   database   @DATADIR@/terminfo
+            terminal capability database
+
+       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and 3X pages whose  names  begin  "curs_"  for
+       detailed routine descriptions.
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+       The  <STRONG>ncurses</STRONG>  library  can  be  compiled  with  an  option
+       (<STRONG>-DUSE_GETCAP</STRONG>)  that   falls   back   to   the   old-style
+       /etc/termcap file if the terminal setup code cannot find a
+       terminfo entry corresponding to <STRONG>TERM</STRONG>.  Use of this feature
+       is  not  recommended, as it essentially includes an entire
+       termcap  compiler  in  the  <STRONG>ncurses</STRONG>   startup   code,   at
+       significant cost in core and startup cycles.
+
+       The  <STRONG>ncurses</STRONG>  library  includes  facilities  for capturing
+       mouse events on certain terminals (including  xterm).  See
+       the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG> manual page for details.
+
+       The  <STRONG>ncurses</STRONG> library includes facilities for responding to
+       window resizing events, e.g., when running  in  an  xterm.
+       See  the  <STRONG><A HREF="resizeterm.3x.html">resizeterm(3X)</A></STRONG>  and <STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG> manual pages for
+       details.  In addition, the library may be configured  with
+       a SIGWINCH handler.
+
+       The  <STRONG>ncurses</STRONG> library extends the fixed set of function key
+       capabilities of  terminals  by  allowing  the  application
+       designer  to  define  additional key sequences at runtime.
+       See the <STRONG><A HREF="define_key.3x.html">define_key(3X)</A></STRONG>  and  <STRONG><A HREF="keyok.3x.html">keyok(3X)</A></STRONG>  manual  pages  for
+       details.
+
+       The  <STRONG>ncurses</STRONG>  library  can  exploit  the  capabilities  of
+       terminals which implement the ISO-6429 SGR 39 and  SGR  49
+       controls, which allow an application to reset the terminal
+       to its original foreground and  background  colors.   From
+       the  users'  perspective,  the application is able to draw
+       colored  text  on  a  background  whose   color   is   set
+       independently,   providing   better   control  over  color
+       contrasts.  See the <STRONG><A HREF="use_default_colors.3x.html">use_default_colors(3X)</A></STRONG> manual page for
+       details.
+
+       The  <STRONG>ncurses</STRONG>  library  includes  a  function for directing
+       application output to a printer attached to  the  terminal
+       device.  See the <STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG> manual page for details.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+       The   <STRONG>ncurses</STRONG>   library   is  intended  to  be  BASE-level
+       conformant with the XSI Curses standard.  Certain portions
+       of  the EXTENDED XSI Curses functionality (including color
+       support) are supported.  The following EXTENDED XSI Curses
+       calls  in  support  of wide (multibyte) characters are not
+       yet   implemented:   <STRONG>add_wch</STRONG>,   <STRONG>add_wchnstr</STRONG>,   <STRONG>add_wchstr</STRONG>,
+       <STRONG>addnwstr</STRONG>, <STRONG>addwstr</STRONG>, <STRONG>bkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, <STRONG>border_set</STRONG>, <STRONG>box_set</STRONG>,
+       <STRONG>echo_wchar</STRONG>,  <STRONG>erasewchar</STRONG>,  <STRONG>get_wch</STRONG>,  <STRONG>get_wstr</STRONG>,   <STRONG>getbkgrnd</STRONG>,
+       <STRONG>getcchar</STRONG>,   <STRONG>getn_wstr</STRONG>,   <STRONG>getwchtype</STRONG>,   <STRONG>hline_set</STRONG>,  <STRONG>in_wch</STRONG>,
+       <STRONG>killwchar</STRONG>,   <STRONG>mvadd_wch</STRONG>,    <STRONG>mvadd_wchnstr</STRONG>,    <STRONG>mvadd_wchstr</STRONG>,
+       <STRONG>mvaddnwstr</STRONG>, <STRONG>mvaddwstr</STRONG>, <STRONG>mvget_wch</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>,
+       <STRONG>mvhline_set</STRONG>, <STRONG>mvin_wch</STRONG>, <STRONG>mvinnwstr</STRONG>, <STRONG>mvins_nwstr</STRONG>,  <STRONG>mvins_wch</STRONG>,
+       <STRONG>mvins_wstr</STRONG>, <STRONG>mvinwchnstr</STRONG>, <STRONG>mvinwchstr</STRONG>, <STRONG>mvinwchstr</STRONG>, <STRONG>mvinwstr</STRONG>,
+       <STRONG>mvvline_set</STRONG>,  <STRONG>mvwadd_wch</STRONG>,  <STRONG>mvwadd_wchnstr</STRONG>,  <STRONG>mvwadd_wchstr</STRONG>,
+       <STRONG>mvwaddnwstr</STRONG>,     <STRONG>mvwaddwstr</STRONG>,     <STRONG>mvwget_ch</STRONG>,    <STRONG>mvwget_wch</STRONG>,
+       <STRONG>mvwget_wstr</STRONG>,   <STRONG>mvwgetn_wstr</STRONG>,   <STRONG>mvwhline_set</STRONG>,    <STRONG>mvwin_wch</STRONG>,
+       <STRONG>mvwin_wchnstr</STRONG>,   <STRONG>mvwin_wchstr</STRONG>,  <STRONG>mvwinnwstr</STRONG>,  <STRONG>mvwins_nwstr</STRONG>,
+       <STRONG>mvwins_wch</STRONG>,   <STRONG>mvwins_wstr</STRONG>,    <STRONG>mvwinwchnstr</STRONG>.     <STRONG>mvwinwstr</STRONG>,
+       <STRONG>mvwvline_set</STRONG>, <STRONG>pecho_wchar</STRONG>, <STRONG>setcchar</STRONG>, <STRONG>slk_wset</STRONG>, <STRONG>term_attrs</STRONG>,
+       <STRONG>unget_wch</STRONG>,  <STRONG>vhline_set</STRONG>,  <STRONG>vid_attr</STRONG>,  <STRONG>vid_puts</STRONG>,   <STRONG>vline_set</STRONG>,
+       <STRONG>wadd_wch</STRONG>,  <STRONG>wadd_wchnstr</STRONG>, <STRONG>wadd_wchstr</STRONG>, <STRONG>waddnwstr</STRONG>, <STRONG>waddwstr</STRONG>,
+       <STRONG>waddwstr</STRONG>, <STRONG>wbkgrnd</STRONG>,  <STRONG>wbkgrndset</STRONG>,  <STRONG>wbkgrndset</STRONG>,  <STRONG>wborder_set</STRONG>,
+       <STRONG>wecho_wchar</STRONG>, <STRONG>wecho_wchar</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetbkgrnd</STRONG>,
+       <STRONG>wgetn_wstr</STRONG>, <STRONG>whline_set</STRONG>, <STRONG>win_wch</STRONG>, <STRONG>win_wchnstr</STRONG>,  <STRONG>win_wchstr</STRONG>,
+       <STRONG>winnwstr</STRONG>,  <STRONG>wins_nwstr</STRONG>,  <STRONG>wins_wch</STRONG>,  <STRONG>wins_wstr</STRONG>,  <STRONG>winwchnstr</STRONG>,
+       <STRONG>winwchstr</STRONG>, <STRONG>winwstr</STRONG>, <STRONG>wunctrl</STRONG>, <STRONG>wvline_set</STRONG>,
+
+       A small number of local differences (that  is,  individual
+       differences  between the XSI Curses and <STRONG>ncurses</STRONG> calls) are
+       described in  <STRONG>PORTABILITY</STRONG>  sections  of  the  library  man
+       pages.
+
+       The routine <STRONG>has_key</STRONG> is not part of XPG4, nor is it present
+       in SVr4.  See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> manual page for  details.
+
+       The  routine  <STRONG>slk_attr</STRONG>  is  not  part  of  XPG4, nor is it
+       present in SVr4.  See the  <STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>  manual  page  for
+       details.
+
+       The     routines    <STRONG>getmouse</STRONG>,    <STRONG>mousemask</STRONG>,    <STRONG>ungetmouse</STRONG>,
+       <STRONG>mouseinterval</STRONG>, and <STRONG>wenclose</STRONG> relating to mouse  interfacing
+       are  not  part of XPG4, nor are they present in SVr4.  See
+       the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG> manual page for details.
+
+       The routine <STRONG>mcprint</STRONG> was not present in any previous curses
+       implementation.   See  the  <STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG> manual page for
+       details.
+
+       The routine <STRONG>wresize</STRONG> is not part of XPG4, nor is it present
+       in SVr4.  See the <STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG> manual page for details.
+
+       In  historic  curses  versions,  delays  embedded  in  the
+       capabilities  <STRONG>cr</STRONG>,  <STRONG>ind</STRONG>,  <STRONG>cub1</STRONG>,  <STRONG>ff</STRONG>   and   <STRONG>tab</STRONG>   activated
+       corresponding  delay bits in the UNIX tty driver.  In this
+       implementation, all padding is done by  NUL  sends.   This
+       method   is  slightly  more  expensive,  but  narrows  the
+       interface to the UNIX kernel significantly  and  increases
+       the package's portability correspondingly.
+
+       In  the  XSI  standard  and  SVr4 manual pages, many entry
+       points have prototype arguments of the for <STRONG>char</STRONG> <STRONG>*const</STRONG> (or
+       (see  section  3.5.4.1), these declarations are either (a)
+       meaningless,  or  (b)  meaningless   and   illegal.    The
+       declaration  <STRONG>const</STRONG>  <STRONG>char</STRONG>  <STRONG>*x</STRONG>  is  a  modifiable pointer to
+       unmodifiable data, but <STRONG>char</STRONG> <STRONG>*const</STRONG> <STRONG>x</STRONG>' is  an  unmodifiable
+       pointer to modifiable data.  Given that C passes arguments
+       by value, <STRONG><type></STRONG> <STRONG>*const</STRONG>  as  a  formal  type  is  at  best
+       dubious.    Some   compilers   choke  on  the  prototypes.
+       Therefore, in this implementation, they have been  changed
+       to <STRONG>const</STRONG> <STRONG><type></STRONG> <STRONG>*</STRONG> globally.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+       The  header  file  <STRONG><curses.h></STRONG>  automatically  includes the
+       header files <STRONG><stdio.h></STRONG> and <STRONG><unctrl.h></STRONG>.
+
+       If standard output from a <STRONG>ncurses</STRONG> program  is  re-directed
+       to  something  which  is not a tty, screen updates will be
+       directed to standard  error.   This  was  an  undocumented
+       feature of AT&T System V Release 3 curses.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+       Zeyd  M.  Ben-Halim,  Eric  S.  Raymond, Thomas E. Dickey.
+       Based on pcurses by Pavel Curtis.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+</BODY>
+</HTML>
similarity index 96%
rename from Ada95/html/panel.3x.html
rename to Ada95/html/man/panel.3x.html
index 74d806c5cc8e035e567de34f179c29c653b243a5..29120fc82ffebfec1496c4009cad3c0e11200c02 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        panel - panel stack extension for curses
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;panel.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><panel.h></STRONG>
 
        <STRONG>cc</STRONG> <STRONG>[flags]</STRONG> <STRONG>sourcefiles</STRONG> <STRONG>-lpanel</STRONG> <STRONG>-lncurses</STRONG>
 
 
 </PRE>
 <H2>AUTHOR</H2><PRE>
-       Originally   written   by   Warren  Tucker  &lt;wht@n4hgf.mt-
-       park.ga.us&gt;, primarily to assist  in  porting  u386mon  to
+       Originally   written   by   Warren  Tucker  <wht@n4hgf.mt-
+       park.ga.us>, primarily to assist  in  porting  u386mon  to
        systems  without  a native panels library.  Repackaged for
        ncurses by Zeyd ben-Halim.
 
similarity index 94%
rename from Ada95/html/resizeterm.3x.html
rename to Ada95/html/man/resizeterm.3x.html
index 92c125dba4cd25a649d007c3cd96d74cddb392f4..7b6e7df0c63b4bb00fddf7ae9ff1eaa38b5a4925 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>resizeterm</STRONG> - change the curses terminal size
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>resizeterm(int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
 
similarity index 91%
rename from Ada95/html/wresize.3x.html
rename to Ada95/html/man/wresize.3x.html
index a5fd1ab88d3a05be019a50fd58c3aa8a9ce6251f..95354f26df4c95ce71ae68e38b61652f84c5ab17 100644 (file)
@@ -1,12 +1,12 @@
 <HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <PRE>
        <STRONG>wresize</STRONG> - resize a curses window
 
 
 </PRE>
 <H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
 
        <STRONG>int</STRONG> <STRONG>wresize(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
 
diff --git a/Ada95/html/ncurses.3x.html b/Ada95/html/ncurses.3x.html
deleted file mode 100644 (file)
index 4cae6bb..0000000
+++ /dev/null
@@ -1,490 +0,0 @@
-<HTML>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-       <STRONG>ncurses</STRONG> - CRT screen handling and optimization package
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The <STRONG>curses</STRONG> library routines give the user a terminal-inde-
-       pendent method of updating character screens with  reason-
-       able  optimization.  This implementation is ``new curses''
-       (ncurses) and is the approved replacement for 4.4BSD clas-
-       sic curses, which has been discontinued.
-
-       The  <STRONG>ncurses</STRONG>  routines  emulate  the <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> library of
-       System V Release 4 UNIX, and the XPG4 curses standard (XSI
-       curses)  but the <STRONG>ncurses</STRONG> library is freely redistributable
-       in source form.  Differences from the SVr4 curses are sum-
-       marized  under  the EXTENSIONS and BUGS sections below and
-       described in detail in the EXTENSIONS and BUGS sections of
-       individual man pages.
-
-       A  program  using  these  routines must be linked with the
-       <STRONG>-lncurses</STRONG> option, or (if it has been generated)  with  the
-       debugging  library  <STRONG>-lncurses_g</STRONG>.   (Your system integrator
-       may also have installed these libraries  under  the  names
-       <STRONG>-lcurses</STRONG> and <STRONG>-lcurses_g</STRONG>.)  The ncurses_g library generates
-       trace logs (in a file called 'trace' in the current direc-
-       tory) that describe curses actions.
-
-       The  <STRONG>ncurses</STRONG>  package supports: overall screen, window and
-       pad manipulation; output to windows and pads; reading ter-
-       minal  input;  control  over terminal and <STRONG>curses</STRONG> input and
-       output options; environment query routines; color  manipu-
-       lation; use of soft label keys; terminfo capabilities; and
-       access to low-level terminal-manipulation routines.
-
-       To initialize the routines, the routine <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>
-       must  be called before any of the other routines that deal
-       with windows and screens are  used.   The  routine  <STRONG>endwin</STRONG>
-       must be called before exiting.  To get character-at-a-time
-       input without echoing (most interactive,  screen  oriented
-       programs  want  this),  the  following  sequence should be
-       used:
-
-             <STRONG>initscr();</STRONG> <STRONG>cbreak();</STRONG> <STRONG>noecho();</STRONG>
-
-       Most programs would additionally use the sequence:
-
-             <STRONG>nonl();</STRONG>
-             <STRONG>intrflush(stdscr,</STRONG> <STRONG>FALSE);</STRONG>
-             <STRONG>keypad(stdscr,</STRONG> <STRONG>TRUE);</STRONG>
-
-       Before a <STRONG>curses</STRONG> program is run, the tab stops of the  ter-
-       the <STRONG>tput</STRONG> <STRONG>init</STRONG> command after the shell environment variable
-       <STRONG>TERM</STRONG> has been exported.  <STRONG>tset(1)</STRONG>  is  usually  responsible
-       for doing this.  [See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for further details.]
-
-       The  <STRONG>curses</STRONG>  library  permits  manipulation of data struc-
-       tures, called <EM>windows</EM>, which can be  thought  of  as  two-
-       dimensional  arrays of characters representing all or part
-       of a CRT screen.  A default window called <STRONG>stdscr</STRONG>, which is
-       the  size of the terminal screen, is supplied.  Others may
-       be created with <STRONG>newwin</STRONG>.
-
-       Note that <STRONG>curses</STRONG>  does  not  handle  overlapping  windows,
-       that's  done by the <STRONG><A HREF="panel.3x.html">panel(3X)</A></STRONG> library. This means that you
-       can either use <STRONG>stdscr</STRONG> or divide the screen into tiled win-
-       dows  and  not  using  <STRONG>stdscr</STRONG>  at all. Mixing the two will
-       result in unpredictable, and undesired, effects.
-
-       Windows are referred to by variables declared as <STRONG>WINDOW</STRONG> <STRONG>*</STRONG>.
-       These   data  structures  are  manipulated  with  routines
-       described here and elsewhere in the <STRONG>ncurses</STRONG> manual  pages.
-       Among  which  the  most basic routines are <STRONG>move</STRONG> and <STRONG>addch</STRONG>.
-       More general versions of these routines are included  with
-       names  beginning  with  <STRONG>w</STRONG>,  allowing the user to specify a
-       window.  The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.)
-
-       After  using  routines  to manipulate a window, <STRONG>refresh</STRONG> is
-       called, telling <STRONG>curses</STRONG> to make the user's CRT screen  look
-       like  <STRONG>stdscr</STRONG>.   The characters in a window are actually of
-       type <STRONG>chtype</STRONG>, (character and attribute data) so that  other
-       information  about  the  character may also be stored with
-       each character.
-
-       Special windows  called  <EM>pads</EM>  may  also  be  manipulated.
-       These are windows which are not constrained to the size of
-       the screen and whose contents need not be completely  dis-
-       played.  See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG> for more information.
-
-       In  addition  to  drawing  characters on the screen, video
-       attributes and colors may be supported, causing the  char-
-       acters  to show up in such modes as underlined, in reverse
-       video, or in color on terminals that support such  display
-       enhancements.  Line drawing characters may be specified to
-       be output.  On input, <STRONG>curses</STRONG> is  also  able  to  translate
-       arrow  and  function  keys  that transmit escape sequences
-       into single values.  The video  attributes,  line  drawing
-       characters,   and  input  values  use  names,  defined  in
-       <STRONG>&lt;curses.h&gt;</STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, and <STRONG>KEY_LEFT</STRONG>.
-
-       If the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> are set, or
-       if  the program is executing in a window environment, line
-       and column information in the  environment  will  override
-       information read by <EM>terminfo</EM>.  This would effect a program
-
-       If  the environment variable <STRONG>TERMINFO</STRONG> is defined, any pro-
-       gram using <STRONG>curses</STRONG> checks for a local  terminal  definition
-       before  checking  in  the standard place.  For example, if
-       <STRONG>TERM</STRONG> is set to <STRONG>att4424</STRONG>, then the compiled terminal defini-
-       tion is found in
-
-             <STRONG>@DATADIR@/terminfo/a/att4424</STRONG>.
-
-       (The <STRONG>a</STRONG> is copied from the first letter of <STRONG>att4424</STRONG> to avoid
-       creation of huge directories.)  However,  if  <STRONG>TERMINFO</STRONG>  is
-       set to <STRONG>$HOME/myterms</STRONG>, <STRONG>curses</STRONG> first checks
-
-             <STRONG>$HOME/myterms/a/att4424</STRONG>,
-
-       and if that fails, it then checks
-
-             <STRONG>@DATADIR@/terminfo/a/att4424</STRONG>.
-
-       This  is useful for developing experimental definitions or
-       when write permission in <STRONG>@DATADIR@/terminfo</STRONG> is not  avail-
-       able.
-
-       The  integer  variables  <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  are  defined in
-       <STRONG>&lt;curses.h&gt;</STRONG> and will be filled in by <STRONG>initscr</STRONG> with the  size
-       of the screen.  The constants <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> have the val-
-       ues <STRONG>1</STRONG> and <STRONG>0</STRONG>, respectively.
-
-       The <STRONG>curses</STRONG> routines also  define  the  <STRONG>WINDOW</STRONG>  <STRONG>*</STRONG>  variable
-       <STRONG>curscr</STRONG> which is used for certain low-level operations like
-       clearing and redrawing a screen containing  garbage.   The
-       <STRONG>curscr</STRONG> can be used in only a few routines.
-
-
-   <STRONG>Routine</STRONG> <STRONG>and</STRONG> <STRONG>Argument</STRONG> <STRONG>Names</STRONG>
-       Many  <STRONG>curses</STRONG> routines have two or more versions.  The rou-
-       tines prefixed with <STRONG>w</STRONG> require a window argument.  The rou-
-       tines prefixed with <STRONG>p</STRONG> require a pad argument.  Those with-
-       out a prefix generally use <STRONG>stdscr</STRONG>.
-
-       The routines prefixed with <STRONG>mv</STRONG> require a <EM>y</EM> and <EM>x</EM> coordinate
-       to  move to before performing the appropriate action.  The
-       <STRONG>mv</STRONG> routines imply a call to <STRONG>move</STRONG> before the  call  to  the
-       other  routine.  The coordinate <EM>y</EM> always refers to the row
-       (of the window), and <EM>x</EM> always refers to the  column.   The
-       upper left-hand corner is always (0,0), not (1,1).
-
-       The routines prefixed with <STRONG>mvw</STRONG> take both a window argument
-       and <EM>x</EM> and <EM>y</EM> coordinates.  The window  argument  is  always
-       specified before the coordinates.
-
-       In  each  case, <EM>win</EM> is the window affected, and <EM>pad</EM> is the
-
-       Option setting routines require a Boolean flag <EM>bf</EM> with the
-       value <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>; <EM>bf</EM> is always of type <STRONG>bool</STRONG>.  The vari-
-       ables  <EM>ch</EM>  and <EM>attrs</EM> below are always of type <STRONG>chtype</STRONG>.  The
-       types <STRONG>WINDOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>,  and  <STRONG>chtype</STRONG>  are  defined  in
-       <STRONG>&lt;curses.h&gt;</STRONG>.   The  type  <STRONG>TERMINAL</STRONG>  is defined in <STRONG>&lt;term.h&gt;</STRONG>.
-       All other arguments are integers.
-
-
-   <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
-       The following table lists each <STRONG>curses</STRONG> routine and the name
-       of  the  manual  page  on which it is described.  Routines
-       flagged with `*' are ncurses-specific,  not  described  by
-       XPG4 or present in SVr4.
-
-       center  tab(/); l l l l .  <STRONG>curses</STRONG> Routine Name/Manual Page
-       Name  =  addch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>  addchnstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
-       addchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>         addnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
-       addstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>               attroff/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
-       attron/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>       attrset/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>      bau-
-       drate/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>                beep/<STRONG><A HREF="curs_beep.3x.html">curs_beep(3X)</A></STRONG>
-       bkgd/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>  bkgdset/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG> border/<STRONG>curs_bor-</STRONG>
-       <STRONG><A HREF="der.3x.html">der(3X)</A></STRONG>                                box/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
-       can_change_color/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>     cbreak/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
-       clear/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>    clearok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>    clrto-
-       bot/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>    clrtoeol/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>   color_con-
-       tent/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>               copywin/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG>
-       curs_set/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>     def_prog_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
-       def_shell_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>       del_curterm/<STRONG>curs_ter-</STRONG>
-       <STRONG><A HREF="minfo.3x.html">minfo(3X)</A></STRONG>  delay_output/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG> delch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>
-       deleteln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG> delscreen/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG> del-
-       win/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>      derwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>      doup-
-       date/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>               dupwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
-       echo/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>      echochar/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>     end-
-       win/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>                  erase/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>
-       erasechar/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>          filter/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
-       flash/<STRONG><A HREF="curs_beep.3x.html">curs_beep(3X)</A></STRONG>     flushinp/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>      getbe-
-       gyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG>        getch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>        get-
-       maxyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG>     getmouse/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*     get-
-       paryx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG>      getstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>      get-
-       syx/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>                   getwin/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
-       getyx/<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3X)</A></STRONG>   halfdelay/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>  has_col-
-       ors/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>               has_ic/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
-       has_il/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>          has_key/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>*
-       hline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>               idcok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-       idlok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>            immedok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-       inch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>     inchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>     inch-
-       str/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>             init_color/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>
-       init_pair/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>          initscr/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>
-       innstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>       insch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG>      ins-
-       delln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>         insertln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>
-       insnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>             insstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
-       isendwin/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>    keyname/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>    key-
-       pad/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>            killchar/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
-       leaveok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>       longname/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>
-       mcprint/<STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG>*  meta/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>  mouseinter-
-       val/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*              mousemask/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*
-       move/<STRONG><A HREF="curs_move.3x.html">curs_move(3X)</A></STRONG>     mvaddch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>    mvaddchn-
-       str/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>         mvaddchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
-       mvaddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>         mvaddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
-       mvcur/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>   mvdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>    mvder-
-       win/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>      mvgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>     mvget-
-       str/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>     mvinch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>      mvinchn-
-       str/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>            mvinchstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>
-       mvinnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>    mvinsch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG>    mvin-
-       snstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>    mvinsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>    mvin-
-       str/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>      mvprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>      mvs-
-       canw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>   mvwaddch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>   mvwaddchn-
-       str/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>        mvwaddchstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>
-       mvwaddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>       mvwaddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
-       mvwdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>  mvwgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>   mvwget-
-       str/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>                  mvwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
-       mvwinch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>         mvwinchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>
-       mvwinchstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>       mvwinnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
-       mvwinsch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG>         mvwinsnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
-       mvwinsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>   mvwinstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>   mvw-
-       printw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>             mvwscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>
-       napms/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>                  newpad/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>
-       newterm/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>            newwin/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>
-       nl/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>     nocbreak/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>     node-
-       lay/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG> noecho/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>  nonl/<STRONG>curs_out-</STRONG>
-       <STRONG><A HREF="opts.3x.html">opts(3X)</A></STRONG>  noqiflush/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>  noraw/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
-       notimeout/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>  overlay/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG>  over-
-       write/<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3X)</A></STRONG>         pair_content/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>
-       pechochar/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>   pnoutrefresh/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>    pre-
-       fresh/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>  printw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>  putp/<STRONG>curs_ter-</STRONG>
-       <STRONG><A HREF="minfo.3x.html">minfo(3X)</A></STRONG>   putwin/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>   qiflush/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
-       raw/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>             redrawwin/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
-       refresh/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>   reset_prog_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
-       reset_shell_mode/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>   resetty/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
-       resizeterm/<STRONG><A HREF="resizeterm.3x.html">resizeterm(3X)</A></STRONG>*   restartterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
-       ripoffline/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>         savetty/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>
-       scanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>            scr_dump/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>
-       scr_init/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>   scr_restore/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>
-       scr_set/<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>             scrl/<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG>
-       scroll/<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG>           scrollok/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-       set_curterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>    set_term/<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3X)</A></STRONG>
-       setscrreg/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>   setsyx/<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3X)</A></STRONG>   set-
-       term/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>         setupterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
-       slk_attr/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>*            slk_attroff/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
-       slk_attron/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>           slk_attrset/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
-       slk_clear/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>               slk_init/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
-       slk_label/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>        slk_noutrefresh/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
-       slk_refresh/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>          slk_restore/<STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>
-       start_color/<STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>    subpad/<STRONG><A HREF="curs_pad.3x.html">curs_pad(3X)</A></STRONG>     sub-
-       win/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>     syncok/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>     termat-
-       trs/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>  termname/<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3X)</A></STRONG>   tge-
-       tent/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>    tgetflag/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>   tget-
-       num/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>              tgetstr/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>
-       tgoto/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>  tigetflag/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> tiget-
-       num/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>   tigetstr/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>   time-
-       out/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>     touchline/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>    touch-
-       win/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG>                 tparm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>
-       tputs/<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3X)</A></STRONG>    tputs/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG>   typea-
-       head/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>                  unctrl/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
-       ungetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> ungetmouse/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>* untouch-
-       win/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG> use_env/<STRONG><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG> vidattr/<STRONG>curs_ter-</STRONG>
-       <STRONG><A HREF="minfo.3x.html">minfo(3X)</A></STRONG>  vidputs/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3X)</A></STRONG> vline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
-       vwprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>    vwscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>    wad-
-       dch/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>   waddchnstr/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>  waddch-
-       str/<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3X)</A></STRONG>             waddnstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>
-       waddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3X)</A></STRONG>     wattroff/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>    wat-
-       tron/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>                  wattrset/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>
-       wbkgd/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>      wbkgdset/<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>      wbor-
-       der/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>     wclear/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>      wclrto-
-       bot/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>    wclrtoeol/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>    wcursyn-
-       cup/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>                  wdelch/<STRONG><A HREF="curs_delch.3x.html">curs_delch(3X)</A></STRONG>
-       wdeleteln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>  wechochar/<STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG> wen-
-       close/<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG>*                werase/<STRONG><A HREF="curs_clear.3x.html">curs_clear(3X)</A></STRONG>
-       wgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>    wgetnstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>    wget-
-       str/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3X)</A></STRONG>                 whline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
-       winch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>    winchnstr/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>   winch-
-       str/<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3X)</A></STRONG>      winnstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>      win-
-       sch/<STRONG><A HREF="curs_insch.3x.html">curs_insch(3X)</A></STRONG>     winsdelln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>    win-
-       sertln/<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3X)</A></STRONG>          winsnstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>
-       winsstr/<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3X)</A></STRONG>              winstr/<STRONG><A HREF="curs_instr.3x.html">curs_instr(3X)</A></STRONG>
-       wmove/<STRONG><A HREF="curs_move.3x.html">curs_move(3X)</A></STRONG>          wnoutrefresh/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
-       wprintw/<STRONG><A HREF="curs_printw.3x.html">curs_printw(3X)</A></STRONG>   wredrawln/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>  wre-
-       fresh/<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>                wresize/<STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG>*
-       wscanw/<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3X)</A></STRONG>    wscrl/<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3X)</A></STRONG>    wsetscr-
-       reg/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>    wstandend/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>    wstand-
-       out/<STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>      wsyncdown/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>     wsyn-
-       cup/<STRONG><A HREF="curs_window.3x.html">curs_window(3X)</A></STRONG>               wtimeout/<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3X)</A></STRONG>
-       wtouchln/<STRONG><A HREF="curs_touch.3x.html">curs_touch(3X)</A></STRONG> wvline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines  that  return  an integer return <STRONG>ERR</STRONG> upon failure
-       and an integer value other than <STRONG>ERR</STRONG> upon  successful  com-
-       pletion,  unless  otherwise  noted in the routine descrip-
-       tions.
-
-       All macros return the  value  of  the  <STRONG>w</STRONG>  version,  except
-       <STRONG>setscrreg</STRONG>,  <STRONG>wsetscrreg</STRONG>,  <STRONG>getyx</STRONG>,  <STRONG>getbegyx</STRONG>,  <STRONG>getmaxyx</STRONG>.  The
-       return values of <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>,  <STRONG>getyx</STRONG>,  <STRONG>getbegyx</STRONG>,
-       and <STRONG>getmaxyx</STRONG> are undefined (<EM>i</EM>.<EM>e</EM>., these should not be used
-       as the right-hand side of assignment statements).
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and 3X pages whose  names  begin  "curs_"  for
-       detailed routine descriptions.
-
-
-</PRE>
-<H2>EXTENSIONS</H2><PRE>
-       The <STRONG>curses</STRONG> library can be compiled with an option (<STRONG>-DTERM-</STRONG>
-       <STRONG>CAP_FILE</STRONG>) that falls back to  the  old-style  /etc/termcap
-       file  if  the  terminal  setup code cannot find a terminfo
-       entry corresponding to <STRONG>TERM</STRONG>.  Use of this feature  is  not
-       recommended,  as it essentially includes an entire termcap
-       compiler in the <STRONG>curses</STRONG> startup code, at  significant  cost
-       in core and startup cycles.
-
-       Compiling  with  <STRONG>-DTERMCAP_FILE</STRONG> changes the library's ini-
-       tialization sequence in a way intended to mimic the behav-
-       ior of 4.4BSD curses.  If there is no local or system ter-
-       minfo entry matching <STRONG>TERM</STRONG>,  then  the  library  looks  for
-       termcap  entries  in the following places: (1) if <STRONG>TERMINFO</STRONG>
-       is undefined, in the file named by  <STRONG>TERMCAP_FILE</STRONG>;  (2)  if
-       <STRONG>TERMINFO</STRONG>  is defined and begins with a slash, it is inter-
-       preted as the name of a termcap file to search  for  <STRONG>TERM</STRONG>;
-       (3) otherwise, if <STRONG>TERMINFO</STRONG> has a leading string that looks
-       like a terminal entry name list, and it matches <STRONG>TERM</STRONG>,  the
-       contents  of  <STRONG>TERMINFO</STRONG> is interpreted as a termcap; (4) if
-       <STRONG>TERMINFO</STRONG> looks like a termcap but doesn't match <STRONG>TERM</STRONG>,  the
-       termcap  file  is  searched  for among the colon-separated
-       paths in the environment variable  <STRONG>TERMPATHS</STRONG>  if  that  is
-       defined,  and  in  ~/.termcap  and the file value of <STRONG>TERM-</STRONG>
-       <STRONG>CAP_FILE</STRONG> otherwise.
-
-       Versions of <STRONG>curses</STRONG> compiled on PC clones  support  display
-       of  the  PC ROM characters (including ROM characters 0-31,
-       which stock SVr4 curses cannot display).  See  the  EXTEN-
-       SIONS sections of <STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG> and <STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG>.
-
-       The <STRONG>curses</STRONG> library includes facilities for capturing mouse
-       events on certain terminals  (including  xterm).  See  the
-       <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG> manual page for details.
-
-       The  <STRONG>curses</STRONG>  library  includes  a  function  for directing
-       application output to a printer attached to  the  terminal
-       device.  See the <STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG> manual page for details.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-       The <STRONG>curses</STRONG> library is intended to be BASE-level conformant
-       with the XSI Curses standard.   Certain  portions  of  the
-       EXTENDED  XSI  Curses  functionality (including color sup-
-       port) are supported.  The following  EXTENDED  XSI  Curses
-       calls  in  support  of wide (multibyte) characters are not
-       yet implemented: <STRONG>addnwstr,</STRONG> <STRONG>addwstr,</STRONG> <STRONG>mvaddnwstr,</STRONG>  <STRONG>mvwaddnw-</STRONG>
-       <STRONG>str,</STRONG>  <STRONG>mvaddwstr,</STRONG>  <STRONG>waddnwstr,</STRONG>  <STRONG>waddwstr,</STRONG> <STRONG>add_wch,</STRONG> <STRONG>wadd_wch,</STRONG>
-       <STRONG>mvwadd_wchnstr,</STRONG>  <STRONG>mvwadd_wchstr,</STRONG>  <STRONG>bkgrndset,</STRONG>  <STRONG>bkgrnd,</STRONG>  <STRONG>get-</STRONG>
-       <STRONG>bkgrnd,</STRONG> <STRONG>wbkgrnd,</STRONG> <STRONG>wbkgrndset,</STRONG> <STRONG>wgetbkgrnd,</STRONG> <STRONG>border_set,</STRONG> <STRONG>wbor-</STRONG>
-       <STRONG>der_set,</STRONG>  <STRONG>box_set,</STRONG>  <STRONG>hline_set,</STRONG>  <STRONG>mvhline_set,</STRONG>  <STRONG>mvvline_set,</STRONG>
-       <STRONG>mvwhline_set,</STRONG>    <STRONG>mvwvline_set,</STRONG>   <STRONG>whline_set,</STRONG>   <STRONG>vhline_set,</STRONG>
-       <STRONG>wvline_set,</STRONG>  <STRONG>echo_wchar,</STRONG>  <STRONG>wecho_wchar,</STRONG>  <STRONG>erasewchar,</STRONG>  <STRONG>kill-</STRONG>
-       <STRONG>wchar,</STRONG>    <STRONG>get_wch,</STRONG>    <STRONG>mvget_wch,</STRONG>    <STRONG>mvwget_ch,</STRONG>   <STRONG>wget_wch,</STRONG>
-       <STRONG>getwchtype,</STRONG> <STRONG>get_wstr,</STRONG>  <STRONG>getn_wstr,</STRONG>  <STRONG>wget_wstr,</STRONG>  <STRONG>wgetn_wstr,</STRONG>
-       <STRONG>mvget_wstr,</STRONG>  <STRONG>mvgetn_wstr,</STRONG> <STRONG>mvwget_wstr,</STRONG> <STRONG>mvwgetn_wstr,</STRONG> <STRONG>innw-</STRONG>
-       <STRONG>str,</STRONG>  <STRONG>inwstr,</STRONG>  <STRONG>winnwstr,</STRONG>  <STRONG>winwstr,</STRONG>  <STRONG>mvinnwstr,</STRONG>   <STRONG>mvinwstr,</STRONG>
-       <STRONG>mvwinnwstr,</STRONG>  <STRONG>mvwinwstr,</STRONG>  <STRONG>ins_nwstr,</STRONG> <STRONG>ins_wstr,</STRONG> <STRONG>mvins_nwstr,</STRONG>
-       <STRONG>mvins_wstr,</STRONG>   <STRONG>mvwins_nwstr,</STRONG>    <STRONG>mvwins_wstr,</STRONG>    <STRONG>wins_nwstr,</STRONG>
-       <STRONG>wins_wstr,</STRONG>   <STRONG>ins_wch,</STRONG>   <STRONG>wins_wch,</STRONG>  <STRONG>mvins_wch,</STRONG>  <STRONG>mvwins_wch,</STRONG>
-       <STRONG>in_wch,</STRONG> <STRONG>win_wch,</STRONG> <STRONG>mvin_wch,</STRONG> <STRONG>mvwin_wch,</STRONG> <STRONG>inwchstr,</STRONG> <STRONG>inwchnstr,</STRONG>
-       <STRONG>winwchstr,</STRONG>  <STRONG>winwchnstr,</STRONG>  <STRONG>mvinwchstr,</STRONG> <STRONG>mvinwchnstr,</STRONG> <STRONG>mvinwch-</STRONG>
-       <STRONG>str,</STRONG> <STRONG>mvwinwchnstr.</STRONG>
-
-       A small number of local differences (that  is,  individual
-       differences  between  the XSI Curses and <STRONG>curses</STRONG> calls) are
-       described in  <STRONG>PORTABILITY</STRONG>  sections  of  the  library  man
-       pages.
-
-       The routine <STRONG>has_key</STRONG> is not part of XPG4, nor is it present
-       in SVr4.  See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> manual page for  details.
-
-       The  routine  <STRONG>slk_attr</STRONG> is not part of XPG4, nor is it pre-
-       sent in  SVr4.   See  the  <STRONG><A HREF="curs_slk.3x.html">curs_slk(3X)</A></STRONG>  manual  page  for
-       details.
-
-       The  routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mouseinter-</STRONG>
-       <STRONG>val</STRONG>, and <STRONG>wenclose</STRONG> relating to mouse  interfacing  are  not
-       part  of  XPG4,  nor  are  they  present in SVr4.  See the
-       <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3X)</A></STRONG> manual page for details.
-
-       The routine <STRONG>mcprint</STRONG> was not present in any previous curses
-       implementation.   See  the  <STRONG><A HREF="curs_print.3x.html">curs_print(3X)</A></STRONG> manual page for
-       details.
-
-       The routine <STRONG>wresize</STRONG> is not part of XPG4, nor is it present
-       in SVr4.  See the <STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG> manual page for details.
-
-       In  historic curses versions, delays embedded in the capa-
-       bilities <STRONG>cr</STRONG>, <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding
-       delay  bits  in  the UNIX tty driver.  In this implementa-
-       tion, all padding is done by NUL sends.   This  method  is
-       slightly  more expensive, but narrows the interface to the
-       UNIX kernel  significantly  and  increases  the  package's
-       portability correspondingly.
-
-       In  the  XSI  standard  and  SVr4 manual pages, many entry
-       points have prototype arguments of the for <STRONG>char</STRONG> <STRONG>*const</STRONG> (or
-       <STRONG>cchar_t</STRONG>  <STRONG>*const</STRONG>,  or  <STRONG>wchar_t</STRONG>  <STRONG>*const</STRONG>,  or  <STRONG>void</STRONG>  <STRONG>*const</STRONG>).
-       Depending on one's interpretation of the ANSI  C  standard
-       tion <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*x</STRONG> is a modifiable pointer to unmodifiable
-       data, but <STRONG>char</STRONG> <STRONG>*const</STRONG> <STRONG>x</STRONG>' is  an  unmodifiable  pointer  to
-       modifiable  data.  Given that C passes arguments by value,
-       <STRONG>&lt;type&gt;</STRONG> <STRONG>*const</STRONG> as a formal type is at best  dubious.   Some
-       compilers  choke  on  the  prototypes.  Therefore, in this
-       implementation, they have been changed to <STRONG>const</STRONG>  <STRONG>&lt;type&gt;</STRONG>  <STRONG>*</STRONG>
-       globally.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-       The  header  file  <STRONG>&lt;curses.h&gt;</STRONG>  automatically  includes the
-       header files <STRONG>&lt;stdio.h&gt;</STRONG> and <STRONG>&lt;unctrl.h&gt;</STRONG>.
-
-       If standard output from a <STRONG>curses</STRONG> program is re-directed to
-       something  which  is  not  a  tty,  screen updates will be
-       directed to standard error.  This was an undocumented fea-
-       ture of AT&amp;T System V Release 3 curses.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-       Zeyd  M.  Ben-Halim,  Eric  S. Raymond.  Descends from the
-       original pcurses by Pavel Curtis.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
index e984bb4730073a4a28ab4d77765921856d383ad1..7d21204a208e92d1919366b3dc9545a8b658e4e4 100644 (file)
@@ -4,310 +4,322 @@ PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <HEAD>
 <TITLE>Correspondence between ncurses C and Ada functions</TITLE>
 </HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
 <H1>Correspondence between ncurses C and Ada functions</H1>
 <H2>Sorted by C function name</H2>
 <TABLE ALIGN=CENTER BORDER>
 <TR ALIGN=LEFT>
 <TH>C name</TH><TH>Ada name</TH><TH>man page</TH></TR>
-<TR><TD>baudrate()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_123">Baudrate</A></TD><TD><A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>beep()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_37">Beep</A></TD><TD><A HREF="curs_beep.3x.html">curs_beep.3x</A></TD></TR>
-<TR><TD>bottom_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_3">Bottom</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>box()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_25">Box</A></TD><TD><A HREF="curs_border.3x.html">curs_border.3x</A></TD></TR>
-<TR><TD>can_change_color()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_136">Can_Change_Color</A></TD><TD><A HREF="curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>cbreak()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_39">Set_Cbreak_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>clearok()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_51">Clear_On_Next_Update</A></TD><TD><A HREF="curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>color_content()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_137">Color_Content</A></TD><TD><A HREF="curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>copywin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_76">Copy</A></TD><TD><A HREF="curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
-<TR><TD>current_field()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_58">Current</A></TD><TD><A HREF="form_page.3x.html">form_page.3x</A></TD></TR>
-<TR><TD>current_item()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_14">Current</A></TD><TD><A HREF="mitem_current.3x.html">mitem_current.3x</A></TD></TR>
-<TR><TD>curs_set()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_143">Set_Cursor_Visibility</A></TD><TD><A HREF="curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>data_ahead()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_54">Data_Ahead</A></TD><TD><A HREF="form_data.3x.html">form_data.3x</A></TD></TR>
-<TR><TD>data_behind()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_55">Data_Behind</A></TD><TD><A HREF="form_data.3x.html">form_data.3x</A></TD></TR>
-<TR><TD>def_prog_mode()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_138">Save_Curses_Mode</A></TD><TD><A HREF="curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>define_key()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_118">Define_Key</A></TD><TD><A HREF="define_key.3x.html">define_key.3x</A></TD></TR>
-<TR><TD>del_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_15">Delete</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>delay_output()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_121">Delay_Output</A></TD><TD><A HREF="curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>delwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_11">Delete</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>derwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_13">Derived_Window</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>doupdate()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_58">Update_Screen</A></TD><TD><A HREF="curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>dup_field()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_4">Duplicate</A></TD><TD><A HREF="form_field_new.3x.html">form_field_new.3x</A></TD></TR>
-<TR><TD>dupwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_14">Duplicate</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>dynamic_field_info()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_26">Dynamic_Info</A></TD><TD><A HREF="form_field_info.3x.html">form_field_info.3x</A></TD></TR>
-<TR><TD>echo()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_41">Set_Echo_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>endwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_4">End_Windows</A></TD><TD><A HREF="curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
-<TR><TD>erasechar()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_124">Erase_Character</A></TD><TD><A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>field_back()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_21">Background</A></TD><TD><A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_back()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_22">Background</A></TD><TD><A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_buffer()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_9">Get_Buffer</A></TD><TD><A HREF="form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>field_count()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_43">Field_Count</A></TD><TD><A HREF="form_field.3x.html">form_field.3x</A></TD></TR>
-<TR><TD>field_fore()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_18">Foreground</A></TD><TD><A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_fore()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_19">Foreground</A></TD><TD><A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_index()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_61">Get_Index</A></TD><TD><A HREF="form_page.3x.html">form_page.3x</A></TD></TR>
-<TR><TD>field_info()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_25">Info</A></TD><TD><A HREF="form_field_info.3x.html">form_field_info.3x</A></TD></TR>
-<TR><TD>field_init()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_36">Get_Field_Init_Hook</A></TD><TD><A HREF="form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>field_just()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_7">Get_Justification</A></TD><TD><A HREF="form_field_just.3x.html">form_field_just.3x</A></TD></TR>
-<TR><TD>field_opts()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_15">Get_Options</A></TD><TD><A HREF="form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
-<TR><TD>field_opts()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_16">Get_Options</A></TD><TD><A HREF="form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
-<TR><TD>field_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_14">Switch_Options</A></TD><TD><A HREF="form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
-<TR><TD>field_pad()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_24">Pad_Character</A></TD><TD><A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_status()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_11">Changed</A></TD><TD><A HREF="form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>field_term()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_37">Get_Field_Term_Hook</A></TD><TD><A HREF="form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>field_type()</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data_s.html#AFU_2">Get_Type</A></TD><TD><A HREF="form_field_validation.3x.html">form_field_validation.3x</A></TD></TR>
-<TR><TD>field_userptr</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data_s.html#AFU_2">Get_User_Data</A></TD><TD><A HREF="form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
-<TR><TD>flash()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_38">Flash_Screen</A></TD><TD><A HREF="curs_beep.3x.html">curs_beep.3x</A></TD></TR>
-<TR><TD>flushinp()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_122">Flush_Input</A></TD><TD><A HREF="curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>form_driver()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_56">Driver</A></TD><TD><A HREF="form_driver.3x.html">form_driver.3x</A></TD></TR>
-<TR><TD>form_fields()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_42">Fields</A></TD><TD><A HREF="form_field.3x.html">form_field.3x</A></TD></TR>
-<TR><TD>form_init()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_38">Get_Form_Init_Hook</A></TD><TD><A HREF="form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>form_opts()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_50">Get_Options</A></TD><TD><A HREF="form_opts.3x.html">form_opts.3x</A></TD></TR>
-<TR><TD>form_opts()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_51">Get_Options</A></TD><TD><A HREF="form_opts.3x.html">form_opts.3x</A></TD></TR>
-<TR><TD>form_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_49">Switch_Options</A></TD><TD><A HREF="form_opts.3x.html">form_opts.3x</A></TD></TR>
-<TR><TD>form_page()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_60">Page</A></TD><TD><A HREF="form_page.3x.html">form_page.3x</A></TD></TR>
-<TR><TD>form_sub()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_30">Get_Sub_Window</A></TD><TD><A HREF="form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>form_term()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_39">Get_Form_Term_Hook</A></TD><TD><A HREF="form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>form_userptr</TD><TD><A HREF="terminal_interface-curses-forms-form_user_data_s.html#AFU_2">Get_User_Data</A></TD><TD><A HREF="form_userptr.3x.html">form_userptr.3x</A></TD></TR>
-<TR><TD>form_win()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_28">Get_Window</A></TD><TD><A HREF="form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>free_field()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_3">Delete</A></TD><TD><A HREF="form_field_new.3x.html">form_field_new.3x</A></TD></TR>
-<TR><TD>free_form()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_47">Delete</A></TD><TD><A HREF="form_new.3x.html">form_new.3x</A></TD></TR>
-<TR><TD>free_item()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_3">Delete</A></TD><TD><A HREF="mitem_new.3x.html">mitem_new.3x</A></TD></TR>
-<TR><TD>free_menu()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_60">Delete</A></TD><TD><A HREF="menu_new.3x.html">menu_new.3x</A></TD></TR>
-<TR><TD>getbegyx()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_83">Get_Window_Position</A></TD><TD><A HREF="curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
-<TR><TD>getmaxyx()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_82">Get_Size</A></TD><TD><A HREF="curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
-<TR><TD>getmouse()</TD><TD><A HREF="terminal_interface-curses-mouse_s.html#AFU_2">Get_Mouse</A></TD><TD><A HREF="curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>getparyx()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_85">Get_Origin_Relative_To_Parent</A></TD><TD><A HREF="curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
-<TR><TD>getyx()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_84">Get_Cursor_Position</A></TD><TD><A HREF="curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
-<TR><TD>halfdelay()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_44">Half_Delay</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>has_colors()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_134">Has_Colors</A></TD><TD><A HREF="curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>has_ic()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_126">Has_Insert_Character</A></TD><TD><A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>has_il()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_127">Has_Insert_Line</A></TD><TD><A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>has_key()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_30">Has_Key</A></TD><TD><A HREF="curs_getch.3x.html">curs_getch.3x</A></TD></TR>
-<TR><TD>hide_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_7">Hide</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>idcok()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_53">Use_Insert_Delete_Character</A></TD><TD><A HREF="curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>idlok()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_52">Use_Insert_Delete_Line</A></TD><TD><A HREF="curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>immedok()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_55">Immediate_Update_Mode</A></TD><TD><A HREF="curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>init_color()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_135">Init_Color</A></TD><TD><A HREF="curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>init_pair()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_132">Init_Pair</A></TD><TD><A HREF="curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>initscr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_2">Init_Screen</A></TD><TD><A HREF="curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
-<TR><TD>initscr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_3">Init_Windows</A></TD><TD><A HREF="curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
-<TR><TD>intrflush()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_45">Set_Flush_On_Interrupt_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>is_linetouched()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_74">Is_Touched</A></TD><TD><A HREF="curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>is_wintouched()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_75">Is_Touched</A></TD><TD><A HREF="curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>isendwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_5">Is_End_Window</A></TD><TD><A HREF="curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
-<TR><TD>item_count()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_58">Item_Count</A></TD><TD><A HREF="menu_items.3x.html">menu_items.3x</A></TD></TR>
-<TR><TD>item_description();</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_12">Description</A></TD><TD><A HREF="mitem_name.3x.html">mitem_name.3x</A></TD></TR>
-<TR><TD>item_index()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_17">Get_Index</A></TD><TD><A HREF="mitem_current.3x.html">mitem_current.3x</A></TD></TR>
-<TR><TD>item_init()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_52">Get_Item_Init_Hook</A></TD><TD><A HREF="menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>item_name()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_11">Name</A></TD><TD><A HREF="mitem_name.3x.html">mitem_name.3x</A></TD></TR>
-<TR><TD>item_opts()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_10">Get_Options</A></TD><TD><A HREF="mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
-<TR><TD>item_opts()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_9">Get_Options</A></TD><TD><A HREF="mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
-<TR><TD>item_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_8">Switch_Options</A></TD><TD><A HREF="mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
-<TR><TD>item_term()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_53">Get_Item_Term_Hook</A></TD><TD><A HREF="menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>item_userptr</TD><TD><A HREF="terminal_interface-curses-menus-item_user_data_s.html#AFU_2">Get_User_Data</A></TD><TD><A HREF="mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
-<TR><TD>item_value()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_5">Value</A></TD><TD><A HREF="mitem_value.3x.html">mitem_value.3x</A></TD></TR>
-<TR><TD>item_visible()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_6">Visible</A></TD><TD><A HREF="mitem_visible.3x.html">mitem_visible.3x</A></TD></TR>
-<TR><TD>keyname()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_119">Key_Name</A></TD><TD><A HREF="curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>keyok()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_117">Enable_Key</A></TD><TD><A HREF="keyok.3x.html">keyok.3x</A></TD></TR>
-<TR><TD>keypad()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_43">Set_KeyPad_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>killchar()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_125">Kill_Character</A></TD><TD><A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>leaveok()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_54">Leave_Cursor_After_Update</A></TD><TD><A HREF="curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>link_field()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_5">Link</A></TD><TD><A HREF="form_field_new.3x.html">form_field_new.3x</A></TD></TR>
-<TR><TD>longname()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_129">Long_Name</A></TD><TD><A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>menu_back()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_35">Background</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_back()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_36">Background</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_driver()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_61">Driver</A></TD><TD><A HREF="menu_new.3x.html">menu_new.3x</A></TD></TR>
-<TR><TD>menu_fore()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_32">Foreground</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_fore()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_33">Foreground</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_format()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_47">Format</A></TD><TD><A HREF="menu_format.3x.html">menu_format.3x</A></TD></TR>
-<TR><TD>menu_grey()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_38">Grey</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_grey()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_39">Grey</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_init()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_54">Get_Menu_Init_Hook</A></TD><TD><A HREF="menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>menu_items()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_57">Items</A></TD><TD><A HREF="menu_items.3x.html">menu_items.3x</A></TD></TR>
-<TR><TD>menu_mark()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_30">Mark</A></TD><TD><A HREF="menu_mark.3x.html">menu_mark.3x</A></TD></TR>
-<TR><TD>menu_opts()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_21">Get_Options</A></TD><TD><A HREF="menu_opts.3x.html">menu_opts.3x</A></TD></TR>
-<TR><TD>menu_opts()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_22">Get_Options</A></TD><TD><A HREF="menu_opts.3x.html">menu_opts.3x</A></TD></TR>
-<TR><TD>menu_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_20">Switch_Options</A></TD><TD><A HREF="menu_opts.3x.html">menu_opts.3x</A></TD></TR>
-<TR><TD>menu_pad()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_41">Pad_Character</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_pattern()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_45">Pattern</A></TD><TD><A HREF="menu_pattern.3x.html">menu_pattern.3x</A></TD></TR>
-<TR><TD>menu_spacing()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_43">Spacing</A></TD><TD><A HREF="menu_spacing.3x.html">menu_spacing.3x</A></TD></TR>
-<TR><TD>menu_sub()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_26">Get_Sub_Window</A></TD><TD><A HREF="menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>menu_term()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_55">Get_Menu_Term_Hook</A></TD><TD><A HREF="menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>menu_userptr</TD><TD><A HREF="terminal_interface-curses-menus-menu_user_data_s.html#AFU_2">Get_User_Data</A></TD><TD><A HREF="menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
-<TR><TD>menu_win()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_24">Get_Window</A></TD><TD><A HREF="menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>meta()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_42">Set_Meta_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>mouseinterval()</TD><TD><A HREF="terminal_interface-curses-mouse_s.html#AFU_5">Mouse_Interval</A></TD><TD><A HREF="curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>mousemask()</TD><TD><A HREF="terminal_interface-curses-mouse_s.html#AFU_1">Start_Mouse</A></TD><TD><A HREF="curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>move_field()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_44">Move</A></TD><TD><A HREF="form_field.3x.html">form_field.3x</A></TD></TR>
-<TR><TD>move_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_11">Move</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>mvderwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_16">Move_Derived_Window</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>mvwaddch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_8">Add</A></TD><TD><A HREF="curs_addch.3x.html">curs_addch.3x</A></TD></TR>
-<TR><TD>mvwaddchnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_23">Add</A></TD><TD><A HREF="curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
-<TR><TD>mvwaddnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_21">Add</A></TD><TD><A HREF="curs_addstr.3x.html">curs_addstr.3x</A></TD></TR>
-<TR><TD>mvwchgat()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_36">Change_Attributes</A></TD><TD><A HREF="curs_attr.3x.html">curs_attr.3x</A></TD></TR>
-<TR><TD>mvwdelch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_93">Delete_Character</A></TD><TD><A HREF="curs_delch.3x.html">curs_delch.3x</A></TD></TR>
-<TR><TD>mvwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_15">Move_Window</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>mvwinch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_95">Peek</A></TD><TD><A HREF="curs_inch.3x.html">curs_inch.3x</A></TD></TR>
-<TR><TD>mvwinchnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_103">Peek</A></TD><TD><A HREF="curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
-<TR><TD>mvwinnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_101">Peek</A></TD><TD><A HREF="curs_instr.3x.html">curs_instr.3x</A></TD></TR>
-<TR><TD>mvwinsch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_97">Insert</A></TD><TD><A HREF="curs_winch.3x.html">curs_winch.3x</A></TD></TR>
-<TR><TD>mvwinsnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_99">Insert</A></TD><TD><A HREF="curs_winch.3x.html">curs_winch.3x</A></TD></TR>
-<TR><TD>napms()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_144">Nap_Milli_Seconds</A></TD><TD><A HREF="curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>new_field()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_1">Create</A></TD><TD><A HREF="form_field_new.3x.html">form_field_new.3x</A></TD></TR>
-<TR><TD>new_field()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_2">New_Field</A></TD><TD><A HREF="form_field_new.3x.html">form_field_new.3x</A></TD></TR>
-<TR><TD>new_form()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_45">Create</A></TD><TD><A HREF="form_new.3x.html">form_new.3x</A></TD></TR>
-<TR><TD>new_form()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_46">New_Form</A></TD><TD><A HREF="form_new.3x.html">form_new.3x</A></TD></TR>
-<TR><TD>new_item()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_1">Create</A></TD><TD><A HREF="mitem_new.3x.html">mitem_new.3x</A></TD></TR>
-<TR><TD>new_item()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_2">New_Item</A></TD><TD><A HREF="mitem_new.3x.html">mitem_new.3x</A></TD></TR>
-<TR><TD>new_menu()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_59">Create</A></TD><TD><A HREF="menu_new.3x.html">menu_new.3x</A></TD></TR>
-<TR><TD>new_page()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_63">Is_New_Page</A></TD><TD><A HREF="form_new_page.3x.html">form_new_page.3x</A></TD></TR>
-<TR><TD>new_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_1">Create</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>new_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_2">New_Panel</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>newpad()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_86">New_Pad</A></TD><TD><A HREF="curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>newwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_10">Create</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>nl()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_50">Set_NL_Mode</A></TD><TD><A HREF="curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>nodelay()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_47">Set_NoDelay_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>notimeout()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_49">Set_Escape_Time_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>overlay()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_78">Overlay</A></TD><TD><A HREF="curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
-<TR><TD>overwrite()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_77">Overwrite</A></TD><TD><A HREF="curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
-<TR><TD>pair_content()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_133">Pair_Content</A></TD><TD><A HREF="curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>panel_above()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_13">Above</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_below()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_14">Below</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_hidden()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_12">Is_Hidden</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_userptr</TD><TD><A HREF="terminal_interface-curses-panels-user_data_s.html#AFU_2">Get_User_Data</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_window()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_8">Get_Window</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_window()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_9">Panel_Window</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>pechochar()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_90">Add_Character_To_Pad_And_Echo_It</A></TD><TD><A HREF="curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>pnoutrefresh()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_89">Refresh_Without_Update</A></TD><TD><A HREF="curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>pos_form_cursor()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_53">Position_Cursor</A></TD><TD><A HREF="form_cursor.3x.html">form_cursor.3x</A></TD></TR>
-<TR><TD>pos_menu_cursor()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_28">Position_Cursor</A></TD><TD><A HREF="menu_cursor.3x.html">menu_cursor.3x</A></TD></TR>
-<TR><TD>post_form()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_52">Post</A></TD><TD><A HREF="form_post.3x.html">form_post.3x</A></TD></TR>
-<TR><TD>post_menu()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_18">Post</A></TD><TD><A HREF="menu_post.3x.html">menu_post.3x</A></TD></TR>
-<TR><TD>prefresh()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_88">Refresh</A></TD><TD><A HREF="curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>qiflush()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_46">Set_Queue_Interrupt_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>raw()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_40">Set_Raw_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>redrawwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_61">Redraw</A></TD><TD><A HREF="curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>replace_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_10">Replace</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>reset_prog_mode()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_139">Reset_Curses_Mode</A></TD><TD><A HREF="curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>resetty();</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_141">Reset_Terminal_State</A></TD><TD><A HREF="curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>ripoffline()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_142">Rip_Off_Lines</A></TD><TD><A HREF="curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>savetty()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_140">Save_Terminal_State</A></TD><TD><A HREF="curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>scale_form()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_31">Scale</A></TD><TD><A HREF="form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>scale_menu()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_27">Scale</A></TD><TD><A HREF="menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>scrollok()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_56">Allow_Scrolling</A></TD><TD><A HREF="curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>set_current_field()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_57">Set_Current</A></TD><TD><A HREF="form_page.3x.html">form_page.3x</A></TD></TR>
-<TR><TD>set_current_item()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_13">Set_Current</A></TD><TD><A HREF="mitem_current.3x.html">mitem_current.3x</A></TD></TR>
-<TR><TD>set_field_back()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_20">Set_Background</A></TD><TD><A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>set_field_buffer()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_8">Set_Buffer</A></TD><TD><A HREF="form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>set_field_fore()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_17">Set_Foreground</A></TD><TD><A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>set_field_init()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_32">Set_Field_Init_Hook</A></TD><TD><A HREF="form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>set_field_just()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_6">Set_Justification</A></TD><TD><A HREF="form_field_just.3x.html">form_field_just.3x</A></TD></TR>
-<TR><TD>set_field_max()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_12">Set_Maximum_Size</A></TD><TD><A HREF="form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>set_field_opts()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_13">Set_Options</A></TD><TD><A HREF="form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
-<TR><TD>set_field_pad()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_23">Set_Pad_Character</A></TD><TD><A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>set_field_status()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_10">Set_Status</A></TD><TD><A HREF="form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>set_field_term()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_33">Set_Field_Term_Hook</A></TD><TD><A HREF="form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>set_field_type()</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data_s.html#AFU_1">Set_Type</A></TD><TD><A HREF="form_fieldtype.3x.html">form_fieldtype.3x</A></TD></TR>
-<TR><TD>set_field_userptr</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data_s.html#AFU_1">Set_User_Data</A></TD><TD><A HREF="form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
-<TR><TD>set_form_fields()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_40">Redefine</A></TD><TD><A HREF="form_field.3x.html">form_field.3x</A></TD></TR>
-<TR><TD>set_form_fields()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_41">Set_Fields</A></TD><TD><A HREF="form_field.3x.html">form_field.3x</A></TD></TR>
-<TR><TD>set_form_init()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_34">Set_Form_Init_Hook</A></TD><TD><A HREF="form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>set_form_opts()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_48">Set_Options</A></TD><TD><A HREF="form_opts.3x.html">form_opts.3x</A></TD></TR>
-<TR><TD>set_form_page()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_59">Set_Page</A></TD><TD><A HREF="form_page.3x.html">form_page.3x</A></TD></TR>
-<TR><TD>set_form_sub()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_29">Set_Sub_Window</A></TD><TD><A HREF="form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>set_form_term()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_35">Set_Form_Term_Hook</A></TD><TD><A HREF="form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>set_form_userptr</TD><TD><A HREF="terminal_interface-curses-forms-form_user_data_s.html#AFU_1">Set_User_Data</A></TD><TD><A HREF="form_userptr.3x.html">form_userptr.3x</A></TD></TR>
-<TR><TD>set_form_win()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_27">Set_Window</A></TD><TD><A HREF="form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>set_item_init()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_48">Set_Item_Init_Hook</A></TD><TD><A HREF="menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>set_item_opts()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_7">Set_Options</A></TD><TD><A HREF="mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
-<TR><TD>set_item_term()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_49">Set_Item_Term_Hook</A></TD><TD><A HREF="menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>set_item_userptr</TD><TD><A HREF="terminal_interface-curses-menus-item_user_data_s.html#AFU_1">Set_User_Data</A></TD><TD><A HREF="mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
-<TR><TD>set_item_value()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_4">Set_Value</A></TD><TD><A HREF="mitem_value.3x.html">mitem_value.3x</A></TD></TR>
-<TR><TD>set_menu_back()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_34">Set_Background</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>set_menu_fore()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_31">Set_Foreground</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>set_menu_format()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_46">Set_Format</A></TD><TD><A HREF="menu_format.3x.html">menu_format.3x</A></TD></TR>
-<TR><TD>set_menu_grey()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_37">Set_Grey</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>set_menu_init()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_50">Set_Menu_Init_Hook</A></TD><TD><A HREF="menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>set_menu_items()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_56">Redefine</A></TD><TD><A HREF="menu_items.3x.html">menu_items.3x</A></TD></TR>
-<TR><TD>set_menu_mark()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_29">Set_Mark</A></TD><TD><A HREF="menu_mark.3x.html">menu_mark.3x</A></TD></TR>
-<TR><TD>set_menu_opts()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_19">Set_Options</A></TD><TD><A HREF="menu_opts.3x.html">menu_opts.3x</A></TD></TR>
-<TR><TD>set_menu_pad()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_40">Set_Pad_Character</A></TD><TD><A HREF="menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>set_menu_pattern()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_44">Set_Pattern</A></TD><TD><A HREF="menu_pattern.3x.html">menu_pattern.3x</A></TD></TR>
-<TR><TD>set_menu_spacing()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_42">Set_Spacing</A></TD><TD><A HREF="menu_spacing.3x.html">menu_spacing.3x</A></TD></TR>
-<TR><TD>set_menu_sub()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_25">Set_Sub_Window</A></TD><TD><A HREF="menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>set_menu_term()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_51">Set_Menu_Term_Hook</A></TD><TD><A HREF="menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>set_menu_userptr</TD><TD><A HREF="terminal_interface-curses-menus-menu_user_data_s.html#AFU_1">Set_User_Data</A></TD><TD><A HREF="menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
-<TR><TD>set_menu_win()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_23">Set_Window</A></TD><TD><A HREF="menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>set_new_page()</TD><TD><A HREF="terminal_interface-curses-forms_s.html#AFU_62">Set_New_Page</A></TD><TD><A HREF="form_new_page.3x.html">form_new_page.3x</A></TD></TR>
-<TR><TD>set_panel_userptr</TD><TD><A HREF="terminal_interface-curses-panels-user_data_s.html#AFU_1">Set_User_Data</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>set_top_row()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_15">Set_Top_Row</A></TD><TD><A HREF="mitem_current.3x.html">mitem_current.3x</A></TD></TR>
-<TR><TD>show_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_5">Show</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>slk_attr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_115">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_attr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_116">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_attron()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_113">Switch_Soft_Label_Key_Attributes</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_attrset()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_114">Set_Soft_Label_Key_Attributes</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_clear()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_110">Clear_Soft_Label_Keys</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_init()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_105">Init_Soft_Label_Keys</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_label()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_109">Get_Soft_Label_Key</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_noutrefresh()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_108">Refresh_Soft_Label_Keys_Without_Update</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_refresh()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_107">Refresh_Soft_Label_Key</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_restore()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_111">Restore_Soft_Label_Keys</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_set()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_106">Set_Soft_Label_Key</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_touch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_112">Touch_Soft_Label_Keys</A></TD><TD><A HREF="curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>start_clolor()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_131">Start_Color</A></TD><TD><A HREF="curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>stdscr</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_1">Standard_Window</A></TD><TD><A HREF="curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
-<TR><TD>subpad()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_87">Sub_Pad</A></TD><TD><A HREF="curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>subwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_12">Sub_Window</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>syncok()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_19">Set_Synch_Mode</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>termattrs()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_128">Supported_Attributes</A></TD><TD><A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>termname()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_130">Terminal_Name</A></TD><TD><A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>top_panel()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_4">Top</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>top_row()</TD><TD><A HREF="terminal_interface-curses-menus_s.html#AFU_16">Top_Row</A></TD><TD><A HREF="mitem_current.3x.html">mitem_current.3x</A></TD></TR>
-<TR><TD>touchline()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_72">Touch</A></TD><TD><A HREF="curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>touchwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_70">Touch</A></TD><TD><A HREF="curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>unctrl()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_120">Un_Control</A></TD><TD><A HREF="curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>ungetch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_29">Undo_Keystroke</A></TD><TD><A HREF="curs_getch.3x.html">curs_getch.3x</A></TD></TR>
-<TR><TD>ungetmouse()</TD><TD><A HREF="terminal_interface-curses-mouse_s.html#AFU_3">Unget_Mouse</A></TD><TD><A HREF="curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>untouchwin()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_71">Untouch</A></TD><TD><A HREF="curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>update_panels()</TD><TD><A HREF="terminal_interface-curses-panels_s.html#AFU_6">Update_Panels</A></TD><TD><A HREF="panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>waddch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_7">Add</A></TD><TD><A HREF="curs_addch.3x.html">curs_addch.3x</A></TD></TR>
-<TR><TD>waddchnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_22">Add</A></TD><TD><A HREF="curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
-<TR><TD>waddnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_20">Add</A></TD><TD><A HREF="curs_addstr.3x.html">curs_addstr.3x</A></TD></TR>
-<TR><TD>wattr_get()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_33">Get_Character_Attribute</A></TD><TD><A HREF="curs_attr.3x.html">curs_attr.3x</A></TD></TR>
-<TR><TD>wattr_get()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_34">Get_Character_Attribute</A></TD><TD><A HREF="curs_attr.3x.html">curs_attr.3x</A></TD></TR>
-<TR><TD>wattron()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_31">Switch_Character_Attribute</A></TD><TD><A HREF="curs_attr.3x.html">curs_attr.3x</A></TD></TR>
-<TR><TD>wattrset()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_32">Set_Character_Attributes</A></TD><TD><A HREF="curs_attr.3x.html">curs_attr.3x</A></TD></TR>
-<TR><TD>wbkgd()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_68">Change_Background</A></TD><TD><A HREF="curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
-<TR><TD>wbkgdget()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_69">Get_Background</A></TD><TD><A HREF="curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
-<TR><TD>wbkgdset()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_67">Set_Background</A></TD><TD><A HREF="curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
-<TR><TD>wborder()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_24">Border</A></TD><TD><A HREF="curs_border.3x.html">curs_border.3x</A></TD></TR>
-<TR><TD>wchgat()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_35">Change_Attributes</A></TD><TD><A HREF="curs_attr.3x.html">curs_attr.3x</A></TD></TR>
-<TR><TD>wclear()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_64">Clear</A></TD><TD><A HREF="curs_clear.3x.html">curs_clear.3x</A></TD></TR>
-<TR><TD>wclrtobot()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_65">Clear_To_End_Of_Screen</A></TD><TD><A HREF="curs_clear.3x.html">curs_clear.3x</A></TD></TR>
-<TR><TD>wclrtoeol()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_66">Clear_To_End_Of_Line</A></TD><TD><A HREF="curs_clear.3x.html">curs_clear.3x</A></TD></TR>
-<TR><TD>wdelch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_92">Delete_Character</A></TD><TD><A HREF="curs_delch.3x.html">curs_delch.3x</A></TD></TR>
-<TR><TD>wdeleteln()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_80">Delete_Line</A></TD><TD><A HREF="curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
-<TR><TD>wechochar()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_9">Add_With_Immediate_Echo</A></TD><TD><A HREF="curs_addch.3x.html">curs_addch.3x</A></TD></TR>
-<TR><TD>wenclose()</TD><TD><A HREF="terminal_interface-curses-mouse_s.html#AFU_4">Enclosed_In_Window</A></TD><TD><A HREF="curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>werase()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_63">Erase</A></TD><TD><A HREF="curs_clear.3x.html">curs_clear.3x</A></TD></TR>
-<TR><TD>wgetch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_28">Get_Keystroke</A></TD><TD><A HREF="curs_getch.3x.html">curs_getch.3x</A></TD></TR>
-<TR><TD>wgetnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_104">Get</A></TD><TD><A HREF="curs_getstr.3x.html">curs_getstr.3x</A></TD></TR>
-<TR><TD>whline()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_26">Horizontal_Line</A></TD><TD><A HREF="curs_border.3x.html">curs_border.3x</A></TD></TR>
-<TR><TD>winch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_94">Peek</A></TD><TD><A HREF="curs_inch.3x.html">curs_inch.3x</A></TD></TR>
-<TR><TD>winchnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_102">Peek</A></TD><TD><A HREF="curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
-<TR><TD>winnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_100">Peek</A></TD><TD><A HREF="curs_instr.3x.html">curs_instr.3x</A></TD></TR>
-<TR><TD>winsch()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_96">Insert</A></TD><TD><A HREF="curs_winch.3x.html">curs_winch.3x</A></TD></TR>
-<TR><TD>winsdelln()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_79">Insert_Delete_Lines</A></TD><TD><A HREF="curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
-<TR><TD>winsertln()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_81">Insert_Line</A></TD><TD><A HREF="curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
-<TR><TD>winsnstr()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_98">Insert</A></TD><TD><A HREF="curs_winch.3x.html">curs_winch.3x</A></TD></TR>
-<TR><TD>wmove()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_6">Move_Cursor</A></TD><TD><A HREF="curs_move.3x.html">curs_move.3x</A></TD></TR>
-<TR><TD>wnoutrefresh()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_60">Refresh_Without_Update</A></TD><TD><A HREF="curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>wredrawln()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_62">Redraw</A></TD><TD><A HREF="curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>wrefresh()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_59">Refresh</A></TD><TD><A HREF="curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>wscrl()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_91">Scroll</A></TD><TD><A HREF="curs_scroll.3x.html">curs_scroll.3x</A></TD></TR>
-<TR><TD>wsetscrreg()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_57">Set_Scroll_Region</A></TD><TD><A HREF="curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>wsyncdown()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_18">Synchronize_Downwards</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>wsyncup()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_17">Synchronize_Upwards</A></TD><TD><A HREF="curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>wtimeout()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_48">Set_Timeout_Mode</A></TD><TD><A HREF="curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>wtouchln()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_73">Change_Line_Status</A></TD><TD><A HREF="curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>wvline()</TD><TD><A HREF="terminal_interface-curses_s.html#AFU_27">Vertical_Line</A></TD><TD><A HREF="curs_border.3x.html">curs_border.3x</A></TD></TR>
+<TR><TD>baudrate()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_128">Baudrate</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>beep()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_38">Beep</A></TD><TD><A HREF="man/curs_beep.3x.html">curs_beep.3x</A></TD></TR>
+<TR><TD>bottom_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_3">Bottom</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>box()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_25">Box</A></TD><TD><A HREF="man/curs_border.3x.html">curs_border.3x</A></TD></TR>
+<TR><TD>can_change_color()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_143">Can_Change_Color</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>cbreak()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_40">Set_Cbreak_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>clearok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_52">Clear_On_Next_Update</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>color_content()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_144">Color_Content</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>copywin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_77">Copy</A></TD><TD><A HREF="man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
+<TR><TD>current_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_58">Current</A></TD><TD><A HREF="man/form_page.3x.html">form_page.3x</A></TD></TR>
+<TR><TD>current_item()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_14">Current</A></TD><TD><A HREF="man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
+<TR><TD>curs_set()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_150">Set_Cursor_Visibility</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>data_ahead()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_54">Data_Ahead</A></TD><TD><A HREF="man/form_data.3x.html">form_data.3x</A></TD></TR>
+<TR><TD>data_behind()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_55">Data_Behind</A></TD><TD><A HREF="man/form_data.3x.html">form_data.3x</A></TD></TR>
+<TR><TD>def_prog_mode()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_145">Save_Curses_Mode</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>define_key()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_121">Define_Key</A></TD><TD><A HREF="man/define_key.3x.html">define_key.3x</A></TD></TR>
+<TR><TD>del_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_15">Delete</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>delay_output()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_126">Delay_Output</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>delwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_11">Delete</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>derwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_13">Derived_Window</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>doupdate()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_59">Update_Screen</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>dup_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_4">Duplicate</A></TD><TD><A HREF="man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
+<TR><TD>dupwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_14">Duplicate</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>dynamic_field_info()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_26">Dynamic_Info</A></TD><TD><A HREF="man/form_field_info.3x.html">form_field_info.3x</A></TD></TR>
+<TR><TD>echo()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_42">Set_Echo_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>endwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_4">End_Windows</A></TD><TD><A HREF="man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
+<TR><TD>erasechar()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_129">Erase_Character</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>field_back()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_21">Background</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_back()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_22">Background</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_buffer()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_9">Get_Buffer</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>field_count()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_43">Field_Count</A></TD><TD><A HREF="man/form_field.3x.html">form_field.3x</A></TD></TR>
+<TR><TD>field_fore()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_18">Foreground</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_fore()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_19">Foreground</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_index()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_61">Get_Index</A></TD><TD><A HREF="man/form_page.3x.html">form_page.3x</A></TD></TR>
+<TR><TD>field_info()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_25">Info</A></TD><TD><A HREF="man/form_field_info.3x.html">form_field_info.3x</A></TD></TR>
+<TR><TD>field_init()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_36">Get_Field_Init_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>field_just()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_7">Get_Justification</A></TD><TD><A HREF="man/form_field_just.3x.html">form_field_just.3x</A></TD></TR>
+<TR><TD>field_opts()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_15">Get_Options</A></TD><TD><A HREF="man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
+<TR><TD>field_opts()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_16">Get_Options</A></TD><TD><A HREF="man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
+<TR><TD>field_opts_on()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_14">Switch_Options</A></TD><TD><A HREF="man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
+<TR><TD>field_pad()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_24">Pad_Character</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_status()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_11">Changed</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>field_term()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_37">Get_Field_Term_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>field_type()</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_2">Get_Type</A></TD><TD><A HREF="man/form_field_validation.3x.html">form_field_validation.3x</A></TD></TR>
+<TR><TD>field_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
+<TR><TD>field_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
+<TR><TD>flash()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_39">Flash_Screen</A></TD><TD><A HREF="man/curs_beep.3x.html">curs_beep.3x</A></TD></TR>
+<TR><TD>flushinp()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_127">Flush_Input</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>form_driver()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_56">Driver</A></TD><TD><A HREF="man/form_driver.3x.html">form_driver.3x</A></TD></TR>
+<TR><TD>form_fields()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_42">Fields</A></TD><TD><A HREF="man/form_field.3x.html">form_field.3x</A></TD></TR>
+<TR><TD>form_init()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_38">Get_Form_Init_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>form_opts()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_50">Get_Options</A></TD><TD><A HREF="man/form_opts.3x.html">form_opts.3x</A></TD></TR>
+<TR><TD>form_opts()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_51">Get_Options</A></TD><TD><A HREF="man/form_opts.3x.html">form_opts.3x</A></TD></TR>
+<TR><TD>form_opts_on()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_49">Switch_Options</A></TD><TD><A HREF="man/form_opts.3x.html">form_opts.3x</A></TD></TR>
+<TR><TD>form_page()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_60">Page</A></TD><TD><A HREF="man/form_page.3x.html">form_page.3x</A></TD></TR>
+<TR><TD>form_sub()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_30">Get_Sub_Window</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
+<TR><TD>form_term()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_39">Get_Form_Term_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>form_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
+<TR><TD>form_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
+<TR><TD>form_win()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_28">Get_Window</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
+<TR><TD>free_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_3">Delete</A></TD><TD><A HREF="man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
+<TR><TD>free_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_47">Delete</A></TD><TD><A HREF="man/form_new.3x.html">form_new.3x</A></TD></TR>
+<TR><TD>free_item()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_3">Delete</A></TD><TD><A HREF="man/mitem_new.3x.html">mitem_new.3x</A></TD></TR>
+<TR><TD>free_menu()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_60">Delete</A></TD><TD><A HREF="man/menu_new.3x.html">menu_new.3x</A></TD></TR>
+<TR><TD>getbegyx()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_84">Get_Window_Position</A></TD><TD><A HREF="man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
+<TR><TD>getmaxyx()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_83">Get_Size</A></TD><TD><A HREF="man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
+<TR><TD>getmouse()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_2">Get_Mouse</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>getparyx()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_86">Get_Origin_Relative_To_Parent</A></TD><TD><A HREF="man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
+<TR><TD>getyx()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_85">Get_Cursor_Position</A></TD><TD><A HREF="man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
+<TR><TD>halfdelay()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_45">Half_Delay</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>has_colors()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_141">Has_Colors</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>has_ic()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_131">Has_Insert_Character</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>has_il()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_132">Has_Insert_Line</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>has_key()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_30">Has_Key</A></TD><TD><A HREF="man/curs_getch.3x.html">curs_getch.3x</A></TD></TR>
+<TR><TD>hide_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_7">Hide</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>idcok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_54">Use_Insert_Delete_Character</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>idlok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_53">Use_Insert_Delete_Line</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>immedok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_56">Immediate_Update_Mode</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>init_color()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_142">Init_Color</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>init_pair()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_139">Init_Pair</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>initscr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_2">Init_Screen</A></TD><TD><A HREF="man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
+<TR><TD>initscr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_3">Init_Windows</A></TD><TD><A HREF="man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
+<TR><TD>intrflush()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_46">Set_Flush_On_Interrupt_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>is_linetouched()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_75">Is_Touched</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>is_wintouched()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_76">Is_Touched</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>isendwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_5">Is_End_Window</A></TD><TD><A HREF="man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
+<TR><TD>item_count()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_58">Item_Count</A></TD><TD><A HREF="man/menu_items.3x.html">menu_items.3x</A></TD></TR>
+<TR><TD>item_description();</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_12">Description</A></TD><TD><A HREF="man/mitem_name.3x.html">mitem_name.3x</A></TD></TR>
+<TR><TD>item_index()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_17">Get_Index</A></TD><TD><A HREF="man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
+<TR><TD>item_init()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_52">Get_Item_Init_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>item_name()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_11">Name</A></TD><TD><A HREF="man/mitem_name.3x.html">mitem_name.3x</A></TD></TR>
+<TR><TD>item_opts()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_10">Get_Options</A></TD><TD><A HREF="man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
+<TR><TD>item_opts()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_9">Get_Options</A></TD><TD><A HREF="man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
+<TR><TD>item_opts_on()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_8">Switch_Options</A></TD><TD><A HREF="man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
+<TR><TD>item_term()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_53">Get_Item_Term_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>item_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-item_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
+<TR><TD>item_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-item_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
+<TR><TD>item_value()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_5">Value</A></TD><TD><A HREF="man/mitem_value.3x.html">mitem_value.3x</A></TD></TR>
+<TR><TD>item_visible()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_6">Visible</A></TD><TD><A HREF="man/mitem_visible.3x.html">mitem_visible.3x</A></TD></TR>
+<TR><TD>keyname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_122">Key_Name</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>keyname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_123">Key_Name</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>keyok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_120">Enable_Key</A></TD><TD><A HREF="man/keyok.3x.html">keyok.3x</A></TD></TR>
+<TR><TD>keypad()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_44">Set_KeyPad_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>killchar()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_130">Kill_Character</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>leaveok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_55">Leave_Cursor_After_Update</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>link_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_5">Link</A></TD><TD><A HREF="man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
+<TR><TD>longname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_134">Long_Name</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>longname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_135">Long_Name</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>menu_back()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_35">Background</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_back()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_36">Background</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_driver()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_61">Driver</A></TD><TD><A HREF="man/menu_new.3x.html">menu_new.3x</A></TD></TR>
+<TR><TD>menu_fore()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_32">Foreground</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_fore()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_33">Foreground</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_format()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_47">Format</A></TD><TD><A HREF="man/menu_format.3x.html">menu_format.3x</A></TD></TR>
+<TR><TD>menu_grey()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_38">Grey</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_grey()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_39">Grey</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_init()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_54">Get_Menu_Init_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>menu_items()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_57">Items</A></TD><TD><A HREF="man/menu_items.3x.html">menu_items.3x</A></TD></TR>
+<TR><TD>menu_mark()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_30">Mark</A></TD><TD><A HREF="man/menu_mark.3x.html">menu_mark.3x</A></TD></TR>
+<TR><TD>menu_opts()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_21">Get_Options</A></TD><TD><A HREF="man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
+<TR><TD>menu_opts()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_22">Get_Options</A></TD><TD><A HREF="man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
+<TR><TD>menu_opts_on()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_20">Switch_Options</A></TD><TD><A HREF="man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
+<TR><TD>menu_pad()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_41">Pad_Character</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_pattern()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_45">Pattern</A></TD><TD><A HREF="man/menu_pattern.3x.html">menu_pattern.3x</A></TD></TR>
+<TR><TD>menu_spacing()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_43">Spacing</A></TD><TD><A HREF="man/menu_spacing.3x.html">menu_spacing.3x</A></TD></TR>
+<TR><TD>menu_sub()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_26">Get_Sub_Window</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>menu_term()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_55">Get_Menu_Term_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>menu_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
+<TR><TD>menu_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
+<TR><TD>menu_win()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_24">Get_Window</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>meta()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_43">Set_Meta_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>mouseinterval()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_5">Mouse_Interval</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>mousemask()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_1">Start_Mouse</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>move_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_44">Move</A></TD><TD><A HREF="man/form_field.3x.html">form_field.3x</A></TD></TR>
+<TR><TD>move_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_11">Move</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>mvderwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_16">Move_Derived_Window</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>mvwaddch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_8">Add</A></TD><TD><A HREF="man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
+<TR><TD>mvwaddchnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_23">Add</A></TD><TD><A HREF="man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
+<TR><TD>mvwaddnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_21">Add</A></TD><TD><A HREF="man/curs_addstr.3x.html">curs_addstr.3x</A></TD></TR>
+<TR><TD>mvwchgat()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_37">Change_Attributes</A></TD><TD><A HREF="man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>mvwdelch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_94">Delete_Character</A></TD><TD><A HREF="man/curs_delch.3x.html">curs_delch.3x</A></TD></TR>
+<TR><TD>mvwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_15">Move_Window</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>mvwinch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_96">Peek</A></TD><TD><A HREF="man/curs_inch.3x.html">curs_inch.3x</A></TD></TR>
+<TR><TD>mvwinchnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_104">Peek</A></TD><TD><A HREF="man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
+<TR><TD>mvwinnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_102">Peek</A></TD><TD><A HREF="man/curs_instr.3x.html">curs_instr.3x</A></TD></TR>
+<TR><TD>mvwinsch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_98">Insert</A></TD><TD><A HREF="man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
+<TR><TD>mvwinsnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_100">Insert</A></TD><TD><A HREF="man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
+<TR><TD>napms()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_151">Nap_Milli_Seconds</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>new_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_1">Create</A></TD><TD><A HREF="man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
+<TR><TD>new_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_2">New_Field</A></TD><TD><A HREF="man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
+<TR><TD>new_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_45">Create</A></TD><TD><A HREF="man/form_new.3x.html">form_new.3x</A></TD></TR>
+<TR><TD>new_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_46">New_Form</A></TD><TD><A HREF="man/form_new.3x.html">form_new.3x</A></TD></TR>
+<TR><TD>new_item()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_1">Create</A></TD><TD><A HREF="man/mitem_new.3x.html">mitem_new.3x</A></TD></TR>
+<TR><TD>new_item()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_2">New_Item</A></TD><TD><A HREF="man/mitem_new.3x.html">mitem_new.3x</A></TD></TR>
+<TR><TD>new_menu()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_59">Create</A></TD><TD><A HREF="man/menu_new.3x.html">menu_new.3x</A></TD></TR>
+<TR><TD>new_page()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_63">Is_New_Page</A></TD><TD><A HREF="man/form_new_page.3x.html">form_new_page.3x</A></TD></TR>
+<TR><TD>new_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_1">Create</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>new_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_2">New_Panel</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>newpad()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_87">New_Pad</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>newwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_10">Create</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>nl()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_51">Set_NL_Mode</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>nodelay()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_48">Set_NoDelay_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>notimeout()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_50">Set_Escape_Time_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>overlay()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_79">Overlay</A></TD><TD><A HREF="man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
+<TR><TD>overwrite()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_78">Overwrite</A></TD><TD><A HREF="man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
+<TR><TD>pair_content()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_140">Pair_Content</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>panel_above()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_13">Above</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_below()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_14">Below</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_hidden()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_12">Is_Hidden</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_userptr</TD><TD><A HREF="ada/terminal_interface-curses-panels-user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_userptr</TD><TD><A HREF="ada/terminal_interface-curses-panels-user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_window()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_8">Get_Window</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_window()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_9">Panel_Window</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>pechochar()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_91">Add_Character_To_Pad_And_Echo_It</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>pnoutrefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_90">Refresh_Without_Update</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>pos_form_cursor()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_53">Position_Cursor</A></TD><TD><A HREF="man/form_cursor.3x.html">form_cursor.3x</A></TD></TR>
+<TR><TD>pos_menu_cursor()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_28">Position_Cursor</A></TD><TD><A HREF="man/menu_cursor.3x.html">menu_cursor.3x</A></TD></TR>
+<TR><TD>post_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_52">Post</A></TD><TD><A HREF="man/form_post.3x.html">form_post.3x</A></TD></TR>
+<TR><TD>post_menu()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_18">Post</A></TD><TD><A HREF="man/menu_post.3x.html">menu_post.3x</A></TD></TR>
+<TR><TD>prefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_89">Refresh</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>qiflush()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_47">Set_Queue_Interrupt_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>raw()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_41">Set_Raw_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>redrawwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_62">Redraw</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>replace_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_10">Replace</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>reset_prog_mode()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_146">Reset_Curses_Mode</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>resetty();</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_148">Reset_Terminal_State</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>ripoffline()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_149">Rip_Off_Lines</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>savetty()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_147">Save_Terminal_State</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>scale_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_31">Scale</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
+<TR><TD>scale_menu()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_27">Scale</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>scrollok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_57">Allow_Scrolling</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>set_current_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_57">Set_Current</A></TD><TD><A HREF="man/form_page.3x.html">form_page.3x</A></TD></TR>
+<TR><TD>set_current_item()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_13">Set_Current</A></TD><TD><A HREF="man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
+<TR><TD>set_field_back()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_20">Set_Background</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>set_field_buffer()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_8">Set_Buffer</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>set_field_fore()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_17">Set_Foreground</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>set_field_init()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_32">Set_Field_Init_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>set_field_just()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_6">Set_Justification</A></TD><TD><A HREF="man/form_field_just.3x.html">form_field_just.3x</A></TD></TR>
+<TR><TD>set_field_max()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_12">Set_Maximum_Size</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>set_field_opts()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_13">Set_Options</A></TD><TD><A HREF="man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
+<TR><TD>set_field_pad()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_23">Set_Pad_Character</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>set_field_status()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_10">Set_Status</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>set_field_term()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_33">Set_Field_Term_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>set_field_type()</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_1">Set_Type</A></TD><TD><A HREF="man/form_fieldtype.3x.html">form_fieldtype.3x</A></TD></TR>
+<TR><TD>set_field_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
+<TR><TD>set_form_fields()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_40">Redefine</A></TD><TD><A HREF="man/form_field.3x.html">form_field.3x</A></TD></TR>
+<TR><TD>set_form_fields()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_41">Set_Fields</A></TD><TD><A HREF="man/form_field.3x.html">form_field.3x</A></TD></TR>
+<TR><TD>set_form_init()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_34">Set_Form_Init_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>set_form_opts()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_48">Set_Options</A></TD><TD><A HREF="man/form_opts.3x.html">form_opts.3x</A></TD></TR>
+<TR><TD>set_form_page()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_59">Set_Page</A></TD><TD><A HREF="man/form_page.3x.html">form_page.3x</A></TD></TR>
+<TR><TD>set_form_sub()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_29">Set_Sub_Window</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
+<TR><TD>set_form_term()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_35">Set_Form_Term_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>set_form_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
+<TR><TD>set_form_win()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_27">Set_Window</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
+<TR><TD>set_item_init()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_48">Set_Item_Init_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>set_item_opts()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_7">Set_Options</A></TD><TD><A HREF="man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
+<TR><TD>set_item_term()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_49">Set_Item_Term_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>set_item_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-item_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
+<TR><TD>set_item_value()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_4">Set_Value</A></TD><TD><A HREF="man/mitem_value.3x.html">mitem_value.3x</A></TD></TR>
+<TR><TD>set_menu_back()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_34">Set_Background</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>set_menu_fore()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_31">Set_Foreground</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>set_menu_format()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_46">Set_Format</A></TD><TD><A HREF="man/menu_format.3x.html">menu_format.3x</A></TD></TR>
+<TR><TD>set_menu_grey()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_37">Set_Grey</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>set_menu_init()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_50">Set_Menu_Init_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>set_menu_items()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_56">Redefine</A></TD><TD><A HREF="man/menu_items.3x.html">menu_items.3x</A></TD></TR>
+<TR><TD>set_menu_mark()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_29">Set_Mark</A></TD><TD><A HREF="man/menu_mark.3x.html">menu_mark.3x</A></TD></TR>
+<TR><TD>set_menu_opts()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_19">Set_Options</A></TD><TD><A HREF="man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
+<TR><TD>set_menu_pad()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_40">Set_Pad_Character</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>set_menu_pattern()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_44">Set_Pattern</A></TD><TD><A HREF="man/menu_pattern.3x.html">menu_pattern.3x</A></TD></TR>
+<TR><TD>set_menu_spacing()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_42">Set_Spacing</A></TD><TD><A HREF="man/menu_spacing.3x.html">menu_spacing.3x</A></TD></TR>
+<TR><TD>set_menu_sub()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_25">Set_Sub_Window</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>set_menu_term()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_51">Set_Menu_Term_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>set_menu_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
+<TR><TD>set_menu_win()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_23">Set_Window</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>set_new_page()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_62">Set_New_Page</A></TD><TD><A HREF="man/form_new_page.3x.html">form_new_page.3x</A></TD></TR>
+<TR><TD>set_panel_userptr</TD><TD><A HREF="ada/terminal_interface-curses-panels-user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>set_top_row()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_15">Set_Top_Row</A></TD><TD><A HREF="man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
+<TR><TD>show_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_5">Show</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>slk_attr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_117">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_attr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_118">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_attron()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_115">Switch_Soft_Label_Key_Attributes</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_attrset()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_116">Set_Soft_Label_Key_Attributes</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_clear()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_112">Clear_Soft_Label_Keys</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_color()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_119">Set_Soft_Label_Key_Color</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_init()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_106">Init_Soft_Label_Keys</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_label()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_110">Get_Soft_Label_Key</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_label()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_111">Get_Soft_Label_Key</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_noutrefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_109">Refresh_Soft_Label_Keys_Without_Update</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_refresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_108">Refresh_Soft_Label_Key</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_restore()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_113">Restore_Soft_Label_Keys</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_set()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_107">Set_Soft_Label_Key</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_touch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_114">Touch_Soft_Label_Keys</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>start_clolor()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_138">Start_Color</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>stdscr</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_1">Standard_Window</A></TD><TD><A HREF="man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
+<TR><TD>subpad()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_88">Sub_Pad</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>subwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_12">Sub_Window</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>syncok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_19">Set_Synch_Mode</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>termattrs()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_133">Supported_Attributes</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>termname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_136">Terminal_Name</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>termname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_137">Terminal_Name</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>top_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_4">Top</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>top_row()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_16">Top_Row</A></TD><TD><A HREF="man/mitem_current.3x.html">mitem_current.3x</A></TD></TR>
+<TR><TD>touchline()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_73">Touch</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>touchwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_72">Touch</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>unctrl()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_124">Un_Control</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>unctrl()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_125">Un_Control</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>ungetch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_29">Undo_Keystroke</A></TD><TD><A HREF="man/curs_getch.3x.html">curs_getch.3x</A></TD></TR>
+<TR><TD>ungetmouse()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_3">Unget_Mouse</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>untouchwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_71">Untouch</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>update_panels()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_6">Update_Panels</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>waddch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_7">Add</A></TD><TD><A HREF="man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
+<TR><TD>waddchnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_22">Add</A></TD><TD><A HREF="man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
+<TR><TD>waddnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_20">Add</A></TD><TD><A HREF="man/curs_addstr.3x.html">curs_addstr.3x</A></TD></TR>
+<TR><TD>wattr_get()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_33">Get_Character_Attributes</A></TD><TD><A HREF="man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>wattr_get()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_34">Get_Character_Attribute</A></TD><TD><A HREF="man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>wattron()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_31">Switch_Character_Attribute</A></TD><TD><A HREF="man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>wattrset()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_32">Set_Character_Attributes</A></TD><TD><A HREF="man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>wbkgd()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_69">Change_Background</A></TD><TD><A HREF="man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
+<TR><TD>wbkgdget()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_70">Get_Background</A></TD><TD><A HREF="man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
+<TR><TD>wbkgdset()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_68">Set_Background</A></TD><TD><A HREF="man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
+<TR><TD>wborder()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_24">Border</A></TD><TD><A HREF="man/curs_border.3x.html">curs_border.3x</A></TD></TR>
+<TR><TD>wchgat()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_36">Change_Attributes</A></TD><TD><A HREF="man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>wclear()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_65">Clear</A></TD><TD><A HREF="man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
+<TR><TD>wclrtobot()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_66">Clear_To_End_Of_Screen</A></TD><TD><A HREF="man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
+<TR><TD>wclrtoeol()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_67">Clear_To_End_Of_Line</A></TD><TD><A HREF="man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
+<TR><TD>wcolor_set()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_35">Set_Color</A></TD><TD><A HREF="man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>wdelch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_93">Delete_Character</A></TD><TD><A HREF="man/curs_delch.3x.html">curs_delch.3x</A></TD></TR>
+<TR><TD>wdeleteln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_81">Delete_Line</A></TD><TD><A HREF="man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
+<TR><TD>wechochar()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_9">Add_With_Immediate_Echo</A></TD><TD><A HREF="man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
+<TR><TD>wenclose()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_4">Enclosed_In_Window</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>werase()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_64">Erase</A></TD><TD><A HREF="man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
+<TR><TD>wgetch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_28">Get_Keystroke</A></TD><TD><A HREF="man/curs_getch.3x.html">curs_getch.3x</A></TD></TR>
+<TR><TD>wgetnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_105">Get</A></TD><TD><A HREF="man/curs_getstr.3x.html">curs_getstr.3x</A></TD></TR>
+<TR><TD>whline()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_26">Horizontal_Line</A></TD><TD><A HREF="man/curs_border.3x.html">curs_border.3x</A></TD></TR>
+<TR><TD>winch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_95">Peek</A></TD><TD><A HREF="man/curs_inch.3x.html">curs_inch.3x</A></TD></TR>
+<TR><TD>winchnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_103">Peek</A></TD><TD><A HREF="man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
+<TR><TD>winnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_101">Peek</A></TD><TD><A HREF="man/curs_instr.3x.html">curs_instr.3x</A></TD></TR>
+<TR><TD>winsch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_97">Insert</A></TD><TD><A HREF="man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
+<TR><TD>winsdelln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_80">Insert_Delete_Lines</A></TD><TD><A HREF="man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
+<TR><TD>winsertln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_82">Insert_Line</A></TD><TD><A HREF="man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
+<TR><TD>winsnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_99">Insert</A></TD><TD><A HREF="man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
+<TR><TD>wmove()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_6">Move_Cursor</A></TD><TD><A HREF="man/curs_move.3x.html">curs_move.3x</A></TD></TR>
+<TR><TD>wnoutrefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_61">Refresh_Without_Update</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>wredrawln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_63">Redraw</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>wrefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_60">Refresh</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>wscrl()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_92">Scroll</A></TD><TD><A HREF="man/curs_scroll.3x.html">curs_scroll.3x</A></TD></TR>
+<TR><TD>wsetscrreg()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_58">Set_Scroll_Region</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>wsyncdown()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_18">Synchronize_Downwards</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>wsyncup()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_17">Synchronize_Upwards</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>wtimeout()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_49">Set_Timeout_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>wtouchln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_74">Change_Line_Status</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>wvline()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_27">Vertical_Line</A></TD><TD><A HREF="man/curs_border.3x.html">curs_border.3x</A></TD></TR>
 </TABLE></BODY></HTML>
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-alpha_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-alpha_s.html
deleted file mode 100644 (file)
index 8487da9..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--              Terminal_Interface.Curses.Forms.Field_Types.Alpha           --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.Alpha <B>is</B>
-
-   type Alpha_Field <B>is</B> <B>new</B> Field_Type
-     <B>with</B> <B>record</B>
-        Minimum_Field_Width : Natural := 0;
-     <B>end</B> <B>record</B>;
-
-   <B>procedure</B> Set_Field_Type (Fld : <B>in</B> Field;
-                             Typ : <B>in</B> Alpha_Field);
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.Alpha;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-alphanumeric_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-alphanumeric_s.html
deleted file mode 100644 (file)
index 48aaeaa..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--          Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric        --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric <B>is</B>
-
-   type AlphaNumeric_Field <B>is</B> <B>new</B> Field_Type
-     <B>with</B> <B>record</B>
-        Minimum_Field_Width : Natural := 0;
-     <B>end</B> <B>record</B>;
-
-   <B>procedure</B> Set_Field_Type (Fld : <B>in</B> Field;
-                             Typ : <B>in</B> AlphaNumeric_Field);
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-enumeration-ada_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-enumeration-ada_s.html
deleted file mode 100644 (file)
index 4be75b7..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--         Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada      --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>generic</B>
-   type T <B>is</B> (&lt;&gt;);
-
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada <B>is</B>
-
-   <B>function</B> Create (Set            : Type_Set := Mixed_Case;
-                    Case_Sensitive : Boolean  := False;
-                    Must_Be_Unique : Boolean  := False)
-                    <B>return</B> Enumeration_Field;
-
-   <B>function</B> Value (Fld : Field;
-                   Buf : Buffer_Number := Buffer_Number'First) <B>return</B> T;
-   <I>--  Translate the content of the fields buffer - indicated by the</I>
-   <I>--  buffer number - into an enumeration value. If the buffer is empty</I>
-   <I>--  or the content is invalid, a Constraint_Error is raises.</I>
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-enumeration_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-enumeration_s.html
deleted file mode 100644 (file)
index d72b2a0..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--           Terminal_Interface.Curses.Forms.Field_Types.Enumeration        --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>with</B> Interfaces.C.Strings;
-
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.Enumeration <B>is</B>
-
-   type String_Access <B>is</B> <B>access</B> String;
-
-   <I>--  Type_Set is used by the child package Ada</I>
-   type Type_Set <B>is</B> (Lower_Case, Upper_Case, Mixed_Case);
-
-   type Enum_Array <B>is</B> <B>array</B> (Positive <B>range</B> &lt;&gt;)
-     <B>of</B> String_Access;
-
-   type Enumeration_Info (C : Positive) <B>is</B>
-      <B>record</B>
-         Names                : Enum_Array (1 .. C);
-         Case_Sensitive       : Boolean := False;
-         Match_Must_Be_Unique : Boolean := False;
-      <B>end</B> <B>record</B>;
-
-   type Enumeration_Field <B>is</B> <B>new</B> Field_Type <B>with</B> <B>private</B>;
-
-   <B>function</B> Create (Info : Enumeration_Info;
-                    Auto_Release_Names : Boolean := False)
-                    <B>return</B> Enumeration_Field;
-   <I>--  Make an fieldtype from the info. Enumerations are special, because</I>
-   <I>--  they normally don't copy the enum values into a private store, so</I>
-   <I>--  we have to care for the lifetime of the info we provide.</I>
-   <I>--  The Auto_Release_Names flag may be used to automatically releases</I>
-   <I>--  the strings in the Names array of the Enumeration_Info.</I>
-
-   <B>function</B> Make_Enumeration_Type (Info : Enumeration_Info;
-                                   Auto_Release_Names : Boolean := False)
-                                   <B>return</B> Enumeration_Field <B>renames</B> Create;
-
-   <B>procedure</B> Release (Enum : <B>in</B> <B>out</B> Enumeration_Field);
-   <I>--  But we may want to release the field to release the memory allocated</I>
-   <I>--  by it internally. After that the Enumeration field is no longer usable.</I>
-
-   <I>--  The next type defintions are all ncurses extensions. They are typically</I>
-   <I>--  not available in other curses implementations.</I>
-
-   <B>procedure</B> Set_Field_Type (Fld : <B>in</B> Field;
-                             Typ : <B>in</B> Enumeration_Field);
-
-<B>private</B>
-   type CPA_Access <B>is</B> <B>access</B> Interfaces.C.Strings.chars_ptr_array;
-
-   type Enumeration_Field <B>is</B> <B>new</B> Field_Type <B>with</B>
-      <B>record</B>
-         Case_Sensitive       : Boolean := False;
-         Match_Must_Be_Unique : Boolean := False;
-         Arr                  : CPA_Access := <B>null</B>;
-      <B>end</B> <B>record</B>;
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-intfield_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-intfield_s.html
deleted file mode 100644 (file)
index 6a556c7..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--            Terminal_Interface.Curses.Forms.Field_Types.IntField          --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.IntField <B>is</B>
-
-   type Integer_Field <B>is</B> <B>new</B> Field_Type <B>with</B>
-      <B>record</B>
-         Precision   : Natural;
-         Lower_Limit : Integer;
-         Upper_Limit : Integer;
-      <B>end</B> <B>record</B>;
-
-   <B>procedure</B> Set_Field_Type (Fld : <B>in</B> Field;
-                             Typ : <B>in</B> Integer_Field);
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.IntField;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-ipv4_address_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-ipv4_address_s.html
deleted file mode 100644 (file)
index a893871..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--          Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address        --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address <B>is</B>
-
-   type Internet_V4_Address_Field <B>is</B> <B>new</B> Field_Type <B>with</B> <B>null</B> <B>record</B>;
-
-   <B>procedure</B> Set_Field_Type (Fld : <B>in</B> Field;
-                             Typ : <B>in</B> Internet_V4_Address_Field);
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-numeric_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-numeric_s.html
deleted file mode 100644 (file)
index c916442..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--             Terminal_Interface.Curses.Forms.Field_Types.Numeric          --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.Numeric <B>is</B>
-
-   type Numeric_Field <B>is</B> <B>new</B> Field_Type <B>with</B>
-      <B>record</B>
-         Precision   : Natural;
-         Lower_Limit : Float;
-         Upper_Limit : Float;
-      <B>end</B> <B>record</B>;
-
-   <B>procedure</B> Set_Field_Type (Fld : <B>in</B> Field;
-                             Typ : <B>in</B> Numeric_Field);
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.Numeric;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-regexp_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-regexp_s.html
deleted file mode 100644 (file)
index eb197a2..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--              Terminal_Interface.Curses.Forms.Field_Types.RegExp          --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.RegExp <B>is</B>
-
-   type String_Access <B>is</B> <B>access</B> String;
-
-   type Regular_Expression_Field <B>is</B> <B>new</B> Field_Type <B>with</B>
-      <B>record</B>
-         Regular_Expression : String_Access;
-      <B>end</B> <B>record</B>;
-
-   <B>procedure</B> Set_Field_Type (Fld : <B>in</B> Field;
-                             Typ : <B>in</B> Regular_Expression_Field);
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.RegExp;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-user-choice_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-user-choice_s.html
deleted file mode 100644 (file)
index 3efb8a0..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--           Terminal_Interface.Curses.Forms.Field_Types.User.Choice        --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>with</B> Ada.Unchecked_Deallocation;
-<B>with</B> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-aux_s.html#32:35">Aux</A>;
-
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.User.Choice <B>is</B>
-
-   type User_Defined_Field_Type_With_Choice <B>is</B> <B>abstract</B> <B>new</B>
-     User_Defined_Field_Type <B>with</B> <B>null</B> <B>record</B>;
-   <I>--  This is the root of the mechanism we use to create field types in</I>
-   <I>--  Ada95 that allow the prev/next mechanism. You should your own type</I>
-   <I>--  derive from this one and implement the Field_Check, Character_Check</I>
-   <I>--  Next and Previous functions for your own type.</I>
-
-   type User_Defined_Field_Type_With_Choice_Access <B>is</B> <B>access</B> <B>all</B>
-     User_Defined_Field_Type_With_Choice'Class;
-
-   <B>function</B> Next
-     (Fld : Field;
-      Typ : User_Defined_Field_Type_With_Choice) <B>return</B> Boolean
-      <B>is</B> <B>abstract</B>;
-   <I>--  If True is returned, the function successfully generated a next</I>
-   <I>--  value into the fields buffer.</I>
-
-   <B>function</B> Previous
-     (Fld : Field;
-      Typ : User_Defined_Field_Type_With_Choice) <B>return</B> Boolean
-      <B>is</B> <B>abstract</B>;
-   <I>--  If True is returned, the function successfully generated a previous</I>
-   <I>--  value into the fields buffer.</I>
-
-   <I>--  +----------------------------------------------------------------------</I>
-   <I>--  | Private Part.</I>
-   <I>--  |</I>
-<B>private</B>
-   <B>use</B> type Interfaces.C.Int;
-
-   <B>function</B> Generic_Next (Fld : Field;
-                          Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Generic_Next);
-   <I>--  This is the generic next Choice_Function for the low-level fieldtype</I>
-   <I>--  representing all the User_Defined_Field_Type derivates. It routes</I>
-   <I>--  the call to the Next implementation for the type.</I>
-
-   <B>function</B> Generic_Prev (Fld : Field;
-                          Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Generic_Prev);
-   <I>--  This is the generic prev Choice_Function for the low-level fieldtype</I>
-   <I>--  representing all the User_Defined_Field_Type derivates. It routes</I>
-   <I>--  the call to the Previous implementation for the type.</I>
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types-user_s.html b/Ada95/html/terminal_interface-curses-forms-field_types-user_s.html
deleted file mode 100644 (file)
index df4346e..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--               Terminal_Interface.Curses.Forms.Field_Types.User           --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>with</B> Ada.Unchecked_Deallocation;
-<B>with</B> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-aux_s.html#32:35">Aux</A>;
-
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types.User <B>is</B>
-
-   type User_Defined_Field_Type <B>is</B> <B>abstract</B> <B>new</B> Field_Type <B>with</B> <B>null</B> <B>record</B>;
-   <I>--  This is the root of the mechanism we use to create field types in</I>
-   <I>--  Ada95. You should your own type derive from this one and implement</I>
-   <I>--  the Field_Check and Character_Check functions for your own type.</I>
-
-   type User_Defined_Field_Type_Access <B>is</B> <B>access</B> <B>all</B>
-     User_Defined_Field_Type'Class;
-
-   <B>function</B> Field_Check
-     (Fld : Field;
-      Typ : User_Defined_Field_Type) <B>return</B> Boolean
-      <B>is</B> <B>abstract</B>;
-   <I>--  If True is returned, the field is considered valid, otherwise it is</I>
-   <I>--  invalid.</I>
-
-   <B>function</B> Character_Check
-     (Ch  : Character;
-      Typ : User_Defined_Field_Type) <B>return</B> Boolean
-      <B>is</B> <B>abstract</B>;
-   <I>--  If True is returned, the character is considered as valid for the</I>
-   <I>--  field, otherwise as invalid.</I>
-
-   <B>procedure</B> Set_Field_Type (Fld : <B>in</B> Field;
-                             Typ : <B>in</B> User_Defined_Field_Type);
-   <I>--  This should work for all types derived from User_Defined_Field_Type.</I>
-   <I>--  No need to reimplement it for your derived type.</I>
-
-   <I>--  +----------------------------------------------------------------------</I>
-   <I>--  | Private Part.</I>
-   <I>--  | Used by the Choice child package.</I>
-<B>private</B>
-   <B>use</B> type Interfaces.C.Int;
-
-   <B>function</B> Generic_Field_Check (Fld : Field;
-                                 Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Generic_Field_Check);
-   <I>--  This is the generic Field_Check_Function for the low-level fieldtype</I>
-   <I>--  representing all the User_Defined_Field_Type derivates. It routes</I>
-   <I>--  the call to the Field_Check implementation for the type.</I>
-
-   <B>function</B> Generic_Char_Check (Ch  : <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-                                Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Generic_Char_Check);
-   <I>--  This is the generic Char_Check_Function for the low-level fieldtype</I>
-   <I>--  representing all the User_Defined_Field_Type derivates. It routes</I>
-   <I>--  the call to the Character_Check implementation for the type.</I>
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types.User;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_types_s.html b/Ada95/html/terminal_interface-curses-forms-field_types_s.html
deleted file mode 100644 (file)
index 89f8a85..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                 Terminal_Interface.Curses.Forms.Field_Types              --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.1 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>with</B> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-aux_s.html#32:35">Aux</A>;
-
-<B>package</B> Terminal_Interface.Curses.Forms.Field_Types <B>is</B>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_fieldtype.3x.html">form_fieldtype.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   type Field_Type <B>is</B> <B>abstract</B> <B>tagged</B> <B>null</B> <B>record</B>;
-   <I>--  Abstract base type for all field types. A concrete field type</I>
-   <I>--  is an extension that adds some data elements describing formats or</I>
-   <I>--  boundary values for the type and validation routines.</I>
-   <I>--  For the builtin low-level fieldtypes, the validation routines are</I>
-   <I>--  already defined by the low-level C library.</I>
-   <I>--  The builtin types like Alpha or AlphaNumeric etc. are defined in</I>
-   <I>--  child packages of this package. You may use one of them as example</I>
-   <I>--  how to create you own child packages for low-level field types that</I>
-   <I>--  you may have already written in C.</I>
-
-   type Field_Type_Access <B>is</B> <B>access</B> <B>all</B> Field_Type'Class;
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>procedure</B> Set_Field_Type (Fld      : <B>in</B> Field;
-                             Fld_Type : <B>in</B> Field_Type) <B>is</B> <B>abstract</B>;
-   <I>--  AKA: <A HREF="form_fieldtype.3x.html">set_field_type()</A></I>
-   <I>--  But: we hide the vararg mechanism of the C interface. You always</I>
-   <I>--       have to pass a single Field_Type parameter.</I>
-
-   <I>--  ---------------------------------------------------------------------</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field_validation.3x.html">form_field_validation.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>function</B> Get_Type (Fld : <B>in</B> Field) <B>return</B> Field_Type_Access;
-   <I>--  AKA: <A HREF="form_field_validation.3x.html">field_type()</A></I>
-   <I>--  AKA: field_arg()</I>
-   <I>--  In Ada95 we can combine these. If you try to retrieve the field type</I>
-   <I>--  that is not defined as extension of the abstract tagged type above,</I>
-   <I>--  you will raise a Form_Exception.</I>
-
-   <I>--  +----------------------------------------------------------------------</I>
-   <I>--  | Private Part.</I>
-   <I>--  | Most of this is used by the implementations of the child packages.</I>
-   <I>--  |</I>
-<B>private</B>
-   <B>use</B> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-aux_s.html#32:35">Aux</A>;
-
-   type Makearg_Function <B>is</B> <B>access</B>
-     <B>function</B> (Args : System.Address) <B>return</B> System.Address;
-   <B>pragma</B> Convention (C, Makearg_Function);
-
-   type Copyarg_Function <B>is</B> <B>access</B>
-     <B>function</B> (Usr : System.Address) <B>return</B> System.Address;
-   <B>pragma</B> Convention (C, Copyarg_Function);
-
-   type Freearg_Function <B>is</B> <B>access</B>
-     <B>procedure</B> (Usr : System.Address);
-   <B>pragma</B> Convention (C, Freearg_Function);
-
-   type Field_Check_Function <B>is</B> <B>access</B>
-     <B>function</B> (Fld : Field; Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Field_Check_Function);
-
-   type Char_Check_Function <B>is</B> <B>access</B>
-     <B>function</B> (Ch : <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>; Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Char_Check_Function);
-
-   type Choice_Function <B>is</B> <B>access</B>
-     <B>function</B> (Fld : Field; Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Choice_Function);
-
-   <I>--  +----------------------------------------------------------------------</I>
-   <I>--  | This must be in sync with the FIELDTYPE structure in form.h</I>
-   <I>--  |</I>
-   type Low_Level_Field_Type <B>is</B>
-      <B>record</B>
-         Status :              <A HREF="terminal_interface-curses-aux_s.html#37:12">C_Short</A>;
-         Ref_Count :           <A HREF="terminal_interface-curses-aux_s.html#38:12">C_Long_Int</A>;
-         Left, Right :         System.Address;
-         Makearg :             Makearg_Function;
-         Copyarg :             Copyarg_Function;
-         Freearg :             Freearg_Function;
-         Fcheck :              Field_Check_Function;
-         Ccheck :              Char_Check_Function;
-         Next, Prev :          Choice_Function;
-      <B>end</B> <B>record</B>;
-   <B>pragma</B> Convention (C, Low_Level_Field_Type);
-   type C_Field_Type <B>is</B> <B>access</B> <B>all</B> Low_Level_Field_Type;
-
-   Null_Field_Type   : <B>constant</B> C_Field_Type := <B>null</B>;
-
-   <I>--  +----------------------------------------------------------------------</I>
-   <I>--  | This four low-level fieldtypes are the ones associated with</I>
-   <I>--  | fieldtypes handled by this binding. Any other low-level fieldtype</I>
-   <I>--  | will result in a Form_Exception is function Get_Type.</I>
-   <I>--  |</I>
-   C_Generic_Type   : C_Field_Type := Null_Field_Type;
-   C_Generic_Choice : C_Field_Type := Null_Field_Type;
-   C_Builtin_Router : C_Field_Type := Null_Field_Type;
-   C_Choice_Router  : C_Field_Type := Null_Field_Type;
-
-   <B>procedure</B> Wrap_Builtin (Fld : Field;
-                           Typ : Field_Type'Class;
-                           Cft : C_Field_Type := C_Builtin_Router);
-   <I>--  This procedure has to be called by the Set_Field_Type implementation</I>
-   <I>--  for builtin low-level fieldtypes to replace it by an Ada95</I>
-   <I>--  conformant Field_Type object.</I>
-   <I>--  The parameter Cft must be C_Builtin_Router for regular low-level</I>
-   <I>--  fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for</I>
-   <I>--  low-level fieldtypes witch choice functions (like TYP_ENUM).</I>
-   <I>--  Any other value will raise a Form_Exception.</I>
-
-   <B>function</B> Make_Arg (Args : System.Address) <B>return</B> System.Address;
-   <B>pragma</B> Convention (C, Make_Arg);
-   <I>--  This is the Makearg_Function for the internal low-level types</I>
-   <I>--  introduced by this binding.</I>
-
-   <B>function</B> Copy_Arg (Usr : System.Address) <B>return</B> System.Address;
-   <B>pragma</B> Convention (C, Copy_Arg);
-   <I>--  This is the Copyarg_Function for the internal low-level types</I>
-   <I>--  introduced by this binding.</I>
-
-   <B>procedure</B> Free_Arg (Usr : System.Address);
-   <B>pragma</B> Convention (C, Free_Arg);
-   <I>--  This is the Freearg_Function for the internal low-level types</I>
-   <I>--  introduced by this binding.</I>
-
-   <B>function</B> Field_Check_Router (Fld : Field;
-                                Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Field_Check_Router);
-   <I>--  This is the Field_Check_Function for the internal low-level types</I>
-   <I>--  introduced to wrap the low-level types by a Field_Type derived</I>
-   <I>--  type. It routes the call to the corresponding low-level validation</I>
-   <I>--  function.</I>
-
-   <B>function</B> Char_Check_Router (Ch : <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-                               Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Char_Check_Router);
-   <I>--  This is the Char_Check_Function for the internal low-level types</I>
-   <I>--  introduced to wrap the low-level types by a Field_Type derived</I>
-   <I>--  type. It routes the call to the corresponding low-level validation</I>
-   <I>--  function.</I>
-
-   <B>function</B> Next_Router (Fld : Field;
-                         Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Next_Router);
-   <I>--  This is the Choice_Function for the internal low-level types</I>
-   <I>--  introduced to wrap the low-level types by a Field_Type derived</I>
-   <I>--  type. It routes the call to the corresponding low-level next_choice</I>
-   <I>--  function.</I>
-
-   <B>function</B> Prev_Router (Fld : Field;
-                         Usr : System.Address) <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Convention (C, Prev_Router);
-   <I>--  This is the Choice_Function for the internal low-level types</I>
-   <I>--  introduced to wrap the low-level types by a Field_Type derived</I>
-   <I>--  type. It routes the call to the corresponding low-level prev_choice</I>
-   <I>--  function.</I>
-
-   <I>--  This is the Argument structure maintained by all low-level field types</I>
-   <I>--  introduced by this binding.</I>
-   type Argument <B>is</B> <B>record</B>
-      Typ : Field_Type_Access;   <I>--  the Field_Type creating this record</I>
-      Usr : System.Address;      <I>--  original arg for builtin low-level types</I>
-      Cft : C_Field_Type;        <I>--  the original low-level type</I>
-   <B>end</B> <B>record</B>;
-   type Argument_Access <B>is</B> <B>access</B> <B>all</B> Argument;
-
-   <I>--  +----------------------------------------------------------------------</I>
-   <I>--  |</I>
-   <I>--  | Some Imports of libform routines to deal with low-level fieldtypes.</I>
-   <I>--  |</I>
-   <B>function</B> New_Fieldtype (Fcheck : Field_Check_Function;
-                           Ccheck : Char_Check_Function)
-     <B>return</B> C_Field_Type;
-   <B>pragma</B> Import (C, New_Fieldtype, "new_fieldtype");
-
-   <B>function</B> Set_Fieldtype_Arg (Cft : C_Field_Type;
-                               Mak : Makearg_Function := Make_Arg'<B>Access</B>;
-                               Cop : Copyarg_Function := Copy_Arg'<B>Access</B>;
-                               Fre : Freearg_Function := Free_Arg'<B>Access</B>)
-     <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
-
-   <B>function</B> Set_Fieldtype_Choice (Cft : C_Field_Type;
-                                  Next, Prev : Choice_Function)
-     <B>return</B> <A HREF="terminal_interface-curses-aux_s.html#36:12">C_Int</A>;
-   <B>pragma</B> Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_Types;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-field_user_data_s.html b/Ada95/html/terminal_interface-curses-forms-field_user_data_s.html
deleted file mode 100644 (file)
index 16c28b0..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--               Terminal_Interface.Curses.Forms.Field_User_Data            --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.4 @</I>
-<I>------------------------------------------------------------------------------</I>
-
-<B>generic</B>
-   type User <B>is</B> <B>limited</B> <B>private</B>;
-   type User_Access <B>is</B> <B>access</B> User;
-<B>package</B> Terminal_Interface.Curses.Forms.Field_User_Data <B>is</B>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field_userptr.3x.html">form_field_userptr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>procedure</B> Set_User_Data (Fld  : <B>in</B> Field;
-                            Data : <B>in</B> User_Access);
-   <I>--  AKA: <A HREF="form_field_userptr.3x.html">set_field_userptr</A></I>
-   <B>pragma</B> Inline (Set_User_Data);
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>procedure</B> Get_User_Data (Fld  : <B>in</B>  Field;
-                            Data : <B>out</B> User_Access);
-   <I>--  AKA: <A HREF="form_field_userptr.3x.html">field_userptr</A></I>
-   <B>pragma</B> Inline (Get_User_Data);
-
-<B>end</B> Terminal_Interface.Curses.Forms.Field_User_Data;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms-form_user_data_s.html b/Ada95/html/terminal_interface-curses-forms-form_user_data_s.html
deleted file mode 100644 (file)
index 0478e86..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                Terminal_Interface.Curses.Forms.Form_User_Data            --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.4 @</I>
-<I>------------------------------------------------------------------------------</I>
-
-<B>generic</B>
-   type User <B>is</B> <B>limited</B> <B>private</B>;
-   type User_Access <B>is</B> <B>access</B> User;
-<B>package</B> Terminal_Interface.Curses.Forms.Form_User_Data <B>is</B>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_userptr.3x.html">form_userptr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>procedure</B> Set_User_Data (Frm  : <B>in</B> Form;
-                            Data : <B>in</B> User_Access);
-   <I>--  AKA: <A HREF="form_userptr.3x.html">set_form_userptr</A></I>
-   <B>pragma</B> Inline (Set_User_Data);
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>procedure</B> Get_User_Data (Frm  : <B>in</B>  Form;
-                            Data : <B>out</B> User_Access);
-   <I>--  AKA: <A HREF="form_userptr.3x.html">form_userptr</A></I>
-   <B>pragma</B> Inline (Get_User_Data);
-
-<B>end</B> Terminal_Interface.Curses.Forms.Form_User_Data;
-
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-forms_s.html b/Ada95/html/terminal_interface-curses-forms_s.html
deleted file mode 100644 (file)
index 1f0302b..0000000
+++ /dev/null
@@ -1,742 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                      Terminal_Interface.Curses.Form                      --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.10 @</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  form binding.</I>
-<I>--  This module is generated. Please don't change it manually!</I>
-<I>--  Run the generator instead.</I>
-<I>--  |</I>
-<B>with</B> System;
-<B>with</B> Ada.Characters.Latin_1;
-<B>with</B> Interfaces.C;
-
-<B>package</B> Terminal_Interface.Curses.Forms <B>is</B>
-
-   <B>pragma</B> Linker_Options ("-lform");
-
-
-   Space : Character <B>renames</B> Ada.Characters.Latin_1.Space;
-
-   type Field        <B>is</B> <B>private</B>;
-   type Form         <B>is</B> <B>private</B>;
-
-   Null_Field        : <B>constant</B> Field;
-   Null_Form         : <B>constant</B> Form;
-
-   type Field_Justification <B>is</B> (None,
-                                Left,
-                                Center,
-                                Right);
-
-   type Field_Option_Set <B>is</B>
-      <B>record</B>
-         Visible   : Boolean;
-         Active    : Boolean;
-         Public    : Boolean;
-         Edit      : Boolean;
-         Wrap      : Boolean;
-         Blank     : Boolean;
-         Auto_Skip : Boolean;
-         Null_Ok   : Boolean;
-         Pass_Ok   : Boolean;
-         Static    : Boolean;
-         Reserved  : Boolean;
-      <B>end</B> <B>record</B>;
-   <B>pragma</B> Pack (Field_Option_Set);
-   <B>pragma</B> Convention (C, Field_Option_Set);
-
-   <B>for</B> Field_Option_Set <B>use</B>
-      <B>record</B>
-         Visible   <B>at</B> 0 <B>range</B>  0 ..  0;
-         Active    <B>at</B> 0 <B>range</B>  1 ..  1;
-         Public    <B>at</B> 0 <B>range</B>  2 ..  2;
-         Edit      <B>at</B> 0 <B>range</B>  3 ..  3;
-         Wrap      <B>at</B> 0 <B>range</B>  4 ..  4;
-         Blank     <B>at</B> 0 <B>range</B>  5 ..  5;
-         Auto_Skip <B>at</B> 0 <B>range</B>  6 ..  6;
-         Null_Ok   <B>at</B> 0 <B>range</B>  7 ..  7;
-         Pass_Ok   <B>at</B> 0 <B>range</B>  8 ..  8;
-         Static    <B>at</B> 0 <B>range</B>  9 ..  9;
-         Reserved  <B>at</B> 0 <B>range</B> 31 .. 31;
-      <B>end</B> <B>record</B>;
-   <B>for</B> Field_Option_Set'Size <B>use</B> Interfaces.C.int'Size;
-   <I>--  Please note: this rep. clause is generated and may be</I>
-   <I>--               different on your system.</I>
-
-   Default_Field_Options : Field_Option_Set;
-   <I>--  The initial defaults for the field options.</I>
-
-   type Form_Option_Set <B>is</B>
-      <B>record</B>
-         NL_Overload : Boolean;
-         BS_Overload : Boolean;
-         Reserved    : Boolean;
-      <B>end</B> <B>record</B>;
-   <B>pragma</B> Pack (Form_Option_Set);
-   <B>pragma</B> Convention (C, Form_Option_Set);
-
-   <B>for</B> Form_Option_Set <B>use</B>
-      <B>record</B>
-         NL_Overload <B>at</B> 0 <B>range</B>  0 ..  0;
-         BS_Overload <B>at</B> 0 <B>range</B>  1 ..  1;
-         Reserved    <B>at</B> 0 <B>range</B> 31 .. 31;
-      <B>end</B> <B>record</B>;
-   <B>for</B> Form_Option_Set'Size <B>use</B> Interfaces.C.int'Size;
-   <I>--  Please note: this rep. clause is generated and may be</I>
-   <I>--               different on your system.</I>
-
-   Default_Form_Options : Form_Option_Set;
-   <I>--  The initial defaults for the form options.</I>
-
-   type Buffer_Number <B>is</B> <B>new</B> Natural;
-
-   type Field_Array <B>is</B> <B>array</B> (Positive <B>range</B> &lt;&gt;) <B>of</B> <B>aliased</B> Field;
-   <B>pragma</B> Convention (C, Field_Array);
-
-   type Field_Array_Access <B>is</B> <B>access</B> Field_Array;
-
-   <B>procedure</B> Free (FA          : <B>in</B> <B>out</B> Field_Array_Access;
-                   Free_Fields : <B>in</B> Boolean := False);
-   <I>--  Release the memory for an allocated field array</I>
-   <I>--  If Free_Fields is True, call Delete() for all the fields in</I>
-   <I>--  the array.</I>
-
-   <B>subtype</B> Form_Request_Code <B>is</B> Key_Code <B>range</B> (Key_Max + 1) .. (Key_Max + 57);
-
-   <I>--  The prefix F_ stands for "Form Request"</I>
-   F_Next_Page                : <B>constant</B> Form_Request_Code := Key_Max + 1;
-   F_Previous_Page            : <B>constant</B> Form_Request_Code := Key_Max + 2;
-   F_First_Page               : <B>constant</B> Form_Request_Code := Key_Max + 3;
-   F_Last_Page                : <B>constant</B> Form_Request_Code := Key_Max + 4;
-
-   F_Next_Field               : <B>constant</B> Form_Request_Code := Key_Max + 5;
-   F_Previous_Field           : <B>constant</B> Form_Request_Code := Key_Max + 6;
-   F_First_Field              : <B>constant</B> Form_Request_Code := Key_Max + 7;
-   F_Last_Field               : <B>constant</B> Form_Request_Code := Key_Max + 8;
-   F_Sorted_Next_Field        : <B>constant</B> Form_Request_Code := Key_Max + 9;
-   F_Sorted_Previous_Field    : <B>constant</B> Form_Request_Code := Key_Max + 10;
-   F_Sorted_First_Field       : <B>constant</B> Form_Request_Code := Key_Max + 11;
-   F_Sorted_Last_Field        : <B>constant</B> Form_Request_Code := Key_Max + 12;
-   F_Left_Field               : <B>constant</B> Form_Request_Code := Key_Max + 13;
-   F_Right_Field              : <B>constant</B> Form_Request_Code := Key_Max + 14;
-   F_Up_Field                 : <B>constant</B> Form_Request_Code := Key_Max + 15;
-   F_Down_Field               : <B>constant</B> Form_Request_Code := Key_Max + 16;
-
-   F_Next_Char                : <B>constant</B> Form_Request_Code := Key_Max + 17;
-   F_Previous_Char            : <B>constant</B> Form_Request_Code := Key_Max + 18;
-   F_Next_Line                : <B>constant</B> Form_Request_Code := Key_Max + 19;
-   F_Previous_Line            : <B>constant</B> Form_Request_Code := Key_Max + 20;
-   F_Next_Word                : <B>constant</B> Form_Request_Code := Key_Max + 21;
-   F_Previous_Word            : <B>constant</B> Form_Request_Code := Key_Max + 22;
-   F_Begin_Field              : <B>constant</B> Form_Request_Code := Key_Max + 23;
-   F_End_Field                : <B>constant</B> Form_Request_Code := Key_Max + 24;
-   F_Begin_Line               : <B>constant</B> Form_Request_Code := Key_Max + 25;
-   F_End_Line                 : <B>constant</B> Form_Request_Code := Key_Max + 26;
-   F_Left_Char                : <B>constant</B> Form_Request_Code := Key_Max + 27;
-   F_Right_Char               : <B>constant</B> Form_Request_Code := Key_Max + 28;
-   F_Up_Char                  : <B>constant</B> Form_Request_Code := Key_Max + 29;
-   F_Down_Char                : <B>constant</B> Form_Request_Code := Key_Max + 30;
-
-   F_New_Line                 : <B>constant</B> Form_Request_Code := Key_Max + 31;
-   F_Insert_Char              : <B>constant</B> Form_Request_Code := Key_Max + 32;
-   F_Insert_Line              : <B>constant</B> Form_Request_Code := Key_Max + 33;
-   F_Delete_Char              : <B>constant</B> Form_Request_Code := Key_Max + 34;
-   F_Delete_Previous          : <B>constant</B> Form_Request_Code := Key_Max + 35;
-   F_Delete_Line              : <B>constant</B> Form_Request_Code := Key_Max + 36;
-   F_Delete_Word              : <B>constant</B> Form_Request_Code := Key_Max + 37;
-   F_Clear_EOL                : <B>constant</B> Form_Request_Code := Key_Max + 38;
-   F_Clear_EOF                : <B>constant</B> Form_Request_Code := Key_Max + 39;
-   F_Clear_Field              : <B>constant</B> Form_Request_Code := Key_Max + 40;
-   F_Overlay_Mode             : <B>constant</B> Form_Request_Code := Key_Max + 41;
-   F_Insert_Mode              : <B>constant</B> Form_Request_Code := Key_Max + 42;
-
-   <I>--  Vertical Scrolling</I>
-   F_ScrollForward_Line       : <B>constant</B> Form_Request_Code := Key_Max + 43;
-   F_ScrollBackward_Line      : <B>constant</B> Form_Request_Code := Key_Max + 44;
-   F_ScrollForward_Page       : <B>constant</B> Form_Request_Code := Key_Max + 45;
-   F_ScrollBackward_Page      : <B>constant</B> Form_Request_Code := Key_Max + 46;
-   F_ScrollForward_HalfPage   : <B>constant</B> Form_Request_Code := Key_Max + 47;
-   F_ScrollBackward_HalfPage  : <B>constant</B> Form_Request_Code := Key_Max + 48;
-
-   <I>--  Horizontal Scrolling</I>
-   F_HScrollForward_Char      : <B>constant</B> Form_Request_Code := Key_Max + 49;
-   F_HScrollBackward_Char     : <B>constant</B> Form_Request_Code := Key_Max + 50;
-   F_HScrollForward_Line      : <B>constant</B> Form_Request_Code := Key_Max + 51;
-   F_HScrollBackward_Line     : <B>constant</B> Form_Request_Code := Key_Max + 52;
-   F_HScrollForward_HalfLine  : <B>constant</B> Form_Request_Code := Key_Max + 53;
-   F_HScrollBackward_HalfLine : <B>constant</B> Form_Request_Code := Key_Max + 54;
-
-   F_Validate_Field           : <B>constant</B> Form_Request_Code := Key_Max + 55;
-   F_Next_Choice              : <B>constant</B> Form_Request_Code := Key_Max + 56;
-   F_Previous_Choice          : <B>constant</B> Form_Request_Code := Key_Max + 57;
-
-   <I>--  For those who like the old 'C' style request names</I>
-   REQ_NEXT_PAGE    : Form_Request_Code <B>renames</B> F_Next_Page;
-   REQ_PREV_PAGE    : Form_Request_Code <B>renames</B> F_Previous_Page;
-   REQ_FIRST_PAGE   : Form_Request_Code <B>renames</B> F_First_Page;
-   REQ_LAST_PAGE    : Form_Request_Code <B>renames</B> F_Last_Page;
-
-   REQ_NEXT_FIELD   : Form_Request_Code <B>renames</B> F_Next_Field;
-   REQ_PREV_FIELD   : Form_Request_Code <B>renames</B> F_Previous_Field;
-   REQ_FIRST_FIELD  : Form_Request_Code <B>renames</B> F_First_Field;
-   REQ_LAST_FIELD   : Form_Request_Code <B>renames</B> F_Last_Field;
-   REQ_SNEXT_FIELD  : Form_Request_Code <B>renames</B> F_Sorted_Next_Field;
-   REQ_SPREV_FIELD  : Form_Request_Code <B>renames</B> F_Sorted_Previous_Field;
-   REQ_SFIRST_FIELD : Form_Request_Code <B>renames</B> F_Sorted_First_Field;
-   REQ_SLAST_FIELD  : Form_Request_Code <B>renames</B> F_Sorted_Last_Field;
-   REQ_LEFT_FIELD   : Form_Request_Code <B>renames</B> F_Left_Field;
-   REQ_RIGHT_FIELD  : Form_Request_Code <B>renames</B> F_Right_Field;
-   REQ_UP_FIELD     : Form_Request_Code <B>renames</B> F_Up_Field;
-   REQ_DOWN_FIELD   : Form_Request_Code <B>renames</B> F_Down_Field;
-
-   REQ_NEXT_CHAR    : Form_Request_Code <B>renames</B> F_Next_Char;
-   REQ_PREV_CHAR    : Form_Request_Code <B>renames</B> F_Previous_Char;
-   REQ_NEXT_LINE    : Form_Request_Code <B>renames</B> F_Next_Line;
-   REQ_PREV_LINE    : Form_Request_Code <B>renames</B> F_Previous_Line;
-   REQ_NEXT_WORD    : Form_Request_Code <B>renames</B> F_Next_Word;
-   REQ_PREV_WORD    : Form_Request_Code <B>renames</B> F_Previous_Word;
-   REQ_BEG_FIELD    : Form_Request_Code <B>renames</B> F_Begin_Field;
-   REQ_END_FIELD    : Form_Request_Code <B>renames</B> F_End_Field;
-   REQ_BEG_LINE     : Form_Request_Code <B>renames</B> F_Begin_Line;
-   REQ_END_LINE     : Form_Request_Code <B>renames</B> F_End_Line;
-   REQ_LEFT_CHAR    : Form_Request_Code <B>renames</B> F_Left_Char;
-   REQ_RIGHT_CHAR   : Form_Request_Code <B>renames</B> F_Right_Char;
-   REQ_UP_CHAR      : Form_Request_Code <B>renames</B> F_Up_Char;
-   REQ_DOWN_CHAR    : Form_Request_Code <B>renames</B> F_Down_Char;
-
-   REQ_NEW_LINE     : Form_Request_Code <B>renames</B> F_New_Line;
-   REQ_INS_CHAR     : Form_Request_Code <B>renames</B> F_Insert_Char;
-   REQ_INS_LINE     : Form_Request_Code <B>renames</B> F_Insert_Line;
-   REQ_DEL_CHAR     : Form_Request_Code <B>renames</B> F_Delete_Char;
-   REQ_DEL_PREV     : Form_Request_Code <B>renames</B> F_Delete_Previous;
-   REQ_DEL_LINE     : Form_Request_Code <B>renames</B> F_Delete_Line;
-   REQ_DEL_WORD     : Form_Request_Code <B>renames</B> F_Delete_Word;
-   REQ_CLR_EOL      : Form_Request_Code <B>renames</B> F_Clear_EOL;
-   REQ_CLR_EOF      : Form_Request_Code <B>renames</B> F_Clear_EOF;
-   REQ_CLR_FIELD    : Form_Request_Code <B>renames</B> F_Clear_Field;
-   REQ_OVL_MODE     : Form_Request_Code <B>renames</B> F_Overlay_Mode;
-   REQ_INS_MODE     : Form_Request_Code <B>renames</B> F_Insert_Mode;
-
-   REQ_SCR_FLINE    : Form_Request_Code <B>renames</B> F_ScrollForward_Line;
-   REQ_SCR_BLINE    : Form_Request_Code <B>renames</B> F_ScrollBackward_Line;
-   REQ_SCR_FPAGE    : Form_Request_Code <B>renames</B> F_ScrollForward_Page;
-   REQ_SCR_BPAGE    : Form_Request_Code <B>renames</B> F_ScrollBackward_Page;
-   REQ_SCR_FHPAGE   : Form_Request_Code <B>renames</B> F_ScrollForward_HalfPage;
-   REQ_SCR_BHPAGE   : Form_Request_Code <B>renames</B> F_ScrollBackward_HalfPage;
-
-   REQ_SCR_FCHAR    : Form_Request_Code <B>renames</B> F_HScrollForward_Char;
-   REQ_SCR_BCHAR    : Form_Request_Code <B>renames</B> F_HScrollBackward_Char;
-   REQ_SCR_HFLINE   : Form_Request_Code <B>renames</B> F_HScrollForward_Line;
-   REQ_SCR_HBLINE   : Form_Request_Code <B>renames</B> F_HScrollBackward_Line;
-   REQ_SCR_HFHALF   : Form_Request_Code <B>renames</B> F_HScrollForward_HalfLine;
-   REQ_SCR_HBHALF   : Form_Request_Code <B>renames</B> F_HScrollBackward_HalfLine;
-
-   REQ_VALIDATION   : Form_Request_Code <B>renames</B> F_Validate_Field;
-   REQ_NEXT_CHOICE  : Form_Request_Code <B>renames</B> F_Next_Choice;
-   REQ_PREV_CHOICE  : Form_Request_Code <B>renames</B> F_Previous_Choice;
-
-
-   <B>procedure</B> Request_Name (Key  : <B>in</B> Form_Request_Code;
-                           Name : <B>out</B> String);
-
-   <B>function</B>  Request_Name (Key : Form_Request_Code) <B>return</B> String;
-   <I>--  Same as function</I>
-   <B>pragma</B> Inline (Request_Name);
-
-   <I>------------------</I>
-   <I>--  Exceptions  --</I>
-   <I>------------------</I>
-   Form_Exception : <B>exception</B>;
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field_new.3x.html">form_field_new.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>function</B> Create (Height       : Line_Count;
-                    Width        : Column_Count;
-                    Top          : Line_Position;
-                    Left         : Column_Position;
-                    Off_Screen   : Natural := 0;
-                    More_Buffers : Buffer_Number := Buffer_Number'First)
-                    <B>return</B> Field;
-   <I>--  AKA: <A HREF="form_field_new.3x.html">new_field()</A></I>
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>function</B> New_Field (Height       : Line_Count;
-                       Width        : Column_Count;
-                       Top          : Line_Position;
-                       Left         : Column_Position;
-                       Off_Screen   : Natural := 0;
-                       More_Buffers : Buffer_Number := Buffer_Number'First)
-                       <B>return</B> Field <B>renames</B> Create;
-   <I>--  AKA: <A HREF="form_field_new.3x.html">new_field()</A></I>
-
-   <I>--  <A NAME="AFU_3">|</I>
-   <B>procedure</B> Delete (Fld : <B>in</B> <B>out</B> Field);
-   <I>--  AKA: <A HREF="form_field_new.3x.html">free_field()</A></I>
-   <I>--  Reset Fld to Null_Field</I>
-
-   <I>--  <A NAME="AFU_4">|</I>
-   <B>function</B> Duplicate (Fld  : Field;
-                       Top  : Line_Position;
-                       Left : Column_Position) <B>return</B> Field;
-   <I>--  AKA: <A HREF="form_field_new.3x.html">dup_field()</A></I>
-
-   <I>--  <A NAME="AFU_5">|</I>
-   <B>function</B> Link (Fld  : Field;
-                  Top  : Line_Position;
-                  Left : Column_Position) <B>return</B> Field;
-   <I>--  AKA: <A HREF="form_field_new.3x.html">link_field()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field_just.3x.html">form_field_just.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_6">|</I>
-   <B>procedure</B> Set_Justification (Fld  : <B>in</B> Field;
-                                Just : <B>in</B> Field_Justification := None);
-   <I>--  AKA: <A HREF="form_field_just.3x.html">set_field_just()</A></I>
-
-   <I>--  <A NAME="AFU_7">|</I>
-   <B>function</B> Get_Justification (Fld : Field) <B>return</B> Field_Justification;
-   <I>--  AKA: <A HREF="form_field_just.3x.html">field_just()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field_buffer.3x.html">form_field_buffer.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_8">|</I>
-   <B>procedure</B> Set_Buffer
-     (Fld    : <B>in</B> Field;
-      Buffer : <B>in</B> Buffer_Number := Buffer_Number'First;
-      Str    : <B>in</B> String);
-   <I>--  AKA: <A HREF="form_field_buffer.3x.html">set_field_buffer()</A></I>
-
-   <I>--  <A NAME="AFU_9">|</I>
-   <B>procedure</B> Get_Buffer
-     (Fld    : <B>in</B> Field;
-      Buffer : <B>in</B> Buffer_Number := Buffer_Number'First;
-      Str    : <B>out</B> String);
-   <I>--  AKA: <A HREF="form_field_buffer.3x.html">field_buffer()</A></I>
-
-   <B>function</B> Get_Buffer
-     (Fld    : <B>in</B> Field;
-      Buffer : <B>in</B> Buffer_Number := Buffer_Number'First) <B>return</B> String;
-   <I>--  AKA: <A HREF="form_field_buffer.3x.html">field_buffer()</A></I>
-   <I>--  Same but as function</I>
-
-   <I>--  <A NAME="AFU_10">|</I>
-   <B>procedure</B> Set_Status (Fld    : <B>in</B> Field;
-                         Status : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="form_field_buffer.3x.html">set_field_status()</A></I>
-
-   <I>--  <A NAME="AFU_11">|</I>
-   <B>function</B> Changed (Fld : Field) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="form_field_buffer.3x.html">field_status()</A></I>
-
-   <I>--  <A NAME="AFU_12">|</I>
-   <B>procedure</B> Set_Maximum_Size (Fld : <B>in</B> Field;
-                               Max : <B>in</B> Natural := 0);
-   <I>--  AKA: <A HREF="form_field_buffer.3x.html">set_field_max()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field_opts.3x.html">form_field_opts.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_13">|</I>
-   <B>procedure</B> Set_Options (Fld     : <B>in</B> Field;
-                          Options : <B>in</B> Field_Option_Set);
-   <I>--  AKA: <A HREF="form_field_opts.3x.html">set_field_opts()</A></I>
-
-   <I>--  <A NAME="AFU_14">|</I>
-   <B>procedure</B> Switch_Options (Fld     : <B>in</B> Field;
-                             Options : <B>in</B> Field_Option_Set;
-                             On      : Boolean := True);
-   <I>--  AKA: <A HREF="form_field_opts.3x.html">field_opts_on()</A></I>
-   <I>--  AKA: field_opts_off()</I>
-
-   <I>--  <A NAME="AFU_15">|</I>
-   <B>procedure</B> Get_Options (Fld     : <B>in</B>  Field;
-                          Options : <B>out</B> Field_Option_Set);
-   <I>--  AKA: <A HREF="form_field_opts.3x.html">field_opts()</A></I>
-
-   <I>--  <A NAME="AFU_16">|</I>
-   <B>function</B> Get_Options (Fld : Field := Null_Field)
-                         <B>return</B> Field_Option_Set;
-   <I>--  AKA: <A HREF="form_field_opts.3x.html">field_opts()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field_attributes.3x.html">form_field_attributes.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_17">|</I>
-   <B>procedure</B> Set_Foreground
-     (Fld   : <B>in</B> Field;
-      Fore  : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="form_field_attributes.3x.html">set_field_fore()</A></I>
-
-   <I>--  <A NAME="AFU_18">|</I>
-   <B>procedure</B> Foreground (Fld  : <B>in</B>  Field;
-                         Fore : <B>out</B> Character_Attribute_Set);
-   <I>--  AKA: <A HREF="form_field_attributes.3x.html">field_fore()</A></I>
-
-   <I>--  <A NAME="AFU_19">|</I>
-   <B>procedure</B> Foreground (Fld   : <B>in</B>  Field;
-                         Fore  : <B>out</B> Character_Attribute_Set;
-                         Color : <B>out</B> Color_Pair);
-   <I>--  AKA: <A HREF="form_field_attributes.3x.html">field_fore()</A></I>
-
-   <I>--  <A NAME="AFU_20">|</I>
-   <B>procedure</B> Set_Background
-     (Fld   : <B>in</B> Field;
-      Back  : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="form_field_attributes.3x.html">set_field_back()</A></I>
-
-   <I>--  <A NAME="AFU_21">|</I>
-   <B>procedure</B> Background (Fld  : <B>in</B>  Field;
-                         Back : <B>out</B> Character_Attribute_Set);
-   <I>--  AKA: <A HREF="form_field_attributes.3x.html">field_back()</A></I>
-
-   <I>--  <A NAME="AFU_22">|</I>
-   <B>procedure</B> Background (Fld   : <B>in</B>  Field;
-                         Back  : <B>out</B> Character_Attribute_Set;
-                         Color : <B>out</B> Color_Pair);
-   <I>--  AKA: <A HREF="form_field_attributes.3x.html">field_back()</A></I>
-
-   <I>--  <A NAME="AFU_23">|</I>
-   <B>procedure</B> Set_Pad_Character (Fld : <B>in</B> Field;
-                                Pad : <B>in</B> Character := Space);
-   <I>--  AKA: <A HREF="form_field_attributes.3x.html">set_field_pad()</A></I>
-
-   <I>--  <A NAME="AFU_24">|</I>
-   <B>procedure</B> Pad_Character (Fld : <B>in</B>  Field;
-                            Pad : <B>out</B> Character);
-   <I>--  AKA: <A HREF="form_field_attributes.3x.html">field_pad()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field_info.3x.html">form_field_info.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_25">|</I>
-   <B>procedure</B> Info (Fld                : <B>in</B>  Field;
-                   Lines              : <B>out</B> Line_Count;
-                   Columns            : <B>out</B> Column_Count;
-                   First_Row          : <B>out</B> Line_Position;
-                   First_Column       : <B>out</B> Column_Position;
-                   Off_Screen         : <B>out</B> Natural;
-                   Additional_Buffers : <B>out</B> Buffer_Number);
-   <I>--  AKA: <A HREF="form_field_info.3x.html">field_info()</A></I>
-
-   <I>--  <A NAME="AFU_26">|</I>
-   <B>procedure</B> Dynamic_Info (Fld     : <B>in</B> Field;
-                           Lines   : <B>out</B> Line_Count;
-                           Columns : <B>out</B> Column_Count;
-                           Max     : <B>out</B> Natural);
-   <I>--  AKA: <A HREF="form_field_info.3x.html">dynamic_field_info()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_win.3x.html">form_win.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_27">|</I>
-   <B>procedure</B> Set_Window (Frm : <B>in</B> Form;
-                         Win : <B>in</B> Window);
-   <I>--  AKA: <A HREF="form_win.3x.html">set_form_win()</A></I>
-
-   <I>--  <A NAME="AFU_28">|</I>
-   <B>function</B> Get_Window (Frm : Form) <B>return</B> Window;
-   <I>--  AKA: <A HREF="form_win.3x.html">form_win()</A></I>
-
-   <I>--  <A NAME="AFU_29">|</I>
-   <B>procedure</B> Set_Sub_Window (Frm : <B>in</B> Form;
-                             Win : <B>in</B> Window);
-   <I>--  AKA: <A HREF="form_win.3x.html">set_form_sub()</A></I>
-
-   <I>--  <A NAME="AFU_30">|</I>
-   <B>function</B> Get_Sub_Window (Frm : Form) <B>return</B> Window;
-   <I>--  AKA: <A HREF="form_win.3x.html">form_sub()</A></I>
-
-   <I>--  <A NAME="AFU_31">|</I>
-   <B>procedure</B> Scale (Frm     : <B>in</B> Form;
-                    Lines   : <B>out</B> Line_Count;
-                    Columns : <B>out</B> Column_Count);
-   <I>--  AKA: <A HREF="form_win.3x.html">scale_form()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_hook.3x.html">form_hook.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   type Form_Hook_Function <B>is</B> <B>access</B> <B>procedure</B> (Frm : <B>in</B> Form);
-   <B>pragma</B> Convention (C, Form_Hook_Function);
-
-   <I>--  <A NAME="AFU_32">|</I>
-   <B>procedure</B> Set_Field_Init_Hook (Frm  : <B>in</B> Form;
-                                  Proc : <B>in</B> Form_Hook_Function);
-   <I>--  AKA: <A HREF="form_hook.3x.html">set_field_init()</A></I>
-
-   <I>--  <A NAME="AFU_33">|</I>
-   <B>procedure</B> Set_Field_Term_Hook (Frm  : <B>in</B> Form;
-                                  Proc : <B>in</B> Form_Hook_Function);
-   <I>--  AKA: <A HREF="form_hook.3x.html">set_field_term()</A></I>
-
-   <I>--  <A NAME="AFU_34">|</I>
-   <B>procedure</B> Set_Form_Init_Hook (Frm  : <B>in</B> Form;
-                                 Proc : <B>in</B> Form_Hook_Function);
-   <I>--  AKA: <A HREF="form_hook.3x.html">set_form_init()</A></I>
-
-   <I>--  <A NAME="AFU_35">|</I>
-   <B>procedure</B> Set_Form_Term_Hook (Frm  : <B>in</B> Form;
-                                 Proc : <B>in</B> Form_Hook_Function);
-   <I>--  AKA: <A HREF="form_hook.3x.html">set_form_term()</A></I>
-
-   <I>--  <A NAME="AFU_36">|</I>
-   <B>function</B> Get_Field_Init_Hook (Frm : Form) <B>return</B> Form_Hook_Function;
-   <I>--  AKA: <A HREF="form_hook.3x.html">field_init()</A></I>
-   <B>pragma</B> Import (C, Get_Field_Init_Hook, "field_init");
-
-   <I>--  <A NAME="AFU_37">|</I>
-   <B>function</B> Get_Field_Term_Hook (Frm : Form) <B>return</B> Form_Hook_Function;
-   <I>--  AKA: <A HREF="form_hook.3x.html">field_term()</A></I>
-   <B>pragma</B> Import (C, Get_Field_Term_Hook, "field_term");
-
-   <I>--  <A NAME="AFU_38">|</I>
-   <B>function</B> Get_Form_Init_Hook (Frm : Form) <B>return</B> Form_Hook_Function;
-   <I>--  AKA: <A HREF="form_hook.3x.html">form_init()</A></I>
-   <B>pragma</B> Import (C, Get_Form_Init_Hook, "form_init");
-
-   <I>--  <A NAME="AFU_39">|</I>
-   <B>function</B> Get_Form_Term_Hook (Frm : Form) <B>return</B> Form_Hook_Function;
-   <I>--  AKA: <A HREF="form_hook.3x.html">form_term()</A></I>
-   <B>pragma</B> Import (C, Get_Form_Term_Hook, "form_term");
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_field.3x.html">form_field.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_40">|</I>
-   <B>procedure</B> Redefine (Frm  : <B>in</B> Form;
-                       Flds : <B>in</B> Field_Array_Access);
-   <I>--  AKA: <A HREF="form_field.3x.html">set_form_fields()</A></I>
-
-   <I>--  <A NAME="AFU_41">|</I>
-   <B>procedure</B> Set_Fields (Frm  : <B>in</B> Form;
-                         Flds : <B>in</B> Field_Array_Access) <B>renames</B> Redefine;
-   <I>--  AKA: <A HREF="form_field.3x.html">set_form_fields()</A></I>
-
-   <I>--  <A NAME="AFU_42">|</I>
-   <B>function</B> Fields (Frm   : Form;
-                    Index : Positive) <B>return</B> Field;
-   <I>--  AKA: <A HREF="form_field.3x.html">form_fields()</A></I>
-
-   <I>--  <A NAME="AFU_43">|</I>
-   <B>function</B> Field_Count (Frm : Form) <B>return</B> Natural;
-   <I>--  AKA: <A HREF="form_field.3x.html">field_count()</A></I>
-
-   <I>--  <A NAME="AFU_44">|</I>
-   <B>procedure</B> Move (Fld    : <B>in</B> Field;
-                   Line   : <B>in</B> Line_Position;
-                   Column : <B>in</B> Column_Position);
-   <I>--  AKA: <A HREF="form_field.3x.html">move_field()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_new.3x.html">form_new.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_45">|</I>
-   <B>function</B> Create (Fields : Field_Array_Access) <B>return</B> Form;
-   <I>--  AKA: <A HREF="form_new.3x.html">new_form()</A></I>
-
-   <I>--  <A NAME="AFU_46">|</I>
-   <B>function</B> New_Form (Fields : Field_Array_Access) <B>return</B> Form
-     <B>renames</B> Create;
-   <I>--  AKA: <A HREF="form_new.3x.html">new_form()</A></I>
-
-   <I>--  <A NAME="AFU_47">|</I>
-   <B>procedure</B> Delete (Frm : <B>in</B> <B>out</B> Form);
-   <I>--  AKA: <A HREF="form_new.3x.html">free_form()</A></I>
-   <I>--  Reset Frm to Null_Form</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_opts.3x.html">form_opts.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_48">|</I>
-   <B>procedure</B> Set_Options (Frm     : <B>in</B> Form;
-                          Options : <B>in</B> Form_Option_Set);
-   <I>--  AKA: <A HREF="form_opts.3x.html">set_form_opts()</A></I>
-
-   <I>--  <A NAME="AFU_49">|</I>
-   <B>procedure</B> Switch_Options (Frm     : <B>in</B> Form;
-                             Options : <B>in</B> Form_Option_Set;
-                             On      : Boolean := True);
-   <I>--  AKA: <A HREF="form_opts.3x.html">form_opts_on()</A></I>
-   <I>--  AKA: form_opts_off()</I>
-
-   <I>--  <A NAME="AFU_50">|</I>
-   <B>procedure</B> Get_Options (Frm     : <B>in</B>  Form;
-                          Options : <B>out</B> Form_Option_Set);
-   <I>--  AKA: <A HREF="form_opts.3x.html">form_opts()</A></I>
-
-   <I>--  <A NAME="AFU_51">|</I>
-   <B>function</B> Get_Options (Frm : Form := Null_Form) <B>return</B> Form_Option_Set;
-   <I>--  AKA: <A HREF="form_opts.3x.html">form_opts()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_post.3x.html">form_post.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_52">|</I>
-   <B>procedure</B> Post (Frm  : <B>in</B> Form;
-                   Post : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="form_post.3x.html">post_form()</A></I>
-   <I>--  AKA: unpost_form()</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_cursor.3x.html">form_cursor.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_53">|</I>
-   <B>procedure</B> Position_Cursor (Frm : Form);
-   <I>--  AKA: <A HREF="form_cursor.3x.html">pos_form_cursor()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_data.3x.html">form_data.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_54">|</I>
-   <B>function</B> Data_Ahead (Frm : Form) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="form_data.3x.html">data_ahead()</A></I>
-
-   <I>--  <A NAME="AFU_55">|</I>
-   <B>function</B> Data_Behind (Frm : Form) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="form_data.3x.html">data_behind()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_driver.3x.html">form_driver.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   type Driver_Result <B>is</B> (Form_Ok,
-                          Request_Denied,
-                          Unknown_Request,
-                          Invalid_Field);
-
-   <I>--  <A NAME="AFU_56">|</I>
-   <B>function</B> Driver (Frm : Form;
-                    Key : Key_Code) <B>return</B> Driver_Result;
-   <I>--  AKA: <A HREF="form_driver.3x.html">form_driver()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_page.3x.html">form_page.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   type Page_Number <B>is</B> <B>new</B> Natural;
-
-   <I>--  <A NAME="AFU_57">|</I>
-   <B>procedure</B> Set_Current (Frm : <B>in</B> Form;
-                          Fld : <B>in</B> Field);
-   <I>--  AKA: <A HREF="form_page.3x.html">set_current_field()</A></I>
-
-   <I>--  <A NAME="AFU_58">|</I>
-   <B>function</B> Current (Frm : <B>in</B> Form) <B>return</B> Field;
-   <I>--  AKA: <A HREF="form_page.3x.html">current_field()</A></I>
-
-   <I>--  <A NAME="AFU_59">|</I>
-   <B>procedure</B> Set_Page (Frm  : <B>in</B> Form;
-                       Page : <B>in</B> Page_Number := Page_Number'First);
-   <I>--  AKA: <A HREF="form_page.3x.html">set_form_page()</A></I>
-
-   <I>--  <A NAME="AFU_60">|</I>
-   <B>function</B> Page (Frm : Form) <B>return</B> Page_Number;
-   <I>--  AKA: <A HREF="form_page.3x.html">form_page()</A></I>
-
-   <I>--  <A NAME="AFU_61">|</I>
-   <B>function</B> Get_Index (Fld : Field) <B>return</B> Positive;
-   <I>--  AKA: <A HREF="form_page.3x.html">field_index()</A></I>
-   <I>--  Please note that in this binding we start the numbering of fields</I>
-   <I>--  with 1. So this is number is one more than you get from the low</I>
-   <I>--  level call.</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="form_new_page.3x.html">form_new_page.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_62">|</I>
-   <B>procedure</B> Set_New_Page (Fld      : <B>in</B> Field;
-                           New_Page : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="form_new_page.3x.html">set_new_page()</A></I>
-
-   <I>--  <A NAME="AFU_63">|</I>
-   <B>function</B> Is_New_Page (Fld : Field) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="form_new_page.3x.html">new_page()</A></I>
-
-
-<I>------------------------------------------------------------------------------</I>
-<B>private</B>
-
-   type Field        <B>is</B> <B>new</B> System.Address;
-   type Form         <B>is</B> <B>new</B> System.Address;
-
-   Null_Field        : <B>constant</B> Field        := Field (System.Null_Address);
-   Null_Form         : <B>constant</B> Form         := Form  (System.Null_Address);
-
-   Generation_Bit_Order : <B>constant</B> System.Bit_Order := System.Low_Order_First;
-   <I>--  This constant may be different on your system.</I>
-
-<B>end</B> Terminal_Interface.Curses.Forms;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-menus-item_user_data_s.html b/Ada95/html/terminal_interface-curses-menus-item_user_data_s.html
deleted file mode 100644 (file)
index a867f54..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--               Terminal_Interface.Curses.Menus.Item_User_Data             --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.3 @</I>
-<I>------------------------------------------------------------------------------</I>
-
-<B>generic</B>
-   type User <B>is</B> <B>limited</B> <B>private</B>;
-   type User_Access <B>is</B> <B>access</B> User;
-<B>package</B> Terminal_Interface.Curses.Menus.Item_User_Data <B>is</B>
-
-   <I>--  The binding uses the same user pointer for menu items</I>
-   <I>--  as the low level C implementation. So you can safely</I>
-   <I>--  read or write the user pointer also with the C routines</I>
-   <I>--</I>
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="mitem_userptr.3x.html">mitem_userptr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>procedure</B> Set_User_Data (Itm  : <B>in</B> Item;
-                            Data : <B>in</B> User_Access);
-   <I>--  AKA: <A HREF="mitem_userptr.3x.html">set_item_userptr</A></I>
-   <B>pragma</B> Inline (Set_User_Data);
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>procedure</B> Get_User_Data (Itm  : <B>in</B>  Item;
-                            Data : <B>out</B> User_Access);
-   <I>--  AKA: <A HREF="mitem_userptr.3x.html">item_userptr</A></I>
-   <B>pragma</B> Inline (Get_User_Data);
-
-<B>end</B> Terminal_Interface.Curses.Menus.Item_User_Data;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-menus-menu_user_data_s.html b/Ada95/html/terminal_interface-curses-menus-menu_user_data_s.html
deleted file mode 100644 (file)
index 69ff87f..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--               Terminal_Interface.Curses.Menus.Menu_User_Data             --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.3 @</I>
-<I>------------------------------------------------------------------------------</I>
-
-<B>generic</B>
-   type User <B>is</B> <B>limited</B> <B>private</B>;
-   type User_Access <B>is</B> <B>access</B> User;
-<B>package</B> Terminal_Interface.Curses.Menus.Menu_User_Data <B>is</B>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_userptr.3x.html">menu_userptr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>procedure</B> Set_User_Data (Men  : <B>in</B> Menu;
-                            Data : <B>in</B> User_Access);
-   <I>--  AKA: <A HREF="menu_userptr.3x.html">set_menu_userptr</A></I>
-   <B>pragma</B> Inline (Set_User_Data);
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>procedure</B> Get_User_Data (Men  : <B>in</B>  Menu;
-                            Data : <B>out</B> User_Access);
-   <I>--  AKA: <A HREF="menu_userptr.3x.html">menu_userptr</A></I>
-   <B>pragma</B> Inline (Get_User_Data);
-
-<B>end</B> Terminal_Interface.Curses.Menus.Menu_User_Data;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-menus_s.html b/Ada95/html/terminal_interface-curses-menus_s.html
deleted file mode 100644 (file)
index 394bfff..0000000
+++ /dev/null
@@ -1,634 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                      Terminal_Interface.Curses.Menu                      --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.8 @</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  menu binding.</I>
-<I>--  This module is generated. Please don't change it manually!</I>
-<I>--  Run the generator instead.</I>
-<I>--  |</I>
-<B>with</B> System;
-<B>with</B> Interfaces.C;
-<B>with</B> Ada.Characters.Latin_1;
-
-<B>package</B> Terminal_Interface.Curses.Menus <B>is</B>
-
-   <B>pragma</B> Linker_Options ("-lmenu");
-
-
-
-   Space : Character <B>renames</B> Ada.Characters.Latin_1.Space;
-
-   type Item <B>is</B> <B>private</B>;
-   type Menu <B>is</B> <B>private</B>;
-
-   <I>---------------------------</I>
-   <I>--  Interface constants  --</I>
-   <I>---------------------------</I>
-   Null_Item : <B>constant</B> Item;
-   Null_Menu : <B>constant</B> Menu;
-
-   <B>subtype</B> Menu_Request_Code <B>is</B> Key_Code
-     <B>range</B> (Key_Max + 1) .. (Key_Max + 17);
-
-   <I>--  The prefix M_ stands for "Menu Request"</I>
-   M_Left_Item       : <B>constant</B> Menu_Request_Code := Key_Max + 1;
-   M_Right_Item      : <B>constant</B> Menu_Request_Code := Key_Max + 2;
-   M_Up_Item         : <B>constant</B> Menu_Request_Code := Key_Max + 3;
-   M_Down_Item       : <B>constant</B> Menu_Request_Code := Key_Max + 4;
-   M_ScrollUp_Line   : <B>constant</B> Menu_Request_Code := Key_Max + 5;
-   M_ScrollDown_Line : <B>constant</B> Menu_Request_Code := Key_Max + 6;
-   M_ScrollDown_Page : <B>constant</B> Menu_Request_Code := Key_Max + 7;
-   M_ScrollUp_Page   : <B>constant</B> Menu_Request_Code := Key_Max + 8;
-   M_First_Item      : <B>constant</B> Menu_Request_Code := Key_Max + 9;
-   M_Last_Item       : <B>constant</B> Menu_Request_Code := Key_Max + 10;
-   M_Next_Item       : <B>constant</B> Menu_Request_Code := Key_Max + 11;
-   M_Previous_Item   : <B>constant</B> Menu_Request_Code := Key_Max + 12;
-   M_Toggle_Item     : <B>constant</B> Menu_Request_Code := Key_Max + 13;
-   M_Clear_Pattern   : <B>constant</B> Menu_Request_Code := Key_Max + 14;
-   M_Back_Pattern    : <B>constant</B> Menu_Request_Code := Key_Max + 15;
-   M_Next_Match      : <B>constant</B> Menu_Request_Code := Key_Max + 16;
-   M_Previous_Match  : <B>constant</B> Menu_Request_Code := Key_Max + 17;
-
-   <I>--  For those who like the old 'C' names for the request codes</I>
-   REQ_LEFT_ITEM     : Menu_Request_Code <B>renames</B> M_Left_Item;
-   REQ_RIGHT_ITEM    : Menu_Request_Code <B>renames</B> M_Right_Item;
-   REQ_UP_ITEM       : Menu_Request_Code <B>renames</B> M_Up_Item;
-   REQ_DOWN_ITEM     : Menu_Request_Code <B>renames</B> M_Down_Item;
-   REQ_SCR_ULINE     : Menu_Request_Code <B>renames</B> M_ScrollUp_Line;
-   REQ_SCR_DLINE     : Menu_Request_Code <B>renames</B> M_ScrollDown_Line;
-   REQ_SCR_DPAGE     : Menu_Request_Code <B>renames</B> M_ScrollDown_Page;
-   REQ_SCR_UPAGE     : Menu_Request_Code <B>renames</B> M_ScrollUp_Page;
-   REQ_FIRST_ITEM    : Menu_Request_Code <B>renames</B> M_First_Item;
-   REQ_LAST_ITEM     : Menu_Request_Code <B>renames</B> M_Last_Item;
-   REQ_NEXT_ITEM     : Menu_Request_Code <B>renames</B> M_Next_Item;
-   REQ_PREV_ITEM     : Menu_Request_Code <B>renames</B> M_Previous_Item;
-   REQ_TOGGLE_ITEM   : Menu_Request_Code <B>renames</B> M_Toggle_Item;
-   REQ_CLEAR_PATTERN : Menu_Request_Code <B>renames</B> M_Clear_Pattern;
-   REQ_BACK_PATTERN  : Menu_Request_Code <B>renames</B> M_Back_Pattern;
-   REQ_NEXT_MATCH    : Menu_Request_Code <B>renames</B> M_Next_Match;
-   REQ_PREV_MATCH    : Menu_Request_Code <B>renames</B> M_Previous_Match;
-
-   <B>procedure</B> Request_Name (Key  : <B>in</B> Menu_Request_Code;
-                           Name : <B>out</B> String);
-
-   <B>function</B>  Request_Name (Key : Menu_Request_Code) <B>return</B> String;
-   <I>--  Same as function</I>
-
-   <I>------------------</I>
-   <I>--  Exceptions  --</I>
-   <I>------------------</I>
-
-   Menu_Exception : <B>exception</B>;
-   <I>--</I>
-   <I>--  Menu options</I>
-   <I>--</I>
-
-   type Menu_Option_Set <B>is</B>
-      <B>record</B>
-         One_Valued        : Boolean;
-         Show_Descriptions : Boolean;
-         Row_Major_Order   : Boolean;
-         Ignore_Case       : Boolean;
-         Show_Matches      : Boolean;
-         Non_Cyclic        : Boolean;
-         Reserved          : Boolean;
-      <B>end</B> <B>record</B>;
-   <B>pragma</B> Pack (Menu_Option_Set);
-   <B>pragma</B> Convention (C, Menu_Option_Set);
-
-   <B>for</B> Menu_Option_Set <B>use</B>
-      <B>record</B>
-         One_Valued        <B>at</B> 0 <B>range</B>  0 ..  0;
-         Show_Descriptions <B>at</B> 0 <B>range</B>  1 ..  1;
-         Row_Major_Order   <B>at</B> 0 <B>range</B>  2 ..  2;
-         Ignore_Case       <B>at</B> 0 <B>range</B>  3 ..  3;
-         Show_Matches      <B>at</B> 0 <B>range</B>  4 ..  4;
-         Non_Cyclic        <B>at</B> 0 <B>range</B>  5 ..  5;
-         Reserved          <B>at</B> 0 <B>range</B> 31 .. 31;
-      <B>end</B> <B>record</B>;
-   <B>for</B> Menu_Option_Set'Size <B>use</B> Interfaces.C.int'Size;
-   <I>--  Please note: this rep. clause is generated and may be</I>
-   <I>--               different on your system.</I>
-
-   Default_Menu_Options : Menu_Option_Set;
-   <I>--  Initial default options for a menu.</I>
-
-   <I>--</I>
-   <I>--  Item options</I>
-   <I>--</I>
-   type Item_Option_Set <B>is</B>
-      <B>record</B>
-         Selectable : Boolean;
-         Reserved   : Boolean;
-      <B>end</B> <B>record</B>;
-   <B>pragma</B> Pack (Item_Option_Set);
-   <B>pragma</B> Convention (C, Item_Option_Set);
-
-   <B>for</B> Item_Option_Set <B>use</B>
-      <B>record</B>
-         Selectable <B>at</B> 0 <B>range</B>  0 ..  0;
-         Reserved   <B>at</B> 0 <B>range</B> 31 .. 31;
-      <B>end</B> <B>record</B>;
-   <B>for</B> Item_Option_Set'Size <B>use</B> Interfaces.C.int'Size;
-   <I>--  Please note: this rep. clause is generated and may be</I>
-   <I>--               different on your system.</I>
-
-   Default_Item_Options : Item_Option_Set;
-   <I>--  Initial default options for an item.</I>
-
-   <I>--</I>
-   <I>--  Item Array</I>
-   <I>--</I>
-   type Item_Array <B>is</B> <B>array</B> (Positive <B>range</B> &lt;&gt;) <B>of</B> <B>aliased</B> Item;
-   <B>pragma</B> Convention (C, Item_Array);
-
-   type Item_Array_Access <B>is</B> <B>access</B> Item_Array;
-
-   <B>procedure</B> Free (IA         : <B>in</B> <B>out</B> Item_Array_Access;
-                   Free_Items : Boolean := False);
-   <I>--  Release the memory for an allocated item array</I>
-   <I>--  If Free_Items is True, call Delete() for all the items in</I>
-   <I>--  the array.</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="mitem_new.3x.html">mitem_new.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>function</B> Create (Name        : String;
-                    Description : String := "") return Item;
-   <I>--  AKA: <A HREF="mitem_new.3x.html">new_item()</A></I>
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>function</B> New_Item (Name        : String;
-                      Description : String := "") return Item
-     <B>renames</B> Create;
-   <I>--  AKA: <A HREF="mitem_new.3x.html">new_item()</A></I>
-
-   <I>--  <A NAME="AFU_3">|</I>
-   <B>procedure</B> Delete (Itm : <B>in</B> <B>out</B> Item);
-   <I>--  AKA: <A HREF="mitem_new.3x.html">free_item()</A></I>
-   <I>--  Resets Itm to Null_Item</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="mitem_value.3x.html">mitem_value.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_4">|</I>
-   <B>procedure</B> Set_Value (Itm   : <B>in</B> Item;
-                        Value : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="mitem_value.3x.html">set_item_value()</A></I>
-
-   <I>--  <A NAME="AFU_5">|</I>
-   <B>function</B> Value (Itm : Item) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="mitem_value.3x.html">item_value()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="mitem_visible.3x.html">mitem_visible.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_6">|</I>
-   <B>function</B> Visible (Itm : Item) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="mitem_visible.3x.html">item_visible()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="mitem_opts.3x.html">mitem_opts.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_7">|</I>
-   <B>procedure</B> Set_Options (Itm     : <B>in</B> Item;
-                          Options : <B>in</B> Item_Option_Set);
-   <I>--  AKA: <A HREF="mitem_opts.3x.html">set_item_opts()</A></I>
-
-   <I>--  <A NAME="AFU_8">|</I>
-   <B>procedure</B> Switch_Options (Itm     : <B>in</B> Item;
-                             Options : <B>in</B> Item_Option_Set;
-                             On      : Boolean := True);
-   <I>--  AKA: <A HREF="mitem_opts.3x.html">item_opts_on()</A></I>
-   <I>--  AKA: item_opts_off()</I>
-
-   <I>--  <A NAME="AFU_9">|</I>
-   <B>procedure</B> Get_Options (Itm     : <B>in</B>  Item;
-                          Options : <B>out</B> Item_Option_Set);
-   <I>--  AKA: <A HREF="mitem_opts.3x.html">item_opts()</A></I>
-
-   <I>--  <A NAME="AFU_10">|</I>
-   <B>function</B> Get_Options (Itm : Item := Null_Item) <B>return</B> Item_Option_Set;
-   <I>--  AKA: <A HREF="mitem_opts.3x.html">item_opts()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="mitem_name.3x.html">mitem_name.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_11">|</I>
-   <B>procedure</B> Name (Itm  : <B>in</B> Item;
-                   Name : <B>out</B> String);
-   <I>--  AKA: <A HREF="mitem_name.3x.html">item_name()</A></I>
-   <B>function</B>  Name (Itm : Item) <B>return</B> String;
-   <I>--  AKA: <A HREF="mitem_name.3x.html">item_name()</A></I>
-   <I>--  Implemented as function</I>
-
-   <I>--  <A NAME="AFU_12">|</I>
-   <B>procedure</B> Description (Itm         : <B>in</B> Item;
-                          Description : <B>out</B> String);
-   <I>--  AKA: <A HREF="mitem_name.3x.html">item_description();</A></I>
-
-   <B>function</B>  Description (Itm : Item) <B>return</B> String;
-   <I>--  AKA: <A HREF="mitem_name.3x.html">item_description();</A></I>
-   <I>--  Implemented as function</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="mitem_current.3x.html">mitem_current.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_13">|</I>
-   <B>procedure</B> Set_Current (Men : <B>in</B> Menu;
-                          Itm : <B>in</B> Item);
-   <I>--  AKA: <A HREF="mitem_current.3x.html">set_current_item()</A></I>
-
-   <I>--  <A NAME="AFU_14">|</I>
-   <B>function</B> Current (Men : Menu) <B>return</B> Item;
-   <I>--  AKA: <A HREF="mitem_current.3x.html">current_item()</A></I>
-
-   <I>--  <A NAME="AFU_15">|</I>
-   <B>procedure</B> Set_Top_Row (Men  : <B>in</B> Menu;
-                          Line : <B>in</B> Line_Position);
-   <I>--  AKA: <A HREF="mitem_current.3x.html">set_top_row()</A></I>
-
-   <I>--  <A NAME="AFU_16">|</I>
-   <B>function</B> Top_Row (Men : Menu) <B>return</B> Line_Position;
-   <I>--  AKA: <A HREF="mitem_current.3x.html">top_row()</A></I>
-
-   <I>--  <A NAME="AFU_17">|</I>
-   <B>function</B> Get_Index (Itm : Item) <B>return</B> Positive;
-   <I>--  AKA: <A HREF="mitem_current.3x.html">item_index()</A></I>
-   <I>--  Please note that in this binding we start the numbering of items</I>
-   <I>--  with 1. So this is number is one more than you get from the low</I>
-   <I>--  level call.</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_post.3x.html">menu_post.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_18">|</I>
-   <B>procedure</B> Post (Men  : <B>in</B> Menu;
-                   Post : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="menu_post.3x.html">post_menu()</A></I>
-   <I>--  AKA: unpost_menu()</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_opts.3x.html">menu_opts.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_19">|</I>
-   <B>procedure</B> Set_Options (Men     : <B>in</B> Menu;
-                          Options : <B>in</B> Menu_Option_Set);
-   <I>--  AKA: <A HREF="menu_opts.3x.html">set_menu_opts()</A></I>
-
-   <I>--  <A NAME="AFU_20">|</I>
-   <B>procedure</B> Switch_Options (Men     : <B>in</B> Menu;
-                             Options : <B>in</B> Menu_Option_Set;
-                             On      : Boolean := True);
-   <I>--  AKA: <A HREF="menu_opts.3x.html">menu_opts_on()</A></I>
-   <I>--  AKA: menu_opts_off()</I>
-
-   <I>--  <A NAME="AFU_21">|</I>
-   <B>procedure</B> Get_Options (Men     : <B>in</B>  Menu;
-                          Options : <B>out</B> Menu_Option_Set);
-   <I>--  AKA: <A HREF="menu_opts.3x.html">menu_opts()</A></I>
-
-   <I>--  <A NAME="AFU_22">|</I>
-   <B>function</B> Get_Options (Men : Menu := Null_Menu) <B>return</B> Menu_Option_Set;
-   <I>--  AKA: <A HREF="menu_opts.3x.html">menu_opts()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_win.3x.html">menu_win.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_23">|</I>
-   <B>procedure</B> Set_Window (Men : <B>in</B> Menu;
-                         Win : <B>in</B> Window);
-   <I>--  AKA: <A HREF="menu_win.3x.html">set_menu_win()</A></I>
-
-   <I>--  <A NAME="AFU_24">|</I>
-   <B>function</B> Get_Window (Men : Menu) <B>return</B> Window;
-   <I>--  AKA: <A HREF="menu_win.3x.html">menu_win()</A></I>
-
-   <I>--  <A NAME="AFU_25">|</I>
-   <B>procedure</B> Set_Sub_Window (Men : <B>in</B> Menu;
-                             Win : <B>in</B> Window);
-   <I>--  AKA: <A HREF="menu_win.3x.html">set_menu_sub()</A></I>
-
-   <I>--  <A NAME="AFU_26">|</I>
-   <B>function</B> Get_Sub_Window (Men : Menu) <B>return</B> Window;
-   <I>--  AKA: <A HREF="menu_win.3x.html">menu_sub()</A></I>
-
-   <I>--  <A NAME="AFU_27">|</I>
-   <B>procedure</B> Scale (Men     : <B>in</B> Menu;
-                    Lines   : <B>out</B> Line_Count;
-                    Columns : <B>out</B> Column_Count);
-   <I>--  AKA: <A HREF="menu_win.3x.html">scale_menu()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_cursor.3x.html">menu_cursor.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_28">|</I>
-   <B>procedure</B> Position_Cursor (Men : Menu);
-   <I>--  AKA: <A HREF="menu_cursor.3x.html">pos_menu_cursor()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_mark.3x.html">menu_mark.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_29">|</I>
-   <B>procedure</B> Set_Mark (Men  : <B>in</B> Menu;
-                       Mark : <B>in</B> String);
-   <I>--  AKA: <A HREF="menu_mark.3x.html">set_menu_mark()</A></I>
-
-   <I>--  <A NAME="AFU_30">|</I>
-   <B>procedure</B> Mark (Men  : <B>in</B>  Menu;
-                   Mark : <B>out</B> String);
-   <I>--  AKA: <A HREF="menu_mark.3x.html">menu_mark()</A></I>
-
-   <B>function</B>  Mark (Men : Menu) <B>return</B> String;
-   <I>--  AKA: <A HREF="menu_mark.3x.html">menu_mark()</A></I>
-   <I>--  Implemented as function</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_attribs.3x.html">menu_attribs.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_31">|</I>
-   <B>procedure</B> Set_Foreground
-     (Men   : <B>in</B> Menu;
-      Fore  : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">set_menu_fore()</A></I>
-
-   <I>--  <A NAME="AFU_32">|</I>
-   <B>procedure</B> Foreground (Men   : <B>in</B>  Menu;
-                         Fore  : <B>out</B> Character_Attribute_Set);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">menu_fore()</A></I>
-
-   <I>--  <A NAME="AFU_33">|</I>
-   <B>procedure</B> Foreground (Men   : <B>in</B>  Menu;
-                         Fore  : <B>out</B> Character_Attribute_Set;
-                         Color : <B>out</B> Color_Pair);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">menu_fore()</A></I>
-
-   <I>--  <A NAME="AFU_34">|</I>
-   <B>procedure</B> Set_Background
-     (Men   : <B>in</B> Menu;
-      Back  : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">set_menu_back()</A></I>
-
-   <I>--  <A NAME="AFU_35">|</I>
-   <B>procedure</B> Background (Men  : <B>in</B>  Menu;
-                         Back : <B>out</B> Character_Attribute_Set);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">menu_back()</A></I>
-   <I>--  <A NAME="AFU_36">|</I>
-
-   <B>procedure</B> Background (Men   : <B>in</B>  Menu;
-                         Back  : <B>out</B> Character_Attribute_Set;
-                         Color : <B>out</B> Color_Pair);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">menu_back()</A></I>
-
-   <I>--  <A NAME="AFU_37">|</I>
-   <B>procedure</B> Set_Grey
-     (Men   : <B>in</B> Menu;
-      Grey  : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">set_menu_grey()</A></I>
-
-   <I>--  <A NAME="AFU_38">|</I>
-   <B>procedure</B> Grey (Men  : <B>in</B>  Menu;
-                   Grey : <B>out</B> Character_Attribute_Set);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">menu_grey()</A></I>
-
-   <I>--  <A NAME="AFU_39">|</I>
-   <B>procedure</B> Grey
-     (Men   : <B>in</B>  Menu;
-      Grey  : <B>out</B> Character_Attribute_Set;
-      Color : <B>out</B> Color_Pair);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">menu_grey()</A></I>
-
-   <I>--  <A NAME="AFU_40">|</I>
-   <B>procedure</B> Set_Pad_Character (Men : <B>in</B> Menu;
-                                Pad : <B>in</B> Character := Space);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">set_menu_pad()</A></I>
-
-   <I>--  <A NAME="AFU_41">|</I>
-   <B>procedure</B> Pad_Character (Men : <B>in</B>  Menu;
-                            Pad : <B>out</B> Character);
-   <I>--  AKA: <A HREF="menu_attribs.3x.html">menu_pad()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_spacing.3x.html">menu_spacing.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_42">|</I>
-   <B>procedure</B> Set_Spacing (Men   : <B>in</B> Menu;
-                          Descr : <B>in</B> Column_Position := 0;
-                          Row   : <B>in</B> Line_Position   := 0;
-                          Col   : <B>in</B> Column_Position := 0);
-   <I>--  AKA: <A HREF="menu_spacing.3x.html">set_menu_spacing()</A></I>
-
-   <I>--  <A NAME="AFU_43">|</I>
-   <B>procedure</B> Spacing (Men   : <B>in</B> Menu;
-                      Descr : <B>out</B> Column_Position;
-                      Row   : <B>out</B> Line_Position;
-                      Col   : <B>out</B> Column_Position);
-   <I>--  AKA: <A HREF="menu_spacing.3x.html">menu_spacing()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_pattern.3x.html">menu_pattern.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_44">|</I>
-   <B>function</B> Set_Pattern (Men  : Menu;
-                         Text : String) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="menu_pattern.3x.html">set_menu_pattern()</A></I>
-   <I>--  Return TRUE if the pattern matches, FALSE otherwise</I>
-
-   <I>--  <A NAME="AFU_45">|</I>
-   <B>procedure</B> Pattern (Men  : <B>in</B>  Menu;
-                      Text : <B>out</B> String);
-   <I>--  AKA: <A HREF="menu_pattern.3x.html">menu_pattern()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_format.3x.html">menu_format.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_46">|</I>
-   <B>procedure</B> Set_Format (Men     : <B>in</B> Menu;
-                         Lines   : <B>in</B> Line_Count;
-                         Columns : <B>in</B> Column_Count);
-   <I>--  AKA: <A HREF="menu_format.3x.html">set_menu_format()</A></I>
-
-   <I>--  <A NAME="AFU_47">|</I>
-   <B>procedure</B> Format (Men     : <B>in</B>  Menu;
-                     Lines   : <B>out</B> Line_Count;
-                     Columns : <B>out</B> Column_Count);
-   <I>--  AKA: <A HREF="menu_format.3x.html">menu_format()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_hook.3x.html">menu_hook.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   type Menu_Hook_Function <B>is</B> <B>access</B> <B>procedure</B> (Men : <B>in</B> Menu);
-   <B>pragma</B> Convention (C, Menu_Hook_Function);
-
-   <I>--  <A NAME="AFU_48">|</I>
-   <B>procedure</B> Set_Item_Init_Hook (Men  : <B>in</B> Menu;
-                                 Proc : <B>in</B> Menu_Hook_Function);
-   <I>--  AKA: <A HREF="menu_hook.3x.html">set_item_init()</A></I>
-
-   <I>--  <A NAME="AFU_49">|</I>
-   <B>procedure</B> Set_Item_Term_Hook (Men  : <B>in</B> Menu;
-                                 Proc : <B>in</B> Menu_Hook_Function);
-   <I>--  AKA: <A HREF="menu_hook.3x.html">set_item_term()</A></I>
-
-   <I>--  <A NAME="AFU_50">|</I>
-   <B>procedure</B> Set_Menu_Init_Hook (Men  : <B>in</B> Menu;
-                                 Proc : <B>in</B> Menu_Hook_Function);
-   <I>--  AKA: <A HREF="menu_hook.3x.html">set_menu_init()</A></I>
-
-   <I>--  <A NAME="AFU_51">|</I>
-   <B>procedure</B> Set_Menu_Term_Hook (Men  : <B>in</B> Menu;
-                                 Proc : <B>in</B> Menu_Hook_Function);
-   <I>--  AKA: <A HREF="menu_hook.3x.html">set_menu_term()</A></I>
-
-   <I>--  <A NAME="AFU_52">|</I>
-   <B>function</B> Get_Item_Init_Hook (Men : Menu) <B>return</B> Menu_Hook_Function;
-   <I>--  AKA: <A HREF="menu_hook.3x.html">item_init()</A></I>
-
-   <I>--  <A NAME="AFU_53">|</I>
-   <B>function</B> Get_Item_Term_Hook (Men : Menu) <B>return</B> Menu_Hook_Function;
-   <I>--  AKA: <A HREF="menu_hook.3x.html">item_term()</A></I>
-
-   <I>--  <A NAME="AFU_54">|</I>
-   <B>function</B> Get_Menu_Init_Hook (Men : Menu) <B>return</B> Menu_Hook_Function;
-   <I>--  AKA: <A HREF="menu_hook.3x.html">menu_init()</A></I>
-
-   <I>--  <A NAME="AFU_55">|</I>
-   <B>function</B> Get_Menu_Term_Hook (Men : Menu) <B>return</B> Menu_Hook_Function;
-   <I>--  AKA: <A HREF="menu_hook.3x.html">menu_term()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_items.3x.html">menu_items.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_56">|</I>
-   <B>procedure</B> Redefine (Men   : <B>in</B> Menu;
-                       Items : <B>in</B> Item_Array_Access);
-   <I>--  AKA: <A HREF="menu_items.3x.html">set_menu_items()</A></I>
-
-   <B>procedure</B> Set_Items (Men   : <B>in</B> Menu;
-                        Items : <B>in</B> Item_Array_Access) <B>renames</B> Redefine;
-
-   <I>--  <A NAME="AFU_57">|</I>
-   <B>function</B> Items (Men   : Menu;
-                   Index : Positive) <B>return</B> Item;
-   <I>--  AKA: <A HREF="menu_items.3x.html">menu_items()</A></I>
-
-   <I>--  <A NAME="AFU_58">|</I>
-   <B>function</B> Item_Count (Men : Menu) <B>return</B> Natural;
-   <I>--  AKA: <A HREF="menu_items.3x.html">item_count()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_new.3x.html">menu_new.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_59">|</I>
-   <B>function</B> Create (Items : Item_Array_Access) <B>return</B> Menu;
-   <I>--  AKA: <A HREF="menu_new.3x.html">new_menu()</A></I>
-
-   <B>function</B> New_Menu (Items : Item_Array_Access) <B>return</B> Menu <B>renames</B> Create;
-
-   <I>--  <A NAME="AFU_60">|</I>
-   <B>procedure</B> Delete (Men : <B>in</B> <B>out</B> Menu);
-   <I>--  AKA: <A HREF="menu_new.3x.html">free_menu()</A></I>
-   <I>--  Reset Men to Null_Menu</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="menu_new.3x.html">menu_new.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   type Driver_Result <B>is</B> (Menu_Ok,
-                          Request_Denied,
-                          Unknown_Request,
-                          No_Match);
-
-   <I>--  <A NAME="AFU_61">|</I>
-   <B>function</B> Driver (Men : Menu;
-                    Key : Key_Code) <B>return</B> Driver_Result;
-   <I>--  AKA: <A HREF="menu_new.3x.html">menu_driver()</A></I>
-
-<I>-------------------------------------------------------------------------------</I>
-<B>private</B>
-   type Item   <B>is</B> <B>new</B> System.Address;
-   type Menu   <B>is</B> <B>new</B> System.Address;
-
-   Null_Item : <B>constant</B> Item := Item (System.Null_Address);
-   Null_Menu : <B>constant</B> Menu := Menu (System.Null_Address);
-
-   Generation_Bit_Order : <B>constant</B> System.Bit_Order := System.Low_Order_First;
-   <I>--  This constant may be different on your system.</I>
-
-<B>end</B> Terminal_Interface.Curses.Menus;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-mouse_s.html b/Ada95/html/terminal_interface-curses-mouse_s.html
deleted file mode 100644 (file)
index 8054e66..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                      Terminal_Interface.Curses.Mouse                     --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.8 @</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  mouse binding.</I>
-<I>--  This module is generated. Please don't change it manually!</I>
-<I>--  Run the generator instead.</I>
-<I>--  |</I>
-<B>with</B> System;
-
-<B>package</B> Terminal_Interface.Curses.Mouse <B>is</B>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_mouse.3x.html">curs_mouse.3x</A></I>
-   <I>--  |=====================================================================</I>
-   <I>--  Please note, that in ncurses-1.9.9e documentation mouse support</I>
-   <I>--  is still marked as experimental. So also this binding will change</I>
-   <I>--  if the ncurses methods change.</I>
-   <I>--</I>
-   type Event_Mask <B>is</B> <B>private</B>;
-   No_Events  : <B>constant</B> Event_Mask;
-   All_Events : <B>constant</B> Event_Mask;
-
-   type Mouse_Button <B>is</B> (Left,     <I>-- aka: Button 1</I>
-                         Middle,   <I>-- aka: Button 2</I>
-                         Right,    <I>-- aka: Button 3</I>
-                         Button4,  <I>-- aka: Button 4</I>
-                         Control,  <I>-- Control Key</I>
-                         Shift,    <I>-- Shift Key</I>
-                         Alt);     <I>-- ALT Key</I>
-
-   type Button_State <B>is</B> (Released,
-                         Pressed,
-                         Clicked,
-                         Double_Clicked,
-                         Triple_Clicked);
-
-   type Mouse_Event <B>is</B> <B>private</B>;
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_mouse.3x.html">curs_mouse.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <B>function</B> Has_Mouse <B>return</B> Boolean;
-   <I>--  Return true if a mouse device is supported, false otherwise.</I>
-
-   <B>procedure</B> Register_Reportable_Event
-     (B    : <B>in</B> Mouse_Button;
-      S    : <B>in</B> Button_State;
-      Mask : <B>in</B> <B>out</B> Event_Mask);
-   <I>--  Stores the event described by the button and the state in the mask.</I>
-   <I>--  Before you call this the first time, you should init the mask</I>
-   <I>--  with the Empty_Mask constant</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>function</B> Start_Mouse (Mask : Event_Mask := All_Events)
-                         <B>return</B> Event_Mask;
-   <I>--  AKA: <A HREF="curs_mouse.3x.html">mousemask()</A></I>
-
-   <B>procedure</B> End_Mouse;
-   <I>--  Terminates the mouse</I>
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>function</B> Get_Mouse <B>return</B> Mouse_Event;
-   <I>--  AKA: <A HREF="curs_mouse.3x.html">getmouse()</A></I>
-
-   <B>procedure</B> Get_Event (Event  : <B>in</B>  Mouse_Event;
-                        Y      : <B>out</B> Line_Position;
-                        X      : <B>out</B> Column_Position;
-                        Button : <B>out</B> Mouse_Button;
-                        State  : <B>out</B> Button_State);
-   <I>--  !!! Warning: X and Y are screen coordinates. Due to ripped of lines they</I>
-   <I>--  may not be identical to window coordinates.</I>
-
-   <I>--  <A NAME="AFU_3">|</I>
-   <B>procedure</B> Unget_Mouse (Event : <B>in</B> Mouse_Event);
-   <I>--  AKA: <A HREF="curs_mouse.3x.html">ungetmouse()</A></I>
-
-   <I>--  <A NAME="AFU_4">|</I>
-   <B>function</B> Enclosed_In_Window (Win    : Window := Standard_Window;
-                                Event  : Mouse_Event) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_mouse.3x.html">wenclose()</A></I>
-   <I>--  But : use event instead of screen coordinates.</I>
-
-   <I>--  <A NAME="AFU_5">|</I>
-   <B>function</B> Mouse_Interval (Msec : Natural := 200) <B>return</B> Natural;
-   <I>--  AKA: <A HREF="curs_mouse.3x.html">mouseinterval()</A></I>
-
-<B>private</B>
-   type Event_Mask <B>is</B> <B>new</B> Interfaces.C.int;
-   No_Events  : <B>constant</B> Event_Mask := 0;
-   All_Events : <B>constant</B> Event_Mask := -1;
-
-   type Mouse_Event <B>is</B>
-      <B>record</B>
-         Id      : Integer <B>range</B> Integer (Interfaces.C.short'First) ..
-                                 Integer (Interfaces.C.Short'Last);
-         X, Y, Z : Integer <B>range</B> Integer (Interfaces.C.int'First) ..
-                                 Integer (Interfaces.C.int'Last);
-         Bstate  : Event_Mask;
-      <B>end</B> <B>record</B>;
-   <B>pragma</B> Convention (C, Mouse_Event);
-   <B>pragma</B> Pack (Mouse_Event);
-
-   <B>for</B> Mouse_Event <B>use</B>
-      <B>record</B>
-         Id      <B>at</B> 0 <B>range</B>   0 ..  15;
-         X       <B>at</B> 0 <B>range</B>  32 ..  63;
-         Y       <B>at</B> 0 <B>range</B>  64 ..  95;
-         Z       <B>at</B> 0 <B>range</B>  96 .. 127;
-         Bstate  <B>at</B> 0 <B>range</B> 128 .. 159;
-      <B>end</B> <B>record</B>;
-      <I>--  Please note: this rep. clause is generated and may be</I>
-      <I>--               different on your system.</I>
-
-   Generation_Bit_Order : <B>constant</B> System.Bit_Order := System.Low_Order_First;
-   <I>--  This constant may be different on your system.</I>
-
-<B>end</B> Terminal_Interface.Curses.Mouse;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-panels-user_data_s.html b/Ada95/html/terminal_interface-curses-panels-user_data_s.html
deleted file mode 100644 (file)
index 307d0c8..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                 Terminal_Interface.Curses.Panels.User_Data               --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.3 @</I>
-<I>------------------------------------------------------------------------------</I>
-
-<B>generic</B>
-   type User <B>is</B> <B>limited</B> <B>private</B>;
-   type User_Access <B>is</B> <B>access</B> <B>all</B> User;
-<B>package</B> Terminal_Interface.Curses.Panels.User_Data <B>is</B>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="panel.3x.html">panel.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>procedure</B> Set_User_Data (Pan  : <B>in</B> Panel;
-                            Data : <B>in</B> User_Access);
-   <I>--  AKA: <A HREF="panel.3x.html">set_panel_userptr</A></I>
-   <B>pragma</B> Convention (C, Set_User_Data);
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>procedure</B> Get_User_Data (Pan  : <B>in</B>  Panel;
-                            Data : <B>out</B> User_Access);
-   <I>--  AKA: <A HREF="panel.3x.html">panel_userptr</A></I>
-   <B>pragma</B> Convention (C, Get_User_Data);
-
-<B>end</B> Terminal_Interface.Curses.Panels.User_Data;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-panels_s.html b/Ada95/html/terminal_interface-curses-panels_s.html
deleted file mode 100644 (file)
index 9d2ca4c..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                      Terminal_Interface.Curses.Panels                    --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.3 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>with</B> System;
-
-<B>package</B> Terminal_Interface.Curses.Panels <B>is</B>
-
-   <B>pragma</B> Linker_Options ("-lpanel");
-
-
-   type Panel <B>is</B> <B>private</B>;
-
-   <I>---------------------------</I>
-   <I>--  Interface constants  --</I>
-   <I>---------------------------</I>
-   Null_Panel : <B>constant</B> Panel;
-
-   <I>-------------------</I>
-   <I>--  Exceptions   --</I>
-   <I>-------------------</I>
-
-   Panel_Exception : <B>exception</B>;
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="panel.3x.html">panel.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>function</B> Create (Win : Window) <B>return</B> Panel;
-   <I>--  AKA: <A HREF="panel.3x.html">new_panel()</A></I>
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>function</B> New_Panel (Win : Window) <B>return</B> Panel <B>renames</B> Create;
-   <I>--  AKA: <A HREF="panel.3x.html">new_panel()</A></I>
-
-   <I>--  <A NAME="AFU_3">|</I>
-   <B>procedure</B> Bottom (Pan : <B>in</B> Panel);
-   <I>--  AKA: <A HREF="panel.3x.html">bottom_panel()</A></I>
-
-   <I>--  <A NAME="AFU_4">|</I>
-   <B>procedure</B> Top (Pan : <B>in</B> Panel);
-   <I>--  AKA: <A HREF="panel.3x.html">top_panel()</A></I>
-
-   <I>--  <A NAME="AFU_5">|</I>
-   <B>procedure</B> Show (Pan : <B>in</B> Panel);
-   <I>--  AKA: <A HREF="panel.3x.html">show_panel()</A></I>
-
-   <I>--  <A NAME="AFU_6">|</I>
-   <B>procedure</B> Update_Panels;
-   <I>--  AKA: <A HREF="panel.3x.html">update_panels()</A></I>
-   <B>pragma</B> Import (C, Update_Panels, "update_panels");
-
-   <I>--  <A NAME="AFU_7">|</I>
-   <B>procedure</B> Hide (Pan : <B>in</B> Panel);
-   <I>--  AKA: <A HREF="panel.3x.html">hide_panel()</A></I>
-
-   <I>--  <A NAME="AFU_8">|</I>
-   <B>function</B> Get_Window (Pan : Panel) <B>return</B> Window;
-   <I>--  AKA: <A HREF="panel.3x.html">panel_window()</A></I>
-
-   <I>--  <A NAME="AFU_9">|</I>
-   <B>function</B> Panel_Window (Pan : Panel) <B>return</B> Window <B>renames</B> Get_Window;
-
-   <I>--  <A NAME="AFU_10">|</I>
-   <B>procedure</B> Replace (Pan : <B>in</B> Panel;
-                      Win : <B>in</B> Window);
-   <I>--  AKA: <A HREF="panel.3x.html">replace_panel()</A></I>
-
-   <I>--  <A NAME="AFU_11">|</I>
-   <B>procedure</B> Move (Pan    : <B>in</B> Panel;
-                   Line   : <B>in</B> Line_Position;
-                   Column : <B>in</B> Column_Position);
-   <I>--  AKA: <A HREF="panel.3x.html">move_panel()</A></I>
-
-   <I>--  <A NAME="AFU_12">|</I>
-   <B>function</B> Is_Hidden (Pan : Panel) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="panel.3x.html">panel_hidden()</A></I>
-
-   <I>--  <A NAME="AFU_13">|</I>
-   <B>function</B> Above (Pan : Panel) <B>return</B> Panel;
-   <I>--  AKA: <A HREF="panel.3x.html">panel_above()</A></I>
-   <B>pragma</B> Import (C, Above, "panel_above");
-
-   <I>--  <A NAME="AFU_14">|</I>
-   <B>function</B> Below (Pan : Panel) <B>return</B> Panel;
-   <I>--  AKA: <A HREF="panel.3x.html">panel_below()</A></I>
-   <B>pragma</B> Import (C, Below, "panel_below");
-
-   <I>--  <A NAME="AFU_15">|</I>
-   <B>procedure</B> Delete (Pan : <B>in</B> <B>out</B> Panel);
-   <I>--  AKA: <A HREF="panel.3x.html">del_panel()</A></I>
-
-   <B>private</B>
-      type Panel <B>is</B> <B>new</B> System.Address;
-      Null_Panel : <B>constant</B> Panel := Panel (System.Null_Address);
-
-<B>end</B> Terminal_Interface.Curses.Panels;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-text_io-complex_io_s.html b/Ada95/html/terminal_interface-curses-text_io-complex_io_s.html
deleted file mode 100644 (file)
index 8a959df..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--               Terminal_Interface.Curses.Text_IO.Complex_IO               --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.4 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>with</B> Ada.Numerics.Generic_Complex_Types;
-
-<B>generic</B>
-   <B>with</B> <B>package</B> Complex_Types <B>is</B> <B>new</B> Ada.Numerics.Generic_Complex_Types (&lt;&gt;);
-
-<B>package</B> Terminal_Interface.Curses.Text_IO.Complex_IO <B>is</B>
-
-   <B>use</B> Complex_Types;
-
-   Default_Fore : Field := 2;
-   Default_Aft  : Field := Real'<B>Digits</B> - 1;
-   Default_Exp  : Field := 3;
-   
-   <B>procedure</B> Put
-     (Win  : <B>in</B> Window;
-      Item : <B>in</B> Complex;
-      Fore : <B>in</B> Field := Default_Fore;
-      Aft  : <B>in</B> Field := Default_Aft;
-      Exp  : <B>in</B> Field := Default_Exp);
-
-   <B>procedure</B> Put
-     (Item : <B>in</B> Complex;
-      Fore : <B>in</B> Field := Default_Fore;
-      Aft  : <B>in</B> Field := Default_Aft;
-      Exp  : <B>in</B> Field := Default_Exp);
-
-<B>private</B>
-   <B>pragma</B> Inline (Put);
-
-<B>end</B> Terminal_Interface.Curses.Text_IO.Complex_IO;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-text_io-decimal_io_s.html b/Ada95/html/terminal_interface-curses-text_io-decimal_io_s.html
deleted file mode 100644 (file)
index 3dd4f32..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--               Terminal_Interface.Curses.Text_IO.Decimal_IO               --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.5 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>generic</B>
-   type Num <B>is</B> <B>delta</B> &lt;&gt; <B>digits</B> &lt;&gt;;
-
-<B>package</B> Terminal_Interface.Curses.Text_IO.Decimal_IO <B>is</B>
-
-   Default_Fore : Field := Num'Fore;
-   Default_Aft  : Field := Num'Aft;
-   Default_Exp  : Field := 0;
-
-   <B>procedure</B> Put
-     (Win  : <B>in</B> Window;
-      Item : <B>in</B> Num;
-      Fore : <B>in</B> Field := Default_Fore;
-      Aft  : <B>in</B> Field := Default_Aft;
-      Exp  : <B>in</B> Field := Default_Exp);
-
-   <B>procedure</B> Put
-     (Item  : <B>in</B> Num;
-      Fore : <B>in</B> Field := Default_Fore;
-      Aft  : <B>in</B> Field := Default_Aft;
-      Exp  : <B>in</B> Field := Default_Exp);
-
-<B>private</B>
-   <B>pragma</B> Inline (Put);
-
-<B>end</B> Terminal_Interface.Curses.Text_IO.Decimal_IO;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-text_io-enumeration_io_s.html b/Ada95/html/terminal_interface-curses-text_io-enumeration_io_s.html
deleted file mode 100644 (file)
index 0c45c78..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--             Terminal_Interface.Curses.Text_IO.Enumeration_IO             --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.5 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>generic</B>
-   type Enum <B>is</B> (&lt;&gt;);
-
-<B>package</B> Terminal_Interface.Curses.Text_IO.Enumeration_IO <B>is</B>
-
-   Default_Width : Field := 0;
-   Default_Setting : Type_Set := Mixed_Case;
-
-   <B>procedure</B> Put
-     (Win   : <B>in</B> Window;
-      Item  : <B>in</B> Enum;
-      Width : <B>in</B> Field := Default_Width;
-      Set   : <B>in</B> Type_Set := Default_Setting);
-
-   <B>procedure</B> Put
-     (Item  : <B>in</B> Enum;
-      Width : <B>in</B> Field := Default_Width;
-      Set   : <B>in</B> Type_Set := Default_Setting);
-
-<B>private</B>
-   <B>pragma</B> Inline (Put);
-
-<B>end</B> Terminal_Interface.Curses.Text_IO.Enumeration_IO;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-text_io-fixed_io_s.html b/Ada95/html/terminal_interface-curses-text_io-fixed_io_s.html
deleted file mode 100644 (file)
index 72f1bd1..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                Terminal_Interface.Curses.Text_IO.Fixed_IO                --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.5 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>generic</B>
-   type Num <B>is</B> <B>delta</B> &lt;&gt;;
-
-<B>package</B> Terminal_Interface.Curses.Text_IO.Fixed_IO <B>is</B>
-
-   Default_Fore : Field := Num'Fore;
-   Default_Aft  : Field := Num'Aft;
-   Default_Exp  : Field := 0;
-
-   <B>procedure</B> Put
-     (Win  : <B>in</B> Window;
-      Item : <B>in</B> Num;
-      Fore : <B>in</B> Field := Default_Fore;
-      Aft  : <B>in</B> Field := Default_Aft;
-      Exp  : <B>in</B> Field := Default_Exp);
-
-   <B>procedure</B> Put
-     (Item  : <B>in</B> Num;
-      Fore : <B>in</B> Field := Default_Fore;
-      Aft  : <B>in</B> Field := Default_Aft;
-      Exp  : <B>in</B> Field := Default_Exp);
-
-<B>private</B>
-   <B>pragma</B> Inline (Put);
-
-<B>end</B> Terminal_Interface.Curses.Text_IO.Fixed_IO;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-text_io-float_io_s.html b/Ada95/html/terminal_interface-curses-text_io-float_io_s.html
deleted file mode 100644 (file)
index 9d337e1..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                Terminal_Interface.Curses.Text_IO.Float_IO                --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.5 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>generic</B>
-   type Num <B>is</B> <B>digits</B> &lt;&gt;;
-
-<B>package</B> Terminal_Interface.Curses.Text_IO.Float_IO <B>is</B>
-
-   Default_Fore : Field := 2;
-   Default_Aft  : Field := Num'<B>Digits</B> - 1;
-   Default_Exp  : Field := 3;
-
-   <B>procedure</B> Put
-     (Win  : <B>in</B> Window;
-      Item : <B>in</B> Num;
-      Fore : <B>in</B> Field := Default_Fore;
-      Aft  : <B>in</B> Field := Default_Aft;
-      Exp  : <B>in</B> Field := Default_Exp);
-
-   <B>procedure</B> Put
-     (Item  : <B>in</B> Num;
-      Fore : <B>in</B> Field := Default_Fore;
-      Aft  : <B>in</B> Field := Default_Aft;
-      Exp  : <B>in</B> Field := Default_Exp);
-
-<B>private</B>
-   <B>pragma</B> Inline (Put);
-
-<B>end</B> Terminal_Interface.Curses.Text_IO.Float_IO;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-text_io-integer_io_s.html b/Ada95/html/terminal_interface-curses-text_io-integer_io_s.html
deleted file mode 100644 (file)
index 6346da7..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--               Terminal_Interface.Curses.Text_IO.Integer_IO               --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.5 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>generic</B>
-   type Num <B>is</B> <B>range</B> &lt;&gt;;
-
-<B>package</B> Terminal_Interface.Curses.Text_IO.Integer_IO <B>is</B>
-
-   Default_Width : Field := Num'Width;
-   Default_Base  : Number_Base := 10;
-
-   <B>procedure</B> Put
-     (Win   : <B>in</B> Window;
-      Item  : <B>in</B> Num;
-      Width : <B>in</B> Field := Default_Width;
-      Base  : <B>in</B> Number_Base := Default_Base);
-
-   <B>procedure</B> Put
-     (Item  : <B>in</B> Num;
-      Width : <B>in</B> Field := Default_Width;
-      Base  : <B>in</B> Number_Base := Default_Base);
-
-<B>private</B>
-   <B>pragma</B> Inline (Put);
-
-<B>end</B> Terminal_Interface.Curses.Text_IO.Integer_IO;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-text_io-modular_io_s.html b/Ada95/html/terminal_interface-curses-text_io-modular_io_s.html
deleted file mode 100644 (file)
index fa63150..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--               Terminal_Interface.Curses.Text_IO.Modular_IO               --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.5 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>generic</B>
-   type Num <B>is</B> <B>mod</B> &lt;&gt;;
-
-<B>package</B> Terminal_Interface.Curses.Text_IO.Modular_IO <B>is</B>
-
-   Default_Width : Field := Num'Width;
-   Default_Base  : Number_Base := 10;
-
-   <B>procedure</B> Put
-     (Win   : <B>in</B> Window;
-      Item  : <B>in</B> Num;
-      Width : <B>in</B> Field := Default_Width;
-      Base  : <B>in</B> Number_Base := Default_Base);
-
-   <B>procedure</B> Put
-     (Item  : <B>in</B> Num;
-      Width : <B>in</B> Field := Default_Width;
-      Base  : <B>in</B> Number_Base := Default_Base);
-
-<B>private</B>
-   <B>pragma</B> Inline (Put);
-
-<B>end</B> Terminal_Interface.Curses.Text_IO.Modular_IO;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses-text_io_s.html b/Ada95/html/terminal_interface-curses-text_io_s.html
deleted file mode 100644 (file)
index 1b88db7..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                     Terminal_Interface.Curses.Text_IO                    --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.6 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>with</B> System;
-<B>with</B> System.Parameters;
-<B>with</B> Ada.Text_IO;
-<B>with</B> Ada.IO_Exceptions;
-
-<B>package</B> Terminal_Interface.Curses.Text_IO <B>is</B>
-
-   <B>use</B> type Ada.Text_IO.Count;
-   <B>subtype</B> Count <B>is</B> Ada.Text_IO.Count;
-   <B>subtype</B> Positive_Count <B>is</B> Count <B>range</B> 1 .. Count'Last;
-
-   <B>subtype</B> Field <B>is</B> Integer <B>range</B> 0 .. System.Parameters.Field_Max;
-   <B>subtype</B> Number_Base <B>is</B> Integer <B>range</B> 2 .. 16;
-
-   type Type_Set <B>is</B> (Lower_Case, Upper_Case, Mixed_Case);
-
-   <I>--  For most of the routines you will see a version without a Window</I>
-   <I>--  type parameter. They will operate on a default window, which can</I>
-   <I>--  be set by the user. It is initially equal to Standard_Window.</I>
-
-   <B>procedure</B> Set_Window (Win : <B>in</B> Window);
-   <I>--  Set Win as the default window</I>
-
-   <B>function</B> Get_Window <B>return</B> Window;
-   <I>--  Get the current default window</I>
-
-   <B>procedure</B> Flush (Win : <B>in</B> Window);
-   <B>procedure</B> Flush;
-
-   <I>--------------------------------------------</I>
-   <I>-- Specification of line and page lengths --</I>
-   <I>--------------------------------------------</I>
-
-   <I>--  There are no set routines in this package. I assume, that you allocate</I>
-   <I>--  the window with an appropriate size.</I>
-   <I>--  A scroll-window is interpreted as an page with unbounded page length,</I>
-   <I>--  i.e. it returns the conventional 0 as page length.</I>
-
-   <B>function</B> Line_Length (Win : <B>in</B> Window) <B>return</B> Count;
-   <B>function</B> Line_Length <B>return</B> Count;
-
-   <B>function</B> Page_Length (Win : <B>in</B> Window) <B>return</B> Count;
-   <B>function</B> Page_Length <B>return</B> Count;
-
-   <I>------------------------------------</I>
-   <I>-- Column, Line, and Page Control --</I>
-   <I>------------------------------------</I>
-   <B>procedure</B> New_Line (Win : <B>in</B> Window; Spacing : <B>in</B> Positive_Count := 1);
-   <B>procedure</B> New_Line (Spacing : <B>in</B> Positive_Count := 1);
-
-   <B>procedure</B> New_Page (Win : <B>in</B> Window);
-   <B>procedure</B> New_Page;
-
-   <B>procedure</B> Set_Col (Win : <B>in</B> Window;  To : <B>in</B> Positive_Count);
-   <B>procedure</B> Set_Col (To : <B>in</B> Positive_Count);
-
-   <B>procedure</B> Set_Line (Win : <B>in</B> Window; To : <B>in</B> Positive_Count);
-   <B>procedure</B> Set_Line (To : <B>in</B> Positive_Count);
-
-   <B>function</B> Col (Win : <B>in</B> Window) <B>return</B> Positive_Count;
-   <B>function</B> Col <B>return</B> Positive_Count;
-
-   <B>function</B> Line (Win : <B>in</B> Window) <B>return</B> Positive_Count;
-   <B>function</B> Line <B>return</B> Positive_Count;
-
-   <I>-----------------------</I>
-   <I>-- Characters-Output --</I>
-   <I>-----------------------</I>
-
-   <B>procedure</B> Put (Win  : <B>in</B> Window; Item : <B>in</B> Character);
-   <B>procedure</B> Put (Item : <B>in</B> Character);
-
-   <I>--------------------</I>
-   <I>-- Strings-Output --</I>
-   <I>--------------------</I>
-
-   <B>procedure</B> Put (Win  : <B>in</B> Window; Item : <B>in</B> String);
-   <B>procedure</B> Put (Item : <B>in</B> String);
-
-   <B>procedure</B> Put_Line
-     (Win  : <B>in</B> Window;
-      Item : <B>in</B> String);
-
-   <B>procedure</B> Put_Line
-     (Item : <B>in</B> String);
-
-   <I>--  Exceptions</I>
-
-   Status_Error : <B>exception</B> <B>renames</B> Ada.IO_Exceptions.Status_Error;
-   Mode_Error   : <B>exception</B> <B>renames</B> Ada.IO_Exceptions.Mode_Error;
-   Name_Error   : <B>exception</B> <B>renames</B> Ada.IO_Exceptions.Name_Error;
-   Use_Error    : <B>exception</B> <B>renames</B> Ada.IO_Exceptions.Use_Error;
-   Device_Error : <B>exception</B> <B>renames</B> Ada.IO_Exceptions.Device_Error;
-   End_Error    : <B>exception</B> <B>renames</B> Ada.IO_Exceptions.End_Error;
-   Data_Error   : <B>exception</B> <B>renames</B> Ada.IO_Exceptions.Data_Error;
-   Layout_Error : <B>exception</B> <B>renames</B> Ada.IO_Exceptions.Layout_Error;
-
-<B>end</B> Terminal_Interface.Curses.Text_IO;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface-curses_s.html b/Ada95/html/terminal_interface-curses_s.html
deleted file mode 100644 (file)
index e294a6d..0000000
+++ /dev/null
@@ -1,1573 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<B></B><P><HR><P>
-<PRE>
-
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                         Terminal_Interface.Curses                        --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.9 @</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  curses binding.</I>
-<I>--  This module is generated. Please don't change it manually!</I>
-<I>--  Run the generator instead.</I>
-<I>--  |</I>
-<B>with</B> System;
-<B>with</B> Interfaces.C;   <I>--  We need this for some assertions.</I>
-
-<B>package</B> Terminal_Interface.Curses <B>is</B>
-
-   <B>pragma</B> Linker_Options ("-lncurses");
-
-   type Window <B>is</B> <B>private</B>;
-   Null_Window : <B>constant</B> Window;
-
-   type Line_Position   <B>is</B> <B>new</B> Natural; <I>--  line coordinate</I>
-   type Column_Position <B>is</B> <B>new</B> Natural; <I>--  column coordinate</I>
-
-   <B>subtype</B> Line_Count   <B>is</B> Line_Position   <B>range</B> 1 .. Line_Position'Last;
-   <I>--  Type to count lines. We do not allow null windows, so must be positive</I>
-   <B>subtype</B> Column_Count <B>is</B> Column_Position <B>range</B> 1 .. Column_Position'Last;
-   <I>--  Type to count columns. We do not allow null windows, so must be positive</I>
-
-   type Key_Code <B>is</B> <B>new</B> Natural;
-   <I>--  That is anything including real characters, special keys and logical</I>
-   <I>--  request codes.</I>
-
-   <B>subtype</B> Real_Key_Code <B>is</B> Key_Code <B>range</B> 0 .. 8#777#;
-   <I>--  This are the codes that potentially represent a real keystroke.</I>
-   <I>--  Not all codes may be possible on a specific terminal. To check the</I>
-   <I>--  availability of a special key, the Has_Key function is provided.</I>
-
-   <B>subtype</B> Special_Key_Code <B>is</B> Real_Key_Code
-     <B>range</B> 8#400# .. Real_Key_Code'Last;
-   <I>--  Type for a function- or special key number</I>
-
-   <B>subtype</B> Normal_Key_Code <B>is</B> Real_Key_Code <B>range</B>
-     Character'Pos (Character'First) .. Character'Pos (Character'Last);
-   <I>--  This are the codes for regular (incl. non-graphical) characters.</I>
-
-   <I>--  Constants for function- and special keys</I>
-   <I>--</I>
-   Key_None                       : <B>constant</B> Special_Key_Code := 8#400#;
-   Key_Code_Yes                   : <B>constant</B> Special_Key_Code := 8#400#;
-   Key_Min                        : <B>constant</B> Special_Key_Code := 8#401#;
-   Key_Break                      : <B>constant</B> Special_Key_Code := 8#401#;
-   Key_Cursor_Down                : <B>constant</B> Special_Key_Code := 8#402#;
-   Key_Cursor_Up                  : <B>constant</B> Special_Key_Code := 8#403#;
-   Key_Cursor_Left                : <B>constant</B> Special_Key_Code := 8#404#;
-   Key_Cursor_Right               : <B>constant</B> Special_Key_Code := 8#405#;
-   Key_Home                       : <B>constant</B> Special_Key_Code := 8#406#;
-   Key_Backspace                  : <B>constant</B> Special_Key_Code := 8#407#;
-   Key_F0                         : <B>constant</B> Special_Key_Code := 8#410#;
-   Key_F1                         : <B>constant</B> Special_Key_Code := 8#411#;
-   Key_F2                         : <B>constant</B> Special_Key_Code := 8#412#;
-   Key_F3                         : <B>constant</B> Special_Key_Code := 8#413#;
-   Key_F4                         : <B>constant</B> Special_Key_Code := 8#414#;
-   Key_F5                         : <B>constant</B> Special_Key_Code := 8#415#;
-   Key_F6                         : <B>constant</B> Special_Key_Code := 8#416#;
-   Key_F7                         : <B>constant</B> Special_Key_Code := 8#417#;
-   Key_F8                         : <B>constant</B> Special_Key_Code := 8#420#;
-   Key_F9                         : <B>constant</B> Special_Key_Code := 8#421#;
-   Key_F10                        : <B>constant</B> Special_Key_Code := 8#422#;
-   Key_F11                        : <B>constant</B> Special_Key_Code := 8#423#;
-   Key_F12                        : <B>constant</B> Special_Key_Code := 8#424#;
-   Key_F13                        : <B>constant</B> Special_Key_Code := 8#425#;
-   Key_F14                        : <B>constant</B> Special_Key_Code := 8#426#;
-   Key_F15                        : <B>constant</B> Special_Key_Code := 8#427#;
-   Key_F16                        : <B>constant</B> Special_Key_Code := 8#430#;
-   Key_F17                        : <B>constant</B> Special_Key_Code := 8#431#;
-   Key_F18                        : <B>constant</B> Special_Key_Code := 8#432#;
-   Key_F19                        : <B>constant</B> Special_Key_Code := 8#433#;
-   Key_F20                        : <B>constant</B> Special_Key_Code := 8#434#;
-   Key_F21                        : <B>constant</B> Special_Key_Code := 8#435#;
-   Key_F22                        : <B>constant</B> Special_Key_Code := 8#436#;
-   Key_F23                        : <B>constant</B> Special_Key_Code := 8#437#;
-   Key_F24                        : <B>constant</B> Special_Key_Code := 8#440#;
-   Key_Delete_Line                : <B>constant</B> Special_Key_Code := 8#510#;
-   Key_Insert_Line                : <B>constant</B> Special_Key_Code := 8#511#;
-   Key_Delete_Char                : <B>constant</B> Special_Key_Code := 8#512#;
-   Key_Insert_Char                : <B>constant</B> Special_Key_Code := 8#513#;
-   Key_Exit_Insert_Mode           : <B>constant</B> Special_Key_Code := 8#514#;
-   Key_Clear_Screen               : <B>constant</B> Special_Key_Code := 8#515#;
-   Key_Clear_End_Of_Screen        : <B>constant</B> Special_Key_Code := 8#516#;
-   Key_Clear_End_Of_Line          : <B>constant</B> Special_Key_Code := 8#517#;
-   Key_Scroll_1_Forward           : <B>constant</B> Special_Key_Code := 8#520#;
-   Key_Scroll_1_Backward          : <B>constant</B> Special_Key_Code := 8#521#;
-   Key_Next_Page                  : <B>constant</B> Special_Key_Code := 8#522#;
-   Key_Previous_Page              : <B>constant</B> Special_Key_Code := 8#523#;
-   Key_Set_Tab                    : <B>constant</B> Special_Key_Code := 8#524#;
-   Key_Clear_Tab                  : <B>constant</B> Special_Key_Code := 8#525#;
-   Key_Clear_All_Tabs             : <B>constant</B> Special_Key_Code := 8#526#;
-   Key_Enter_Or_Send              : <B>constant</B> Special_Key_Code := 8#527#;
-   Key_Soft_Reset                 : <B>constant</B> Special_Key_Code := 8#530#;
-   Key_Reset                      : <B>constant</B> Special_Key_Code := 8#531#;
-   Key_Print                      : <B>constant</B> Special_Key_Code := 8#532#;
-   Key_Bottom                     : <B>constant</B> Special_Key_Code := 8#533#;
-   Key_Upper_Left_Of_Keypad       : <B>constant</B> Special_Key_Code := 8#534#;
-   Key_Upper_Right_Of_Keypad      : <B>constant</B> Special_Key_Code := 8#535#;
-   Key_Center_Of_Keypad           : <B>constant</B> Special_Key_Code := 8#536#;
-   Key_Lower_Left_Of_Keypad       : <B>constant</B> Special_Key_Code := 8#537#;
-   Key_Lower_Right_Of_Keypad      : <B>constant</B> Special_Key_Code := 8#540#;
-   Key_Back_Tab                   : <B>constant</B> Special_Key_Code := 8#541#;
-   Key_Beginning                  : <B>constant</B> Special_Key_Code := 8#542#;
-   Key_Cancel                     : <B>constant</B> Special_Key_Code := 8#543#;
-   Key_Close                      : <B>constant</B> Special_Key_Code := 8#544#;
-   Key_Command                    : <B>constant</B> Special_Key_Code := 8#545#;
-   Key_Copy                       : <B>constant</B> Special_Key_Code := 8#546#;
-   Key_Create                     : <B>constant</B> Special_Key_Code := 8#547#;
-   Key_End                        : <B>constant</B> Special_Key_Code := 8#550#;
-   Key_Exit                       : <B>constant</B> Special_Key_Code := 8#551#;
-   Key_Find                       : <B>constant</B> Special_Key_Code := 8#552#;
-   Key_Help                       : <B>constant</B> Special_Key_Code := 8#553#;
-   Key_Mark                       : <B>constant</B> Special_Key_Code := 8#554#;
-   Key_Message                    : <B>constant</B> Special_Key_Code := 8#555#;
-   Key_Move                       : <B>constant</B> Special_Key_Code := 8#556#;
-   Key_Next                       : <B>constant</B> Special_Key_Code := 8#557#;
-   Key_Open                       : <B>constant</B> Special_Key_Code := 8#560#;
-   Key_Options                    : <B>constant</B> Special_Key_Code := 8#561#;
-   Key_Previous                   : <B>constant</B> Special_Key_Code := 8#562#;
-   Key_Redo                       : <B>constant</B> Special_Key_Code := 8#563#;
-   Key_Reference                  : <B>constant</B> Special_Key_Code := 8#564#;
-   Key_Refresh                    : <B>constant</B> Special_Key_Code := 8#565#;
-   Key_Replace                    : <B>constant</B> Special_Key_Code := 8#566#;
-   Key_Restart                    : <B>constant</B> Special_Key_Code := 8#567#;
-   Key_Resume                     : <B>constant</B> Special_Key_Code := 8#570#;
-   Key_Save                       : <B>constant</B> Special_Key_Code := 8#571#;
-   Key_Shift_Begin                : <B>constant</B> Special_Key_Code := 8#572#;
-   Key_Shift_Cancel               : <B>constant</B> Special_Key_Code := 8#573#;
-   Key_Shift_Command              : <B>constant</B> Special_Key_Code := 8#574#;
-   Key_Shift_Copy                 : <B>constant</B> Special_Key_Code := 8#575#;
-   Key_Shift_Create               : <B>constant</B> Special_Key_Code := 8#576#;
-   Key_Shift_Delete_Char          : <B>constant</B> Special_Key_Code := 8#577#;
-   Key_Shift_Delete_Line          : <B>constant</B> Special_Key_Code := 8#600#;
-   Key_Select                     : <B>constant</B> Special_Key_Code := 8#601#;
-   Key_Shift_End                  : <B>constant</B> Special_Key_Code := 8#602#;
-   Key_Shift_Clear_End_Of_Line    : <B>constant</B> Special_Key_Code := 8#603#;
-   Key_Shift_Exit                 : <B>constant</B> Special_Key_Code := 8#604#;
-   Key_Shift_Find                 : <B>constant</B> Special_Key_Code := 8#605#;
-   Key_Shift_Help                 : <B>constant</B> Special_Key_Code := 8#606#;
-   Key_Shift_Home                 : <B>constant</B> Special_Key_Code := 8#607#;
-   Key_Shift_Insert_Char          : <B>constant</B> Special_Key_Code := 8#610#;
-   Key_Shift_Cursor_Left          : <B>constant</B> Special_Key_Code := 8#611#;
-   Key_Shift_Message              : <B>constant</B> Special_Key_Code := 8#612#;
-   Key_Shift_Move                 : <B>constant</B> Special_Key_Code := 8#613#;
-   Key_Shift_Next_Page            : <B>constant</B> Special_Key_Code := 8#614#;
-   Key_Shift_Options              : <B>constant</B> Special_Key_Code := 8#615#;
-   Key_Shift_Previous_Page        : <B>constant</B> Special_Key_Code := 8#616#;
-   Key_Shift_Print                : <B>constant</B> Special_Key_Code := 8#617#;
-   Key_Shift_Redo                 : <B>constant</B> Special_Key_Code := 8#620#;
-   Key_Shift_Replace              : <B>constant</B> Special_Key_Code := 8#621#;
-   Key_Shift_Cursor_Right         : <B>constant</B> Special_Key_Code := 8#622#;
-   Key_Shift_Resume               : <B>constant</B> Special_Key_Code := 8#623#;
-   Key_Shift_Save                 : <B>constant</B> Special_Key_Code := 8#624#;
-   Key_Shift_Suspend              : <B>constant</B> Special_Key_Code := 8#625#;
-   Key_Shift_Undo                 : <B>constant</B> Special_Key_Code := 8#626#;
-   Key_Suspend                    : <B>constant</B> Special_Key_Code := 8#627#;
-   Key_Undo                       : <B>constant</B> Special_Key_Code := 8#630#;
-   Key_Mouse                      : <B>constant</B> Special_Key_Code := 8#631#;
-   Key_Resize                     : <B>constant</B> Special_Key_Code := 8#632#;
-
-   Key_Max                        : <B>constant</B> Special_Key_Code
-     := Special_Key_Code'Last;
-
-   <B>subtype</B> User_Key_Code <B>is</B> Key_Code
-     <B>range</B> (Key_Max + 129) .. Key_Code'Last;
-   <I>--  This is reserved for user defined key codes. The range between Key_Max</I>
-   <I>--  and the first user code is reserved for subsystems like menu and forms.</I>
-
-   <I>--  For those who like to use the original key names we produce them were</I>
-   <I>--  they differ from the original. Please note that they may differ in</I>
-   <I>--  lower/upper case.</I>
-   KEY_DOWN         : Special_Key_Code <B>renames</B> Key_Cursor_Down;
-   KEY_UP           : Special_Key_Code <B>renames</B> Key_Cursor_Up;
-   KEY_LEFT         : Special_Key_Code <B>renames</B> Key_Cursor_Left;
-   KEY_RIGHT        : Special_Key_Code <B>renames</B> Key_Cursor_Right;
-   KEY_DL           : Special_Key_Code <B>renames</B> Key_Delete_Line;
-   KEY_IL           : Special_Key_Code <B>renames</B> Key_Insert_Line;
-   KEY_DC           : Special_Key_Code <B>renames</B> Key_Delete_Char;
-   KEY_IC           : Special_Key_Code <B>renames</B> Key_Insert_Char;
-   KEY_EIC          : Special_Key_Code <B>renames</B> Key_Exit_Insert_Mode;
-   KEY_CLEAR        : Special_Key_Code <B>renames</B> Key_Clear_Screen;
-   KEY_EOS          : Special_Key_Code <B>renames</B> Key_Clear_End_Of_Screen;
-   KEY_EOL          : Special_Key_Code <B>renames</B> Key_Clear_End_Of_Line;
-   KEY_SF           : Special_Key_Code <B>renames</B> Key_Scroll_1_Forward;
-   KEY_SR           : Special_Key_Code <B>renames</B> Key_Scroll_1_Backward;
-   KEY_NPAGE        : Special_Key_Code <B>renames</B> Key_Next_Page;
-   KEY_PPAGE        : Special_Key_Code <B>renames</B> Key_Previous_Page;
-   KEY_STAB         : Special_Key_Code <B>renames</B> Key_Set_Tab;
-   KEY_CTAB         : Special_Key_Code <B>renames</B> Key_Clear_Tab;
-   KEY_CATAB        : Special_Key_Code <B>renames</B> Key_Clear_All_Tabs;
-   KEY_ENTER        : Special_Key_Code <B>renames</B> Key_Enter_Or_Send;
-   KEY_SRESET       : Special_Key_Code <B>renames</B> Key_Soft_Reset;
-   KEY_LL           : Special_Key_Code <B>renames</B> Key_Bottom;
-   KEY_A1           : Special_Key_Code <B>renames</B> Key_Upper_Left_Of_Keypad;
-   KEY_A3           : Special_Key_Code <B>renames</B> Key_Upper_Right_Of_Keypad;
-   KEY_B2           : Special_Key_Code <B>renames</B> Key_Center_Of_Keypad;
-   KEY_C1           : Special_Key_Code <B>renames</B> Key_Lower_Left_Of_Keypad;
-   KEY_C3           : Special_Key_Code <B>renames</B> Key_Lower_Right_Of_Keypad;
-   KEY_BTAB         : Special_Key_Code <B>renames</B> Key_Back_Tab;
-   KEY_BEG          : Special_Key_Code <B>renames</B> Key_Beginning;
-   KEY_SBEG         : Special_Key_Code <B>renames</B> Key_Shift_Begin;
-   KEY_SCANCEL      : Special_Key_Code <B>renames</B> Key_Shift_Cancel;
-   KEY_SCOMMAND     : Special_Key_Code <B>renames</B> Key_Shift_Command;
-   KEY_SCOPY        : Special_Key_Code <B>renames</B> Key_Shift_Copy;
-   KEY_SCREATE      : Special_Key_Code <B>renames</B> Key_Shift_Create;
-   KEY_SDC          : Special_Key_Code <B>renames</B> Key_Shift_Delete_Char;
-   KEY_SDL          : Special_Key_Code <B>renames</B> Key_Shift_Delete_Line;
-   KEY_SEND         : Special_Key_Code <B>renames</B> Key_Shift_End;
-   KEY_SEOL         : Special_Key_Code <B>renames</B> Key_Shift_Clear_End_Of_Line;
-   KEY_SEXIT        : Special_Key_Code <B>renames</B> Key_Shift_Exit;
-   KEY_SFIND        : Special_Key_Code <B>renames</B> Key_Shift_Find;
-   KEY_SHELP        : Special_Key_Code <B>renames</B> Key_Shift_Help;
-   KEY_SHOME        : Special_Key_Code <B>renames</B> Key_Shift_Home;
-   KEY_SIC          : Special_Key_Code <B>renames</B> Key_Shift_Insert_Char;
-   KEY_SLEFT        : Special_Key_Code <B>renames</B> Key_Shift_Cursor_Left;
-   KEY_SMESSAGE     : Special_Key_Code <B>renames</B> Key_Shift_Message;
-   KEY_SMOVE        : Special_Key_Code <B>renames</B> Key_Shift_Move;
-   KEY_SNEXT        : Special_Key_Code <B>renames</B> Key_Shift_Next_Page;
-   KEY_SOPTIONS     : Special_Key_Code <B>renames</B> Key_Shift_Options;
-   KEY_SPREVIOUS    : Special_Key_Code <B>renames</B> Key_Shift_Previous_Page;
-   KEY_SPRINT       : Special_Key_Code <B>renames</B> Key_Shift_Print;
-   KEY_SREDO        : Special_Key_Code <B>renames</B> Key_Shift_Redo;
-   KEY_SREPLACE     : Special_Key_Code <B>renames</B> Key_Shift_Replace;
-   KEY_SRIGHT       : Special_Key_Code <B>renames</B> Key_Shift_Cursor_Right;
-   KEY_SRSUME       : Special_Key_Code <B>renames</B> Key_Shift_Resume;
-   KEY_SSAVE        : Special_Key_Code <B>renames</B> Key_Shift_Save;
-   KEY_SSUSPEND     : Special_Key_Code <B>renames</B> Key_Shift_Suspend;
-   KEY_SUNDO        : Special_Key_Code <B>renames</B> Key_Shift_Undo;
-
-
-<I>------------------------------------------------------------------------------</I>
-
-   type Color_Number <B>is</B> <B>range</B> 0 .. Integer (Interfaces.C.short'Last);
-   <B>for</B> Color_Number'Size <B>use</B> Interfaces.C.short'Size;
-   <I>--  (n)curses uses a short for the color index</I>
-   <I>--  The model is, that a Color_Number is an index into an array of</I>
-   <I>--  (potentially) definable colors. Some of those indices are</I>
-   <I>--  predefined (see below), although they may not really exist.</I>
-
-   Black    : <B>constant</B> Color_Number := 0;
-   Red      : <B>constant</B> Color_Number := 1;
-   Green    : <B>constant</B> Color_Number := 2;
-   Yellow   : <B>constant</B> Color_Number := 3;
-   Blue     : <B>constant</B> Color_Number := 4;
-   Magenta  : <B>constant</B> Color_Number := 5;
-   Cyan     : <B>constant</B> Color_Number := 6;
-   White    : <B>constant</B> Color_Number := 7;
-
-   type RGB_Value <B>is</B> <B>range</B> 0 .. Integer (Interfaces.C.Short'Last);
-   <B>for</B> RGB_Value'Size <B>use</B> Interfaces.C.short'Size;
-   <I>--  Some system may allow to redefine a color by setting RGB values.</I>
-
-   type Color_Pair <B>is</B> <B>range</B> 0 .. 255;
-   <B>for</B> Color_Pair'Size <B>use</B> 8;
-   <B>subtype</B> Redefinable_Color_Pair <B>is</B> Color_Pair <B>range</B> 1 .. 255;
-   <I>--  (n)curses reserves 1 Byte for the color-pair number. Color Pair 0</I>
-   <I>--  is fixed (Black &amp; White). A color pair is simply a combination of</I>
-   <I>--  two colors described by Color_Numbers, one for the foreground and</I>
-   <I>--  the other for the background</I>
-
-   type Character_Attribute_Set <B>is</B>
-      <B>record</B>
-         Stand_Out               : Boolean;
-         Under_Line              : Boolean;
-         Reverse_Video           : Boolean;
-         Blink                   : Boolean;
-         Dim_Character           : Boolean;
-         Bold_Character          : Boolean;
-         Alternate_Character_Set : Boolean;
-         Invisible_Character     : Boolean;
-         Protected_Character     : Boolean;
-         Horizontal              : Boolean;
-         Left                    : Boolean;
-         Low                     : Boolean;
-         Right                   : Boolean;
-         Top                     : Boolean;
-         Vertical                : Boolean;
-         Reserved                : Boolean;
-      <B>end</B> <B>record</B>;
-   <B>pragma</B> Pack (Character_Attribute_Set);
-   <B>pragma</B> Convention (C, Character_Attribute_Set);
-
-   <B>for</B> Character_Attribute_Set <B>use</B>
-      <B>record</B>
-         Stand_Out               <B>at</B> 0 <B>range</B>  0 ..  0;
-         Under_Line              <B>at</B> 0 <B>range</B>  1 ..  1;
-         Reverse_Video           <B>at</B> 0 <B>range</B>  2 ..  2;
-         Blink                   <B>at</B> 0 <B>range</B>  3 ..  3;
-         Dim_Character           <B>at</B> 0 <B>range</B>  4 ..  4;
-         Bold_Character          <B>at</B> 0 <B>range</B>  5 ..  5;
-         Alternate_Character_Set <B>at</B> 0 <B>range</B>  6 ..  6;
-         Invisible_Character     <B>at</B> 0 <B>range</B>  7 ..  7;
-         Protected_Character     <B>at</B> 0 <B>range</B>  8 ..  8;
-         Horizontal              <B>at</B> 0 <B>range</B>  9 ..  9;
-         Left                    <B>at</B> 0 <B>range</B> 10 .. 10;
-         Low                     <B>at</B> 0 <B>range</B> 11 .. 11;
-         Right                   <B>at</B> 0 <B>range</B> 12 .. 12;
-         Top                     <B>at</B> 0 <B>range</B> 13 .. 13;
-         Vertical                <B>at</B> 0 <B>range</B> 14 .. 14;
-         Reserved                <B>at</B> 0 <B>range</B> 15 .. 15;
-      <B>end</B> <B>record</B>;
-   <B>for</B> Character_Attribute_Set'Size <B>use</B> Interfaces.C.int'Size / 2;
-   <I>--  Please note: this rep. clause is generated and may be</I>
-   <I>--               different on your system.</I>
-   <I>--  (n)curses uses half of an integer for attributes.</I>
-
-   Normal_Video : <B>constant</B> Character_Attribute_Set := (<B>others</B> =&gt; False);
-
-   type Attributed_Character <B>is</B>
-      <B>record</B>
-         Attr  : Character_Attribute_Set := Normal_Video;
-         Color : Color_Pair := 0;
-         Ch    : Character  := ' ';
-      <B>end</B> <B>record</B>;
-   <B>pragma</B> Convention (C, Attributed_Character);
-   <I>--  This is the counterpart for the chtype in C.</I>
-
-   <B>for</B> Attributed_Character <B>use</B>
-      <B>record</B>
-         Ch    <B>at</B> 0 <B>range</B>  0 ..  7;
-         Color <B>at</B> 0 <B>range</B>  8 .. 15;
-         Attr  <B>at</B> 0 <B>range</B> 16 .. 31;
-      <B>end</B> <B>record</B>;
-   <B>for</B> Attributed_Character'Size <B>use</B> Interfaces.C.int'Size;
-      <I>--  Please note: this rep. clause is generated and may be</I>
-      <I>--               different on your system.</I>
-
-   Default_Character : <B>constant</B> Attributed_Character
-     := (Ch    => Character'First,
-         Color => Color_Pair'First,
-         Attr  => Normal_Video);
-
-   type Attributed_String <B>is</B> <B>array</B> (Positive <B>range</B> &lt;&gt;) <B>of</B> Attributed_Character;
-   <B>pragma</B> Pack (Attributed_String);
-   <I>--  In this binding we allow strings of attributed characters.</I>
-
-   <I>------------------</I>
-   <I>--  Exceptions  --</I>
-   <I>------------------</I>
-   Curses_Exception : <B>exception</B>;
-
-   <I>--  Those exceptions are raised by the ETI (Extended Terminal Interface)</I>
-   <I>--  subpackets for Menu and Forms handling.</I>
-   <I>--</I>
-   Eti_System_Error    : <B>exception</B>;
-   Eti_Bad_Argument    : <B>exception</B>;
-   Eti_Posted          : <B>exception</B>;
-   Eti_Connected       : <B>exception</B>;
-   Eti_Bad_State       : <B>exception</B>;
-   Eti_No_Room         : <B>exception</B>;
-   Eti_Not_Posted      : <B>exception</B>;
-   Eti_Unknown_Command : <B>exception</B>;
-   Eti_No_Match        : <B>exception</B>;
-   Eti_Not_Selectable  : <B>exception</B>;
-   Eti_Not_Connected   : <B>exception</B>;
-   Eti_Request_Denied  : <B>exception</B>;
-   Eti_Invalid_Field   : <B>exception</B>;
-   Eti_Current         : <B>exception</B>;
-
-   <I>--------------------------------------------------------------------------</I>
-   <I>--  External C variables</I>
-   <I>--  Conceptually even in C this are kind of constants, but they are</I>
-   <I>--  initialized and sometimes changed by the library routines at runtime</I>
-   <I>--  depending on the type of terminal. I believe the best way to model</I>
-   <I>--  this is to use functions.</I>
-   <I>--------------------------------------------------------------------------</I>
-
-   <B>function</B> Lines            <B>return</B> Line_Count;
-   <B>pragma</B> Inline (Lines);
-
-   <B>function</B> Columns          <B>return</B> Column_Count;
-   <B>pragma</B> Inline (Columns);
-
-   <B>function</B> Tab_Size         <B>return</B> Natural;
-   <B>pragma</B> Inline (Tab_Size);
-
-   <B>function</B> Number_Of_Colors <B>return</B> Natural;
-   <B>pragma</B> Inline (Number_Of_Colors);
-
-   <B>function</B> Number_Of_Color_Pairs <B>return</B> Natural;
-   <B>pragma</B> Inline (Number_Of_Color_Pairs);
-
-   ACS_Map : <B>array</B> (Character'Val (0) .. Character'Val (127)) <B>of</B>
-     Attributed_Character;
-   <B>pragma</B> Import (C, ACS_Map, "acs_map");
-   <I>--</I>
-   <I>--</I>
-   <I>--  Constants for several symbols from the Alternate Character Set</I>
-   <I>--  You must use this constants as indices into the ACS_Map array</I>
-   <I>--  to get the corresponding attributed character at runtime.</I>
-   <I>--</I>
-   ACS_Upper_Left_Corner    : <B>constant</B> Character := 'l';
-   ACS_Lower_Left_Corner    : <B>constant</B> Character := 'm';
-   ACS_Upper_Right_Corner   : <B>constant</B> Character := 'k';
-   ACS_Lower_Right_Corner   : <B>constant</B> Character := 'j';
-   ACS_Left_Tee             : <B>constant</B> Character := 't';
-   ACS_Right_Tee            : <B>constant</B> Character := 'u';
-   ACS_Bottom_Tee           : <B>constant</B> Character := 'v';
-   ACS_Top_Tee              : <B>constant</B> Character := 'w';
-   ACS_Horizontal_Line      : <B>constant</B> Character := 'q';
-   ACS_Vertical_Line        : <B>constant</B> Character := 'x';
-   ACS_Plus_Symbol          : <B>constant</B> Character := 'n';
-   ACS_Scan_Line_1          : <B>constant</B> Character := 'o';
-   ACS_Scan_Line_9          : <B>constant</B> Character := 's';
-   ACS_Diamond              : <B>constant</B> Character := Character'Val (96);
-   ACS_Checker_Board        : <B>constant</B> Character := 'a';
-   ACS_Degree               : <B>constant</B> Character := 'f';
-   ACS_Plus_Minus           : <B>constant</B> Character := 'g';
-   ACS_Bullet               : <B>constant</B> Character := '~';
-   ACS_Left_Arrow           : <B>constant</B> Character := ',';
-   ACS_Right_Arrow          : <B>constant</B> Character := '+';
-   ACS_Down_Arrow           : <B>constant</B> Character := '.';
-   ACS_Up_Arrow             : <B>constant</B> Character := '-';
-   ACS_Board_Of_Squares     : <B>constant</B> Character := 'h';
-   ACS_Lantern              : <B>constant</B> Character := 'i';
-   ACS_Solid_Block          : <B>constant</B> Character := '0';
-   ACS_Scan_Line_3          : <B>constant</B> Character := 'p';
-   ACS_Scan_Line_7          : <B>constant</B> Character := 'r';
-   ACS_Less_Or_Equal        : <B>constant</B> Character := 'y';
-   ACS_Greater_Or_Equal     : <B>constant</B> Character := 'z';
-   ACS_PI                   : <B>constant</B> Character := '{';
-   ACS_Not_Equal            : <B>constant</B> Character := '|';
-   ACS_Sterling             : <B>constant</B> Character := '}';
-
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_initscr.3x.html">curs_initscr.3x</A></I>
-   <I>--  |=====================================================================</I>
-   <I>--  | Not implemented: newterm, set_term, delscreen</I>
-
-   <I>--  <A NAME="AFU_1">|</I>
-   <B>function</B> Standard_Window <B>return</B> Window;
-   <I>--  AKA: <A HREF="curs_initscr.3x.html">stdscr</A></I>
-   <B>pragma</B> Inline (Standard_Window);
-
-   <I>--  <A NAME="AFU_2">|</I>
-   <B>procedure</B> Init_Screen;
-
-   <I>--  <A NAME="AFU_3">|</I>
-   <B>procedure</B> Init_Windows <B>renames</B> Init_Screen;
-   <I>--  AKA: <A HREF="curs_initscr.3x.html">initscr()</A></I>
-
-   <I>--  <A NAME="AFU_4">|</I>
-   <B>procedure</B> End_Windows;
-   <I>--  AKA: <A HREF="curs_initscr.3x.html">endwin()</A></I>
-   <B>procedure</B> End_Screen <B>renames</B> End_Windows;
-
-   <I>--  <A NAME="AFU_5">|</I>
-   <B>function</B> Is_End_Window <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_initscr.3x.html">isendwin()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_move.3x.html">curs_move.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_6">|</I>
-   <B>procedure</B> Move_Cursor (Win    : <B>in</B> Window := Standard_Window;
-                          Line   : <B>in</B> Line_Position;
-                          Column : <B>in</B> Column_Position);
-   <I>--  AKA: <A HREF="curs_move.3x.html">wmove()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_addch.3x.html">curs_addch.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_7">|</I>
-   <B>procedure</B> Add (Win :  <B>in</B> Window := Standard_Window;
-                  Ch  :  <B>in</B> Attributed_Character);
-   <I>--  AKA: <A HREF="curs_addch.3x.html">waddch()</A></I>
-
-   <B>procedure</B> Add (Win :  <B>in</B> Window := Standard_Window;
-                  Ch  :  <B>in</B> Character);
-   <I>--  Add a single character at the current logical cursor position to</I>
-   <I>--  the window. Use the current windows attributes.</I>
-
-   <I>--  <A NAME="AFU_8">|</I>
-   <B>procedure</B> Add
-     (Win    : <B>in</B> Window := Standard_Window;
-      Line   : <B>in</B> Line_Position;
-      Column : <B>in</B> Column_Position;
-      Ch     : <B>in</B> Attributed_Character);
-   <I>--  AKA: <A HREF="curs_addch.3x.html">mvwaddch()</A></I>
-
-   <B>procedure</B> Add
-     (Win    : <B>in</B> Window := Standard_Window;
-      Line   : <B>in</B> Line_Position;
-      Column : <B>in</B> Column_Position;
-      Ch     : <B>in</B> Character);
-   <I>--  Move to the position and add a single character into the window</I>
-
-   <I>--  <A NAME="AFU_9">|</I>
-   <B>procedure</B> Add_With_Immediate_Echo
-     (Win : <B>in</B> Window := Standard_Window;
-      Ch  : <B>in</B> Attributed_Character);
-   <I>--  AKA: <A HREF="curs_addch.3x.html">wechochar()</A></I>
-
-   <B>procedure</B> Add_With_Immediate_Echo
-     (Win : <B>in</B> Window := Standard_Window;
-      Ch  : <B>in</B> Character);
-   <I>--  Add a character and do an immediate resfresh of the screen.</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_window.3x.html">curs_window.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_10">|</I>
-   <B>function</B> Create
-     (Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) <B>return</B> Window;
-   <I>--  AKA: <A HREF="curs_window.3x.html">newwin()</A></I>
-
-   <B>function</B> New_Window
-     (Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) <B>return</B> Window
-     <B>renames</B> Create;
-
-   <I>--  <A NAME="AFU_11">|</I>
-   <B>procedure</B> Delete (Win : <B>in</B> <B>out</B> Window);
-   <I>--  AKA: <A HREF="curs_window.3x.html">delwin()</A></I>
-   <I>--  Reset Win to Null_Window</I>
-
-   <I>--  <A NAME="AFU_12">|</I>
-   <B>function</B> Sub_Window
-     (Win                   : Window := Standard_Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) <B>return</B> Window;
-   <I>--  AKA: <A HREF="curs_window.3x.html">subwin()</A></I>
-
-   <I>--  <A NAME="AFU_13">|</I>
-   <B>function</B> Derived_Window
-     (Win                   : Window := Standard_Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) <B>return</B> Window;
-   <I>--  AKA: <A HREF="curs_window.3x.html">derwin()</A></I>
-
-   <I>--  <A NAME="AFU_14">|</I>
-   <B>function</B> Duplicate (Win : Window) <B>return</B> Window;
-   <I>--  AKA: <A HREF="curs_window.3x.html">dupwin()</A></I>
-
-   <I>--  <A NAME="AFU_15">|</I>
-   <B>procedure</B> Move_Window (Win    : <B>in</B> Window;
-                          Line   : <B>in</B> Line_Position;
-                          Column : <B>in</B> Column_Position);
-   <I>--  AKA: <A HREF="curs_window.3x.html">mvwin()</A></I>
-
-   <I>--  <A NAME="AFU_16">|</I>
-   <B>procedure</B> Move_Derived_Window (Win    : <B>in</B> Window;
-                                  Line   : <B>in</B> Line_Position;
-                                  Column : <B>in</B> Column_Position);
-   <I>--  AKA: <A HREF="curs_window.3x.html">mvderwin()</A></I>
-
-   <I>--  <A NAME="AFU_17">|</I>
-   <B>procedure</B> Synchronize_Upwards (Win : <B>in</B> Window);
-   <I>--  AKA: <A HREF="curs_window.3x.html">wsyncup()</A></I>
-   <B>pragma</B> Import (C, Synchronize_Upwards, "wsyncup");
-
-   <I>--  <A NAME="AFU_18">|</I>
-   <B>procedure</B> Synchronize_Downwards (Win : <B>in</B> Window);
-   <I>--  AKA: <A HREF="curs_window.3x.html">wsyncdown()</A></I>
-   <B>pragma</B> Import (C, Synchronize_Downwards, "wsyncdown");
-
-   <I>--  <A NAME="AFU_19">|</I>
-   <B>procedure</B> Set_Synch_Mode (Win  : <B>in</B> Window := Standard_Window;
-                             Mode : <B>in</B> Boolean := False);
-   <I>--  AKA: <A HREF="curs_window.3x.html">syncok()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_addstr.3x.html">curs_addstr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_20">|</I>
-   <B>procedure</B> Add (Win : <B>in</B> Window := Standard_Window;
-                  Str : <B>in</B> String;
-                  Len : <B>in</B> Integer := -1);
-   <I>--  AKA: <A HREF="curs_addstr.3x.html">waddnstr()</A></I>
-   <I>--  AKA: waddstr()</I>
-
-   <I>--  <A NAME="AFU_21">|</I>
-   <B>procedure</B> Add (Win    : <B>in</B> Window := Standard_Window;
-                  Line   : <B>in</B> Line_Position;
-                  Column : <B>in</B> Column_Position;
-                  Str    : <B>in</B> String;
-                  Len    : <B>in</B> Integer := -1);
-   <I>--  AKA: <A HREF="curs_addstr.3x.html">mvwaddnstr()</A></I>
-   <I>--  AKA: mvwaddstr()</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_addchstr.3x.html">curs_addchstr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_22">|</I>
-   <B>procedure</B> Add (Win : <B>in</B> Window := Standard_Window;
-                  Str : <B>in</B> Attributed_String;
-                  Len : <B>in</B> Integer := -1);
-   <I>--  AKA: <A HREF="curs_addchstr.3x.html">waddchnstr()</A></I>
-   <I>--  AKA: waddchstr()</I>
-
-   <I>--  <A NAME="AFU_23">|</I>
-   <B>procedure</B> Add (Win    : <B>in</B> Window := Standard_Window;
-                  Line   : <B>in</B> Line_Position;
-                  Column : <B>in</B> Column_Position;
-                  Str    : <B>in</B> Attributed_String;
-                  Len    : <B>in</B> Integer := -1);
-   <I>--  AKA: <A HREF="curs_addchstr.3x.html">mvwaddchnstr()</A></I>
-   <I>--  AKA: mvwaddchstr()</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_border.3x.html">curs_border.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_24">|</I>
-   <B>procedure</B> Border
-     (Win                       : <B>in</B> Window := Standard_Window;
-      Left_Side_Symbol          : <B>in</B> Attributed_Character := Default_Character;
-      Right_Side_Symbol         : <B>in</B> Attributed_Character := Default_Character;
-      Top_Side_Symbol           : <B>in</B> Attributed_Character := Default_Character;
-      Bottom_Side_Symbol        : <B>in</B> Attributed_Character := Default_Character;
-      Upper_Left_Corner_Symbol  : <B>in</B> Attributed_Character := Default_Character;
-      Upper_Right_Corner_Symbol : <B>in</B> Attributed_Character := Default_Character;
-      Lower_Left_Corner_Symbol  : <B>in</B> Attributed_Character := Default_Character;
-      Lower_Right_Corner_Symbol : <B>in</B> Attributed_Character := Default_Character
-     );
-   <I>--  AKA: <A HREF="curs_border.3x.html">wborder()</A></I>
-
-   <I>--  <A NAME="AFU_25">|</I>
-   <B>procedure</B> Box
-     (Win               : <B>in</B> Window := Standard_Window;
-      Vertical_Symbol   : <B>in</B> Attributed_Character := Default_Character;
-      Horizontal_Symbol : <B>in</B> Attributed_Character := Default_Character);
-   <I>--  AKA: <A HREF="curs_border.3x.html">box()</A></I>
-
-   <I>--  <A NAME="AFU_26">|</I>
-   <B>procedure</B> Horizontal_Line
-     (Win         : <B>in</B> Window := Standard_Window;
-      Line_Size   : <B>in</B> Natural;
-      Line_Symbol : <B>in</B> Attributed_Character := Default_Character);
-   <I>--  AKA: <A HREF="curs_border.3x.html">whline()</A></I>
-
-   <I>--  <A NAME="AFU_27">|</I>
-   <B>procedure</B> Vertical_Line
-     (Win         : <B>in</B> Window := Standard_Window;
-      Line_Size   : <B>in</B> Natural;
-      Line_Symbol : <B>in</B> Attributed_Character := Default_Character);
-   <I>--  AKA: <A HREF="curs_border.3x.html">wvline()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_getch.3x.html">curs_getch.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_28">|</I>
-   <B>function</B> Get_Keystroke (Win : Window := Standard_Window)
-                           <B>return</B> Real_Key_Code;
-   <I>--  AKA: <A HREF="curs_getch.3x.html">wgetch()</A></I>
-   <I>--  Get a character from the keyboard and echo it - if enabled - to the</I>
-   <I>--  window.</I>
-   <I>--  If for any reason (i.e. a timeout) we couldn't get a character the</I>
-   <I>--  returned keycode is Key_None.</I>
-
-   <I>--  <A NAME="AFU_29">|</I>
-   <B>procedure</B> Undo_Keystroke (Key : <B>in</B> Real_Key_Code);
-   <I>--  AKA: <A HREF="curs_getch.3x.html">ungetch()</A></I>
-
-   <I>--  <A NAME="AFU_30">|</I>
-   <B>function</B> Has_Key (Key : Special_Key_Code) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_getch.3x.html">has_key()</A></I>
-   <I>--  |</I>
-   <I>--  | Some helper functions</I>
-   <I>--  |</I>
-   <B>function</B> Is_Function_Key (Key : Special_Key_Code) <B>return</B> Boolean;
-   <I>--  Return True if the Key is a function key (i.e. one of F0 .. F63)</I>
-
-   <B>subtype</B> Function_Key_Number <B>is</B> Integer <B>range</B> 0 .. 63;
-   <I>--  (n)curses allows for 64 function keys.</I>
-
-   <B>function</B> Function_Key (Key : Real_Key_Code) <B>return</B> Function_Key_Number;
-   <I>--  Return the number of the function key. If the code is not a</I>
-   <I>--  function key, a CONSTRAINT_ERROR will be raised.</I>
-
-   <B>function</B> Function_Key_Code (Key : Function_Key_Number) <B>return</B> Real_Key_Code;
-   <I>--  Return the key code for a given functionkey number.</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_attr.3x.html">curs_attr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_31">|</I>
-   <B>procedure</B> Switch_Character_Attribute
-     (Win  : <B>in</B> Window := Standard_Window;
-      Attr : <B>in</B> Character_Attribute_Set := Normal_Video;
-      On   : <B>in</B> Boolean := True); <I>--  if False we switch Off.</I>
-   <I>--  AKA: <A HREF="curs_attr.3x.html">wattron()</A></I>
-   <I>--  AKA: wattroff()</I>
-
-   <I>--  <A NAME="AFU_32">|</I>
-   <B>procedure</B> Set_Character_Attributes
-     (Win   : <B>in</B> Window := Standard_Window;
-      Attr  : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="curs_attr.3x.html">wattrset()</A></I>
-
-   <I>--  <A NAME="AFU_33">|</I>
-   <B>function</B> Get_Character_Attribute
-     (Win : <B>in</B> Window := Standard_Window) <B>return</B> Character_Attribute_Set;
-   <I>--  AKA: <A HREF="curs_attr.3x.html">wattr_get()</A></I>
-
-   <I>--  <A NAME="AFU_34">|</I>
-   <B>function</B> Get_Character_Attribute
-     (Win : <B>in</B> Window := Standard_Window) <B>return</B> Color_Pair;
-   <I>--  AKA: <A HREF="curs_attr.3x.html">wattr_get()</A></I>
-
-   <I>--  <A NAME="AFU_35">|</I>
-   <B>procedure</B> Change_Attributes
-     (Win   : <B>in</B> Window := Standard_Window;
-      Count : <B>in</B> Integer := -1;
-      Attr  : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="curs_attr.3x.html">wchgat()</A></I>
-
-   <I>--  <A NAME="AFU_36">|</I>
-   <B>procedure</B> Change_Attributes
-     (Win    : <B>in</B> Window := Standard_Window;
-      Line   : <B>in</B> Line_Position := Line_Position'First;
-      Column : <B>in</B> Column_Position := Column_Position'First;
-      Count  : <B>in</B> Integer := -1;
-      Attr   : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color  : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="curs_attr.3x.html">mvwchgat()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_beep.3x.html">curs_beep.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_37">|</I>
-   <B>procedure</B> Beep;
-   <I>--  AKA: <A HREF="curs_beep.3x.html">beep()</A></I>
-
-   <I>--  <A NAME="AFU_38">|</I>
-   <B>procedure</B> Flash_Screen;
-   <I>--  AKA: <A HREF="curs_beep.3x.html">flash()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_inopts.3x.html">curs_inopts.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  | Not implemented : typeahead</I>
-   <I>--</I>
-   <I>--  <A NAME="AFU_39">|</I>
-   <B>procedure</B> Set_Cbreak_Mode (SwitchOn : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">cbreak()</A></I>
-   <I>--  AKA: nocbreak()</I>
-
-   <I>--  <A NAME="AFU_40">|</I>
-   <B>procedure</B> Set_Raw_Mode (SwitchOn : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">raw()</A></I>
-   <I>--  AKA: noraw()</I>
-
-   <I>--  <A NAME="AFU_41">|</I>
-   <B>procedure</B> Set_Echo_Mode (SwitchOn : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">echo()</A></I>
-   <I>--  AKA: noecho()</I>
-
-   <I>--  <A NAME="AFU_42">|</I>
-   <B>procedure</B> Set_Meta_Mode (Win      : <B>in</B> Window := Standard_Window;
-                            SwitchOn : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">meta()</A></I>
-
-   <I>--  <A NAME="AFU_43">|</I>
-   <B>procedure</B> Set_KeyPad_Mode (Win      : <B>in</B> Window := Standard_Window;
-                              SwitchOn : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">keypad()</A></I>
-
-   type Half_Delay_Amount <B>is</B> <B>range</B> 1 .. 255;
-
-   <I>--  <A NAME="AFU_44">|</I>
-   <B>procedure</B> Half_Delay (Amount : <B>in</B> Half_Delay_Amount);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">halfdelay()</A></I>
-
-   <I>--  <A NAME="AFU_45">|</I>
-   <B>procedure</B> Set_Flush_On_Interrupt_Mode
-     (Win  : <B>in</B> Window := Standard_Window;
-      Mode : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">intrflush()</A></I>
-
-   <I>--  <A NAME="AFU_46">|</I>
-   <B>procedure</B> Set_Queue_Interrupt_Mode
-     (Win   : <B>in</B> Window := Standard_Window;
-      Flush : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">qiflush()</A></I>
-   <I>--  AKA: noqiflush()</I>
-
-   <I>--  <A NAME="AFU_47">|</I>
-   <B>procedure</B> Set_NoDelay_Mode
-     (Win  : <B>in</B> Window := Standard_Window;
-      Mode : <B>in</B> Boolean := False);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">nodelay()</A></I>
-
-   type Timeout_Mode <B>is</B> (Blocking, Non_Blocking, Delayed);
-
-   <I>--  <A NAME="AFU_48">|</I>
-   <B>procedure</B> Set_Timeout_Mode (Win    : <B>in</B> Window := Standard_Window;
-                               Mode   : <B>in</B> Timeout_Mode;
-                               Amount : <B>in</B> Natural); <I>--  in Miliseconds</I>
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">wtimeout()</A></I>
-   <I>--  Instead of overloading the semantic of the sign of amount, we</I>
-   <I>--  introduce the Timeout_Mode parameter. This should improve</I>
-   <I>--  readability. For Blocking and Non_Blocking, the Amount is not</I>
-   <I>--  evaluated.</I>
-
-   <I>--  <A NAME="AFU_49">|</I>
-   <B>procedure</B> Set_Escape_Timer_Mode
-     (Win       : <B>in</B> Window := Standard_Window;
-      Timer_Off : <B>in</B> Boolean := False);
-   <I>--  AKA: <A HREF="curs_inopts.3x.html">notimeout()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_outopts.3x.html">curs_outopts.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_50">|</I>
-   <B>procedure</B> Set_NL_Mode (SwitchOn : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_outopts.3x.html">nl()</A></I>
-   <I>--  AKA: nonl()</I>
-
-   <I>--  <A NAME="AFU_51">|</I>
-   <B>procedure</B> Clear_On_Next_Update
-     (Win      : <B>in</B> Window := Standard_Window;
-      Do_Clear : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_outopts.3x.html">clearok()</A></I>
-
-   <I>--  <A NAME="AFU_52">|</I>
-   <B>procedure</B> Use_Insert_Delete_Line
-     (Win    : <B>in</B> Window := Standard_Window;
-      Do_Idl : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_outopts.3x.html">idlok()</A></I>
-
-   <I>--  <A NAME="AFU_53">|</I>
-   <B>procedure</B> Use_Insert_Delete_Character
-     (Win    : <B>in</B> Window := Standard_Window;
-      Do_Idc : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_outopts.3x.html">idcok()</A></I>
-
-   <I>--  <A NAME="AFU_54">|</I>
-   <B>procedure</B> Leave_Cursor_After_Update
-     (Win      : <B>in</B> Window := Standard_Window;
-      Do_Leave : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_outopts.3x.html">leaveok()</A></I>
-
-   <I>--  <A NAME="AFU_55">|</I>
-   <B>procedure</B> Immediate_Update_Mode
-     (Win  : <B>in</B> Window := Standard_Window;
-      Mode : <B>in</B> Boolean := False);
-   <I>--  AKA: <A HREF="curs_outopts.3x.html">immedok()</A></I>
-
-   <I>--  <A NAME="AFU_56">|</I>
-   <B>procedure</B> Allow_Scrolling
-     (Win  : <B>in</B> Window := Standard_Window;
-      Mode : <B>in</B> Boolean := False);
-   <I>--  AKA: <A HREF="curs_outopts.3x.html">scrollok()</A></I>
-
-   <B>function</B> Scrolling_Allowed (Win : Window := Standard_Window) <B>return</B> Boolean;
-   <I>--  There is no such function in the C interface.</I>
-
-   <I>--  <A NAME="AFU_57">|</I>
-   <B>procedure</B> Set_Scroll_Region
-     (Win         : <B>in</B> Window := Standard_Window;
-      Top_Line    : <B>in</B> Line_Position;
-      Bottom_Line : <B>in</B> Line_Position);
-   <I>--  AKA: <A HREF="curs_outopts.3x.html">wsetscrreg()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_refresh.3x.html">curs_refresh.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_58">|</I>
-   <B>procedure</B> Update_Screen;
-   <I>--  AKA: <A HREF="curs_refresh.3x.html">doupdate()</A></I>
-
-   <I>--  <A NAME="AFU_59">|</I>
-   <B>procedure</B> Refresh (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_refresh.3x.html">wrefresh()</A></I>
-
-   <I>--  <A NAME="AFU_60">|</I>
-   <B>procedure</B> Refresh_Without_Update
-     (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_refresh.3x.html">wnoutrefresh()</A></I>
-
-   <I>--  <A NAME="AFU_61">|</I>
-   <B>procedure</B> Redraw (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_refresh.3x.html">redrawwin()</A></I>
-
-   <I>--  <A NAME="AFU_62">|</I>
-   <B>procedure</B> Redraw (Win        : <B>in</B> Window := Standard_Window;
-                     Begin_Line : <B>in</B> Line_Position;
-                     Line_Count : <B>in</B> Positive);
-   <I>--  AKA: <A HREF="curs_refresh.3x.html">wredrawln()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_clear.3x.html">curs_clear.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_63">|</I>
-   <B>procedure</B> Erase (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_clear.3x.html">werase()</A></I>
-
-   <I>--  <A NAME="AFU_64">|</I>
-   <B>procedure</B> Clear
-     (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_clear.3x.html">wclear()</A></I>
-
-   <I>--  <A NAME="AFU_65">|</I>
-   <B>procedure</B> Clear_To_End_Of_Screen
-     (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_clear.3x.html">wclrtobot()</A></I>
-
-   <I>--  <A NAME="AFU_66">|</I>
-   <B>procedure</B> Clear_To_End_Of_Line
-     (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_clear.3x.html">wclrtoeol()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_bkgd.3x.html">curs_bkgd.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_67">|</I>
-   <B>procedure</B> Set_Background
-     (Win : <B>in</B> Window := Standard_Window;
-      Ch  : <B>in</B> Attributed_Character);
-   <I>--  AKA: <A HREF="curs_bkgd.3x.html">wbkgdset()</A></I>
-
-   <I>--  <A NAME="AFU_68">|</I>
-   <B>procedure</B> Change_Background
-     (Win : <B>in</B> Window := Standard_Window;
-      Ch  : <B>in</B> Attributed_Character);
-   <I>--  AKA: <A HREF="curs_bkgd.3x.html">wbkgd()</A></I>
-
-   <I>--  <A NAME="AFU_69">|</I>
-   <B>function</B> Get_Background (Win : Window := Standard_Window)
-     <B>return</B> Attributed_Character;
-   <I>--  AKA: <A HREF="curs_bkgd.3x.html">wbkgdget()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_touch.3x.html">curs_touch.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_70">|</I>
-   <B>procedure</B> Touch (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_touch.3x.html">touchwin()</A></I>
-
-   <I>--  <A NAME="AFU_71">|</I>
-   <B>procedure</B> Untouch (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_touch.3x.html">untouchwin()</A></I>
-
-   <I>--  <A NAME="AFU_72">|</I>
-   <B>procedure</B> Touch (Win   : <B>in</B> Window := Standard_Window;
-                    Start : <B>in</B> Line_Position;
-                    Count : <B>in</B> Positive);
-   <I>--  AKA: <A HREF="curs_touch.3x.html">touchline()</A></I>
-
-   <I>--  <A NAME="AFU_73">|</I>
-   <B>procedure</B> Change_Lines_Status (Win   : <B>in</B> Window := Standard_Window;
-                                  Start : <B>in</B> Line_Position;
-                                  Count : <B>in</B> Positive;
-                                  State : <B>in</B> Boolean);
-   <I>--  AKA: <A HREF="curs_touch.3x.html">wtouchln()</A></I>
-
-   <I>--  <A NAME="AFU_74">|</I>
-   <B>function</B> Is_Touched (Win  : Window := Standard_Window;
-                        Line : Line_Position) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_touch.3x.html">is_linetouched()</A></I>
-
-   <I>--  <A NAME="AFU_75">|</I>
-   <B>function</B> Is_Touched (Win : Window := Standard_Window) <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_touch.3x.html">is_wintouched()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_overlay.3x.html">curs_overlay.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_76">|</I>
-   <B>procedure</B> Copy
-     (Source_Window            : <B>in</B> Window;
-      Destination_Window       : <B>in</B> Window;
-      Source_Top_Row           : <B>in</B> Line_Position;
-      Source_Left_Column       : <B>in</B> Column_Position;
-      Destination_Top_Row      : <B>in</B> Line_Position;
-      Destination_Left_Column  : <B>in</B> Column_Position;
-      Destination_Bottom_Row   : <B>in</B> Line_Position;
-      Destination_Right_Column : <B>in</B> Column_Position;
-      Non_Destructive_Mode     : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_overlay.3x.html">copywin()</A></I>
-
-   <I>--  <A NAME="AFU_77">|</I>
-   <B>procedure</B> Overwrite (Source_Window      : <B>in</B> Window;
-                        Destination_Window : <B>in</B> Window);
-   <I>--  AKA: <A HREF="curs_overlay.3x.html">overwrite()</A></I>
-
-   <I>--  <A NAME="AFU_78">|</I>
-   <B>procedure</B> Overlay (Source_Window      : <B>in</B> Window;
-                      Destination_Window : <B>in</B> Window);
-   <I>--  AKA: <A HREF="curs_overlay.3x.html">overlay()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_deleteln.3x.html">curs_deleteln.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_79">|</I>
-   <B>procedure</B> Insert_Delete_Lines
-     (Win   : <B>in</B> Window  := Standard_Window;
-      Lines : <B>in</B> Integer := 1); <I>--  default is to insert one line above</I>
-   <I>--  AKA: <A HREF="curs_deleteln.3x.html">winsdelln()</A></I>
-
-   <I>--  <A NAME="AFU_80">|</I>
-   <B>procedure</B> Delete_Line (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_deleteln.3x.html">wdeleteln()</A></I>
-
-   <I>--  <A NAME="AFU_81">|</I>
-   <B>procedure</B> Insert_Line (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_deleteln.3x.html">winsertln()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_getyx.3x.html">curs_getyx.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_82">|</I>
-   <B>procedure</B> Get_Size
-     (Win               : <B>in</B> Window := Standard_Window;
-      Number_Of_Lines   : <B>out</B> Line_Count;
-      Number_Of_Columns : <B>out</B> Column_Count);
-   <I>--  AKA: <A HREF="curs_getyx.3x.html">getmaxyx()</A></I>
-
-   <I>--  <A NAME="AFU_83">|</I>
-   <B>procedure</B> Get_Window_Position
-     (Win             : <B>in</B> Window := Standard_Window;
-      Top_Left_Line   : <B>out</B> Line_Position;
-      Top_Left_Column : <B>out</B> Column_Position);
-   <I>--  AKA: <A HREF="curs_getyx.3x.html">getbegyx()</A></I>
-
-   <I>--  <A NAME="AFU_84">|</I>
-   <B>procedure</B> Get_Cursor_Position
-     (Win    : <B>in</B>  Window := Standard_Window;
-      Line   : <B>out</B> Line_Position;
-      Column : <B>out</B> Column_Position);
-   <I>--  AKA: <A HREF="curs_getyx.3x.html">getyx()</A></I>
-
-   <I>--  <A NAME="AFU_85">|</I>
-   <B>procedure</B> Get_Origin_Relative_To_Parent
-     (Win                : <B>in</B>  Window;
-      Top_Left_Line      : <B>out</B> Line_Position;
-      Top_Left_Column    : <B>out</B> Column_Position;
-      Is_Not_A_Subwindow : <B>out</B> Boolean);
-   <I>--  AKA: <A HREF="curs_getyx.3x.html">getparyx()</A></I>
-   <I>--  Instead of placing -1 in the coordinates as return, we use a boolean</I>
-   <I>--  to return the info that the window has no parent.</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_pad.3x.html">curs_pad.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_86">|</I>
-   <B>function</B> New_Pad (Lines   : Line_Count;
-                     Columns : Column_Count) <B>return</B> Window;
-   <I>--  AKA: <A HREF="curs_pad.3x.html">newpad()</A></I>
-
-   <I>--  <A NAME="AFU_87">|</I>
-   <B>function</B> Sub_Pad
-     (Pad                   : Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) <B>return</B> Window;
-   <I>--  AKA: <A HREF="curs_pad.3x.html">subpad()</A></I>
-
-   <I>--  <A NAME="AFU_88">|</I>
-   <B>procedure</B> Refresh
-     (Pad                      : <B>in</B> Window;
-      Source_Top_Row           : <B>in</B> Line_Position;
-      Source_Left_Column       : <B>in</B> Column_Position;
-      Destination_Top_Row      : <B>in</B> Line_Position;
-      Destination_Left_Column  : <B>in</B> Column_Position;
-      Destination_Bottom_Row   : <B>in</B> Line_Position;
-      Destination_Right_Column : <B>in</B> Column_Position);
-   <I>--  AKA: <A HREF="curs_pad.3x.html">prefresh()</A></I>
-
-   <I>--  <A NAME="AFU_89">|</I>
-   <B>procedure</B> Refresh_Without_Update
-     (Pad                      : <B>in</B> Window;
-      Source_Top_Row           : <B>in</B> Line_Position;
-      Source_Left_Column       : <B>in</B> Column_Position;
-      Destination_Top_Row      : <B>in</B> Line_Position;
-      Destination_Left_Column  : <B>in</B> Column_Position;
-      Destination_Bottom_Row   : <B>in</B> Line_Position;
-      Destination_Right_Column : <B>in</B> Column_Position);
-   <I>--  AKA: <A HREF="curs_pad.3x.html">pnoutrefresh()</A></I>
-
-   <I>--  <A NAME="AFU_90">|</I>
-   <B>procedure</B> Add_Character_To_Pad_And_Echo_It
-     (Pad : <B>in</B> Window;
-      Ch  : <B>in</B> Attributed_Character);
-   <I>--  AKA: <A HREF="curs_pad.3x.html">pechochar()</A></I>
-
-   <B>procedure</B> Add_Character_To_Pad_And_Echo_It
-     (Pad : <B>in</B> Window;
-      Ch  : <B>in</B> Character);
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_scroll.3x.html">curs_scroll.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_91">|</I>
-   <B>procedure</B> Scroll (Win    : <B>in</B> Window  := Standard_Window;
-                     Amount : <B>in</B> Integer := 1);
-   <I>--  AKA: <A HREF="curs_scroll.3x.html">wscrl()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_delch.3x.html">curs_delch.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_92">|</I>
-   <B>procedure</B> Delete_Character (Win : <B>in</B> Window := Standard_Window);
-   <I>--  AKA: <A HREF="curs_delch.3x.html">wdelch()</A></I>
-
-   <I>--  <A NAME="AFU_93">|</I>
-   <B>procedure</B> Delete_Character
-     (Win    : <B>in</B> Window := Standard_Window;
-      Line   : <B>in</B> Line_Position;
-      Column : <B>in</B> Column_Position);
-   <I>--  AKA: <A HREF="curs_delch.3x.html">mvwdelch()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_inch.3x.html">curs_inch.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_94">|</I>
-   <B>function</B> Peek (Win : Window := Standard_Window)
-     <B>return</B> Attributed_Character;
-   <I>--  AKA: <A HREF="curs_inch.3x.html">winch()</A></I>
-
-   <I>--  <A NAME="AFU_95">|</I>
-   <B>function</B> Peek
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position) <B>return</B> Attributed_Character;
-   <I>--  AKA: <A HREF="curs_inch.3x.html">mvwinch()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_winch.3x.html">curs_winch.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_96">|</I>
-   <B>procedure</B> Insert (Win : <B>in</B> Window := Standard_Window;
-                     Ch  : <B>in</B> Attributed_Character);
-   <I>--  AKA: <A HREF="curs_winch.3x.html">winsch()</A></I>
-
-   <I>--  <A NAME="AFU_97">|</I>
-   <B>procedure</B> Insert (Win    : <B>in</B> Window := Standard_Window;
-                     Line   : <B>in</B> Line_Position;
-                     Column : <B>in</B> Column_Position;
-                     Ch     : <B>in</B> Attributed_Character);
-   <I>--  AKA: <A HREF="curs_winch.3x.html">mvwinsch()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_winch.3x.html">curs_winch.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_98">|</I>
-   <B>procedure</B> Insert (Win : <B>in</B> Window := Standard_Window;
-                     Str : <B>in</B> String;
-                     Len : <B>in</B> Integer := -1);
-   <I>--  AKA: <A HREF="curs_winch.3x.html">winsnstr()</A></I>
-   <I>--  AKA: winsstr()</I>
-
-   <I>--  <A NAME="AFU_99">|</I>
-   <B>procedure</B> Insert (Win    : <B>in</B> Window := Standard_Window;
-                     Line   : <B>in</B> Line_Position;
-                     Column : <B>in</B> Column_Position;
-                     Str    : <B>in</B> String;
-                     Len    : <B>in</B> Integer := -1);
-   <I>--  AKA: <A HREF="curs_winch.3x.html">mvwinsnstr()</A></I>
-   <I>--  AKA: mvwinsstr()</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_instr.3x.html">curs_instr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_100">|</I>
-   <B>procedure</B> Peek (Win : <B>in</B>  Window := Standard_Window;
-                   Str : <B>out</B> String;
-                   Len : <B>in</B>  Integer := -1);
-   <I>--  AKA: <A HREF="curs_instr.3x.html">winnstr()</A></I>
-   <I>--  AKA: winstr()</I>
-
-   <I>--  <A NAME="AFU_101">|</I>
-   <B>procedure</B> Peek (Win    : <B>in</B>  Window := Standard_Window;
-                   Line   : <B>in</B>  Line_Position;
-                   Column : <B>in</B>  Column_Position;
-                   Str    : <B>out</B> String;
-                   Len    : <B>in</B>  Integer := -1);
-   <I>--  AKA: <A HREF="curs_instr.3x.html">mvwinnstr()</A></I>
-   <I>--  AKA: mvwinstr()</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_inchstr.3x.html">curs_inchstr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_102">|</I>
-   <B>procedure</B> Peek (Win : <B>in</B>  Window := Standard_Window;
-                   Str : <B>out</B> Attributed_String;
-                   Len : <B>in</B>  Integer := -1);
-   <I>--  AKA: <A HREF="curs_inchstr.3x.html">winchnstr()</A></I>
-   <I>--  AKA: winchstr()</I>
-
-   <I>--  <A NAME="AFU_103">|</I>
-   <B>procedure</B> Peek (Win    : <B>in</B>  Window := Standard_Window;
-                   Line   : <B>in</B>  Line_Position;
-                   Column : <B>in</B>  Column_Position;
-                   Str    : <B>out</B> Attributed_String;
-                   Len    : <B>in</B>  Integer := -1);
-   <I>--  AKA: <A HREF="curs_inchstr.3x.html">mvwinchnstr()</A></I>
-   <I>--  AKA: mvwinchstr()</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_getstr.3x.html">curs_getstr.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_104">|</I>
-   <B>procedure</B> Get (Win : <B>in</B>  Window := Standard_Window;
-                  Str : <B>out</B> String;
-                  Len : <B>in</B>  Integer := -1);
-   <I>--  AKA: <A HREF="curs_getstr.3x.html">wgetnstr()</A></I>
-   <I>--  AKA: wgetstr()</I>
-
-   <B>procedure</B> Get (Win    : <B>in</B>  Window := Standard_Window;
-                  Line   : <B>in</B>  Line_Position;
-                  Column : <B>in</B>  Column_Position;
-                  Str    : <B>out</B> String;
-                  Len    : <B>in</B>  Integer := -1);
-   <I>--  AKA: <A HREF="curs_getstr.3x.html">wgetnstr()</A>: not specified in ncurses, should be: mvwgetnstr()</I>
-   <I>--       and mvwgetstr() (which exists)</I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_slk.3x.html">curs_slk.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   type Soft_Label_Key_Format <B>is</B> (Three_Two_Three,
-                                  Four_Four,
-                                  PC_Style,              <I>--  ncurses specific</I>
-                                  PC_Style_With_Index);  <I>--  "</I>
-   type Label_Number <B>is</B> <B>new</B> Positive <B>range</B> 1 .. 12;
-   type Label_Justification <B>is</B> (Left, Centered, Right);
-
-   <I>--  <A NAME="AFU_105">|</I>
-   <B>procedure</B> Init_Soft_Label_Keys
-     (Format : <B>in</B> Soft_Label_Key_Format := Three_Two_Three);
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_init()</A></I>
-
-   <I>--  <A NAME="AFU_106">|</I>
-   <B>procedure</B> Set_Soft_Label_Key (Label : <B>in</B> Label_Number;
-                                 Text  : <B>in</B> String;
-                                 Fmt   : <B>in</B> Label_Justification := Left);
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_set()</A></I>
-
-   <I>--  <A NAME="AFU_107">|</I>
-   <B>procedure</B> Refresh_Soft_Label_Keys;
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_refresh()</A></I>
-
-   <I>--  <A NAME="AFU_108">|</I>
-   <B>procedure</B> Refresh_Soft_Label_Keys_Without_Update;
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_noutrefresh()</A></I>
-
-   <I>--  <A NAME="AFU_109">|</I>
-   <B>procedure</B> Get_Soft_Label_Key (Label : <B>in</B> Label_Number;
-                                 Text  : <B>out</B> String);
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_label()</A></I>
-
-   <I>--  <A NAME="AFU_110">|</I>
-   <B>procedure</B> Clear_Soft_Label_Keys;
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_clear()</A></I>
-
-   <I>--  <A NAME="AFU_111">|</I>
-   <B>procedure</B> Restore_Soft_Label_Keys;
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_restore()</A></I>
-
-   <I>--  <A NAME="AFU_112">|</I>
-   <B>procedure</B> Touch_Soft_Label_Keys;
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_touch()</A></I>
-
-   <I>--  <A NAME="AFU_113">|</I>
-   <B>procedure</B> Switch_Soft_Label_Key_Attributes
-     (Attr : <B>in</B> Character_Attribute_Set;
-      On   : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_attron()</A></I>
-   <I>--  AKA: slk_attroff()</I>
-
-   <I>--  <A NAME="AFU_114">|</I>
-   <B>procedure</B> Set_Soft_Label_Key_Attributes
-     (Attr  : <B>in</B> Character_Attribute_Set := Normal_Video;
-      Color : <B>in</B> Color_Pair := Color_Pair'First);
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_attrset()</A></I>
-
-   <I>--  <A NAME="AFU_115">|</I>
-   <B>function</B> Get_Soft_Label_Key_Attributes <B>return</B> Character_Attribute_Set;
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_attr()</A></I>
-
-   <I>--  <A NAME="AFU_116">|</I>
-   <B>function</B> Get_Soft_Label_Key_Attributes <B>return</B> Color_Pair;
-   <I>--  AKA: <A HREF="curs_slk.3x.html">slk_attr()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="keyok.3x.html">keyok.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_117">|</I>
-   <B>procedure</B> Enable_Key (Key    : <B>in</B> Special_Key_Code;
-                         Enable : <B>in</B> Boolean := True);
-   <I>--  AKA: <A HREF="keyok.3x.html">keyok()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="define_key.3x.html">define_key.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_118">|</I>
-   <B>procedure</B> Define_Key (Definition : <B>in</B> String;
-                         Key        : <B>in</B> Special_Key_Code);
-   <I>--  AKA: <A HREF="define_key.3x.html">define_key()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_util.3x.html">curs_util.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  | Not implemented : filter, use_env, putwin, getwin</I>
-   <I>--</I>
-   <I>--  <A NAME="AFU_119">|</I>
-   <B>procedure</B> Key_Name (Key  : <B>in</B>  Real_Key_Code;
-                       Name : <B>out</B> String);
-   <I>--  AKA: <A HREF="curs_util.3x.html">keyname()</A></I>
-   <I>--  The external name for a real keystroke.</I>
-
-   <I>--  <A NAME="AFU_120">|</I>
-   <B>procedure</B> Un_Control (Ch  : <B>in</B> Attributed_Character;
-                         Str : <B>out</B> String);
-   <I>--  AKA: <A HREF="curs_util.3x.html">unctrl()</A></I>
-
-   <I>--  <A NAME="AFU_121">|</I>
-   <B>procedure</B> Delay_Output (Msecs : <B>in</B> Natural);
-   <I>--  AKA: <A HREF="curs_util.3x.html">delay_output()</A></I>
-
-   <I>--  <A NAME="AFU_122">|</I>
-   <B>procedure</B> Flush_Input;
-   <I>--  AKA: <A HREF="curs_util.3x.html">flushinp()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_termattrs.3x.html">curs_termattrs.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_123">|</I>
-   <B>function</B> Baudrate <B>return</B> Natural;
-   <I>--  AKA: <A HREF="curs_termattrs.3x.html">baudrate()</A></I>
-
-   <I>--  <A NAME="AFU_124">|</I>
-   <B>function</B> Erase_Character <B>return</B> Character;
-   <I>--  AKA: <A HREF="curs_termattrs.3x.html">erasechar()</A></I>
-
-   <I>--  <A NAME="AFU_125">|</I>
-   <B>function</B> Kill_Character <B>return</B> Character;
-   <I>--  AKA: <A HREF="curs_termattrs.3x.html">killchar()</A></I>
-
-   <I>--  <A NAME="AFU_126">|</I>
-   <B>function</B> Has_Insert_Character <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_termattrs.3x.html">has_ic()</A></I>
-
-   <I>--  <A NAME="AFU_127">|</I>
-   <B>function</B> Has_Insert_Line <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_termattrs.3x.html">has_il()</A></I>
-
-   <I>--  <A NAME="AFU_128">|</I>
-   <B>function</B> Supported_Attributes <B>return</B> Character_Attribute_Set;
-   <I>--  AKA: <A HREF="curs_termattrs.3x.html">termattrs()</A></I>
-
-   <I>--  <A NAME="AFU_129">|</I>
-   <B>procedure</B> Long_Name (Name : <B>out</B> String);
-   <I>--  AKA: <A HREF="curs_termattrs.3x.html">longname()</A></I>
-
-   <I>--  <A NAME="AFU_130">|</I>
-   <B>procedure</B> Terminal_Name (Name : <B>out</B> String);
-   <I>--  AKA: <A HREF="curs_termattrs.3x.html">termname()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_color.3x.html">curs_color.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  <A NAME="AFU_131">|</I>
-   <B>procedure</B> Start_Color;
-   <I>--  AKA: <A HREF="curs_color.3x.html">start_clolor()</A></I>
-   <B>pragma</B> Import (C, Start_Color, "start_color");
-
-   <I>--  <A NAME="AFU_132">|</I>
-   <B>procedure</B> Init_Pair (Pair : <B>in</B> Redefinable_Color_Pair;
-                        Fore : <B>in</B> Color_Number;
-                        Back : <B>in</B> Color_Number);
-   <I>--  AKA: <A HREF="curs_color.3x.html">init_pair()</A></I>
-
-   <I>--  <A NAME="AFU_133">|</I>
-   <B>procedure</B> Pair_Content (Pair : <B>in</B> Color_Pair;
-                           Fore : <B>out</B> Color_Number;
-                           Back : <B>out</B> Color_Number);
-   <I>--  AKA: <A HREF="curs_color.3x.html">pair_content()</A></I>
-
-   <I>--  <A NAME="AFU_134">|</I>
-   <B>function</B> Has_Colors <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_color.3x.html">has_colors()</A></I>
-
-   <I>--  <A NAME="AFU_135">|</I>
-   <B>procedure</B> Init_Color (Color : <B>in</B> Color_Number;
-                         Red   : <B>in</B> RGB_Value;
-                         Green : <B>in</B> RGB_Value;
-                         Blue  : <B>in</B> RGB_Value);
-   <I>--  AKA: <A HREF="curs_color.3x.html">init_color()</A></I>
-
-   <I>--  <A NAME="AFU_136">|</I>
-   <B>function</B> Can_Change_Color <B>return</B> Boolean;
-   <I>--  AKA: <A HREF="curs_color.3x.html">can_change_color()</A></I>
-
-   <I>--  <A NAME="AFU_137">|</I>
-   <B>procedure</B> Color_Content (Color : <B>in</B>  Color_Number;
-                            Red   : <B>out</B> RGB_Value;
-                            Green : <B>out</B> RGB_Value;
-                            Blue  : <B>out</B> RGB_Value);
-   <I>--  AKA: <A HREF="curs_color.3x.html">color_content()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Man page <A HREF="curs_kernel.3x.html">curs_kernel.3x</A></I>
-   <I>--  |=====================================================================</I>
-
-   <I>--  | Not implemented: getsyx, setsyx</I>
-   <I>--</I>
-   type Curses_Mode <B>is</B> (Curses, Shell);
-
-   <I>--  <A NAME="AFU_138">|</I>
-   <B>procedure</B> Save_Curses_Mode (Mode : <B>in</B> Curses_Mode);
-   <I>--  AKA: <A HREF="curs_kernel.3x.html">def_prog_mode()</A></I>
-   <I>--  AKA: def_shell_mode()</I>
-
-   <I>--  <A NAME="AFU_139">|</I>
-   <B>procedure</B> Reset_Curses_Mode (Mode : <B>in</B> Curses_Mode);
-   <I>--  AKA: <A HREF="curs_kernel.3x.html">reset_prog_mode()</A></I>
-   <I>--  AKA: reset_shell_mode()</I>
-
-   <I>--  <A NAME="AFU_140">|</I>
-   <B>procedure</B> Save_Terminal_State;
-   <I>--  AKA: <A HREF="curs_kernel.3x.html">savetty()</A></I>
-
-   <I>--  <A NAME="AFU_141">|</I>
-   <B>procedure</B> Reset_Terminal_State;
-   <I>--  AKA: <A HREF="curs_kernel.3x.html">resetty();</A></I>
-
-   type Stdscr_Init_Proc <B>is</B> <B>access</B>
-      <B>function</B> (Win     : Window;
-                Columns : Column_Count) <B>return</B> Integer;
-   <B>pragma</B> Convention (C, Stdscr_Init_Proc);
-   <I>--  N.B.: the return value is actually ignored, but it seems to be</I>
-   <I>--        a good practice to return 0 if you think all went fine</I>
-   <I>--        and -1 otherwise.</I>
-
-   <I>--  <A NAME="AFU_142">|</I>
-   <B>procedure</B> Rip_Off_Lines (Lines : <B>in</B> Integer;
-                            Proc  : <B>in</B> Stdscr_Init_Proc);
-   <I>--  AKA: <A HREF="curs_kernel.3x.html">ripoffline()</A></I>
-   <I>--  N.B.: to be more precise, this uses a ncurses specific enhancement of</I>
-   <I>--        ripoffline(), in which the Lines argument absolute value is the</I>
-   <I>--        number of lines to be ripped of. The official ripoffline() only</I>
-   <I>--        uses the sign of Lines to rip of a single line from bottom or top.</I>
-
-   type Cursor_Visibility <B>is</B> (Invisible, Normal, Very_Visible);
-
-   <I>--  <A NAME="AFU_143">|</I>
-   <B>procedure</B> Set_Cursor_Visibility (Visibility : <B>in</B> <B>out</B> Cursor_Visibility);
-   <I>--  AKA: <A HREF="curs_kernel.3x.html">curs_set()</A></I>
-
-   <I>--  <A NAME="AFU_144">|</I>
-   <B>procedure</B> Nap_Milli_Seconds (Ms : <B>in</B> Natural);
-   <I>--  AKA: <A HREF="curs_kernel.3x.html">napms()</A></I>
-
-   <I>--  |=====================================================================</I>
-   <I>--  | Some usefull helpers.</I>
-   <I>--  |=====================================================================</I>
-   type Transform_Direction <B>is</B> (From_Screen, To_Screen);
-   <B>procedure</B> Transform_Coordinates
-     (W      : <B>in</B> Window := Standard_Window;
-      Line   : <B>in</B> <B>out</B> Line_Position;
-      Column : <B>in</B> <B>out</B> Column_Position;
-      Dir    : <B>in</B> Transform_Direction := From_Screen);
-   <I>--  This procedure transforms screen coordinates into coordinates relative</I>
-   <I>--  to the window and vice versa, depending on the Dir parmeter.</I>
-   <I>--  Screen coordinates are the position informations on the physical device.</I>
-   <I>--  An Curses_Exception will be raised if Line and Column are not in the</I>
-   <I>--  Window or if you pass the Null_Window as argument.</I>
-
-<B>private</B>
-   type Window <B>is</B> <B>new</B> System.Address;
-   Null_Window : <B>constant</B> Window := Window (System.Null_Address);
-
-   Generation_Bit_Order : <B>constant</B> System.Bit_Order := System.Low_Order_First;
-   <I>--  This constant may be different on your system.</I>
-
-<B>end</B> Terminal_Interface.Curses;
-
-</PRE>
-
-<P><HR><P>
-This is BETA software. The interface is subject to change without notice.
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
diff --git a/Ada95/html/terminal_interface_s.html b/Ada95/html/terminal_interface_s.html
deleted file mode 100644 (file)
index e405d09..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE></TITLE>
-</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
-<PRE>
-<I>------------------------------------------------------------------------------</I>
-<I>--                                                                          --</I>
-<I>--                           <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding                           --</I>
-<I>--                                                                          --</I>
-<I>--                            Terminal_Interface                            --</I>
-<I>--                                                                          --</I>
-<I>--                                 S P E C                                  --</I>
-<I>--                                                                          --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>-- Copyright (c) 1998 Free Software Foundation, Inc.                        --</I>
-<I>--                                                                          --</I>
-<I>-- Permission is hereby granted, free of charge, to any person obtaining a  --</I>
-<I>-- copy of this software and associated documentation files (the            --</I>
-<I>-- "Software"), to deal in the Software without restriction, including      --</I>
-<I>-- without limitation the rights to use, copy, modify, merge, publish,      --</I>
-<I>-- distribute, distribute with modifications, sublicense, and/or sell       --</I>
-<I>-- copies of the Software, and to permit persons to whom the Software is    --</I>
-<I>-- furnished to do so, subject to the following conditions:                 --</I>
-<I>--                                                                          --</I>
-<I>-- The above copyright notice and this permission notice shall be included  --</I>
-<I>-- in all copies or substantial portions of the Software.                   --</I>
-<I>--                                                                          --</I>
-<I>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  --</I>
-<I>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               --</I>
-<I>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   --</I>
-<I>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   --</I>
-<I>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    --</I>
-<I>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    --</I>
-<I>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               --</I>
-<I>--                                                                          --</I>
-<I>-- Except as contained in this notice, the name(s) of the above copyright   --</I>
-<I>-- holders shall not be used in advertising or otherwise to promote the     --</I>
-<I>-- sale, use or other dealings in this Software without prior written       --</I>
-<I>-- authorization.                                                           --</I>
-<I>------------------------------------------------------------------------------</I>
-<I>--  <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">J&uuml;rgen Pfeifer</A>, Email: <A HREF="mailto:Juergen.Pfeifer@T-Online.de">Juergen.Pfeifer@T-Online.de</A>                      --</I>
-<I>--  Version Control:</I>
-<I>--  @Revision: 1.4 @</I>
-<I>------------------------------------------------------------------------------</I>
-<B>package</B> Terminal_Interface <B>is</B>
-<I>--</I>
-<I>--  Everything is in the child units</I>
-<I>--</I>
-<B>end</B> Terminal_Interface;
-
-</PRE>
-
-<P><HR><P>
-<P>
-This is BETA software. The interface is subject to change without notice.<P>
-<!-- Do NOT delete my name or the tool name from below; -->
-<!-- giving me credit is a condition of use of ada2html -->
-<P><I>This hypertext format was generated by <A HREF="http://www.adahome.com/Tutorials/Lovelace/dwheeler.htm">David A. Wheeler</A>'s <A HREF="http://www.adahome.com/Resources/Tools/ada2html/ada2html.htm">ada2html</A></I>
-</BODY>
-</HTML>
-
index 09ed5518d46ffacbda52e4207f5a801160e0a123..c43e2873bc81aa036686b1837a7a40f2578cbcd5 100644 (file)
 # authorization.                                                             #
 ##############################################################################
 #
-#  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+#  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 #
 #  Version Control
-#  $Revision: 1.16 $
+#  $Revision: 1.21 $
 #
 .SUFFIXES:
 
@@ -41,8 +41,6 @@ prefix                = @prefix@
 exec_prefix    = @exec_prefix@
 libdir         = @libdir@
 includedir     = @includedir@
-datadir                = @datadir@
-ticdir         = $(datadir)/terminfo
 
 INSTALL                = @INSTALL@
 INSTALL_DATA   = @INSTALL_DATA@
@@ -70,8 +68,7 @@ LDFLAGS               = @LDFLAGS@ @LD_MODEL@ @LIBS@
 
 RANLIB         = @RANLIB@
 ################################################################################
-ada_srcdir=../ada_include
-ada_objdir=../ada_objects
+ada_srcdir=../src
 
 LD_FLAGS     = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS)
 
@@ -79,13 +76,13 @@ ADA          = @cf_ada_compiler@
 ADAFLAGS     = @ADAFLAGS@ -I$(srcdir)
 
 ADAMAKE      = @cf_ada_make@
-ADAMAKEFLAGS = -aI$(srcdir) -aI$(ada_srcdir) -aI$(srcdir)/$(ada_srcdir) -aO$(ada_objdir)
+ADAMAKEFLAGS = -a -A$(srcdir) -A$(ada_srcdir) -A$(srcdir)/$(ada_srcdir)
 
 ALIB         = @cf_ada_package@
 ABASE        = $(ALIB)-curses
 
 CARGS        =-cargs $(ADAFLAGS)
-LARGS        =-largs -L../../lib $(LD_FLAGS)
+LARGS        =-largs -L../../lib $(LD_FLAGS) -lncurses
 
 PROGS        = tour rain
 
index c29cd98d398153f6a4a0143637bdf4959f3a6b05..f2814049e3b091a97d78d22e1d9fc518df7267ff 100644 (file)
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author: Laurent Pautet <pautet@gnat.com> 1997 (modified by J.Pfeifer)
 --  Version Control
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.4 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 --                                                                          --
 with Ada.Numerics.Float_Random; use Ada.Numerics.Float_Random;
index 3f075e7f51c05441068a8a06f820592af1f0bbd9..5180a598d5912b34b66784104ea46abd811389d7 100644 (file)
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author: Laurent Pautet <pautet@gnat.com> 1997 (modified by J.Pfeifer)
 --  Version Control
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.4 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 --                                                                          --
 procedure Rain;
index 9b9089a598ca164618298a0234142ddf21fd71ee..1a329e7b1f72734f0890cb62d24d6d367b5bcf6b 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.10 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 with Terminal_Interface.Curses.Panels;  use Terminal_Interface.Curses.Panels;
 
 with Sample.Manifest; use Sample.Manifest;
-with Sample.Helpers; use Sample.Helpers;
 with Sample.Function_Key_Setting; use Sample.Function_Key_Setting;
 with Sample.Keyboard_Handler; use Sample.Keyboard_Handler;
-with Sample.Header_Handler; use Sample.Header_Handler;
 with Sample.Explanation; use Sample.Explanation;
 
-with Sample.Menu_Demo.Handler;
-with Sample.Curses_Demo.Mouse;
-
 package body Sample.Curses_Demo.Attributes is
 
    procedure Demo
index 30f82577197a9242b24b7afb14503fdca8a4c24e..ec0fb8cd557f6683c2103db5d123a3f241ff2da4 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Sample.Curses_Demo.Attributes is
 
index 0240da5fdfeb1540703cbcf9fc1656650b9e12ac..e526f59844aa569184e70559b2f38eafd5f3a741 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.11 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels;
@@ -73,7 +73,6 @@ package body Sample.Curses_Demo.Mouse is
       Msg   : Window;
       Ctl   : Controls;
       Pan   : Panel;
-      N     : constant Natural := Ctl'Length;
       K     : Real_Key_Code;
       V     : Cursor_Visibility := Invisible;
       W     : Window;
@@ -210,7 +209,7 @@ package body Sample.Curses_Demo.Mouse is
       Delete (Frame);
 
       Set_Cursor_Visibility (V);
-      End_Mouse;
+      End_Mouse (Mask);
 
       Pop_Environment;
       Update_Panels; Update_Screen;
index 49eb84abcad81f235d612c9e490cfbc14a26cb34..93781709105bb08ee066c1640a7194d4301a8dcd 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Sample.Curses_Demo.Mouse is
 
index aa5b10916a066ad0ff350bb6ce4ee56439e38e4b..0c7085516df597d94666dd17d252ab7ca7b11693 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.10 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 with Terminal_Interface.Curses.Menus; use Terminal_Interface.Curses.Menus;
@@ -47,8 +47,7 @@ with Terminal_Interface.Curses.Panels.User_Data;
 with Sample.Manifest; use Sample.Manifest;
 with Sample.Helpers; use Sample.Helpers;
 with Sample.Function_Key_Setting; use Sample.Function_Key_Setting;
-with Sample.Keyboard_Handler; use Sample.Keyboard_Handler;
-with Sample.Header_Handler; use Sample.Header_Handler;
+
 with Sample.Explanation; use Sample.Explanation;
 
 with Sample.Menu_Demo.Handler;
index eb1f691e1c4cf7ffc263dac1eb271eaec19a35c7..32d2bb0b8c3bd0c5b633495d33141611dbd38a49 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Sample.Curses_Demo is
 
index eb7f45779004962b50dbfdb2b1651a46a8f2c89c..8701925dedf3e2066e936e97239c2beab1e0d4b1 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.9 $
---  Binding Version 00.93
+--  $Revision: 1.12 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 --  Poor mans help system. This scans a sequential file for key lines and
 --  then reads the lines up to the next key. Those lines are presented in
@@ -299,7 +299,6 @@ package body Sample.Explanation is
       Root    : Help_Line_Access := null;
       Current : Help_Line_Access;
       Tail    : Help_Line_Access := null;
-      Save    : String_Access;
 
       function Next_Line return Boolean;
 
index ff7bd4ba54cf6d6232e85b3212b2864297af3f7b..1e20f0517b0b81619ef1c747e2f8fa0f32050f73 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 --  Poor mans help system. This scans a sequential file for key lines and
 --  then reads the lines up to the next key. Those lines are presented in
index 6da5e951a809f634879f03fdf561c40c98f7d688..06a03b885f1968273c2996f80b3925395c8b1da2 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.9 $
---  Binding Version 00.93
+--  $Revision: 1.11 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
 
index 1fd44778a3de6af2d6e4d04977c819d5db214068..69ff2c1534576caf42292a9f0f3e3011885b3b0b 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use  Terminal_Interface.Curses;
 with Terminal_Interface.Curses.Panels; use  Terminal_Interface.Curses.Panels;
index 2678027df8382c4e3da7b841036b65320d9dc47c..a3a17d4a30c4e48a2cfba2942c3ca9393994aad6 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
-with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
 with Sample.Form_Demo.Aux;
-with Sample.Explanation; use Sample.Explanation;
 
 package body Sample.Form_Demo.Handler is
 
index 4754563a5f079cfa6d0c8c6ca9ce44a0bb6b8be2..07c2940e520876d45df1cdc917a169c6752dbd92 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses;
 use  Terminal_Interface.Curses;
index 621892672e3bddbd8b960deae0eb71732fe02dc3..b8548bfc0687d8ef17d67836fa6601ed139f1144 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
-with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
-with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
-
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
-with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels;
 with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms;
 with Terminal_Interface.Curses.Forms.Field_User_Data;
 with Terminal_Interface.Curses.Forms.Form_User_Data;
-with Sample.Keyboard_Handler; use Sample.Keyboard_Handler;
 with Sample.My_Field_Type; use Sample.My_Field_Type;
-with Sample.Manifest; use Sample.Manifest;
 with Sample.Explanation; use Sample.Explanation;
 with Sample.Form_Demo.Aux; use Sample.Form_Demo.Aux;
 with Sample.Function_Key_Setting; use Sample.Function_Key_Setting;
index 7d9a2772c1b3704ab5133b5da0fcb4b13cdfd5e2..1ef3796404be2e59740bafadabc2f697d7c1faf4 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Sample.Form_Demo is
 
index 979fefd0d92c5f871fb3460ad93c847d3b05f3b9..94d22a6df49a951aa87b2db0b3e9542a9b41b220 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Deallocation;
 with Sample.Manifest; use  Sample.Manifest;
index 71c120f3bd4e0e8b68ce4f91d80c9a5bea234925..e9db6cd017d8d07c3b8618cba6a8295ab6c8a27e 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels;
index 4787f24fbc2d2b65d1fbc7664acdfef601acb696..c299c79f9122c4a1e1071706b5afa9326622e53c 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Calendar; use Ada.Calendar;
 with Terminal_Interface.Curses.Text_IO.Integer_IO;
index d2124ddb45337439b96680eb7a4a30cb3bc16099..7a7c0b9835cd8cd8175bf42ee68fcf3812c130f9 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 
index 533f411c361c9e01f688651a0bff9c3a2e9e9b9b..9cbc7c12d1c058d79c7174123ff2d8ece00eea91 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 
index d2f5f039018ecb33c74490da1a7b9aa2c529d3ae..36ca407594ab055669f550d6e7fc5dc58efd3ad5 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 
index 1d7a85a189980009037300aa9bb4bfba6acf276f..062a676ba0eef1bb23a511a7b254df6990a3e862 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Strings; use Ada.Strings;
 with Ada.Strings.Fixed; use Ada.Strings.Fixed;
index 9b8702472e40fa8c095d969cccfba590a10802f9..454c934bbdb86f8e3afa5cf64253629f804f7c9f 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 
index 4d9aa502438ccd4dcd8b84266800b00a2f63670d..6ac180cfad3e2678b8be96c110e73b6acdafd73a 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 
index 66e10c157183abdf5bbfd723a306af1f0982a2c9..f1363d80d1b21763329ae048d092cf06c797f203 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
 
index 1efbb3dc2d1c762bc88c82930088f1a0e37b91c1..d12119850e2cfd56d592b8020212a225a322484a 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use  Terminal_Interface.Curses;
 with Terminal_Interface.Curses.Panels; use  Terminal_Interface.Curses.Panels;
index cac7578bfdcb4ae4ca6f1ea57cce588f43b62205..e7b1bf8a0ac5105c7da51b27028279beb2faeebd 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.10 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Sample.Menu_Demo.Aux;
-with Sample.Explanation; use Sample.Explanation;
 with Sample.Manifest; use Sample.Manifest;
+with Terminal_Interface.Curses.Mouse;  use Terminal_Interface.Curses.Mouse;
 
 package body Sample.Menu_Demo.Handler is
 
@@ -63,9 +63,14 @@ package body Sample.Menu_Demo.Handler is
                        Col   : in Column_Position;
                        Title : in String := "")
    is
-      Pan : Panel := Aux.Create (M, Title, Lin, Col);
-      V   : Cursor_Visibility := Invisible;
+      Mask : Event_Mask := No_Events;
+      Old  : Event_Mask;
+      Pan  : Panel := Aux.Create (M, Title, Lin, Col);
+      V    : Cursor_Visibility := Invisible;
    begin
+      --  We are only interested in Clicks with the left button
+      Register_Reportable_Events (Left, All_Clicks, Mask);
+      Old := Start_Mouse (Mask);
       Set_Cursor_Visibility (V);
       loop
          declare
@@ -79,6 +84,9 @@ package body Sample.Menu_Demo.Handler is
                      I : constant Item := Current (M);
                      O : Item_Option_Set;
                   begin
+                     if K = Key_Mouse then
+                        K := SELECT_ITEM;
+                     end if;
                      Get_Options (I, O);
                      if K = SELECT_ITEM and then not O.Selectable then
                         Beep;
@@ -92,7 +100,7 @@ package body Sample.Menu_Demo.Handler is
             end case;
          end;
       end loop;
-      Set_Cursor_Visibility (V);
+      End_Mouse (Old);
       Aux.Destroy (M, Pan);
    end Drive_Me;
 
index 78a2ebb5ec289b5c457300ff333e14fa1dcaf4f1..bb31639da063e9fa4bfb6286cc01974022d045a9 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses;
 use  Terminal_Interface.Curses;
index 1d08316f9afcfe26d4c785ca93c4b82da231d472..640c25cb359a0736032df8f57ed50915ba655c74 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.11 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels;
@@ -44,11 +44,8 @@ with Terminal_Interface.Curses.Menus; use Terminal_Interface.Curses.Menus;
 with Terminal_Interface.Curses.Menus.Menu_User_Data;
 with Terminal_Interface.Curses.Menus.Item_User_Data;
 
-with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
-
 with Sample.Manifest; use Sample.Manifest;
 with Sample.Function_Key_Setting; use Sample.Function_Key_Setting;
-with Sample.Keyboard_Handler; use Sample.Keyboard_Handler;
 with Sample.Menu_Demo.Handler;
 with Sample.Helpers; use Sample.Helpers;
 with Sample.Explanation; use Sample.Explanation;
@@ -303,6 +300,7 @@ package body Sample.Menu_Demo is
          Flip_State := True;
 
          Pop_Environment;
+         pragma Assert (Get_Index (Items (M, 1)) = Get_Index (I (1)));
          Delete (M);
          Free (I, True);
       end Spacing_Test;
index 250e089203180074339a6e2b888cc7a4e89012bf..dda0180f29638eddaedadd73cec737f728575644 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Sample.Menu_Demo is
 
index f2f1b112ba24d6aba98c3cc3df5864a13d6d443e..11e422684e6afcbf1836df452a6726725a8daf79 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms;
 
index b05a3ef4f61150837ee4f98cc669ebe1272f52ef..0fac5e394ca135c2ebeb449f6db39c2dfe6bbce0 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms;
 with Terminal_Interface.Curses.Forms.Field_Types.User;
index 9962be9c4d7e62b2d0e9f6845e672b5415cd8814..ed796095990e60cddbab433db82dbdc5908f893d 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Numerics.Generic_Elementary_Functions;
 with Ada.Numerics.Complex_Types;
@@ -55,7 +55,6 @@ with Terminal_Interface.Curses.Text_IO.Decimal_IO;
 with Terminal_Interface.Curses.Text_IO.Modular_IO;
 
 with Sample.Manifest; use Sample.Manifest;
-with Sample.Helpers; use Sample.Helpers;
 with Sample.Function_Key_Setting; use Sample.Function_Key_Setting;
 with Sample.Keyboard_Handler; use Sample.Keyboard_Handler;
 with Sample.Explanation; use Sample.Explanation;
index 3d64b2993c472efce67f0a52e1683d2ab5ab47bf..5c31c7bbc163078f8e83b56141765d2b40af1705 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Sample.Text_IO_Demo is
 
index ce0cc3a18717fd4cf1e0e35b6f14ab748b315c7b..2d96142c723c41d08bcd646d18ebba0514dd0c7e 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.11 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Text_IO;
 
-with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
 with Ada.Exceptions; use Ada.Exceptions;
 
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
@@ -50,7 +49,6 @@ with Terminal_Interface.Curses.Menus.Menu_User_Data;
 with Terminal_Interface.Curses.Menus.Item_User_Data;
 
 with Sample.Manifest; use Sample.Manifest;
-with Sample.Helpers; use Sample.Helpers;
 with Sample.Function_Key_Setting; use Sample.Function_Key_Setting;
 with Sample.Keyboard_Handler; use Sample.Keyboard_Handler;
 with Sample.Header_Handler; use Sample.Header_Handler;
index 7522815bad8776cf1272fb8aa4fac7ffbbf90f28..d438f74a74a2a1edf90eecc8943e15cf9f769048 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Sample is
    procedure Whow;
index 850e4e3c464d65467d5fe67a496a385a3fb4867e..8e4cd423795ca0da516e9602015c5d4e6c52cba1 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.5 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 --  This package has been contributed by Laurent Pautet <pautet@gnat.com>   --
 --                                                                          --
index 4b81b0a5907fd486d05dd8951c7f4ee11aba9426..600b21234bfaa63750083827ffb2da7422b9c1c6 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 --  This package has been contributed by Laurent Pautet <pautet@gnat.com>   --
 --                                                                          --
@@ -44,6 +44,10 @@ with Ada.Interrupts.Names;
 
 package Status is
 
+   pragma Warnings (Off);  --  the next pragma exists since 3.11p
+   pragma Unreserve_All_Interrupts;
+   pragma Warnings (On);
+
    protected Process is
       procedure Stop;
       function Continue return Boolean;
index 920eb91a97e2172bff104e004aed9d8a566e68bf..60a3d0aeb267d495eaaf0ed425ef9cf1fc576bf7 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Sample; use Sample;
 
index 2abc440fe99ec974a2f9a12053612d783ee206b9..2675e30d630e7025db1a6d0ff87e79e7233f3d7f 100644 (file)
@@ -33,9 +33,9 @@
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 procedure Tour;
diff --git a/Ada95/src/Makefile.in b/Ada95/src/Makefile.in
new file mode 100644 (file)
index 0000000..46b232a
--- /dev/null
@@ -0,0 +1,353 @@
+##############################################################################
+# Copyright (c) 1998 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
+#
+#  Version Control
+#  $Revision: 1.19 $
+#
+.SUFFIXES:
+
+SHELL          = /bin/sh
+THIS           = Makefile
+
+MODEL          = ../../@DFT_OBJ_SUBDIR@
+srcdir         = @srcdir@
+prefix         = @prefix@
+exec_prefix    = @exec_prefix@
+libdir         = @libdir@
+includedir     = @includedir@
+datadir                = @datadir@
+ticdir         = $(datadir)/terminfo
+ADA_INCLUDE    = @ADA_INCLUDE@
+
+INSTALL                = @INSTALL@
+INSTALL_DATA   = @INSTALL_DATA@
+
+AR             = @AR@
+AR_OPTS                = @AR_OPTS@
+AWK            = @AWK@
+LN_S           = @LN_S@
+
+CC             = @CC@
+CFLAGS         = @CFLAGS@
+
+CPPFLAGS       = @ACPPFLAGS@ \
+                 -DHAVE_CONFIG_H -I$(srcdir)
+
+CCFLAGS                = $(CPPFLAGS) $(CFLAGS)
+
+CFLAGS_NORMAL  = $(CCFLAGS)
+CFLAGS_DEBUG   = $(CCFLAGS) @CC_G_OPT@ -DTRACE
+CFLAGS_PROFILE = $(CCFLAGS) -pg
+CFLAGS_SHARED  = $(CCFLAGS) @CC_SHARED_OPTS@
+
+CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
+
+LINK           = $(CC)
+LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
+
+RANLIB         = @RANLIB@
+################################################################################
+ADA             = @cf_ada_compiler@
+ADAFLAGS        = @ADAFLAGS@ -I. -I$(srcdir)
+
+ADAMAKE         = @cf_ada_make@
+ADAMAKEFLAGS    = 
+
+CARGS           = -cargs $(ADAFLAGS)
+LARGS           =
+
+ALIB            = @cf_ada_package@
+ABASE           = $(ALIB)-curses
+
+LIBALIS=$(ALIB).ali                                    \
+       $(ABASE)-aux.ali                                \
+       $(ABASE).ali                                    \
+       $(ABASE)-mouse.ali                              \
+       $(ABASE)-panels.ali                             \
+       $(ABASE)-menus.ali                              \
+       $(ABASE)-forms.ali                              \
+       $(ABASE)-forms-field_types.ali                  \
+       $(ABASE)-forms-field_types-alpha.ali            \
+       $(ABASE)-forms-field_types-alphanumeric.ali     \
+       $(ABASE)-forms-field_types-intfield.ali         \
+       $(ABASE)-forms-field_types-numeric.ali          \
+       $(ABASE)-forms-field_types-regexp.ali           \
+       $(ABASE)-forms-field_types-enumeration.ali      \
+       $(ABASE)-forms-field_types-ipv4_address.ali     \
+       $(ABASE)-forms-field_types-user.ali             \
+       $(ABASE)-forms-field_types-user-choice.ali      \
+       $(ABASE)-text_io.ali                            \
+       $(ABASE)-text_io-aux.ali
+
+# Ada Library files for generic packages. Since gnat 3.10 they are
+# also compiled
+GENALIS=$(ABASE)-menus-menu_user_data.ali              \
+       $(ABASE)-menus-item_user_data.ali               \
+       $(ABASE)-forms-form_user_data.ali               \
+       $(ABASE)-forms-field_user_data.ali              \
+       $(ABASE)-forms-field_types-enumeration-ada.ali  \
+       $(ABASE)-panels-user_data.ali                   \
+       $(ABASE)-text_io-integer_io.ali                 \
+       $(ABASE)-text_io-float_io.ali                   \
+       $(ABASE)-text_io-fixed_io.ali                   \
+       $(ABASE)-text_io-decimal_io.ali                 \
+       $(ABASE)-text_io-enumeration_io.ali             \
+       $(ABASE)-text_io-modular_io.ali                 \
+       $(ABASE)-text_io-complex_io.ali
+
+LIBOBJS=$(ALIB).o                                      \
+       $(ABASE)-aux.o                                  \
+       $(ABASE).o                                      \
+       $(ABASE)-mouse.o                                \
+       $(ABASE)-panels.o                               \
+       $(ABASE)-menus.o                                \
+       $(ABASE)-forms.o                                \
+       $(ABASE)-forms-field_types.o                    \
+       $(ABASE)-forms-field_types-alpha.o              \
+       $(ABASE)-forms-field_types-alphanumeric.o       \
+       $(ABASE)-forms-field_types-intfield.o           \
+       $(ABASE)-forms-field_types-numeric.o            \
+       $(ABASE)-forms-field_types-regexp.o             \
+       $(ABASE)-forms-field_types-enumeration.o        \
+       $(ABASE)-forms-field_types-ipv4_address.o       \
+       $(ABASE)-forms-field_types-user.o               \
+       $(ABASE)-forms-field_types-user-choice.o        \
+       $(ABASE)-text_io.o                              \
+       $(ABASE)-text_io-aux.o
+
+# Ada object files for generic packages. Since gnat 3.10 they are
+# also compiled
+GENOBJS=$(ABASE)-menus-menu_user_data.o                        \
+       $(ABASE)-menus-item_user_data.o                 \
+       $(ABASE)-forms-form_user_data.o                 \
+       $(ABASE)-forms-field_user_data.o                \
+       $(ABASE)-forms-field_types-enumeration-ada.o    \
+       $(ABASE)-panels-user_data.o                     \
+       $(ABASE)-text_io-integer_io.o                   \
+       $(ABASE)-text_io-float_io.o                     \
+       $(ABASE)-text_io-fixed_io.o                     \
+       $(ABASE)-text_io-decimal_io.o                   \
+       $(ABASE)-text_io-enumeration_io.o               \
+       $(ABASE)-text_io-modular_io.o                   \
+       $(ABASE)-text_io-complex_io.o
+
+
+all ::  libAdaCurses.a
+       @echo done
+
+libAdaCurses.a :: dotouch $(LIBOBJS) @cf_generic_objects@
+       $(AR) $(AR_OPTS) $@ $(LIBOBJS) @cf_generic_objects@
+
+dotouch :
+       @sh -c 'for f in $(LIBALIS) $(GENALIS); do test -f $$f || touch $$f; done'
+
+sources :
+       @
+
+install ::
+install.libs ::
+uninstall ::
+uninstall.libs ::
+
+generics: $(GENALIS)
+       @
+
+mostlyclean ::
+       rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] *.a
+
+clean :: mostlyclean
+       rm -f $(LIBALIS) $(GENALIS) $(LIBOBJS) $(GENOBJS)
+
+distclean :: clean
+       rm -f Makefile
+
+realclean :: distclean
+
+BASEDEPS=$(ABASE).ads $(srcdir)/$(ABASE)-aux.ads $(srcdir)/$(ABASE).adb
+
+$(ALIB).o: $(srcdir)/$(ALIB).ads
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ALIB).ads
+
+
+$(ABASE)-aux.o: $(srcdir)/$(ABASE)-aux.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-aux.adb
+
+
+$(ABASE).o: $(srcdir)/$(ABASE).adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE).adb
+
+
+$(ABASE)-mouse.o: \
+               $(ABASE)-mouse.ads \
+               $(srcdir)/$(ABASE)-mouse.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-mouse.adb
+
+
+$(ABASE)-panels.o: \
+               $(ABASE)-panels.ads \
+               $(srcdir)/$(ABASE)-panels.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-panels.adb
+
+
+$(ABASE)-menus.o: \
+               $(ABASE)-menus.ads \
+               $(srcdir)/$(ABASE)-menus.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus.adb
+
+
+$(ABASE)-forms.o: \
+               $(ABASE)-forms.ads \
+               $(srcdir)/$(ABASE)-forms.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms.adb
+
+$(ABASE)-forms-field_types.o: \
+               $(ABASE)-forms-field_types.ads \
+               $(srcdir)/$(ABASE)-forms-field_types.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types.adb
+
+$(ABASE)-forms-field_types-alpha.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-alpha.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-alpha.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-alpha.adb
+
+$(ABASE)-forms-field_types-alphanumeric.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-alphanumeric.adb
+
+$(ABASE)-forms-field_types-intfield.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-intfield.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-intfield.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-intfield.adb
+
+$(ABASE)-forms-field_types-numeric.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-numeric.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-numeric.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-numeric.adb
+
+$(ABASE)-forms-field_types-regexp.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-regexp.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-regexp.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-regexp.adb
+
+$(ABASE)-forms-field_types-enumeration.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-enumeration.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-enumeration.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-enumeration.adb
+
+$(ABASE)-forms-field_types-ipv4_address.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-ipv4_address.adb
+
+$(ABASE)-forms-field_types-user.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-user.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-user.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-user.adb
+
+$(ABASE)-forms-field_types-user-choice.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-user-choice.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-user-choice.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-user-choice.adb
+
+$(ABASE)-text_io.o: \
+               $(srcdir)/$(ABASE)-text_io.ads \
+               $(srcdir)/$(ABASE)-text_io.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io.adb
+
+$(ABASE)-text_io-aux.o: \
+               $(srcdir)/$(ABASE)-text_io-aux.ads \
+               $(srcdir)/$(ABASE)-text_io-aux.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-aux.adb
+
+$(ABASE)-menus-menu_user_data.o: \
+               $(ABASE)-menus-menu_user_data.ads \
+               $(srcdir)/$(ABASE)-menus-menu_user_data.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus-menu_user_data.adb
+
+$(ABASE)-menus-item_user_data.o: \
+               $(ABASE)-menus-item_user_data.ads \
+               $(srcdir)/$(ABASE)-menus-item_user_data.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-menus-item_user_data.adb
+
+$(ABASE)-forms-form_user_data.o: \
+               $(ABASE)-forms-form_user_data.ads \
+               $(srcdir)/$(ABASE)-forms-form_user_data.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-form_user_data.adb
+
+$(ABASE)-forms-field_user_data.o: \
+               $(ABASE)-forms-field_user_data.ads \
+               $(srcdir)/$(ABASE)-forms-field_user_data.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_user_data.adb
+
+$(ABASE)-forms-field_types-enumeration-ada.o: \
+               $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.ads \
+               $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-forms-field_types-enumeration-ada.adb
+
+$(ABASE)-panels-user_data.o: \
+               $(ABASE)-panels-user_data.ads \
+               $(srcdir)/$(ABASE)-panels-user_data.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-panels-user_data.adb
+
+$(ABASE)-text_io-integer_io.o: \
+               $(srcdir)/$(ABASE)-text_io-integer_io.ads \
+               $(srcdir)/$(ABASE)-text_io-integer_io.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-integer_io.adb
+
+$(ABASE)-text_io-float_io.o: \
+               $(srcdir)/$(ABASE)-text_io-float_io.ads \
+               $(srcdir)/$(ABASE)-text_io-float_io.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-float_io.adb
+
+$(ABASE)-text_io-fixed_io.o: \
+               $(srcdir)/$(ABASE)-text_io-fixed_io.ads \
+               $(srcdir)/$(ABASE)-text_io-fixed_io.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-fixed_io.adb
+
+$(ABASE)-text_io-decimal_io.o: \
+               $(srcdir)/$(ABASE)-text_io-decimal_io.ads \
+               $(srcdir)/$(ABASE)-text_io-decimal_io.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-decimal_io.adb
+
+$(ABASE)-text_io-enumeration_io.o: \
+               $(srcdir)/$(ABASE)-text_io-enumeration_io.ads \
+               $(srcdir)/$(ABASE)-text_io-enumeration_io.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-enumeration_io.adb
+
+$(ABASE)-text_io-modular_io.o: \
+               $(srcdir)/$(ABASE)-text_io-modular_io.ads \
+               $(srcdir)/$(ABASE)-text_io-modular_io.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-modular_io.adb
+
+$(ABASE)-text_io-complex_io.o: \
+               $(srcdir)/$(ABASE)-text_io-complex_io.ads \
+               $(srcdir)/$(ABASE)-text_io-complex_io.adb $(BASEDEPS)
+       $(ADA) $(ADAFLAGS) -c -o $@ $(srcdir)/$(ABASE)-text_io-complex_io.adb
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-aux.adb
rename to Ada95/src/terminal_interface-curses-aux.adb
index c6827a400ec01cfe031372b1c7086f796cb3fb5f..2e974c4a51937b12beb106123889d922ddc57670 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package body Terminal_Interface.Curses.Aux is
    --
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-alpha.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb
index 8c124159bb2ee8e3f5676fdf2241417c73c1efb9..1cbf178259c4f54cded3e00fd0093df77a95279b 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.6 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms.Field_Types.Alpha is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    procedure Set_Field_Type (Fld : in Field;
                              Typ : in Alpha_Field)
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-alpha.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads
index e1ea0666cde3a3e49654b50222c28d50fdb4b402..d5281e6d67edcfcf83f53d06e65fa7bf52cf00de 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Terminal_Interface.Curses.Forms.Field_Types.Alpha is
-   pragma Preelaborate (Alpha);
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.Alpha);
 
    type Alpha_Field is new Field_Type
      with record
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-alphanumeric.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb
index 6d7eb3ad2e8e42c5cbd11ec8d0124644b2fda381..2e82305e1fcfa8792f6167fedf4098fffd823de7 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.6 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    procedure Set_Field_Type (Fld : in Field;
                              Typ : in AlphaNumeric_Field)
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-alphanumeric.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads
index 20ec155912008a02c6c8e65c050d587868371e55..209117b3581fd55c15abcb0e10deb99668184bdf 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is
-   pragma Preelaborate (AlphaNumeric);
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric);
 
    type AlphaNumeric_Field is new Field_Type
      with record
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration-ada.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb
index 7ddbac491bc4403cda4d25a9908c5c5d27fcacd0..d4f376ddbf97d7d7a272b27efe0a11b3f6a84b94 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.5 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Characters.Handling; use Ada.Characters.Handling;
 
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration-ada.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads
index e867b9e330e0646418b62503dd24dd62a6a5f976..870a3a4684dc509aa7efb8870481bd2806e8458a 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.4 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 generic
    type T is (<>);
 
 package Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada is
-   pragma Preelaborate (Enumeration.Ada);
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada);
 
    function Create (Set            : Type_Set := Mixed_Case;
                     Case_Sensitive : Boolean  := False;
similarity index 98%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb
index 6fa8daec9c6bb93bd49062fe2f3544e0436e72dc..c4286af06517ff78fa228333b498a2d23e77cadc 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.5 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Deallocation;
 with Interfaces.C; use Interfaces.C;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads
index 55309b60e4995e22477c74f58a90617771c5aaf9..04b0bfe828592afda5b9982716e7003bc223b272 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C.Strings;
 
 package Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
-   pragma Preelaborate (Enumeration);
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.Enumeration);
 
    type String_Access is access String;
 
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-intfield.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb
index e574201194ec61b4921b5be15b920be78f34936c..077ba3217ed23de18a9805c7bd016d07f7b0ea99 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.6 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms.Field_Types.IntField is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    procedure Set_Field_Type (Fld : in Field;
                              Typ : in Integer_Field)
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-intfield.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads
index f7f8f2b485e884b40d8225847e280ecbf2d4dc9b..edef251c4b3828a85598b5e6cf1c6f0f5d94a515 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Terminal_Interface.Curses.Forms.Field_Types.IntField is
-   pragma Preelaborate (IntField);
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.IntField);
 
    type Integer_Field is new Field_Type with
       record
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-ipv4_address.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb
index 1cf798793fbfb46dbac355f01453f91239fbc92d..263e50e2c26072e7f2325043fee66227ad3881d2 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.6 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    procedure Set_Field_Type (Fld : in Field;
                              Typ : in Internet_V4_Address_Field)
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-ipv4_address.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads
index eb057f26db9d67732faf49e602fa8154cfbf2b1e..63a1bbfb7227dd4a9e66756758e5d5a90f637102 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is
-   pragma Preelaborate (IPV4_Address);
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address);
 
    type Internet_V4_Address_Field is new Field_Type with null record;
 
similarity index 85%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-numeric.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb
index 0a8ae72caf2ba4e5aae7d508623b33b4742c3d20..0e2d5c2f74caf6bb67c8b249fae353ada756d049 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.7 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms.Field_Types.Numeric is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    procedure Set_Field_Type (Fld : in Field;
                              Typ : in Numeric_Field)
    is
       type Double is new Interfaces.C.double;
 
-   C_Numeric_Field_Type : C_Field_Type;
-   pragma Import (C, C_Numeric_Field_Type, "TYPE_NUMERIC");
+      C_Numeric_Field_Type : C_Field_Type;
+      pragma Import (C, C_Numeric_Field_Type, "TYPE_NUMERIC");
 
-   function Set_Fld_Type (F    : Field := Fld;
-                          Cft  : C_Field_Type := C_Numeric_Field_Type;
-                          Arg1 : C_Int;
-                          Arg2 : Double;
-                          Arg3 : Double) return C_Int;
-   pragma Import (C, Set_Fld_Type, "set_field_type");
+      function Set_Fld_Type (F    : Field := Fld;
+                             Cft  : C_Field_Type := C_Numeric_Field_Type;
+                             Arg1 : C_Int;
+                             Arg2 : Double;
+                             Arg3 : Double) return C_Int;
+      pragma Import (C, Set_Fld_Type, "set_field_type");
 
-   Res : Eti_Error;
+      Res : Eti_Error;
    begin
       Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
                            Arg2 => Double (Typ.Lower_Limit),
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-numeric.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads
index 28844622beb8f1a116c46e658c75eb7653dbccf7..d5f126b6c432b682d4480008954e97e07a3734f1 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Terminal_Interface.Curses.Forms.Field_Types.Numeric is
-   pragma Preelaborate (Numeric);
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.Numeric);
 
    type Numeric_Field is new Field_Type with
       record
similarity index 95%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-regexp.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb
index e8940035cb5b208ff1b6d9d4a836f78c72842549..a9b4984a1a66c9fa7193ea55a310562888972334 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.3 $
---  Binding Version 00.93
+--  $Revision: 1.6 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C; use Interfaces.C;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -46,7 +46,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.RegExp is
    procedure Set_Field_Type (Fld : in Field;
                              Typ : in Regular_Expression_Field)
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
 
       C_Regexp_Field_Type : C_Field_Type;
       pragma Import (C, C_Regexp_Field_Type, "TYPE_REGEXP");
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-regexp.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads
index 20f7c5eb81be226a18f774160000f1169753dc38..af192938c95ef2459052fafc8cda0ca6e674fed7 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Terminal_Interface.Curses.Forms.Field_Types.RegExp is
-   pragma Preelaborate (RegExp);
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.RegExp);
 
    type String_Access is access String;
 
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-user-choice.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb
index 1606eb5d39356ca0cbcb2d3279faadec467442f5..cd9cd3dbe185cb7257c385db38d0fcfdc2a7a50a 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.4 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Conversion;
 with Interfaces.C;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    function To_Argument_Access is new Ada.Unchecked_Conversion
      (System.Address, Argument_Access);
similarity index 93%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-user-choice.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads
index ced81fe85c2756776862fbdaff15d66faf598b18..f8523071bd9ffb9f84398948b77168c2575783eb 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.4 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
-with Ada.Unchecked_Deallocation;
-with Terminal_Interface.Curses.Aux;
+with Interfaces.C;
 
 package Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
-   pragma Preelaborate (Choice);
+   pragma Preelaborate
+     (Terminal_Interface.Curses.Forms.Field_Types.User.Choice);
+
+   use type Interfaces.C.int;
+   subtype C_Int is Interfaces.C.int;
 
    type User_Defined_Field_Type_With_Choice is abstract new
      User_Defined_Field_Type with null record;
@@ -72,7 +75,7 @@ package Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
    --  | Private Part.
    --  |
 private
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    function C_Generic_Choice return C_Field_Type;
 
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-user.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types-user.adb
index e5ce433cfed58c69cb65e12a1239f5b214d0ce3c..aa923c4d27aaa2ed28bcea47285b29c103168a81 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.4 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Conversion;
 with Interfaces.C;
+with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms.Field_Types.User is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    procedure Set_Field_Type (Fld : in Field;
                              Typ : in User_Defined_Field_Type)
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types-user.ads
rename to Ada95/src/terminal_interface-curses-forms-field_types-user.ads
index f06459b8c25ebf9657696fc66a40290033e5fb0c..f93a904fad2fb2bb410a9234b3a3b5bd3e3bef64 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.4 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
-with Ada.Unchecked_Deallocation;
-with Terminal_Interface.Curses.Aux;
+with Interfaces.C;
 
 package Terminal_Interface.Curses.Forms.Field_Types.User is
-   pragma Preelaborate (User);
+   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.User);
+   use type Interfaces.C.int;
+   subtype C_Int is Interfaces.C.int;
 
    type User_Defined_Field_Type is abstract new Field_Type with null record;
    --  This is the root of the mechanism we use to create field types in
@@ -75,7 +76,7 @@ package Terminal_Interface.Curses.Forms.Field_Types.User is
    --  | Private Part.
    --  | Used by the Choice child package.
 private
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    function C_Generic_Type   return C_Field_Type;
 
similarity index 92%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_types.adb
rename to Ada95/src/terminal_interface-curses-forms-field_types.adb
index 60e1ff38b8cf78be96e16576130e7b9db6d158ad..dccaf9d21479bbb8dfcae08e878f29e12aa209a5 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.12 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 with Ada.Unchecked_Deallocation;
 with Ada.Unchecked_Conversion;
-with Terminal_Interface.Curses.Forms.Field_Types.User;
-with Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
 --  |
 --  |=====================================================================
 --  | man page form_fieldtype.3x
@@ -95,11 +93,20 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
 
    function Make_Arg (Args : System.Address) return System.Address
    is
-      function Getarg (Arg : System.Address := Args)
-        return System.Address;
-      pragma Import (C, Getarg, "_nc_ada_getvarg");
+      --  Actually args is a double indirected pointer to the arguments
+      --  of a C variable argument list. In theory it is now quite
+      --  complicated to write portable routine that reads the arguments,
+      --  because one has to know the growth direction of the stack and
+      --  the sizes of the individual arguments.
+      --  Fortunately we are only interested in the first argument (#0),
+      --  we know its size and for the first arg we don't care about
+      --  into which stack direction we have to proceed. We simply
+      --  resolve the double indirection and thats it.
+      type V is access all System.Address;
+      function To_Access is new Ada.Unchecked_Conversion (System.Address,
+                                                          V);
    begin
-      return Getarg;
+      return To_Access (To_Access (Args).all).all;
    end Make_Arg;
 
    function Copy_Arg (Usr : System.Address) return System.Address
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-field_user_data.adb
rename to Ada95/src/terminal_interface-curses-forms-field_user_data.adb
index a5729d40ace2ed4f0236ad0f2311e18c7ac9c18f..711cfbba3374c4a30e12133692f9b6428a811632 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.10 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use  Terminal_Interface.Curses.Aux;
 
@@ -49,7 +49,7 @@ package body Terminal_Interface.Curses.Forms.Field_User_Data is
    --  |
    --  |
    --  |
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    procedure Set_User_Data (Fld  : in Field;
                             Data : in User_Access)
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-forms-form_user_data.adb
rename to Ada95/src/terminal_interface-curses-forms-form_user_data.adb
index 4c6f34cc840c54eefc4c699b930060b912033c51..b6fff13c6e2403f430ecc4f08455b434b60d486f 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.10 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 --  |
 --  |=====================================================================
@@ -47,7 +47,7 @@ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms.Form_User_Data is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    --  |
    --  |
similarity index 94%
rename from Ada95/ada_include/terminal_interface-curses-forms.adb
rename to Ada95/src/terminal_interface-curses-forms.adb
index fbb43b7f81e665f1fcc716675cd15162493ff829..669ac5f3415b73347b2d8bc94df4896dcb5000a2 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.13 $
---  Binding Version 00.93
+--  $Revision: 1.20 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Deallocation;
-with Unchecked_Conversion;
+with Ada.Unchecked_Conversion;
 
 with Interfaces.C; use Interfaces.C;
 with Interfaces.C.Strings; use Interfaces.C.Strings;
+with Interfaces.C.Pointers;
 
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+with Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Forms is
 
+   use Terminal_Interface.Curses.Aux;
+
+   type C_Field_Array is array (Natural range <>) of aliased Field;
+   package F_Array is new
+     Interfaces.C.Pointers (Natural, Field, C_Field_Array, Null_Field);
+
 ------------------------------------------------------------------------------
    --  |
    --  |
@@ -55,20 +62,20 @@ package body Terminal_Interface.Curses.Forms is
    --  subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
 
    function FOS_2_CInt is new
-     Unchecked_Conversion (Field_Option_Set,
-                           C_Int);
+     Ada.Unchecked_Conversion (Field_Option_Set,
+                               C_Int);
 
    function CInt_2_FOS is new
-     Unchecked_Conversion (C_Int,
-                           Field_Option_Set);
+     Ada.Unchecked_Conversion (C_Int,
+                               Field_Option_Set);
 
    function FrmOS_2_CInt is new
-     Unchecked_Conversion (Form_Option_Set,
-                           C_Int);
+     Ada.Unchecked_Conversion (Form_Option_Set,
+                               C_Int);
 
    function CInt_2_FrmOS is new
-     Unchecked_Conversion (C_Int,
-                           Form_Option_Set);
+     Ada.Unchecked_Conversion (C_Int,
+                               Form_Option_Set);
 
    procedure Request_Name (Key  : in Form_Request_Code;
                                 Name : out String)
@@ -219,7 +226,7 @@ package body Terminal_Interface.Curses.Forms is
       Buffer : in Buffer_Number := Buffer_Number'First;
       Str    : in String)
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Set_Fld_Buffer (Fld    : Field;
                                  Bufnum : C_Int;
                                  S      : Char_Ptr)
@@ -316,9 +323,6 @@ package body Terminal_Interface.Curses.Forms is
    --  |
    --  |
    --  |
-   procedure Normalize_Field_Options (Options : in out C_Int);
-   pragma Import (C, Normalize_Field_Options, "_nc_ada_normalize_field_opts");
-
    procedure Set_Options (Fld     : in Field;
                           Options : in Field_Option_Set)
    is
@@ -329,7 +333,6 @@ package body Terminal_Interface.Curses.Forms is
       Opt : C_Int := FOS_2_CInt (Options);
       Res : Eti_Error;
    begin
-      Normalize_Field_Options (Opt);
       Res := Set_Field_Opts (Fld, Opt);
       if Res /= E_Ok then
          Eti_Exception (Res);
@@ -352,7 +355,6 @@ package body Terminal_Interface.Curses.Forms is
       Err : Eti_Error;
       Opt : C_Int := FOS_2_CInt (Options);
    begin
-      Normalize_Field_Options (Opt);
       if On then
          Err := Field_Opts_On (Fld, Opt);
       else
@@ -373,7 +375,6 @@ package body Terminal_Interface.Curses.Forms is
 
       Res : C_Int := Field_Opts (Fld);
    begin
-      Normalize_Field_Options (Res);
       Options := CInt_2_FOS (Res);
    end Get_Options;
    --  |
@@ -400,13 +401,14 @@ package body Terminal_Interface.Curses.Forms is
       Color : in Color_Pair := Color_Pair'First)
    is
       function Set_Field_Fore (Fld  : Field;
-                               Attr : C_Int) return C_Int;
+                               Attr : C_Chtype) return C_Int;
       pragma Import (C, Set_Field_Fore, "set_field_fore");
 
       Ch : constant Attributed_Character := (Ch    => Character'First,
                                              Color => Color,
                                              Attr  => Fore);
-      Res : constant Eti_Error := Set_Field_Fore (Fld, Chtype_To_CInt (Ch));
+      Res : constant Eti_Error :=
+        Set_Field_Fore (Fld, AttrChar_To_Chtype (Ch));
    begin
       if  Res /= E_Ok then
          Eti_Exception (Res);
@@ -418,21 +420,21 @@ package body Terminal_Interface.Curses.Forms is
    procedure Foreground (Fld  : in  Field;
                          Fore : out Character_Attribute_Set)
    is
-      function Field_Fore (Fld : Field) return C_Int;
+      function Field_Fore (Fld : Field) return C_Chtype;
       pragma Import (C, Field_Fore, "field_fore");
    begin
-      Fore := CInt_To_Chtype (Field_Fore (Fld)).Attr;
+      Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
    end Foreground;
 
    procedure Foreground (Fld   : in  Field;
                          Fore  : out Character_Attribute_Set;
                          Color : out Color_Pair)
    is
-      function Field_Fore (Fld : Field) return C_Int;
+      function Field_Fore (Fld : Field) return C_Chtype;
       pragma Import (C, Field_Fore, "field_fore");
    begin
-      Fore  := CInt_To_Chtype (Field_Fore (Fld)).Attr;
-      Color := CInt_To_Chtype (Field_Fore (Fld)).Color;
+      Fore  := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
+      Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color;
    end Foreground;
    --  |
    --  |
@@ -443,13 +445,14 @@ package body Terminal_Interface.Curses.Forms is
       Color : in Color_Pair := Color_Pair'First)
    is
       function Set_Field_Back (Fld  : Field;
-                               Attr : C_Int) return C_Int;
+                               Attr : C_Chtype) return C_Int;
       pragma Import (C, Set_Field_Back, "set_field_back");
 
       Ch : constant Attributed_Character := (Ch    => Character'First,
                                              Color => Color,
                                              Attr  => Back);
-      Res : constant Eti_Error := Set_Field_Back (Fld, Chtype_To_CInt (Ch));
+      Res : constant Eti_Error :=
+        Set_Field_Back (Fld, AttrChar_To_Chtype (Ch));
    begin
       if  Res /= E_Ok then
          Eti_Exception (Res);
@@ -461,21 +464,21 @@ package body Terminal_Interface.Curses.Forms is
    procedure Background (Fld  : in  Field;
                          Back : out Character_Attribute_Set)
    is
-      function Field_Back (Fld : Field) return C_Int;
+      function Field_Back (Fld : Field) return C_Chtype;
       pragma Import (C, Field_Back, "field_back");
    begin
-      Back := CInt_To_Chtype (Field_Back (Fld)).Attr;
+      Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
    end Background;
 
    procedure Background (Fld   : in  Field;
                          Back  : out Character_Attribute_Set;
                          Color : out Color_Pair)
    is
-      function Field_Back (Fld : Field) return C_Int;
+      function Field_Back (Fld : Field) return C_Chtype;
       pragma Import (C, Field_Back, "field_back");
    begin
-      Back  := CInt_To_Chtype (Field_Back (Fld)).Attr;
-      Color := CInt_To_Chtype (Field_Back (Fld)).Color;
+      Back  := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
+      Color := Chtype_To_AttrChar (Field_Back (Fld)).Color;
    end Background;
    --  |
    --  |
@@ -748,14 +751,18 @@ package body Terminal_Interface.Curses.Forms is
    function Fields (Frm   : Form;
                     Index : Positive) return Field
    is
-      function F_Fields (Frm : Form;
-                         Idx : C_Int) return Field;
-      pragma Import (C, F_Fields, "_nc_get_field");
+      use F_Array;
+
+      function C_Fields (Frm : Form) return Pointer;
+      pragma Import (C, C_Fields, "form_fields");
+
+      P : Pointer := C_Fields (Frm);
    begin
-      if Frm = Null_Form or else Index not in 1 .. Field_Count (Frm) then
+      if P = null or else Index not in 1 .. Field_Count (Frm) then
          raise Form_Exception;
       else
-         return F_Fields (Frm, C_Int (Index) - 1);
+         P := P + ptrdiff_t (C_Int (Index) - 1);
+         return P.all;
       end if;
    end Fields;
    --  |
@@ -831,9 +838,6 @@ package body Terminal_Interface.Curses.Forms is
    --  |
    --  |
    --  |
-   procedure Normalize_Form_Options (Options : in out C_Int);
-   pragma Import (C, Normalize_Form_Options, "_nc_ada_normalize_form_opts");
-
    procedure Set_Options (Frm     : in Form;
                           Options : in Form_Option_Set)
    is
@@ -844,7 +848,6 @@ package body Terminal_Interface.Curses.Forms is
       Opt : C_Int := FrmOS_2_CInt (Options);
       Res : Eti_Error;
    begin
-      Normalize_Form_Options (Opt);
       Res := Set_Form_Opts (Frm, Opt);
       if  Res /= E_Ok then
          Eti_Exception (Res);
@@ -867,7 +870,6 @@ package body Terminal_Interface.Curses.Forms is
       Err : Eti_Error;
       Opt : C_Int := FrmOS_2_CInt (Options);
    begin
-      Normalize_Form_Options (Opt);
       if On then
          Err := Form_Opts_On (Frm, Opt);
       else
@@ -888,7 +890,6 @@ package body Terminal_Interface.Curses.Forms is
 
       Res : C_Int := Form_Opts (Frm);
    begin
-      Normalize_Form_Options (Res);
       Options := CInt_2_FrmOS (Res);
    end Get_Options;
    --  |
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-menus-item_user_data.adb
rename to Ada95/src/terminal_interface-curses-menus-item_user_data.adb
index 858e1d25266a3c9736e9fd8dc07bcbb69cbe281f..98a22a5f29f9740f96a8c8e9d6c74d4c67c514b8 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-menus-menu_user_data.adb
rename to Ada95/src/terminal_interface-curses-menus-menu_user_data.adb
index 25a4c94152034be9db0fd4bf593cc8f25563649a..00670dd34ac75782a40241bdb5b4d4d42782e6de 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.10 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 package body Terminal_Interface.Curses.Menus.Menu_User_Data is
 
-   use type Interfaces.C.Int;
+   use type Interfaces.C.int;
 
    procedure Set_User_Data (Men  : in Menu;
                             Data : in User_Access)
similarity index 92%
rename from Ada95/ada_include/terminal_interface-curses-menus.adb
rename to Ada95/src/terminal_interface-curses-menus.adb
index 2df514ec4bcd415a1c90f7fde7d2af44cafea377..92ae0f9c2d1b1dc06849375e2deda7c8231d6ef4 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.13 $
---  Binding Version 00.93
+--  $Revision: 1.20 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Deallocation;
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 
 with Interfaces.C; use Interfaces.C;
 with Interfaces.C.Strings; use Interfaces.C.Strings;
-with Terminal_Interface.Curses;
+with Interfaces.C.Pointers;
 
-with Unchecked_Conversion;
+with Ada.Unchecked_Conversion;
 
 package body Terminal_Interface.Curses.Menus is
 
+   type C_Item_Array is array (Natural range <>) of aliased Item;
+   package I_Array is new
+     Interfaces.C.Pointers (Natural, Item, C_Item_Array, Null_Item);
+
    use type System.Bit_Order;
    subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
 
    function MOS_2_CInt is new
-     Unchecked_Conversion (Menu_Option_Set,
-                           C_Int);
+     Ada.Unchecked_Conversion (Menu_Option_Set,
+                               C_Int);
 
    function CInt_2_MOS is new
-     Unchecked_Conversion (C_Int,
-                           Menu_Option_Set);
+     Ada.Unchecked_Conversion (C_Int,
+                               Menu_Option_Set);
 
    function IOS_2_CInt is new
-     Unchecked_Conversion (Item_Option_Set,
-                           C_Int);
+     Ada.Unchecked_Conversion (Item_Option_Set,
+                               C_Int);
 
    function CInt_2_IOS is new
-     Unchecked_Conversion (C_Int,
-                           Item_Option_Set);
+     Ada.Unchecked_Conversion (C_Int,
+                               Item_Option_Set);
 
 ------------------------------------------------------------------------------
    procedure Request_Name (Key  : in Menu_Request_Code;
@@ -89,7 +93,7 @@ package body Terminal_Interface.Curses.Menus is
    function Create (Name        : String;
                     Description : String := "") return Item
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Newitem (Name, Desc : Char_Ptr) return Item;
       pragma Import (C, Newitem, "new_item");
 
@@ -183,9 +187,6 @@ package body Terminal_Interface.Curses.Menus is
       end if;
    end Visible;
 -------------------------------------------------------------------------------
-   procedure Normalize_Item_Options (Options : in out C_Int);
-   pragma Import (C, Normalize_Item_Options, "_nc_ada_normalize_item_opts");
-
    procedure Set_Options (Itm     : in Item;
                           Options : in Item_Option_Set)
    is
@@ -196,7 +197,6 @@ package body Terminal_Interface.Curses.Menus is
       Opt : C_Int := IOS_2_CInt (Options);
       Res : Eti_Error;
    begin
-      Normalize_Item_Options (Opt);
       Res := Set_Item_Opts (Itm, Opt);
       if Res /= E_Ok then
          Eti_Exception (Res);
@@ -217,7 +217,6 @@ package body Terminal_Interface.Curses.Menus is
       Opt : C_Int := IOS_2_CInt (Options);
       Err : Eti_Error;
    begin
-      Normalize_Item_Options (Opt);
       if On then
          Err := Item_Opts_On (Itm, Opt);
       else
@@ -236,7 +235,6 @@ package body Terminal_Interface.Curses.Menus is
 
       Res : C_Int := Item_Opts (Itm);
    begin
-      Normalize_Item_Options (Res);
       Options := CInt_2_IOS (Res);
    end Get_Options;
 
@@ -369,9 +367,6 @@ package body Terminal_Interface.Curses.Menus is
       end if;
    end Post;
 -------------------------------------------------------------------------------
-   procedure Normalize_Menu_Options (Options : in out C_Int);
-   pragma Import (C, Normalize_Menu_Options, "_nc_ada_normalize_menu_opts");
-
    procedure Set_Options (Men     : in Menu;
                           Options : in Menu_Option_Set)
    is
@@ -382,7 +377,6 @@ package body Terminal_Interface.Curses.Menus is
       Opt : C_Int := MOS_2_CInt (Options);
       Res : Eti_Error;
    begin
-      Normalize_Menu_Options (Opt);
       Res := Set_Menu_Opts (Men, Opt);
       if  Res /= E_Ok then
          Eti_Exception (Res);
@@ -403,7 +397,6 @@ package body Terminal_Interface.Curses.Menus is
       Opt : C_Int := MOS_2_CInt (Options);
       Err : Eti_Error;
    begin
-      Normalize_Menu_Options (Opt);
       if On then
          Err := Menu_Opts_On  (Men, Opt);
       else
@@ -422,7 +415,6 @@ package body Terminal_Interface.Curses.Menus is
 
       Res : C_Int := Menu_Opts (Men);
    begin
-      Normalize_Menu_Options (Res);
       Options := CInt_2_MOS (Res);
    end Get_Options;
 
@@ -517,7 +509,7 @@ package body Terminal_Interface.Curses.Menus is
    procedure Set_Mark (Men  : in Menu;
                        Mark : in String)
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Set_Mark (Men  : Menu;
                          Mark : Char_Ptr) return C_Int;
       pragma Import (C, Set_Mark, "set_menu_mark");
@@ -557,13 +549,13 @@ package body Terminal_Interface.Curses.Menus is
       Color : in Color_Pair := Color_Pair'First)
    is
       function Set_Menu_Fore (Men  : Menu;
-                              Attr : C_Int) return C_Int;
+                              Attr : C_Chtype) return C_Int;
       pragma Import (C, Set_Menu_Fore, "set_menu_fore");
 
       Ch : constant Attributed_Character := (Ch    => Character'First,
                                              Color => Color,
                                              Attr  => Fore);
-      Res : constant Eti_Error := Set_Menu_Fore (Men, Chtype_To_CInt (Ch));
+      Res : constant Eti_Error := Set_Menu_Fore (Men, AttrChar_To_Chtype (Ch));
    begin
       if  Res /= E_Ok then
          Eti_Exception (Res);
@@ -573,21 +565,21 @@ package body Terminal_Interface.Curses.Menus is
    procedure Foreground (Men  : in  Menu;
                          Fore : out Character_Attribute_Set)
    is
-      function Menu_Fore (Men : Menu) return C_Int;
+      function Menu_Fore (Men : Menu) return C_Chtype;
       pragma Import (C, Menu_Fore, "menu_fore");
    begin
-      Fore := CInt_To_Chtype (Menu_Fore (Men)).Attr;
+      Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr;
    end Foreground;
 
    procedure Foreground (Men   : in  Menu;
                          Fore  : out Character_Attribute_Set;
                          Color : out Color_Pair)
    is
-      function Menu_Fore (Men : Menu) return C_Int;
+      function Menu_Fore (Men : Menu) return C_Chtype;
       pragma Import (C, Menu_Fore, "menu_fore");
    begin
-      Fore  := CInt_To_Chtype (Menu_Fore (Men)).Attr;
-      Color := CInt_To_Chtype (Menu_Fore (Men)).Color;
+      Fore  := Chtype_To_AttrChar (Menu_Fore (Men)).Attr;
+      Color := Chtype_To_AttrChar (Menu_Fore (Men)).Color;
    end Foreground;
 
    procedure Set_Background
@@ -596,13 +588,13 @@ package body Terminal_Interface.Curses.Menus is
       Color : in Color_Pair := Color_Pair'First)
    is
       function Set_Menu_Back (Men  : Menu;
-                              Attr : C_Int) return C_Int;
+                              Attr : C_Chtype) return C_Int;
       pragma Import (C, Set_Menu_Back, "set_menu_back");
 
       Ch : constant Attributed_Character := (Ch    => Character'First,
                                              Color => Color,
                                              Attr  => Back);
-      Res : constant Eti_Error := Set_Menu_Back (Men, Chtype_To_CInt (Ch));
+      Res : constant Eti_Error := Set_Menu_Back (Men, AttrChar_To_Chtype (Ch));
    begin
       if  Res /= E_Ok then
          Eti_Exception (Res);
@@ -612,21 +604,21 @@ package body Terminal_Interface.Curses.Menus is
    procedure Background (Men  : in  Menu;
                          Back : out Character_Attribute_Set)
    is
-      function Menu_Back (Men : Menu) return C_Int;
+      function Menu_Back (Men : Menu) return C_Chtype;
       pragma Import (C, Menu_Back, "menu_back");
    begin
-      Back := CInt_To_Chtype (Menu_Back (Men)).Attr;
+      Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr;
    end Background;
 
    procedure Background (Men   : in  Menu;
                          Back  : out Character_Attribute_Set;
                          Color : out Color_Pair)
    is
-      function Menu_Back (Men : Menu) return C_Int;
+      function Menu_Back (Men : Menu) return C_Chtype;
       pragma Import (C, Menu_Back, "menu_back");
    begin
-      Back  := CInt_To_Chtype (Menu_Back (Men)).Attr;
-      Color := CInt_To_Chtype (Menu_Back (Men)).Color;
+      Back  := Chtype_To_AttrChar (Menu_Back (Men)).Attr;
+      Color := Chtype_To_AttrChar (Menu_Back (Men)).Color;
    end Background;
 
    procedure Set_Grey (Men   : in Menu;
@@ -634,14 +626,14 @@ package body Terminal_Interface.Curses.Menus is
                        Color : in Color_Pair := Color_Pair'First)
    is
       function Set_Menu_Grey (Men  : Menu;
-                              Attr : C_Int) return C_Int;
+                              Attr : C_Chtype) return C_Int;
       pragma Import (C, Set_Menu_Grey, "set_menu_grey");
 
       Ch : constant Attributed_Character := (Ch    => Character'First,
                                              Color => Color,
                                              Attr  => Grey);
 
-      Res : constant Eti_Error := Set_Menu_Grey (Men, Chtype_To_CInt (Ch));
+      Res : constant Eti_Error := Set_Menu_Grey (Men, AttrChar_To_Chtype (Ch));
    begin
       if  Res /= E_Ok then
          Eti_Exception (Res);
@@ -651,21 +643,21 @@ package body Terminal_Interface.Curses.Menus is
    procedure Grey (Men  : in  Menu;
                    Grey : out Character_Attribute_Set)
    is
-      function Menu_Grey (Men : Menu) return C_Int;
+      function Menu_Grey (Men : Menu) return C_Chtype;
       pragma Import (C, Menu_Grey, "menu_grey");
    begin
-      Grey := CInt_To_Chtype (Menu_Grey (Men)).Attr;
+      Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr;
    end Grey;
 
    procedure Grey (Men  : in  Menu;
                    Grey : out Character_Attribute_Set;
                    Color : out Color_Pair)
    is
-      function Menu_Grey (Men : Menu) return C_Int;
+      function Menu_Grey (Men : Menu) return C_Chtype;
       pragma Import (C, Menu_Grey, "menu_grey");
    begin
-      Grey  := CInt_To_Chtype (Menu_Grey (Men)).Attr;
-      Color := CInt_To_Chtype (Menu_Grey (Men)).Color;
+      Grey  := Chtype_To_AttrChar (Menu_Grey (Men)).Attr;
+      Color := Chtype_To_AttrChar (Menu_Grey (Men)).Color;
    end Grey;
 
    procedure Set_Pad_Character (Men : in Menu;
@@ -739,7 +731,7 @@ package body Terminal_Interface.Curses.Menus is
    function Set_Pattern (Men  : Menu;
                          Text : String) return Boolean
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Set_Pattern (Men     : Menu;
                             Pattern : Char_Ptr) return C_Int;
       pragma Import (C, Set_Pattern, "set_menu_pattern");
@@ -907,7 +899,7 @@ package body Terminal_Interface.Curses.Menus is
       if Items (Items'Last) /= Null_Item then
          raise Menu_Exception;
       else
-         Res := Set_Items (Men, Items (Items'First)'Address);
+         Res := Set_Items (Men, Items.all'Address);
          if  Res /= E_Ok then
             Eti_Exception (Res);
          end if;
@@ -925,14 +917,18 @@ package body Terminal_Interface.Curses.Menus is
    function Items (Men   : Menu;
                    Index : Positive) return Item
    is
-      function M_Items (Men : Menu;
-                        Idx : C_Int) return Item;
-      pragma Import (C, M_Items, "_nc_get_item");
+      use I_Array;
+
+      function C_Mitems (Men : Menu) return Pointer;
+      pragma Import (C, C_Mitems, "menu_items");
+
+      P : Pointer := C_Mitems (Men);
    begin
-      if Men = Null_Menu or else Index not in 1 .. Item_Count (Men) then
+      if P = null or else Index not in 1 .. Item_Count (Men) then
          raise Menu_Exception;
       else
-         return M_Items (Men, C_Int (Index) - 1);
+         P := P + ptrdiff_t (C_Int (Index) - 1);
+         return P.all;
       end if;
    end Items;
 
@@ -943,13 +939,12 @@ package body Terminal_Interface.Curses.Menus is
       pragma Import (C, Newmenu, "new_menu");
 
       M   : Menu;
-      I   : Item_Array_Access;
    begin
       pragma Assert (Items (Items'Last) = Null_Item);
       if Items (Items'Last) /= Null_Item then
          raise Menu_Exception;
       else
-         M := Newmenu (Items (Items'First)'Address);
+         M := Newmenu (Items.all'Address);
          if M = Null_Menu then
             raise Menu_Exception;
          end if;
similarity index 63%
rename from Ada95/ada_include/terminal_interface-curses-mouse.adb
rename to Ada95/src/terminal_interface-curses-mouse.adb
index bef31643a2dc87359bcda190fe3da26a46a5d6b9..8a7499ac31658eb64f5a6f036c200f4ac7dd1995 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.9 $
---  Binding Version 00.93
+--  $Revision: 1.16 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System;
 
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-with Interfaces;
-with Interfaces.C;
-with Unchecked_Conversion;
+with Interfaces.C; use Interfaces.C;
+use Interfaces;
 
 package body Terminal_Interface.Curses.Mouse is
 
    use type System.Bit_Order;
    use type Interfaces.C.int;
 
-   function CInt_To_Mask is new
-     Unchecked_Conversion (Source => C_Int,
-                           Target => Event_Mask);
-
-   function Mask_To_CInt is new
-     Unchecked_Conversion (Source => Event_Mask,
-                           Target => C_Int);
-
    function Has_Mouse return Boolean
    is
       function Mouse_Avail return C_Int;
@@ -85,66 +76,106 @@ package body Terminal_Interface.Curses.Mouse is
       return Event;
    end Get_Mouse;
 
-   procedure Register_Reportable_Event (B    : in Mouse_Button;
-                                        S    : in Button_State;
-                                        Mask : in out Event_Mask)
+   procedure Register_Reportable_Event (Button : in Mouse_Button;
+                                        State  : in Button_State;
+                                        Mask   : in out Event_Mask)
    is
-      type Evt_Access is access all Event_Mask;
-      function Register (B : C_Int;
-                         S : C_Int;
-                         M : Evt_Access) return C_Int;
-      pragma Import (C, Register, "_nc_ada_mouse_mask");
-
-      T : aliased Event_Mask := Mask;
-      M : Evt_Access := T'Access;
-      R : constant C_Int := Register (C_Int (Mouse_Button'Pos (B)),
-                                      C_Int (Button_State'Pos (S)),
-                                      M);
+      Button_Nr : constant Natural := Mouse_Button'Pos (Button);
+      State_Nr  : constant Natural := Button_State'Pos (State);
    begin
-      if R = Curses_Err then
+      if Button in Modifier_Keys and then State /= Pressed then
          raise Curses_Exception;
+      else
+         if Button in Real_Buttons then
+            Mask := Mask or ((2 ** (6 * Button_Nr)) ** State_Nr);
+         else
+            Mask := Mask or (BUTTON_CTRL ** (Button_Nr - 4));
+         end if;
       end if;
-      Mask := T;
    end Register_Reportable_Event;
 
+   procedure Register_Reportable_Events (Button : in Mouse_Button;
+                                         State  : in Button_States;
+                                         Mask   : in out Event_Mask)
+   is
+   begin
+      for S in Button_States'Range loop
+         if State (S) then
+            Register_Reportable_Event (Button, S, Mask);
+         end if;
+      end loop;
+   end Register_Reportable_Events;
+
    function Start_Mouse (Mask : Event_Mask := All_Events)
                          return Event_Mask
    is
-      type Int_Access is access all C_Int;
-      function MMask (M : C_Int; O : Int_Access := null) return C_Int;
+      function MMask (M : Event_Mask;
+                      O : access Event_Mask) return Event_Mask;
       pragma Import (C, MMask, "mousemask");
-      R : C_Int;
+      R   : Event_Mask;
+      Old : aliased Event_Mask;
    begin
-      R := MMask (Mask_To_CInt (Mask));
-      return CInt_To_Mask (R);
+      R := MMask (Mask, Old'Access);
+      return Old;
    end Start_Mouse;
 
-   procedure End_Mouse
+   procedure End_Mouse (Mask : in Event_Mask := No_Events)
    is
-      Old : constant Event_Mask := Start_Mouse (No_Events);
    begin
       null;
    end End_Mouse;
 
+   procedure Dispatch_Event (Mask   : in  Event_Mask;
+                             Button : out Mouse_Button;
+                             State  : out Button_State);
+
+   procedure Dispatch_Event (Mask   : in  Event_Mask;
+                             Button : out Mouse_Button;
+                             State  : out Button_State) is
+      L : Event_Mask;
+   begin
+      Button := Alt;  --  preset to non real button;
+      if (Mask and BUTTON1_EVENTS) /= 0 then
+         Button := Left;
+      elsif (Mask and BUTTON2_EVENTS) /= 0 then
+         Button := Middle;
+      elsif (Mask and BUTTON3_EVENTS) /= 0 then
+         Button := Right;
+      elsif (Mask and BUTTON4_EVENTS) /= 0 then
+         Button := Button4;
+      end if;
+      if Button in Real_Buttons then
+         L := 2 ** (6 * Mouse_Button'Pos (Button));
+         for I in Button_State'Range loop
+            if (Mask and L) /= 0 then
+               State := I;
+               exit;
+            end if;
+            L := 2 * L;
+         end loop;
+      else
+         State := Pressed;
+         if (Mask and BUTTON_CTRL) /= 0 then
+            Button := Control;
+         elsif (Mask and BUTTON_SHIFT) /= 0 then
+            Button := Shift;
+         elsif (Mask and BUTTON_ALT) /= 0 then
+            Button := Alt;
+         end if;
+      end if;
+   end Dispatch_Event;
+
    procedure Get_Event (Event  : in  Mouse_Event;
                         Y      : out Line_Position;
                         X      : out Column_Position;
                         Button : out Mouse_Button;
                         State  : out Button_State)
    is
-      procedure Dispatch_Event (M : in C_Int;
-                                B : out C_Int;
-                                S : out C_Int);
-      pragma Import (C, Dispatch_Event, "_nc_ada_mouse_event");
-
-      Mask  : constant Interfaces.C.int := Mask_To_CInt (Event.Bstate);
-      B, S  : C_Int;
+      Mask  : constant Event_Mask := Event.Bstate;
    begin
       X := Column_Position (Event.X);
       Y := Line_Position   (Event.Y);
-      Dispatch_Event (Mask, B, S);
-      Button := Mouse_Button'Val (B);
-      State  := Button_State'Val (S);
+      Dispatch_Event (Mask, Button, State);
    end Get_Event;
 
    procedure Unget_Mouse (Event : in Mouse_Event)
@@ -160,10 +191,12 @@ package body Terminal_Interface.Curses.Mouse is
    function Enclosed_In_Window (Win    : Window := Standard_Window;
                                 Event  : Mouse_Event) return Boolean
    is
-      function Wenclose (Win : Window; Y : C_Int; X : C_Int) return C_Int;
+      function Wenclose (Win : Window; Y : C_Int; X : C_Int)
+                         return Curses_Bool;
       pragma Import (C, Wenclose, "wenclose");
    begin
-      if Wenclose (Win, C_Int (Event.Y), C_Int (Event.X)) = Curses_False then
+      if Wenclose (Win, C_Int (Event.Y), C_Int (Event.X))
+        = Curses_Bool_False then
          return False;
       else
          return True;
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-panels-user_data.adb
rename to Ada95/src/terminal_interface-curses-panels-user_data.adb
index 287511a6f529c30c8d0bbea4df7dee5b97ecd0ba..c5658c5013d209485edc8f80cbd81ceafec48367 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
 with Terminal_Interface.Curses.Aux;
similarity index 98%
rename from Ada95/ada_include/terminal_interface-curses-panels.adb
rename to Ada95/src/terminal_interface-curses-panels.adb
index 335668d4d738816500cc8ee2a003559ba3baf9c6..5d42226a5a9dcecf6625e1909c969e9579dd1379 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
 with Interfaces.C;
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-aux.adb
rename to Ada95/src/terminal_interface-curses-text_io-aux.adb
index abc3cab3e8dfb8f213b7d40666ed23f4ea34727a..812f6622bf8140437e9768ff6c4bee11d02b7b6c 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package body Terminal_Interface.Curses.Text_IO.Aux is
 
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-text_io-aux.ads
rename to Ada95/src/terminal_interface-curses-text_io-aux.ads
index 4fad19c6ef7ba1d4e30652d979ec21b155fd052b..63a741fd70c1dbb8ba77ee5f3c547866a27611ad 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.10 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 private package Terminal_Interface.Curses.Text_IO.Aux is
    --  pragma Preelaborate (Aux);
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-complex_io.adb
rename to Ada95/src/terminal_interface-curses-text_io-complex_io.adb
index 60cbecb42c205fa36746afa82493b8de8bc8b9e1..a804ec6561c3f25fa43c6bfd2fb6d3d11f279bab 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Text_IO.Float_IO;
 
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-complex_io.ads
rename to Ada95/src/terminal_interface-curses-text_io-complex_io.ads
index 747598452057765d3f456463001b750efe014391..47146266d078ffc955d449cf19d46680e50061d2 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Numerics.Generic_Complex_Types;
 
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-decimal_io.adb
rename to Ada95/src/terminal_interface-curses-text_io-decimal_io.adb
index fef58a3969b42a8837f6ee2b51e196e8731c7c9a..d70a73f11af95c34b76da2cd404317c57961b659 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Text_IO;
 with Terminal_Interface.Curses.Text_IO.Aux;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-text_io-decimal_io.ads
rename to Ada95/src/terminal_interface-curses-text_io-decimal_io.ads
index 0d567047f15b8f7bfa71007525b4c497f0055d59..60ac66b7852501b08df43191194ed6dcc6a0ba72 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 generic
    type Num is delta <> digits <>;
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-enumeration_io.adb
rename to Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb
index 1d30946bf1712b506851fa5beec58e452bff84fd..7abeffe70c7731ccbc980a3a293cc038f15d43ce 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Text_IO;
 with Ada.Characters.Handling; use Ada.Characters.Handling;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-text_io-enumeration_io.ads
rename to Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads
index 08d72a8ddda1ad7a115c296fc38794519edffa13..3c13424c1b80cbcc06b697dc7cfc1a9e04fd94c8 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 generic
    type Enum is (<>);
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-fixed_io.adb
rename to Ada95/src/terminal_interface-curses-text_io-fixed_io.adb
index e7d45af532810c48b7d682cd48e76b977f610726..760acb2b5ee0beda990302baf7ec06a28dfa01c6 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Text_IO;
 with Terminal_Interface.Curses.Text_IO.Aux;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-text_io-fixed_io.ads
rename to Ada95/src/terminal_interface-curses-text_io-fixed_io.ads
index 9a6faa7435c74ab3cb47f69fab47755198c2cc8d..77f5743f47c61f2ec0d2d9219dbed9eefc4bc20d 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 generic
    type Num is delta <>;
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-float_io.adb
rename to Ada95/src/terminal_interface-curses-text_io-float_io.adb
index f625589755d12c937f404da391eabc34939ab6e0..47fe94a1573efedd181eb560faf926cf142275bd 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Text_IO;
 with Terminal_Interface.Curses.Text_IO.Aux;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-text_io-float_io.ads
rename to Ada95/src/terminal_interface-curses-text_io-float_io.ads
index f0070db11858d06ba9bb7000ae6cf9b03a12349c..e46170e6f8a271bad22102efc54c94d4f0d9142e 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 generic
    type Num is digits <>;
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-integer_io.adb
rename to Ada95/src/terminal_interface-curses-text_io-integer_io.adb
index 8fe2fa03b08462bd05a9c148af9b26201719cb91..43d03a9fa0393f6dcfa17bed22206da8a49db901 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Text_IO;
 with Terminal_Interface.Curses.Text_IO.Aux;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-text_io-integer_io.ads
rename to Ada95/src/terminal_interface-curses-text_io-integer_io.ads
index e21ac14314ba72757cbac12f9633abe1f9db530a..cd3b01b5cc66f2c138523a88405d8b5a70d2cc54 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 generic
    type Num is range <>;
similarity index 97%
rename from Ada95/ada_include/terminal_interface-curses-text_io-modular_io.adb
rename to Ada95/src/terminal_interface-curses-text_io-modular_io.adb
index 3125390ec3f6da0cfca07e2c56f518031c9d9660..75bd624ade1686109d41e2e3071dc3e49b9d71af 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.6 $
---  Binding Version 00.93
+--  $Revision: 1.8 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Text_IO;
 with Terminal_Interface.Curses.Text_IO.Aux;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-text_io-modular_io.ads
rename to Ada95/src/terminal_interface-curses-text_io-modular_io.ads
index 32a687b4b100c32d027cc45f5abc46fe9db89f9e..329207751c38365bf940a526031e19f15e123300 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.7 $
---  Binding Version 00.93
+--  $Revision: 1.9 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 generic
    type Num is mod <>;
similarity index 98%
rename from Ada95/ada_include/terminal_interface-curses-text_io.adb
rename to Ada95/src/terminal_interface-curses-text_io.adb
index f362e40b6d9de99c45e7f2c17b32108c53e19b5d..3d829a57aa6029194d6c02f58a18e9c615fccc86 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.11 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
-with System;
-
 package body Terminal_Interface.Curses.Text_IO is
 
    Default_Window : Window := Null_Window;
similarity index 96%
rename from Ada95/ada_include/terminal_interface-curses-text_io.ads
rename to Ada95/src/terminal_interface-curses-text_io.ads
index e80f33fb3bdfa9e53d00ae05386881561f3bb8f7..02c3b7d54fc0f88c9f1925a374f85cd77bd0be2c 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.11 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
-with System;
-with System.Parameters;
 with Ada.Text_IO;
 with Ada.IO_Exceptions;
 
@@ -49,7 +47,7 @@ package Terminal_Interface.Curses.Text_IO is
    subtype Count is Ada.Text_IO.Count;
    subtype Positive_Count is Count range 1 .. Count'Last;
 
-   subtype Field is Integer range 0 .. System.Parameters.Field_Max;
+   subtype Field is Ada.Text_IO.Field;
    subtype Number_Base is Integer range 2 .. 16;
 
    type Type_Set is (Lower_Case, Upper_Case, Mixed_Case);
similarity index 85%
rename from Ada95/ada_include/terminal_interface-curses.adb
rename to Ada95/src/terminal_interface-curses.adb
index b5ce9ef2ccfcb5ccbbfeb2df8d0c9c005ff25fe5..1f536d141c15a673e1298be94249bf72b998c543 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.15 $
---  Binding Version 00.93
+--  $Revision: 1.25 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System;
 
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
+with Terminal_Interface.Curses.Aux;
 with Interfaces.C;                  use Interfaces.C;
 with Interfaces.C.Strings;          use Interfaces.C.Strings;
+with Interfaces.C.Pointers;
 with Ada.Characters.Handling;       use Ada.Characters.Handling;
 with Ada.Strings.Fixed;
-with Unchecked_Conversion;
+with Ada.Unchecked_Conversion;
 
 package body Terminal_Interface.Curses is
 
+   use Aux;
    use type System.Bit_Order;
 
    package ASF renames Ada.Strings.Fixed;
@@ -57,6 +59,36 @@ package body Terminal_Interface.Curses is
       of aliased Attributed_Character;
    pragma Convention (C, chtype_array);
 
+------------------------------------------------------------------------------
+   generic
+      type Element is (<>);
+   function W_Get_Element (Win    : in Window;
+                           Offset : in Natural) return Element;
+
+   function W_Get_Element (Win    : in Window;
+                           Offset : in Natural) return Element is
+      type E_Array is array (Natural range <>) of aliased Element;
+      package C_E_Array is new
+        Interfaces.C.Pointers (Natural, Element, E_Array, Element'Val (0));
+      use C_E_Array;
+
+      function To_Pointer is new
+        Ada.Unchecked_Conversion (Window, Pointer);
+
+      P : Pointer := To_Pointer (Win);
+   begin
+      if Win = Null_Window then
+         raise Curses_Exception;
+      else
+         P := P + ptrdiff_t (Offset);
+         return P.all;
+      end if;
+   end W_Get_Element;
+
+   function W_Get_Int   is new W_Get_Element (C_Int);
+   function W_Get_Short is new W_Get_Element (C_Short);
+   function W_Get_Byte  is new W_Get_Element (Interfaces.C.unsigned_char);
+
 ------------------------------------------------------------------------------
    function Key_Name (Key : in Real_Key_Code) return String
    is
@@ -99,18 +131,11 @@ package body Terminal_Interface.Curses is
       function Initscr return Window;
       pragma Import (C, Initscr, "initscr");
 
-      function Check_Version (Major, Minor : C_Int) return C_Int;
-      pragma Import (C, Check_Version, "_nc_ada_vcheck");
-
       W : Window;
    begin
-      if (Check_Version (NC_Major_Version, NC_Minor_Version) = 0) then
-         raise Wrong_Curses_Version;
-      else
-         W := Initscr;
-         if W = Null_Window then
-            raise Curses_Exception;
-         end if;
+      W := Initscr;
+      if W = Null_Window then
+         raise Curses_Exception;
       end if;
    end Init_Screen;
 
@@ -126,10 +151,10 @@ package body Terminal_Interface.Curses is
 
    function Is_End_Window return Boolean
    is
-      function Isendwin return C_Int;
+      function Isendwin return Curses_Bool;
       pragma Import (C, Isendwin, "isendwin");
    begin
-      if Isendwin = Curses_False then
+      if Isendwin = Curses_Bool_False then
          return False;
       else
          return True;
@@ -155,10 +180,10 @@ package body Terminal_Interface.Curses is
                   Ch  : in Attributed_Character)
    is
       function Waddch (W  : Window;
-                       Ch : C_Int) return C_Int;
+                       Ch : C_Chtype) return C_Int;
       pragma Import (C, Waddch, "waddch");
    begin
-      if Waddch (Win, Chtype_To_Cint (Ch)) = Curses_Err then
+      if Waddch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Add;
@@ -182,12 +207,12 @@ package body Terminal_Interface.Curses is
       function mvwaddch (W  : Window;
                          Y  : C_Int;
                          X  : C_Int;
-                         Ch : C_Int) return C_Int;
+                         Ch : C_Chtype) return C_Int;
       pragma Import (C, mvwaddch, "mvwaddch");
    begin
       if mvwaddch (Win, C_Int (Line),
                    C_Int (Column),
-                   Chtype_To_CInt (Ch)) = Curses_Err then
+                   AttrChar_To_Chtype (Ch)) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Add;
@@ -212,10 +237,10 @@ package body Terminal_Interface.Curses is
       Ch  : in Attributed_Character)
    is
       function Wechochar (W  : Window;
-                          Ch : C_Int) return C_Int;
+                          Ch : C_Chtype) return C_Int;
       pragma Import (C, Wechochar, "wechochar");
    begin
-      if Wechochar (Win, Chtype_To_CInt (Ch)) = Curses_Err then
+      if Wechochar (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Add_With_Immediate_Echo;
@@ -367,10 +392,10 @@ package body Terminal_Interface.Curses is
                              Mode : in Boolean := False)
    is
       function Syncok (Win  : Window;
-                       Mode : C_Int) return C_Int;
+                       Mode : Curses_Bool) return C_Int;
       pragma Import (C, Syncok, "syncok");
    begin
-      if Syncok (Win, Boolean'Pos (Mode)) = Curses_Err then
+      if Syncok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_Synch_Mode;
@@ -379,7 +404,7 @@ package body Terminal_Interface.Curses is
                   Str : in String;
                   Len : in Integer := -1)
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Waddnstr (Win : Window;
                          Str : Char_Ptr;
                          Len : C_Int := -1) return C_Int;
@@ -454,25 +479,25 @@ package body Terminal_Interface.Curses is
       Lower_Right_Corner_Symbol : in Attributed_Character := Default_Character)
    is
       function Wborder (W   : Window;
-                        LS  : C_Int;
-                        RS  : C_Int;
-                        TS  : C_Int;
-                        BS  : C_Int;
-                        ULC : C_Int;
-                        URC : C_Int;
-                        LLC : C_Int;
-                        LRC : C_Int) return C_Int;
+                        LS  : C_Chtype;
+                        RS  : C_Chtype;
+                        TS  : C_Chtype;
+                        BS  : C_Chtype;
+                        ULC : C_Chtype;
+                        URC : C_Chtype;
+                        LLC : C_Chtype;
+                        LRC : C_Chtype) return C_Int;
       pragma Import (C, Wborder, "wborder");
    begin
       if Wborder (Win,
-                  Chtype_To_CInt (Left_Side_Symbol),
-                  Chtype_To_CInt (Right_Side_Symbol),
-                  Chtype_To_CInt (Top_Side_Symbol),
-                  Chtype_To_CInt (Bottom_Side_Symbol),
-                  Chtype_To_CInt (Upper_Left_Corner_Symbol),
-                  Chtype_To_CInt (Upper_Right_Corner_Symbol),
-                  Chtype_To_CInt (Lower_Left_Corner_Symbol),
-                  Chtype_To_CInt (Lower_Right_Corner_Symbol)
+                  AttrChar_To_Chtype (Left_Side_Symbol),
+                  AttrChar_To_Chtype (Right_Side_Symbol),
+                  AttrChar_To_Chtype (Top_Side_Symbol),
+                  AttrChar_To_Chtype (Bottom_Side_Symbol),
+                  AttrChar_To_Chtype (Upper_Left_Corner_Symbol),
+                  AttrChar_To_Chtype (Upper_Right_Corner_Symbol),
+                  AttrChar_To_Chtype (Lower_Left_Corner_Symbol),
+                  AttrChar_To_Chtype (Lower_Right_Corner_Symbol)
                   ) = Curses_Err
       then
          raise Curses_Exception;
@@ -496,12 +521,12 @@ package body Terminal_Interface.Curses is
       Line_Symbol : in Attributed_Character := Default_Character)
    is
       function Whline (W   : Window;
-                       Ch  : C_Int;
+                       Ch  : C_Chtype;
                        Len : C_Int) return C_Int;
       pragma Import (C, Whline, "whline");
    begin
       if Whline (Win,
-                 Chtype_To_CInt (Line_Symbol),
+                 AttrChar_To_Chtype (Line_Symbol),
                  C_Int (Line_Size)) = Curses_Err then
          raise Curses_Exception;
       end if;
@@ -513,12 +538,12 @@ package body Terminal_Interface.Curses is
       Line_Symbol : in Attributed_Character := Default_Character)
    is
       function Wvline (W   : Window;
-                       Ch  : C_Int;
+                       Ch  : C_Chtype;
                        Len : C_Int) return C_Int;
       pragma Import (C, Wvline, "wvline");
    begin
       if Wvline (Win,
-                 Chtype_To_CInt (Line_Symbol),
+                 AttrChar_To_Chtype (Line_Symbol),
                  C_Int (Line_Size)) = Curses_Err then
          raise Curses_Exception;
       end if;
@@ -597,10 +622,10 @@ package body Terminal_Interface.Curses is
       On   : in Boolean := True)
    is
       function Wattron (Win    : Window;
-                        C_Attr : C_Int) return C_Int;
+                        C_Attr : C_AttrType) return C_Int;
       pragma Import (C, Wattron, "wattr_on");
       function Wattroff (Win    : Window;
-                         C_Attr : C_Int) return C_Int;
+                         C_Attr : C_AttrType) return C_Int;
       pragma Import (C, Wattroff, "wattr_off");
       --  In Ada we use the On Boolean to control whether or not we want to
       --  switch on or off the attributes in the set.
@@ -610,9 +635,9 @@ package body Terminal_Interface.Curses is
                                               Attr  => Attr);
    begin
       if On then
-         Err := Wattron (Win, Chtype_To_CInt (AC));
+         Err := Wattron  (Win, AttrChar_To_AttrType (AC));
       else
-         Err := Wattroff (Win, Chtype_To_CInt (AC));
+         Err := Wattroff (Win, AttrChar_To_AttrType (AC));
       end if;
       if Err = Curses_Err then
          raise Curses_Exception;
@@ -625,14 +650,14 @@ package body Terminal_Interface.Curses is
       Color : in Color_Pair := Color_Pair'First)
    is
       function Wattrset (Win    : Window;
-                         C_Attr : C_Int) return C_Int;
+                         C_Attr : C_AttrType) return C_Int;
       pragma Import (C, Wattrset, "wattrset"); -- ??? wattr_set
    begin
       if Wattrset (Win,
-                   Chtype_To_CInt (Attributed_Character'
-                                   (Ch    => Character'First,
-                                    Color => Color,
-                                    Attr  => Attr))) = Curses_Err then
+                   AttrChar_To_AttrType (Attributed_Character'
+                                         (Ch    => Character'First,
+                                          Color => Color,
+                                          Attr  => Attr))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_Character_Attributes;
@@ -640,25 +665,64 @@ package body Terminal_Interface.Curses is
    function Get_Character_Attribute (Win : Window := Standard_Window)
                                      return Character_Attribute_Set
    is
-      function Wattrget (Win : Window) return C_Int;
+      function Wattrget (Win : Window;
+                         Atr : access C_AttrType;
+                         Col : access C_Short;
+                         Opt : System.Address) return C_Int;
       pragma Import (C, Wattrget, "wattr_get");
 
-      Ch : Attributed_Character := CInt_To_Chtype (Wattrget (Win));
+      Attr : aliased C_AttrType;
+      Col  : aliased C_Short;
+      Res  : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
+                                         System.Null_Address);
+      Ch   : Attributed_Character;
    begin
-      return Ch.Attr;
+      if Res = Curses_Ok then
+         Ch := AttrType_To_AttrChar (Attr);
+         return Ch.Attr;
+      else
+         raise Curses_Exception;
+      end if;
    end Get_Character_Attribute;
 
    function Get_Character_Attribute (Win : Window := Standard_Window)
                                      return Color_Pair
    is
-      function Wattrget (Win : Window) return C_Int;
+      function Wattrget (Win : Window;
+                         Atr : access C_AttrType;
+                         Col : access C_Short;
+                         Opt : System.Address) return C_Int;
       pragma Import (C, Wattrget, "wattr_get");
 
-      Ch : Attributed_Character := CInt_To_Chtype (Wattrget (Win));
+      Attr : aliased C_AttrType;
+      Col  : aliased C_Short;
+      Res  : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
+                                         System.Null_Address);
+      Ch   : Attributed_Character;
    begin
-      return Ch.Color;
+      if Res = Curses_Ok then
+         Ch := AttrType_To_AttrChar (Attr);
+         return Ch.Color;
+      else
+         raise Curses_Exception;
+      end if;
    end Get_Character_Attribute;
 
+   procedure Set_Color (Win  : in Window := Standard_Window;
+                        Pair : in Color_Pair)
+   is
+      function Wset_Color (Win   : Window;
+                           Color : C_Short;
+                           Opts  : C_Void_Ptr) return C_Int;
+      pragma Import (C, Wset_Color, "wcolor_set");
+   begin
+      if Wset_Color (Win,
+                     C_Short (Pair),
+                     C_Void_Ptr (System.Null_Address)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Color;
+
    procedure Change_Attributes
      (Win   : in Window := Standard_Window;
       Count : in Integer := -1;
@@ -667,7 +731,7 @@ package body Terminal_Interface.Curses is
    is
       function Wchgat (Win   : Window;
                        Cnt   : C_Int;
-                       Attr  : C_Int;
+                       Attr  : C_AttrType;
                        Color : C_Short;
                        Opts  : System.Address := System.Null_Address)
                        return C_Int;
@@ -676,7 +740,7 @@ package body Terminal_Interface.Curses is
       Ch : constant Attributed_Character :=
         (Ch => Character'First, Color => Color_Pair'First, Attr => Attr);
    begin
-      if Wchgat (Win, C_Int (Count), Chtype_To_CInt (Ch),
+      if Wchgat (Win, C_Int (Count), AttrChar_To_AttrType (Ch),
                  C_Short (Color)) = Curses_Err then
          raise Curses_Exception;
       end if;
@@ -775,10 +839,10 @@ package body Terminal_Interface.Curses is
    procedure Set_Meta_Mode (Win      : in Window := Standard_Window;
                             SwitchOn : in Boolean := True)
    is
-      function Meta (W : Window; Mode : C_Int) return C_Int;
+      function Meta (W : Window; Mode : Curses_Bool) return C_Int;
       pragma Import (C, Meta, "meta");
    begin
-      if Meta (Win, Boolean'Pos (SwitchOn)) = Curses_Err then
+      if Meta (Win, Curses_Bool (Boolean'Pos (SwitchOn))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_Meta_Mode;
@@ -786,10 +850,10 @@ package body Terminal_Interface.Curses is
    procedure Set_KeyPad_Mode (Win      : in Window := Standard_Window;
                               SwitchOn : in Boolean := True)
    is
-      function Keypad (W : Window; Mode : C_Int) return C_Int;
+      function Keypad (W : Window; Mode : Curses_Bool) return C_Int;
       pragma Import (C, Keypad, "keypad");
    begin
-      if Keypad (Win, Boolean'Pos (SwitchOn)) = Curses_Err then
+      if Keypad (Win, Curses_Bool (Boolean'Pos (SwitchOn))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_KeyPad_Mode;
@@ -808,10 +872,10 @@ package body Terminal_Interface.Curses is
      (Win  : in Window := Standard_Window;
       Mode : in Boolean := True)
    is
-      function Intrflush (Win : Window; Mode : C_Int) return C_Int;
+      function Intrflush (Win : Window; Mode : Curses_Bool) return C_Int;
       pragma Import (C, Intrflush, "intrflush");
    begin
-      if Intrflush (Win, Boolean'Pos (Mode)) = Curses_Err then
+      if Intrflush (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_Flush_On_Interrupt_Mode;
@@ -836,10 +900,10 @@ package body Terminal_Interface.Curses is
      (Win  : in Window := Standard_Window;
       Mode : in Boolean := False)
    is
-      function Nodelay (Win : Window; Mode : C_Int) return C_Int;
+      function Nodelay (Win : Window; Mode : Curses_Bool) return C_Int;
       pragma Import (C, Nodelay, "nodelay");
    begin
-      if Nodelay (Win, Boolean'Pos (Mode)) = Curses_Err then
+      if Nodelay (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_NoDelay_Mode;
@@ -871,10 +935,11 @@ package body Terminal_Interface.Curses is
      (Win       : in Window := Standard_Window;
       Timer_Off : in Boolean := False)
    is
-      function Notimeout (Win : Window; Mode : C_Int) return C_Int;
+      function Notimeout (Win : Window; Mode : Curses_Bool) return C_Int;
       pragma Import (C, Notimeout, "notimeout");
    begin
-      if Notimeout (Win, Boolean'Pos (Timer_Off)) = Curses_Err then
+      if Notimeout (Win, Curses_Bool (Boolean'Pos (Timer_Off)))
+        = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_Escape_Timer_Mode;
@@ -903,10 +968,10 @@ package body Terminal_Interface.Curses is
      (Win      : in Window := Standard_Window;
       Do_Clear : in Boolean := True)
    is
-      function Clear_Ok (W : Window; Flag : C_Int) return C_Int;
+      function Clear_Ok (W : Window; Flag : Curses_Bool) return C_Int;
       pragma Import (C, Clear_Ok, "clearok");
    begin
-      if Clear_Ok (Win, Boolean'Pos (Do_Clear)) = Curses_Err then
+      if Clear_Ok (Win, Curses_Bool (Boolean'Pos (Do_Clear))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Clear_On_Next_Update;
@@ -915,10 +980,10 @@ package body Terminal_Interface.Curses is
      (Win    : in Window := Standard_Window;
       Do_Idl : in Boolean := True)
    is
-      function IDL_Ok (W : Window; Flag : C_Int) return C_Int;
+      function IDL_Ok (W : Window; Flag : Curses_Bool) return C_Int;
       pragma Import (C, IDL_Ok, "idlok");
    begin
-      if IDL_Ok (Win, Boolean'Pos (Do_Idl)) = Curses_Err then
+      if IDL_Ok (Win, Curses_Bool (Boolean'Pos (Do_Idl))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Use_Insert_Delete_Line;
@@ -927,10 +992,10 @@ package body Terminal_Interface.Curses is
      (Win    : in Window := Standard_Window;
       Do_Idc : in Boolean := True)
    is
-      function IDC_Ok (W : Window; Flag : C_Int) return C_Int;
+      function IDC_Ok (W : Window; Flag : Curses_Bool) return C_Int;
       pragma Import (C, IDC_Ok, "idcok");
    begin
-      if IDC_Ok (Win, Boolean'Pos (Do_Idc)) = Curses_Err then
+      if IDC_Ok (Win, Curses_Bool (Boolean'Pos (Do_Idc))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Use_Insert_Delete_Character;
@@ -939,10 +1004,10 @@ package body Terminal_Interface.Curses is
      (Win      : in Window := Standard_Window;
       Do_Leave : in Boolean := True)
    is
-      function Leave_Ok (W : Window; Flag : C_Int) return C_Int;
+      function Leave_Ok (W : Window; Flag : Curses_Bool) return C_Int;
       pragma Import (C, Leave_Ok, "leaveok");
    begin
-      if Leave_Ok (Win, Boolean'Pos (Do_Leave)) = Curses_Err then
+      if Leave_Ok (Win, Curses_Bool (Boolean'Pos (Do_Leave))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Leave_Cursor_After_Update;
@@ -951,10 +1016,10 @@ package body Terminal_Interface.Curses is
      (Win  : in Window := Standard_Window;
       Mode : in Boolean := False)
    is
-      function Immedok (Win : Window; Mode : C_Int) return C_Int;
+      function Immedok (Win : Window; Mode : Curses_Bool) return C_Int;
       pragma Import (C, Immedok, "immedok");
    begin
-      if Immedok (Win, Boolean'Pos (Mode)) = Curses_Err then
+      if Immedok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Immediate_Update_Mode;
@@ -963,25 +1028,28 @@ package body Terminal_Interface.Curses is
      (Win  : in Window  := Standard_Window;
       Mode : in Boolean := False)
    is
-      function Scrollok (Win : Window; Mode : C_Int) return C_Int;
+      function Scrollok (Win : Window; Mode : Curses_Bool) return C_Int;
       pragma Import (C, Scrollok, "scrollok");
    begin
-      if Scrollok (Win, Boolean'Pos (Mode)) = Curses_Err then
+      if Scrollok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Allow_Scrolling;
 
    function Scrolling_Allowed (Win : Window := Standard_Window) return Boolean
    is
-      function Is_Scroll (Win : Window) return C_Int;
-      pragma Import (C, Is_Scroll, "_nc_ada_isscroll");
-
-      Res : constant C_Int := Is_Scroll (Win);
+      Res : C_Int;
    begin
+      case Sizeof_bool is
+         when 1 => Res := C_Int (W_Get_Byte  (Win, Offset_scroll));
+         when 2 => Res := C_Int (W_Get_Short (Win, Offset_scroll));
+         when 4 => Res := C_Int (W_Get_Int   (Win, Offset_scroll));
+         when others => raise Curses_Exception;
+      end case;
+
       case Res is
-         when Curses_True  => return True;
-         when Curses_False => return False;
-         when others       => raise Curses_Exception;
+         when 0       => return False;
+         when others  => return True;
       end case;
    end Scrolling_Allowed;
 
@@ -1103,21 +1171,20 @@ package body Terminal_Interface.Curses is
      (Win : in Window := Standard_Window;
       Ch  : in Attributed_Character)
    is
-      procedure WBackground (W : in Window; Ch : in C_Int);
+      procedure WBackground (W : in Window; Ch : in C_Chtype);
       pragma Import (C, WBackground, "wbkgdset");
    begin
-      WBackground (Win, Chtype_To_CInt (Ch));
+      WBackground (Win, AttrChar_To_Chtype (Ch));
    end Set_Background;
 
    procedure Change_Background
      (Win : in Window := Standard_Window;
       Ch  : in Attributed_Character)
    is
-      function WChangeBkgd (W : Window; Ch : C_Int)
-                            return C_Int;
+      function WChangeBkgd (W : Window; Ch : C_Chtype) return C_Int;
       pragma Import (C, WChangeBkgd, "wbkgd");
    begin
-      if WChangeBkgd (Win, Chtype_To_CInt (Ch)) = Curses_Err then
+      if WChangeBkgd (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Change_Background;
@@ -1125,10 +1192,10 @@ package body Terminal_Interface.Curses is
    function Get_Background (Win : Window := Standard_Window)
      return Attributed_Character
    is
-      function Wgetbkgd (Win : Window) return C_Int;
+      function Wgetbkgd (Win : Window) return C_Chtype;
       pragma Import (C, Wgetbkgd, "getbkgd");
    begin
-      return CInt_To_Chtype (Wgetbkgd (Win));
+      return Chtype_To_AttrChar (Wgetbkgd (Win));
    end Get_Background;
 ------------------------------------------------------------------------------
    procedure Change_Lines_Status (Win   : in Window := Standard_Window;
@@ -1178,10 +1245,10 @@ package body Terminal_Interface.Curses is
      (Win  : Window := Standard_Window;
       Line : Line_Position) return Boolean
    is
-      function WLineTouched (W : Window; L : C_Int) return C_Int;
+      function WLineTouched (W : Window; L : C_Int) return Curses_Bool;
       pragma Import (C, WLineTouched, "is_linetouched");
    begin
-      if WLineTouched (Win, C_Int (Line)) = Curses_False then
+      if WLineTouched (Win, C_Int (Line)) = Curses_Bool_False then
          return False;
       else
          return True;
@@ -1191,10 +1258,10 @@ package body Terminal_Interface.Curses is
    function Is_Touched
      (Win : Window := Standard_Window) return Boolean
    is
-      function WWinTouched (W : Window) return C_Int;
+      function WWinTouched (W : Window) return Curses_Bool;
       pragma Import (C, WWinTouched, "is_wintouched");
    begin
-      if WWinTouched (Win) = Curses_False then
+      if WWinTouched (Win) = Curses_Bool_False then
          return False;
       else
          return True;
@@ -1286,24 +1353,20 @@ package body Terminal_Interface.Curses is
       Insert_Delete_Lines (Win, 1);
    end Insert_Line;
 ------------------------------------------------------------------------------
+
+
    procedure Get_Size
      (Win               : in Window := Standard_Window;
       Number_Of_Lines   : out Line_Count;
       Number_Of_Columns : out Column_Count)
    is
-      type Int_Access is access all C_Int;
-      function Getmaxyx (W : Window; Y, X : Int_Access) return C_Int;
-      pragma Import (C, Getmaxyx, "_nc_ada_getmaxyx");
-
-      Y, X : aliased C_Int;
-      Err  : constant C_Int := Getmaxyx (Win, Y'Access, X'Access);
+      --  Please note: in ncurses they are one off.
+      --  This might be different in other implementations of curses
+      Y : C_Int := C_Int (W_Get_Short (Win, Offset_maxy)) + C_Int (Offset_XY);
+      X : C_Int := C_Int (W_Get_Short (Win, Offset_maxx)) + C_Int (Offset_XY);
    begin
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      else
-         Number_Of_Lines   := Line_Count (Y);
-         Number_Of_Columns := Column_Count (X);
-      end if;
+      Number_Of_Lines   := Line_Count (Y);
+      Number_Of_Columns := Column_Count (X);
    end Get_Size;
 
    procedure Get_Window_Position
@@ -1311,19 +1374,11 @@ package body Terminal_Interface.Curses is
       Top_Left_Line   : out Line_Position;
       Top_Left_Column : out Column_Position)
    is
-      type Int_Access is access all C_Int;
-      function Getbegyx (W : Window; Y, X : Int_Access) return C_Int;
-      pragma Import (C, Getbegyx, "_nc_ada_getbegyx");
-
-      Y, X : aliased C_Int;
-      Err  : constant C_Int := Getbegyx (Win, Y'Access, X'Access);
+      Y : C_Short := W_Get_Short (Win, Offset_begy);
+      X : C_Short := W_Get_Short (Win, Offset_begx);
    begin
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      else
-         Top_Left_Line   := Line_Position (Y);
-         Top_Left_Column := Column_Position (X);
-      end if;
+      Top_Left_Line   := Line_Position (Y);
+      Top_Left_Column := Column_Position (X);
    end Get_Window_Position;
 
    procedure Get_Cursor_Position
@@ -1331,19 +1386,11 @@ package body Terminal_Interface.Curses is
       Line   : out Line_Position;
       Column : out Column_Position)
    is
-      type Int_Access is access all C_Int;
-      function Getyx (W : Window; Y, X : Int_Access) return C_Int;
-      pragma Import (C, Getyx, "_nc_ada_getyx");
-
-      Y, X : aliased C_Int;
-      Err  : constant C_Int := Getyx (Win, Y'Access, X'Access);
+      Y : C_Short := W_Get_Short (Win, Offset_cury);
+      X : C_Short := W_Get_Short (Win, Offset_curx);
    begin
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      else
-         Line   := Line_Position (Y);
-         Column := Column_Position (X);
-      end if;
+      Line   := Line_Position (Y);
+      Column := Column_Position (X);
    end Get_Cursor_Position;
 
    procedure Get_Origin_Relative_To_Parent
@@ -1352,25 +1399,17 @@ package body Terminal_Interface.Curses is
       Top_Left_Column    : out Column_Position;
       Is_Not_A_Subwindow : out Boolean)
    is
-      type Int_Access is access all C_Int;
-      function Getparyx (W : Window; Y, X : Int_Access) return C_Int;
-      pragma Import (C, Getparyx, "_nc_ada_getparyx");
-
-      Y, X : aliased C_Int;
-      Err  : constant C_Int := Getparyx (Win, Y'Access, X'Access);
+      Y : C_Int := W_Get_Int (Win, Offset_pary);
+      X : C_Int := W_Get_Int (Win, Offset_parx);
    begin
-      if Err = Curses_Err then
-         raise Curses_Exception;
+      if Y = -1 then
+         Top_Left_Line   := Line_Position'Last;
+         Top_Left_Column := Column_Position'Last;
+         Is_Not_A_Subwindow := True;
       else
-         if Y = -1 then
-            Top_Left_Line   := Line_Position'Last;
-            Top_Left_Column := Column_Position'Last;
-            Is_Not_A_Subwindow := True;
-         else
-            Top_Left_Line   := Line_Position (Y);
-            Top_Left_Column := Column_Position (X);
-            Is_Not_A_Subwindow := False;
-         end if;
+         Top_Left_Line   := Line_Position (Y);
+         Top_Left_Column := Column_Position (X);
+         Is_Not_A_Subwindow := False;
       end if;
    end Get_Origin_Relative_To_Parent;
 ------------------------------------------------------------------------------
@@ -1481,11 +1520,11 @@ package body Terminal_Interface.Curses is
      (Pad : in Window;
       Ch  : in Attributed_Character)
    is
-      function Pechochar (Pad : Window; Ch : C_Int)
+      function Pechochar (Pad : Window; Ch : C_Chtype)
                           return C_Int;
       pragma Import (C, Pechochar, "pechochar");
    begin
-      if Pechochar (Pad, Chtype_To_CInt (Ch)) = Curses_Err then
+      if Pechochar (Pad, AttrChar_To_Chtype (Ch)) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Add_Character_To_Pad_And_Echo_It;
@@ -1543,10 +1582,10 @@ package body Terminal_Interface.Curses is
    function Peek (Win : Window := Standard_Window)
      return Attributed_Character
    is
-      function Winch (Win : Window) return C_Int;
+      function Winch (Win : Window) return C_Chtype;
       pragma Import (C, Winch, "winch");
    begin
-      return CInt_To_Chtype (Winch (Win));
+      return Chtype_To_AttrChar (Winch (Win));
    end Peek;
 
    function Peek
@@ -1556,19 +1595,19 @@ package body Terminal_Interface.Curses is
    is
       function Mvwinch (Win : Window;
                         Lin : C_Int;
-                        Col : C_Int) return C_Int;
+                        Col : C_Int) return C_Chtype;
       pragma Import (C, Mvwinch, "mvwinch");
    begin
-      return CInt_To_Chtype (Mvwinch (Win, C_Int (Line), C_Int (Column)));
+      return Chtype_To_AttrChar (Mvwinch (Win, C_Int (Line), C_Int (Column)));
    end Peek;
 ------------------------------------------------------------------------------
    procedure Insert (Win : in Window := Standard_Window;
                      Ch  : in Attributed_Character)
    is
-      function Winsch (Win : Window; Ch : C_Int) return C_Int;
+      function Winsch (Win : Window; Ch : C_Chtype) return C_Int;
       pragma Import (C, Winsch, "winsch");
    begin
-      if Winsch (Win, Chtype_To_CInt (Ch)) = Curses_Err then
+      if Winsch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Insert;
@@ -1582,13 +1621,13 @@ package body Terminal_Interface.Curses is
       function Mvwinsch (Win : Window;
                          Lin : C_Int;
                          Col : C_Int;
-                         Ch  : C_Int) return C_Int;
+                         Ch  : C_Chtype) return C_Int;
       pragma Import (C, Mvwinsch, "mvwinsch");
    begin
       if Mvwinsch (Win,
                    C_Int (Line),
                    C_Int (Column),
-                   Chtype_To_CInt (Ch)) = Curses_Err then
+                   AttrChar_To_Chtype (Ch)) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Insert;
@@ -1597,7 +1636,7 @@ package body Terminal_Interface.Curses is
                      Str : in String;
                      Len : in Integer := -1)
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Winsnstr (Win : Window;
                          Str : Char_Ptr;
                          Len : Integer := -1) return C_Int;
@@ -1619,7 +1658,7 @@ package body Terminal_Interface.Curses is
       Str    : in String;
       Len    : in Integer := -1)
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Mvwinsnstr (Win    : Window;
                            Line   : C_Int;
                            Column : C_Int;
@@ -1784,7 +1823,7 @@ package body Terminal_Interface.Curses is
                                  Text  : in String;
                                  Fmt   : in Label_Justification := Left)
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Slk_Set (Label : C_Int;
                         Txt   : Char_Ptr;
                         Fmt   : C_Int) return C_Int;
@@ -1873,9 +1912,9 @@ package body Terminal_Interface.Curses is
      (Attr : in Character_Attribute_Set;
       On   : in Boolean := True)
    is
-      function Slk_Attron (Ch : C_Int) return C_Int;
+      function Slk_Attron (Ch : C_Chtype) return C_Int;
       pragma Import (C, Slk_Attron, "slk_attron");
-      function Slk_Attroff (Ch : C_Int) return C_Int;
+      function Slk_Attroff (Ch : C_Chtype) return C_Int;
       pragma Import (C, Slk_Attroff, "slk_attroff");
 
       Err : C_Int;
@@ -1884,9 +1923,9 @@ package body Terminal_Interface.Curses is
                                               Color => Color_Pair'First);
    begin
       if On then
-         Err := Slk_Attron  (Chtype_To_CInt (Ch));
+         Err := Slk_Attron  (AttrChar_To_Chtype (Ch));
       else
-         Err := Slk_Attroff (Chtype_To_CInt (Ch));
+         Err := Slk_Attroff (AttrChar_To_Chtype (Ch));
       end if;
       if Err = Curses_Err then
          raise Curses_Exception;
@@ -1897,46 +1936,58 @@ package body Terminal_Interface.Curses is
      (Attr  : in Character_Attribute_Set := Normal_Video;
       Color : in Color_Pair := Color_Pair'First)
    is
-      function Slk_Attrset (Ch : C_Int) return C_Int;
+      function Slk_Attrset (Ch : C_Chtype) return C_Int;
       pragma Import (C, Slk_Attrset, "slk_attrset");
 
       Ch : constant Attributed_Character := (Ch    => Character'First,
                                              Attr  => Attr,
                                              Color => Color);
    begin
-      if Slk_Attrset (Chtype_To_CInt (Ch)) = Curses_Err then
+      if Slk_Attrset (AttrChar_To_Chtype (Ch)) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_Soft_Label_Key_Attributes;
 
    function Get_Soft_Label_Key_Attributes return Character_Attribute_Set
    is
-      function Slk_Attr return C_Int;
+      function Slk_Attr return C_Chtype;
       pragma Import (C, Slk_Attr, "slk_attr");
 
-      Attr : constant C_Int := Slk_Attr;
+      Attr : constant C_Chtype := Slk_Attr;
    begin
-      return CInt_To_Chtype (Attr).Attr;
+      return Chtype_To_AttrChar (Attr).Attr;
    end Get_Soft_Label_Key_Attributes;
 
    function Get_Soft_Label_Key_Attributes return Color_Pair
    is
-      function Slk_Attr return C_Int;
+      function Slk_Attr return C_Chtype;
       pragma Import (C, Slk_Attr, "slk_attr");
 
-      Attr : constant C_Int := Slk_Attr;
+      Attr : constant C_Chtype := Slk_Attr;
    begin
-      return CInt_To_Chtype (Attr).Color;
+      return Chtype_To_AttrChar (Attr).Color;
    end Get_Soft_Label_Key_Attributes;
+
+   procedure Set_Soft_Label_Key_Color (Pair : in Color_Pair)
+   is
+      function Slk_Color (Color : in C_Short) return C_Int;
+      pragma Import (C, Slk_Color, "slk_color");
+   begin
+      if Slk_Color (C_Short (Pair)) = Curses_Err then
+         raise Curses_Exception;
+      end if;
+   end Set_Soft_Label_Key_Color;
+
 ------------------------------------------------------------------------------
    procedure Enable_Key (Key    : in Special_Key_Code;
                          Enable : in Boolean := True)
    is
       function Keyok (Keycode : C_Int;
-                      On_Off  : C_Int) return C_Int;
+                      On_Off  : Curses_Bool) return C_Int;
       pragma Import (C, Keyok, "keyok");
    begin
-      if Keyok (C_Int (Key), Boolean'Pos (Enable)) = Curses_Err then
+      if Keyok (C_Int (Key), Curses_Bool (Boolean'Pos (Enable)))
+        = Curses_Err then
          raise Curses_Exception;
       end if;
    end Enable_Key;
@@ -1944,7 +1995,7 @@ package body Terminal_Interface.Curses is
    procedure Define_Key (Definition : in String;
                          Key        : in Special_Key_Code)
    is
-      type Char_Ptr is access all Interfaces.C.Char;
+      type Char_Ptr is access all Interfaces.C.char;
       function Defkey (Def : Char_Ptr;
                        Key : C_Int) return C_Int;
       pragma Import (C, Defkey, "define_key");
@@ -1961,18 +2012,18 @@ package body Terminal_Interface.Curses is
    procedure Un_Control (Ch  : in Attributed_Character;
                          Str : out String)
    is
-      function Unctrl (Ch : C_Int) return chars_ptr;
+      function Unctrl (Ch : C_Chtype) return chars_ptr;
       pragma Import (C, Unctrl, "unctrl");
    begin
-      Fill_String (Unctrl (Chtype_To_CInt (Ch)), Str);
+      Fill_String (Unctrl (AttrChar_To_Chtype (Ch)), Str);
    end Un_Control;
 
    function Un_Control (Ch : in Attributed_Character) return String
    is
-      function Unctrl (Ch : C_Int) return chars_ptr;
+      function Unctrl (Ch : C_Chtype) return chars_ptr;
       pragma Import (C, Unctrl, "unctrl");
    begin
-      return Fill_String (Unctrl (Chtype_To_CInt (Ch)));
+      return Fill_String (Unctrl (AttrChar_To_Chtype (Ch)));
    end Un_Control;
 
    procedure Delay_Output (Msecs : in Natural)
@@ -2021,10 +2072,10 @@ package body Terminal_Interface.Curses is
 
    function Has_Insert_Character return Boolean
    is
-      function Has_Ic return C_Int;
+      function Has_Ic return Curses_Bool;
       pragma Import (C, Has_Ic, "has_ic");
    begin
-      if Has_Ic = Curses_False then
+      if Has_Ic = Curses_Bool_False then
          return False;
       else
          return True;
@@ -2033,10 +2084,10 @@ package body Terminal_Interface.Curses is
 
    function Has_Insert_Line return Boolean
    is
-      function Has_Il return C_Int;
+      function Has_Il return Curses_Bool;
       pragma Import (C, Has_Il, "has_il");
    begin
-      if Has_Il = Curses_False then
+      if Has_Il = Curses_Bool_False then
          return False;
       else
          return True;
@@ -2045,10 +2096,10 @@ package body Terminal_Interface.Curses is
 
    function Supported_Attributes return Character_Attribute_Set
    is
-      function Termattrs return C_Int;
+      function Termattrs return C_Chtype;
       pragma Import (C, Termattrs, "termattrs");
 
-      Ch : constant Attributed_Character := CInt_To_Chtype (Termattrs);
+      Ch : constant Attributed_Character := Chtype_To_AttrChar (Termattrs);
    begin
       return Ch.Attr;
    end Supported_Attributes;
@@ -2128,10 +2179,10 @@ package body Terminal_Interface.Curses is
 
    function Has_Colors return Boolean
    is
-      function Hascolors return C_Int;
+      function Hascolors return Curses_Bool;
       pragma Import (C, Hascolors, "has_colors");
    begin
-      if Hascolors = Curses_False then
+      if Hascolors = Curses_Bool_False then
          return False;
       else
          return True;
@@ -2157,10 +2208,10 @@ package body Terminal_Interface.Curses is
 
    function Can_Change_Color return Boolean
    is
-      function Canchangecolor return C_Int;
+      function Canchangecolor return Curses_Bool;
       pragma Import (C, Canchangecolor, "can_change_color");
    begin
-      if Canchangecolor = Curses_False then
+      if Canchangecolor = Curses_Bool_False then
          return False;
       else
          return True;
@@ -2340,12 +2391,12 @@ package body Terminal_Interface.Curses is
       type Int_Access is access all C_Int;
       function Transform (W    : Window;
                           Y, X : Int_Access;
-                          Dir  : C_Int) return C_Int;
-      pragma Import (C, Transform, "_nc_ada_coord_transform");
+                          Dir  : Curses_Bool) return C_Int;
+      pragma Import (C, Transform, "wmouse_trafo");
 
       X : aliased C_Int := C_Int (Column);
       Y : aliased C_Int := C_Int (Line);
-      D : C_Int := 0;
+      D : Curses_Bool := Curses_Bool_False;
       R : C_Int;
    begin
       if Dir = To_Screen then
similarity index 96%
rename from Ada95/ada_include/terminal_interface.ads
rename to Ada95/src/terminal_interface.ads
index 18e254d058cd301db11741e98ba7573eafb83cbc..89544bb0a69e5d3d52a06245de143d2e50cbdeff 100644 (file)
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
 --  Version Control:
---  $Revision: 1.8 $
---  Binding Version 00.93
+--  $Revision: 1.10 $
+--  Binding Version 01.00
 ------------------------------------------------------------------------------
 package Terminal_Interface is
    pragma Pure (Terminal_Interface);
diff --git a/INSTALL b/INSTALL
index b7504674db6827cd81f529ea511d5e5c9f4aa75f..5033c44bab7e902d342bc21a9efaafbc17cc8e3d 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
--- $Id: INSTALL,v 1.28 1998/02/12 23:43:24 tom Exp $
+-- $Id: INSTALL,v 1.33 1999/09/18 23:04:36 tom Exp $
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
@@ -195,12 +195,17 @@ INSTALLATION PROCEDURE:
     See the BSD CONVERSION NOTES section below for a few more details.
 
 6.  The c++ directory has C++ classes that are built on top of ncurses and
-    panels.  You need to have c++ (and its libraries) installed before you can
+    panels.  You must have c++ (and its libraries) installed before you can
     compile and run the demo.
 
-    If you do not have C++, you must use the --without-cxx option to tell
-    the configure script to not attempt to build the C++ bindings.
+    Use --without-cxx-binding to tell configure to not build the C++ bindings
+    and demo.
 
+    If you do not have C++, you must use the --without-cxx option to tell
+    the configure script to not attempt to determine the type of 'bool'
+    which may be supported by C++.  IF YOU USE THIS OPTION, BE ADVISED THAT
+    YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++.
+    
 7.  If you're running an older Linux, you must either (a) tell Linux that the
     console terminal type is `linux' or (b) make a link to or copy of the
     linux entry in the appropriate place under your terminfo directory, named
@@ -247,7 +252,12 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        wish to use the --enable-getcap option.  This option speeds up
        termcap-based startups, at the expense of not allowing personal
        termcap entries to reference the terminfo tree.  See the code in
-       ncurses/read_termcap.c for details.
+       ncurses/tinfo/read_termcap.c for details.
+
+       Note that if you have $TERMCAP set, ncurses will use that value
+       to locate termcap data.  In particular, running from xterm will
+       set $TERMCAP to the contents of the xterm's termcap entry.
+       If ncurses sees that, it will not examine /etc/termcap.
 
     Keyboard Mapping:
 
@@ -275,8 +285,7 @@ IF YOU ARE A SYSTEM INTEGRATOR:
        term(7) manual page included with this distribution for more on
        conventions for choosing type names.
 
-       Here are our recommended primary console names for the most important
-       freeware UNIX distributions:
+       Here are some recommended primary console names:
 
                linux   -- Linux console driver
                freebsd -- FreeBSD
@@ -294,7 +303,8 @@ RECENT XTERM VERSIONS
        earlier X11R5 entry (xterm-r5) is provided as well.
 
        If you are running XFree86 version 3.2 (actually 3.1.2F and up), you
-       should consider using the xterm-xf86-v32 entry, which adds ANSI color
+       should consider using the xterm-xf86-v32 (or later, the most recent
+       version is always named "xterm-xfree86") entry, which adds ANSI color
        and the VT220 capabilities which have been added in XFree86.  If you
        are running a mixed network, however, where this terminal description
        may be used on an older xterm, you may have problems, since
@@ -468,8 +478,8 @@ an offset of -11 lines.
 
 BUGS:
        Send any feedback to the ncurses mailing list at
-       ncurses@bsdi.com. To subscribe send mail to
-       ncurses-request@mailgate.bsdi.com with body that reads:
+       bug-ncurses@gnu.org. To subscribe send mail to 
+       bug-ncurses-request@gnu.org with body that reads: 
        subscribe ncurses <your-email-address-here>
 
        The Hacker's Guide in the misc directory includes some guidelines
index 5dc59faee2d133ef323f482d6f0a1036ed435a3d..a69adea605588278eeb0272146b1a95e33789e78 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -2,62 +2,10 @@
 ./Ada95/Makefile.in
 ./Ada95/README
 ./Ada95/TODO
-./Ada95/ada_include/Makefile.in
-./Ada95/ada_include/terminal_interface-curses-aux.adb
-./Ada95/ada_include/terminal_interface-curses-aux.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-alpha.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-alpha.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-alphanumeric.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-alphanumeric.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration-ada.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration-ada.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-enumeration.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-intfield.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-intfield.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-ipv4_address.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-ipv4_address.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-numeric.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-numeric.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-regexp.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-regexp.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-user-choice.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-user-choice.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-user.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_types-user.ads
-./Ada95/ada_include/terminal_interface-curses-forms-field_types.adb
-./Ada95/ada_include/terminal_interface-curses-forms-field_user_data.adb
-./Ada95/ada_include/terminal_interface-curses-forms-form_user_data.adb
-./Ada95/ada_include/terminal_interface-curses-forms.adb
-./Ada95/ada_include/terminal_interface-curses-menus-item_user_data.adb
-./Ada95/ada_include/terminal_interface-curses-menus-menu_user_data.adb
-./Ada95/ada_include/terminal_interface-curses-menus.adb
-./Ada95/ada_include/terminal_interface-curses-mouse.adb
-./Ada95/ada_include/terminal_interface-curses-panels-user_data.adb
-./Ada95/ada_include/terminal_interface-curses-panels.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-aux.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-aux.ads
-./Ada95/ada_include/terminal_interface-curses-text_io-complex_io.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-complex_io.ads
-./Ada95/ada_include/terminal_interface-curses-text_io-decimal_io.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-decimal_io.ads
-./Ada95/ada_include/terminal_interface-curses-text_io-enumeration_io.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-enumeration_io.ads
-./Ada95/ada_include/terminal_interface-curses-text_io-fixed_io.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-fixed_io.ads
-./Ada95/ada_include/terminal_interface-curses-text_io-float_io.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-float_io.ads
-./Ada95/ada_include/terminal_interface-curses-text_io-integer_io.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-integer_io.ads
-./Ada95/ada_include/terminal_interface-curses-text_io-modular_io.adb
-./Ada95/ada_include/terminal_interface-curses-text_io-modular_io.ads
-./Ada95/ada_include/terminal_interface-curses-text_io.adb
-./Ada95/ada_include/terminal_interface-curses-text_io.ads
-./Ada95/ada_include/terminal_interface-curses.adb
-./Ada95/ada_include/terminal_interface.ads
 ./Ada95/gen/Makefile.in
 ./Ada95/gen/gen.c
 ./Ada95/gen/normal.m4
+./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-panels-user_data.ads.m4
 ./Ada95/gen/terminal_interface-curses-panels.ads.m4
 ./Ada95/gen/terminal_interface-curses.ads.m4
-./Ada95/html/curs_addch.3x.html
-./Ada95/html/curs_addchstr.3x.html
-./Ada95/html/curs_addstr.3x.html
-./Ada95/html/curs_attr.3x.html
-./Ada95/html/curs_beep.3x.html
-./Ada95/html/curs_bkgd.3x.html
-./Ada95/html/curs_border.3x.html
-./Ada95/html/curs_clear.3x.html
-./Ada95/html/curs_color.3x.html
-./Ada95/html/curs_delch.3x.html
-./Ada95/html/curs_deleteln.3x.html
-./Ada95/html/curs_getch.3x.html
-./Ada95/html/curs_getstr.3x.html
-./Ada95/html/curs_getyx.3x.html
-./Ada95/html/curs_inch.3x.html
-./Ada95/html/curs_inchstr.3x.html
-./Ada95/html/curs_initscr.3x.html
-./Ada95/html/curs_inopts.3x.html
-./Ada95/html/curs_insch.3x.html
-./Ada95/html/curs_insstr.3x.html
-./Ada95/html/curs_instr.3x.html
-./Ada95/html/curs_kernel.3x.html
-./Ada95/html/curs_mouse.3x.html
-./Ada95/html/curs_move.3x.html
-./Ada95/html/curs_outopts.3x.html
-./Ada95/html/curs_overlay.3x.html
-./Ada95/html/curs_pad.3x.html
-./Ada95/html/curs_print.3x.html
-./Ada95/html/curs_printw.3x.html
-./Ada95/html/curs_refresh.3x.html
-./Ada95/html/curs_scanw.3x.html
-./Ada95/html/curs_scr_dmp.3x.html
-./Ada95/html/curs_scroll.3x.html
-./Ada95/html/curs_slk.3x.html
-./Ada95/html/curs_termattrs.3x.html
-./Ada95/html/curs_termcap.3x.html
-./Ada95/html/curs_terminfo.3x.html
-./Ada95/html/curs_touch.3x.html
-./Ada95/html/curs_util.3x.html
-./Ada95/html/curs_window.3x.html
-./Ada95/html/define_key.3x.html
-./Ada95/html/dft_fgbg.3x.html
-./Ada95/html/form.3x.html
-./Ada95/html/form_cursor.3x.html
-./Ada95/html/form_data.3x.html
-./Ada95/html/form_driver.3x.html
-./Ada95/html/form_field.3x.html
-./Ada95/html/form_field_attributes.3x.html
-./Ada95/html/form_field_buffer.3x.html
-./Ada95/html/form_field_info.3x.html
-./Ada95/html/form_field_just.3x.html
-./Ada95/html/form_field_new.3x.html
-./Ada95/html/form_field_opts.3x.html
-./Ada95/html/form_field_userptr.3x.html
-./Ada95/html/form_field_validation.3x.html
-./Ada95/html/form_fieldtype.3x.html
-./Ada95/html/form_hook.3x.html
-./Ada95/html/form_new.3x.html
-./Ada95/html/form_new_page.3x.html
-./Ada95/html/form_opts.3x.html
-./Ada95/html/form_page.3x.html
-./Ada95/html/form_post.3x.html
-./Ada95/html/form_requestname.3x.html
-./Ada95/html/form_userptr.3x.html
-./Ada95/html/form_win.3x.html
+./Ada95/html/ada/files.htm
+./Ada95/html/ada/files/T.htm
+./Ada95/html/ada/funcs.htm
+./Ada95/html/ada/funcs/A.htm
+./Ada95/html/ada/funcs/C.htm
+./Ada95/html/ada/funcs/E.htm
+./Ada95/html/ada/funcs/F.htm
+./Ada95/html/ada/funcs/G.htm
+./Ada95/html/ada/funcs/I.htm
+./Ada95/html/ada/funcs/L.htm
+./Ada95/html/ada/funcs/M.htm
+./Ada95/html/ada/funcs/N.htm
+./Ada95/html/ada/funcs/P.htm
+./Ada95/html/ada/funcs/R.htm
+./Ada95/html/ada/funcs/S.htm
+./Ada95/html/ada/funcs/T.htm
+./Ada95/html/ada/funcs/U.htm
+./Ada95/html/ada/funcs/V.htm
+./Ada95/html/ada/index.htm
+./Ada95/html/ada/main.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_types__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
+./Ada95/html/ada/terminal_interface-curses-forms__ads.htm
+./Ada95/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
+./Ada95/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
+./Ada95/html/ada/terminal_interface-curses-menus__ads.htm
+./Ada95/html/ada/terminal_interface-curses-mouse__ads.htm
+./Ada95/html/ada/terminal_interface-curses-panels-user_data__ads.htm
+./Ada95/html/ada/terminal_interface-curses-panels__ads.htm
+./Ada95/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
+./Ada95/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
+./Ada95/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
+./Ada95/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
+./Ada95/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
+./Ada95/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
+./Ada95/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
+./Ada95/html/ada/terminal_interface-curses-text_io__ads.htm
+./Ada95/html/ada/terminal_interface-curses__ads.htm
+./Ada95/html/ada/terminal_interface__ads.htm
 ./Ada95/html/index.html
-./Ada95/html/keyok.3x.html
-./Ada95/html/menu.3x.html
-./Ada95/html/menu_attribs.3x.html
-./Ada95/html/menu_cursor.3x.html
-./Ada95/html/menu_driver.3x.html
-./Ada95/html/menu_format.3x.html
-./Ada95/html/menu_hook.3x.html
-./Ada95/html/menu_items.3x.html
-./Ada95/html/menu_mark.3x.html
-./Ada95/html/menu_new.3x.html
-./Ada95/html/menu_opts.3x.html
-./Ada95/html/menu_pattern.3x.html
-./Ada95/html/menu_post.3x.html
-./Ada95/html/menu_requestname.3x.html
-./Ada95/html/menu_spacing.3x.html
-./Ada95/html/menu_userptr.3x.html
-./Ada95/html/menu_win.3x.html
-./Ada95/html/mitem_current.3x.html
-./Ada95/html/mitem_name.3x.html
-./Ada95/html/mitem_new.3x.html
-./Ada95/html/mitem_opts.3x.html
-./Ada95/html/mitem_userptr.3x.html
-./Ada95/html/mitem_value.3x.html
-./Ada95/html/mitem_visible.3x.html
-./Ada95/html/ncurses.3x.html
-./Ada95/html/panel.3x.html
-./Ada95/html/resizeterm.3x.html
+./Ada95/html/man/curs_addch.3x.html
+./Ada95/html/man/curs_addchstr.3x.html
+./Ada95/html/man/curs_addstr.3x.html
+./Ada95/html/man/curs_attr.3x.html
+./Ada95/html/man/curs_beep.3x.html
+./Ada95/html/man/curs_bkgd.3x.html
+./Ada95/html/man/curs_border.3x.html
+./Ada95/html/man/curs_clear.3x.html
+./Ada95/html/man/curs_color.3x.html
+./Ada95/html/man/curs_delch.3x.html
+./Ada95/html/man/curs_deleteln.3x.html
+./Ada95/html/man/curs_getch.3x.html
+./Ada95/html/man/curs_getstr.3x.html
+./Ada95/html/man/curs_getyx.3x.html
+./Ada95/html/man/curs_inch.3x.html
+./Ada95/html/man/curs_inchstr.3x.html
+./Ada95/html/man/curs_initscr.3x.html
+./Ada95/html/man/curs_inopts.3x.html
+./Ada95/html/man/curs_insch.3x.html
+./Ada95/html/man/curs_insstr.3x.html
+./Ada95/html/man/curs_instr.3x.html
+./Ada95/html/man/curs_kernel.3x.html
+./Ada95/html/man/curs_mouse.3x.html
+./Ada95/html/man/curs_move.3x.html
+./Ada95/html/man/curs_outopts.3x.html
+./Ada95/html/man/curs_overlay.3x.html
+./Ada95/html/man/curs_pad.3x.html
+./Ada95/html/man/curs_print.3x.html
+./Ada95/html/man/curs_printw.3x.html
+./Ada95/html/man/curs_refresh.3x.html
+./Ada95/html/man/curs_scanw.3x.html
+./Ada95/html/man/curs_scr_dmp.3x.html
+./Ada95/html/man/curs_scr_dump.3x.html
+./Ada95/html/man/curs_scroll.3x.html
+./Ada95/html/man/curs_slk.3x.html
+./Ada95/html/man/curs_termattrs.3x.html
+./Ada95/html/man/curs_termcap.3x.html
+./Ada95/html/man/curs_terminfo.3x.html
+./Ada95/html/man/curs_touch.3x.html
+./Ada95/html/man/curs_util.3x.html
+./Ada95/html/man/curs_window.3x.html
+./Ada95/html/man/define_key.3x.html
+./Ada95/html/man/dft_fgbg.3x.html
+./Ada95/html/man/form.3x.html
+./Ada95/html/man/form_cursor.3x.html
+./Ada95/html/man/form_data.3x.html
+./Ada95/html/man/form_driver.3x.html
+./Ada95/html/man/form_field.3x.html
+./Ada95/html/man/form_field_attributes.3x.html
+./Ada95/html/man/form_field_buffer.3x.html
+./Ada95/html/man/form_field_info.3x.html
+./Ada95/html/man/form_field_just.3x.html
+./Ada95/html/man/form_field_new.3x.html
+./Ada95/html/man/form_field_opts.3x.html
+./Ada95/html/man/form_field_userptr.3x.html
+./Ada95/html/man/form_field_validation.3x.html
+./Ada95/html/man/form_fieldtype.3x.html
+./Ada95/html/man/form_hook.3x.html
+./Ada95/html/man/form_new.3x.html
+./Ada95/html/man/form_new_page.3x.html
+./Ada95/html/man/form_opts.3x.html
+./Ada95/html/man/form_page.3x.html
+./Ada95/html/man/form_post.3x.html
+./Ada95/html/man/form_requestname.3x.html
+./Ada95/html/man/form_userptr.3x.html
+./Ada95/html/man/form_win.3x.html
+./Ada95/html/man/keyok.3x.html
+./Ada95/html/man/menu.3x.html
+./Ada95/html/man/menu_attribs.3x.html
+./Ada95/html/man/menu_cursor.3x.html
+./Ada95/html/man/menu_driver.3x.html
+./Ada95/html/man/menu_format.3x.html
+./Ada95/html/man/menu_hook.3x.html
+./Ada95/html/man/menu_items.3x.html
+./Ada95/html/man/menu_mark.3x.html
+./Ada95/html/man/menu_new.3x.html
+./Ada95/html/man/menu_opts.3x.html
+./Ada95/html/man/menu_pattern.3x.html
+./Ada95/html/man/menu_post.3x.html
+./Ada95/html/man/menu_requestname.3x.html
+./Ada95/html/man/menu_spacing.3x.html
+./Ada95/html/man/menu_userptr.3x.html
+./Ada95/html/man/menu_win.3x.html
+./Ada95/html/man/mitem_current.3x.html
+./Ada95/html/man/mitem_name.3x.html
+./Ada95/html/man/mitem_new.3x.html
+./Ada95/html/man/mitem_opts.3x.html
+./Ada95/html/man/mitem_userptr.3x.html
+./Ada95/html/man/mitem_value.3x.html
+./Ada95/html/man/mitem_visible.3x.html
+./Ada95/html/man/ncurses.3x.html
+./Ada95/html/man/panel.3x.html
+./Ada95/html/man/resizeterm.3x.html
+./Ada95/html/man/wresize.3x.html
 ./Ada95/html/table.html
-./Ada95/html/terminal_interface-curses-forms-field_types-alpha_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-alphanumeric_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-enumeration-ada_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-enumeration_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-intfield_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-ipv4_address_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-numeric_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-regexp_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-user-choice_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types-user_s.html
-./Ada95/html/terminal_interface-curses-forms-field_types_s.html
-./Ada95/html/terminal_interface-curses-forms-field_user_data_s.html
-./Ada95/html/terminal_interface-curses-forms-form_user_data_s.html
-./Ada95/html/terminal_interface-curses-forms_s.html
-./Ada95/html/terminal_interface-curses-menus-item_user_data_s.html
-./Ada95/html/terminal_interface-curses-menus-menu_user_data_s.html
-./Ada95/html/terminal_interface-curses-menus_s.html
-./Ada95/html/terminal_interface-curses-mouse_s.html
-./Ada95/html/terminal_interface-curses-panels-user_data_s.html
-./Ada95/html/terminal_interface-curses-panels_s.html
-./Ada95/html/terminal_interface-curses-text_io-complex_io_s.html
-./Ada95/html/terminal_interface-curses-text_io-decimal_io_s.html
-./Ada95/html/terminal_interface-curses-text_io-enumeration_io_s.html
-./Ada95/html/terminal_interface-curses-text_io-fixed_io_s.html
-./Ada95/html/terminal_interface-curses-text_io-float_io_s.html
-./Ada95/html/terminal_interface-curses-text_io-integer_io_s.html
-./Ada95/html/terminal_interface-curses-text_io-modular_io_s.html
-./Ada95/html/terminal_interface-curses-text_io_s.html
-./Ada95/html/terminal_interface-curses_s.html
-./Ada95/html/terminal_interface_s.html
-./Ada95/html/wresize.3x.html
 ./Ada95/samples/Makefile.in
 ./Ada95/samples/README
 ./Ada95/samples/explain.txt
 ./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-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.adb
+./Ada95/src/terminal_interface.ads
 ./INSTALL
 ./MANIFEST
 ./Makefile.glibc
 ./Makefile.in
+./Makefile.os2
 ./NEWS
 ./README
+./README.emx
 ./README.glibc
 ./TO-DO
 ./aclocal.m4
 ./c++/cursesmain.cc
 ./c++/cursesp.cc
 ./c++/cursesp.h
+./c++/cursespad.cc
 ./c++/cursesw.cc
 ./c++/cursesw.h
 ./c++/cursslk.cc
 ./config.sub
 ./configure
 ./configure.in
+./convert_configure.pl
 ./dist.mk
 ./form/Makefile.in
 ./form/READ.ME
 ./form/fld_user.c
 ./form/form.h
 ./form/form.priv.h
-./form/frm_adabind.c
 ./form/frm_cursor.c
 ./form/frm_data.c
 ./form/frm_def.c
 ./man/curs_printw.3x
 ./man/curs_refresh.3x
 ./man/curs_scanw.3x
-./man/curs_scr_dmp.3x
+./man/curs_scr_dump.3x
 ./man/curs_scroll.3x
 ./man/curs_slk.3x
 ./man/curs_termattrs.3x
 ./man/form_userptr.3x
 ./man/form_win.3x
 ./man/infocmp.1m
+./man/keybound.3x
 ./man/keyok.3x
 ./man/make_sed.sh
 ./man/man_db.renames
 ./menu/eti.h
 ./menu/headers
 ./menu/llib-lmenu
-./menu/m_adabind.c
 ./menu/m_attribs.c
 ./menu/m_cursor.c
 ./menu/m_driver.c
 ./menu/mf_common.h
 ./menu/modules
 ./misc/Makefile.in
+./misc/chkdef.cmd
+./misc/cleantic.cmd
+./misc/cmpdef.cmd
 ./misc/emx.src
+./misc/form.def
+./misc/form.ref
 ./misc/hackguide.doc
 ./misc/hackguide.html
+./misc/makedef.cmd
 ./misc/makellib
+./misc/menu.def
+./misc/menu.ref
 ./misc/ncurses-intro.doc
 ./misc/ncurses-intro.html
+./misc/ncurses.def
+./misc/ncurses.ref
+./misc/panel.def
+./misc/panel.ref
 ./misc/run_tic.sh
 ./misc/shlib
 ./misc/tabset/std
 ./mk-1st.awk
 ./mk-2nd.awk
 ./mkinstalldirs
-./ncurses/MKcaptab.awk
-./ncurses/MKexpanded.sh
-./ncurses/MKfallback.sh
-./ncurses/MKkeyname.awk
-./ncurses/MKlib_gen.sh
-./ncurses/MKnames.awk
-./ncurses/MKunctrl.awk
 ./ncurses/Makefile.in
 ./ncurses/README
 ./ncurses/SigAction.h
-./ncurses/alloc_entry.c
-./ncurses/captoinfo.c
-./ncurses/comp_error.c
-./ncurses/comp_expand.c
-./ncurses/comp_hash.c
-./ncurses/comp_parse.c
-./ncurses/comp_scan.c
+./ncurses/base/MKkeyname.awk
+./ncurses/base/MKlib_gen.sh
+./ncurses/base/MKunctrl.awk
+./ncurses/base/README
+./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/define_key.c
 ./ncurses/fifo_defs.h
-./ncurses/hardscroll.c
-./ncurses/hashmap.c
-./ncurses/keyok.c
-./ncurses/keys.list
-./ncurses/lib_acs.c
-./ncurses/lib_adabind.c
-./ncurses/lib_addch.c
-./ncurses/lib_addstr.c
-./ncurses/lib_baudrate.c
-./ncurses/lib_beep.c
-./ncurses/lib_bkgd.c
-./ncurses/lib_box.c
-./ncurses/lib_chgat.c
-./ncurses/lib_clear.c
-./ncurses/lib_clearok.c
-./ncurses/lib_clrbot.c
-./ncurses/lib_clreol.c
-./ncurses/lib_color.c
-./ncurses/lib_cur_term.c
-./ncurses/lib_data.c
-./ncurses/lib_delch.c
-./ncurses/lib_delwin.c
-./ncurses/lib_dft_fgbg.c
-./ncurses/lib_doupdate.c
-./ncurses/lib_echo.c
-./ncurses/lib_endwin.c
-./ncurses/lib_erase.c
-./ncurses/lib_flash.c
-./ncurses/lib_freeall.c
-./ncurses/lib_getch.c
-./ncurses/lib_getstr.c
-./ncurses/lib_hline.c
-./ncurses/lib_immedok.c
-./ncurses/lib_inchstr.c
-./ncurses/lib_initscr.c
-./ncurses/lib_insch.c
-./ncurses/lib_insdel.c
-./ncurses/lib_insstr.c
-./ncurses/lib_instr.c
-./ncurses/lib_isendwin.c
-./ncurses/lib_kernel.c
-./ncurses/lib_leaveok.c
-./ncurses/lib_longname.c
-./ncurses/lib_mouse.c
-./ncurses/lib_move.c
-./ncurses/lib_mvcur.c
-./ncurses/lib_mvwin.c
-./ncurses/lib_napms.c
-./ncurses/lib_newterm.c
-./ncurses/lib_newwin.c
-./ncurses/lib_nl.c
-./ncurses/lib_options.c
-./ncurses/lib_overlay.c
-./ncurses/lib_pad.c
-./ncurses/lib_print.c
-./ncurses/lib_printw.c
-./ncurses/lib_raw.c
-./ncurses/lib_redrawln.c
-./ncurses/lib_refresh.c
-./ncurses/lib_restart.c
-./ncurses/lib_scanw.c
-./ncurses/lib_screen.c
-./ncurses/lib_scroll.c
-./ncurses/lib_scrollok.c
-./ncurses/lib_scrreg.c
-./ncurses/lib_set_term.c
-./ncurses/lib_setup.c
-./ncurses/lib_slk.c
-./ncurses/lib_slkatrof.c
-./ncurses/lib_slkatron.c
-./ncurses/lib_slkatrset.c
-./ncurses/lib_slkattr.c
-./ncurses/lib_slkclear.c
-./ncurses/lib_slkinit.c
-./ncurses/lib_slklab.c
-./ncurses/lib_slkrefr.c
-./ncurses/lib_slkset.c
-./ncurses/lib_slktouch.c
-./ncurses/lib_termcap.c
-./ncurses/lib_ti.c
-./ncurses/lib_touch.c
-./ncurses/lib_tparm.c
-./ncurses/lib_tputs.c
-./ncurses/lib_trace.c
-./ncurses/lib_traceatr.c
-./ncurses/lib_tracechr.c
-./ncurses/lib_tracedmp.c
-./ncurses/lib_tracemse.c
-./ncurses/lib_tstp.c
-./ncurses/lib_twait.c
-./ncurses/lib_ungetch.c
-./ncurses/lib_vidattr.c
-./ncurses/lib_vline.c
-./ncurses/lib_wattroff.c
-./ncurses/lib_wattron.c
-./ncurses/lib_window.c
 ./ncurses/llib-lncurses
-./ncurses/make_keys.c
 ./ncurses/modules
-./ncurses/name_match.c
-./ncurses/nc_panel.c
-./ncurses/parse_entry.c
-./ncurses/read_entry.c
-./ncurses/read_termcap.c
-./ncurses/resizeterm.c
-./ncurses/safe_sprintf.c
-./ncurses/sigaction.c
-./ncurses/softscroll.c
-./ncurses/trace_buf.c
-./ncurses/tries.c
-./ncurses/vsscanf.c
-./ncurses/wresize.c
-./ncurses/write_entry.c
+./ncurses/tinfo/MKcaptab.awk
+./ncurses/tinfo/MKfallback.sh
+./ncurses/tinfo/MKnames.awk
+./ncurses/tinfo/README
+./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
+./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_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/write_entry.c
+./ncurses/trace/README
+./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/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
 ./panel/Makefile.in
 ./panel/headers
 ./panel/llib-lpanel
 ./sysdeps/unix/sysv/linux/edit_man.sed
 ./sysdeps/unix/sysv/linux/edit_man.sh
 ./sysdeps/unix/sysv/linux/run_tic.sh
+./tack/COPYING
+./tack/HISTORY
 ./tack/Makefile.in
+./tack/README
+./tack/ansi.c
+./tack/charset.c
+./tack/color.c
+./tack/control.c
+./tack/crum.c
+./tack/edit.c
+./tack/fun.c
+./tack/init.c
+./tack/menu.c
+./tack/modes.c
 ./tack/modules
+./tack/output.c
+./tack/pad.c
+./tack/scan.c
+./tack/sync.c
+./tack/sysdep.c
+./tack/tack.1
+./tack/tack.c
+./tack/tack.h
 ./tar-copy.sh
 ./test/Makefile.in
 ./test/README
 ./test/blue.c
 ./test/bs.6
 ./test/bs.c
+./test/cardfile.c
+./test/cardfile.dat
+./test/configure
 ./test/configure.in
+./test/ditto.c
+./test/dots.c
+./test/filter.c
 ./test/firework.c
 ./test/firstlast.c
 ./test/gdc.6
index 75b54b17b61d5f3099085c75e2971818a9efcba5..53b35abb72993760282868257a53991caec970f9 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 1997 Free Software Foundation, Inc.
+# Copyright (C) 1997,1998 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -58,7 +58,6 @@ libform-routines      = \
                        fld_stat \
                        fld_type \
                        fld_user \
-                       frm_adabind \
                        frm_cursor \
                        frm_data \
                        frm_def \
@@ -81,132 +80,153 @@ libform-routines  = \
                        fty_regex
 
 libncurses-routines    = \
-                       alloc_entry \
-                       captoinfo \
+                       base/define_key \
+                       base/keybound \
+                       base/keyok \
+                       base/lib_addch \
+                       base/lib_addstr \
+                       base/lib_beep \
+                       base/lib_bkgd \
+                       base/lib_box \
+                       base/lib_chgat \
+                       base/lib_clear \
+                       base/lib_clearok \
+                       base/lib_clrbot \
+                       base/lib_clreol \
+                       base/lib_color \
+                       base/lib_colorset \
+                       base/lib_delch \
+                       base/lib_delwin \
+                       base/lib_dft_fgbg \
+                       base/lib_echo \
+                       base/lib_endwin \
+                       base/lib_erase \
+                       base/lib_flash \
+                       base/lib_freeall \
+                       base/lib_getch \
+                       base/lib_getstr \
+                       base/lib_hline \
+                       base/lib_immedok \
+                       base/lib_inchstr \
+                       base/lib_initscr \
+                       base/lib_insch \
+                       base/lib_insdel \
+                       base/lib_insstr \
+                       base/lib_instr \
+                       base/lib_isendwin \
+                       base/lib_leaveok \
+                       base/lib_mouse \
+                       base/lib_move \
+                       base/lib_mvwin \
+                       base/lib_newterm \
+                       base/lib_newwin \
+                       base/lib_nl \
+                       base/lib_overlay \
+                       base/lib_pad \
+                       base/lib_printw \
+                       base/lib_redrawln \
+                       base/lib_refresh \
+                       base/lib_restart \
+                       base/lib_scanw \
+                       base/lib_screen \
+                       base/lib_scroll \
+                       base/lib_scrollok \
+                       base/lib_scrreg \
+                       base/lib_set_term \
+                       base/lib_slk \
+                       base/lib_slkatr_set \
+                       base/lib_slkatrof \
+                       base/lib_slkatron \
+                       base/lib_slkatrset \
+                       base/lib_slkattr \
+                       base/lib_slkclear \
+                       base/lib_slkcolor \
+                       base/lib_slkinit \
+                       base/lib_slklab \
+                       base/lib_slkrefr \
+                       base/lib_slkset \
+                       base/lib_slktouch \
+                       base/lib_touch \
+                       base/lib_ungetch \
+                       base/lib_vline \
+                       base/lib_wattroff \
+                       base/lib_wattron \
+                       base/lib_winch \
+                       base/lib_window \
+                       base/memmove \
+                       base/nc_panel \
+                       base/resizeterm \
+                       base/safe_sprintf \
+                       base/sigaction \
+                       base/tries \
+                       base/version \
+                       base/vsscanf \
+                       base/wresize \
                        codes \
                        comp_captab \
-                       comp_error \
-                       comp_expand \
-                       comp_hash \
-                       comp_parse \
-                       comp_scan \
-                       define_key \
                        expanded \
                        fallback \
-                       hardscroll \
-                       hashmap \
-                       keyok \
-                       lib_acs \
-                       lib_adabind \
-                       lib_addch \
-                       lib_addstr \
-                       lib_baudrate \
-                       lib_beep \
-                       lib_bkgd \
-                       lib_box \
-                       lib_chgat \
-                       lib_clear \
-                       lib_clearok \
-                       lib_clrbot \
-                       lib_clreol \
-                       lib_color \
-                       lib_cur_term \
-                       lib_data \
-                       lib_delch \
-                       lib_delwin \
-                       lib_dft_fgbg \
-                       lib_doupdate \
-                       lib_echo \
-                       lib_endwin \
-                       lib_erase \
-                       lib_flash \
-                       lib_freeall \
                        lib_gen \
-                       lib_getch \
-                       lib_getstr \
-                       lib_hline \
-                       lib_immedok \
-                       lib_inchstr \
-                       lib_initscr \
-                       lib_insch \
-                       lib_insdel \
-                       lib_insstr \
-                       lib_instr \
-                       lib_isendwin \
-                       lib_kernel \
                        lib_keyname \
-                       lib_leaveok \
-                       lib_longname \
-                       lib_mouse \
-                       lib_move \
-                       lib_mvcur \
-                       lib_mvwin \
-                       lib_napms \
-                       lib_newterm \
-                       lib_newwin \
-                       lib_nl \
-                       lib_options \
-                       lib_overlay \
-                       lib_pad \
-                       lib_print \
-                       lib_printw \
-                       lib_raw \
-                       lib_redrawln \
-                       lib_refresh \
-                       lib_restart \
-                       lib_scanw \
-                       lib_screen \
-                       lib_scroll \
-                       lib_scrollok \
-                       lib_scrreg \
-                       lib_set_term \
-                       lib_setup \
-                       lib_slk \
-                       lib_slkatrof \
-                       lib_slkatron \
-                       lib_slkatrset \
-                       lib_slkattr \
-                       lib_slkclear \
-                       lib_slkinit \
-                       lib_slklab \
-                       lib_slkrefr \
-                       lib_slkset \
-                       lib_slktouch \
-                       lib_termcap \
-                       lib_ti \
-                       lib_touch \
-                       lib_tparm \
-                       lib_tputs \
-                       lib_trace \
-                       lib_traceatr \
-                       lib_tracechr \
-                       lib_tracedmp \
-                       lib_tracemse \
-                       lib_tstp \
-                       lib_twait \
-                       lib_ungetch \
-                       lib_vidattr \
-                       lib_vline \
-                       lib_wattroff \
-                       lib_wattron \
-                       lib_window \
-                       name_match \
                        names \
-                       nc_panel \
-                       parse_entry \
-                       read_entry \
-                       read_termcap \
-                       resizeterm \
-                       safe_sprintf \
-                       softscroll \
-                       trace_buf \
-                       tries \
-                       unctrl \
-                       wresize \
-                       write_entry
+                       tinfo/access \
+                       tinfo/add_tries \
+                       tinfo/alloc_entry \
+                       tinfo/alloc_ttype \
+                       tinfo/captoinfo \
+                       tinfo/comp_error \
+                       tinfo/comp_expand \
+                       tinfo/comp_hash \
+                       tinfo/comp_parse \
+                       tinfo/comp_scan \
+                       tinfo/doalloc \
+                       tinfo/free_ttype \
+                       tinfo/getenv_num \
+                       tinfo/home_terminfo \
+                       tinfo/init_keytry \
+                       tinfo/lib_acs \
+                       tinfo/lib_baudrate \
+                       tinfo/lib_cur_term \
+                       tinfo/lib_data \
+                       tinfo/lib_has_cap \
+                       tinfo/lib_kernel \
+                       tinfo/lib_longname \
+                       tinfo/lib_napms \
+                       tinfo/lib_options \
+                       tinfo/lib_print \
+                       tinfo/lib_raw \
+                       tinfo/lib_setup \
+                       tinfo/lib_termcap \
+                       tinfo/lib_termname \
+                       tinfo/lib_ti \
+                       tinfo/lib_tparm \
+                       tinfo/lib_tputs \
+                       tinfo/lib_ttyflags \
+                       tinfo/name_match \
+                       tinfo/parse_entry \
+                       tinfo/read_entry \
+                       tinfo/read_termcap \
+                       tinfo/setbuf \
+                       tinfo/write_entry \
+                       trace/lib_trace \
+                       trace/lib_traceatr \
+                       trace/lib_tracebits \
+                       trace/lib_tracechr \
+                       trace/lib_tracedmp \
+                       trace/lib_tracemse \
+                       trace/trace_buf \
+                       trace/trace_tries \
+                       trace/trace_xnames \
+                       tty/hardscroll \
+                       tty/hashmap \
+                       tty/lib_mvcur \
+                       tty/lib_tstp \
+                       tty/lib_vidattr \
+                       tty/lib_twait \
+                       tty/tty_update \
+                       unctrl
 
 libmenu-routines       = \
-                       m_adabind \
                        m_attribs \
                        m_cursor \
                        m_driver \
@@ -265,15 +285,9 @@ tset-objs = tset.o dump_entry.o
 extra-objs = $(tic-objs) $(toe-objs) $(infocmp-objs) $(clear-objs) \
                $(tput-objs) $(tset-objs)
 
-# mvcur won't compile
-test-srcs = tctest thardscroll thashmap \
-               blue bs firework firstlast gdc hanoi hashtest knight \
+test-srcs = blue bs cardfile ditto firework firstlast gdc hanoi hashtest knight \
                lrtest ncurses newdemo rain tclock testaddch testcurs \
                testscanw view worm xmas
-mvcur-objs = mvcur.o dump_entry.o
-tctest-objs = tctest.o
-thardscroll-objs = thardscroll.o
-thashmap-objs = thashmap.o hhardscroll.o
 
 include ../Rules
 
@@ -308,43 +322,7 @@ endif
 
 LDLIBS-tclock = math/libm
 
-tests: $(test-srcs:%=$(objpfx)%) 
-
-$(objpfx)mvcur.d: ncurses/lib_mvcur.c
-       $(CC) -M $(CFLAGS) $(CPPFLAGS) -DTRACE -DMAIN $? | \
-               sed -e 's/^lib_mvcur.o/mvcur.o/' > $@
-
-$(objpfx)mvcur.o: ncurses/lib_mvcur.c
-       $(CC) -c -o $@ $(CFLAGS) $(CPPFLAGS) -DTRACE -DMAIN $?
-
-$(objpfx)tctest.d: ncurses/captoinfo.c
-       $(CC) -M $(CFLAGS) $(CPPFLAGS) -DTRACE -DMAIN $? | \
-               sed -e 's/^captoinfo.o/tctest.o/' > $@
-
-$(objpfx)tctest.o: ncurses/captoinfo.c
-       $(CC) -c -o $@ $(CFLAGS) $(CPPFLAGS) -DTRACE -DMAIN $?
-
-$(objpfx)thardscroll.d: ncurses/hardscroll.c
-       $(CC) -M $(CFLAGS) $(CPPFLAGS) -DTRACE -DSCROLLDEBUG $? | \
-               sed -e 's/^hardscroll.o/thardscroll.o/' > $@
-
-$(objpfx)thardscroll.o: ncurses/hardscroll.c
-       $(CC) -c -o $@ $(CFLAGS) $(CPPFLAGS) -DTRACE -DSCROLLDEBUG $?
-
-$(objpfx)thashmap.d: ncurses/hashmap.c
-       $(CC) -M $(CFLAGS) $(CPPFLAGS) -DTRACE -DHASHDEBUG $? | \
-               sed -e 's/^hashmap.o/thashmap.o/' > $@
-
-$(objpfx)thashmap.o: ncurses/hashmap.c
-       $(CC) -c -o $@ $(CFLAGS) $(CPPFLAGS) -DTRACE -DHASHDEBUG $?
-
-$(objpfx)hhardscroll.o: ncurses/hardscroll.c
-       $(CC) -c -o $@ $(CFLAGS) $(CPPFLAGS) -DTRACE -DHASHDEBUG $?
-
-$(objpfx)mvcur: $(addprefix $(objpfx),$(mvcur-objs))
-$(objpfx)tctest: $(addprefix $(objpfx),$(tctest-objs))
-$(objpfx)thardscroll: $(addprefix $(objpfx),$(thardscroll-objs))
-$(objpfx)thashmap: $(addprefix $(objpfx),$(thashmap-objs))
+tests: $(test-srcs:%=$(objpfx)%)
 
 $(objpfx)clear: $(addprefix $(objpfx),$(clear-objs))
 $(objpfx)infocmp: $(addprefix $(objpfx),$(infocmp-objs))
@@ -403,7 +381,7 @@ $(inst_tabsetdir)/std: \
          echo installing $$f; \
          $(INSTALL_DATA) $$f $(inst_tabsetdir); \
        done
-       
+
 
 ifeq (no,$(cross-compiling))
 subdir_install: $(inst_terminfodir)/v/vt100
index 6019d0a3b2b677c8e616b5278d290653fb3e1f7c..381ca9e7ed753413ef870f693430390b17d548d8 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.15 1998/02/11 12:13:39 tom Exp $
+# $Id: Makefile.in,v 1.18 1998/08/22 23:45:00 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -51,7 +51,10 @@ includedir   = @includedir@
 libdir         = @libdir@
 mandir         = @mandir@
 
-DIRS_TO_MAKE = @DIRS_TO_MAKE@
+INSTALL                = @INSTALL@
+INSTALL_DATA   = @INSTALL_DATA@
+
+DIRS_TO_MAKE   = @DIRS_TO_MAKE@
 
 all :: $(DIRS_TO_MAKE)
 
@@ -68,8 +71,14 @@ preinstall :
        @ echo '      man directory: '$(mandir)
        @ echo ' terminfo directory: '$(datadir)/terminfo
        @ echo ''
-       @ if test "$(includedir)" != "$(prefix)/include" ; then \
-               echo '** Include-directory is not in a standard location'; fi
+       @ test "$(includedir)" = "$(prefix)/include" || \
+               echo '** Include-directory is not in a standard location'
+       @ test ! -f $(includedir)/termcap.h || \
+               fgrep NCURSES_VERSION $(includedir)/termcap.h >/dev/null || \
+               echo '** Will overwrite non-ncurses termcap.h'
+       @ test ! -f $(includedir)/curses.h || \
+               fgrep NCURSES_VERSION $(includedir)/curses.h >/dev/null || \
+               echo '** Will overwrite non-ncurses curses.h'
 
 # Put the common rules here so that we can easily construct the list of
 # directories to visit.
diff --git a/Makefile.os2 b/Makefile.os2
new file mode 100644 (file)
index 0000000..7a6f56d
--- /dev/null
@@ -0,0 +1,235 @@
+################################################################################
+# Wrapper Makefile for ncurses library under OS/2.
+################################################################################
+# $Id: Makefile.os2,v 1.8 1998/12/13 02:23:13 tom Exp $
+#
+# Author:  Juan Jose Garcia Ripoll <worm@arrakis.es>.
+# Webpage: http://www.arrakis.es/~worm/
+################################################################################
+#
+# Notes (from I Zakharevich)
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~
+# I could build the library with the following sequence of commands:
+#
+#   touch Makefile
+#   make -f Makefile.os2 config
+#   make -f Makefile.os2 CC=gcc HOSTCC=gcc
+#   make -f Makefile.os2 CC=gcc HOSTCC=gcc
+#
+# Ignoring the following errors:
+#   Invalid configuration `os2'...
+#   ... ac_maketemp="make": not found
+#   ... syntax error: `done' unexpected
+#   No rule to make target `lib/ncurses4.dll'
+#
+# You may need to run
+#
+#   rm make.defs
+#   make -f Makefile.os2 make.defs
+#
+# if the build of misc/panel.def fails.
+#
+# If you do not have perl, the configuration will fail.  Use autoconf to
+# generate the EMX-specific configure script (see README.emx), and run the
+# configure script to generate the makefiles.  Then, run
+#
+#   make -f Makefile.os2 make.dlls
+#
+# Notes (from J J G Ripoll)
+# ~~~~~~~~~~~~~~~~~~~~~~~~~
+# The `make.defs' rule creates the new '.def' files and outputs a diagnostic
+# about symbols that disappear from one release to the other, as well as
+# checks about the new '.def' consistency.  If there were no problems, the
+# maintainer is free to replace the `.ref' files with the newer ones using the
+# `save.defs' rule.  So, the only tough work is ensuring that the symbols that
+# disappear are not essential.
+#
+# I first thought about killing '_nc_*' symbols, but it seems that some of
+# them --_nc_panel_hook, _nc_ada*, etc-- are needed outside ncurses.dll. 
+# However, the whole size of the export table will not be larger than 1k or
+# so.
+#
+# [installation]
+#
+# The way things are handled in misc/Makefile is not well suited for OS/2,
+# where only emx.src is needed.  Thus, I've written a few wrapper rules in
+# Makefile.os2 that handle installation/deinstallation.
+#
+# [distribution]
+#
+# There's also a new rule that configures and builds a sort of binary
+# distribution, much like the one I prepared for 1.9.9e.  It's `os2dist'.
+#
+################################################################################
+
+all :: config
+
+# This is for configuring
+
+# What is a useful value for this?
+CONFIG_OPTS    = --enable-termcap
+WWWGET         = lynx -source
+MV_F           = mv -f
+DLL_LN_OPTS    = -Zcrtdll -Zdll -Zomf -Zmt
+
+config: config.cache
+
+config.cache: configure.cmd configure
+       -$(MV_F) $@ $@.ref
+       configure.cmd $(CONFIG_OPTS)
+
+configure.cmd: configure convert_configure.pl
+       perl convert_configure.pl configure > $@
+
+convert_configure.pl:
+       $(WWWGET) ftp://ftp.math.ohio-state.edu/pub/users/ilya/os2/$@ > $@
+
+install ::
+       echo ***
+       echo *** Do not use this command. Use install.os2 instead.
+       echo ***
+       exit 2
+
+install.os2 : install.emxdata install.libs install.progs
+
+include ./Makefile
+
+all :: make.dlls
+
+#
+# DLLs and that stuff
+#
+
+LIBRARIES = ncurses form menu panel
+
+DLL_TAG = $(NCURSES_MAJOR)
+LIB_TAG = _s
+
+DLL_ROOTS = $(addsuffix $(DLL_TAG), $(LIBRARIES))
+DLLS = $(addsuffix .dll, $(addprefix ./lib/, $(DLL_ROOTS)))
+
+LIB_ROOTS = $(addsuffix $(LIB_TAG), $(LIBRARIES))
+LIBS = $(addsuffix .lib, $(addprefix ./lib/, $(LIB_ROOTS)))
+
+LIBS_AOUT = $(addsuffix .a, $(addprefix ./lib/, $(LIB_ROOTS)))
+
+DEFS = $(addsuffix .def, $(addprefix ./misc/, $(LIBRARIES)))
+
+DLL_SIGNATURE = NCurses-$(NCURSES_MAJOR)-$(NCURSES_MINOR)-$(NCURSES_PATCH)
+
+./lib/%$(LIB_TAG).lib : ./misc/%.def
+       emximp -o $@ $<
+
+./lib/%$(LIB_TAG).a : ./misc/%.def
+       emximp -o $@ $<
+
+./lib/%$(DLL_TAG).dll : ./lib/%.a
+       emxomf -o ./lib/$*$(DLL_TAG).lib $<
+       if [ "$*" = "ncurses" ]; then \
+               gcc $(LDFLAGS) $(DLL_LN_OPTS) ./lib/$*$(DLL_TAG).lib \
+                               ./misc/$*.def -o $@; \
+       else \
+               gcc $(LDFLAGS) $(DLL_LN_OPTS) ./lib/$*$(DLL_TAG).lib \
+                               ./lib/ncurses$(LIB_TAG).lib ./misc/$*.def -o $@; \
+       fi
+       -rm -f ./lib/$*$(DLL_TAG).lib
+
+make.dlls : $(DEFS) $(LIBS) $(DLLS) $(LIBS_AOUT)
+
+$(DEFS) : make.defs
+
+LIBDIR = $(INSTALL_PREFIX)$(libdir)
+$(LIBDIR) :
+       mkdir -p $@
+
+install.libs :: $(LIBS) $(DLLS) $(LIBDIR)
+       @for i in $(DLL_ROOTS); do \
+       echo installing ./lib/$$i.dll as $(LIBDIR)/$$i.dll; \
+       $(INSTALL_DATA) ./lib/$$i.dll $(LIBDIR)/$$i.dll; done
+       @for i in $(LIB_ROOTS); do \
+       echo installing ./lib/$$i.lib as $(LIBDIR)/$$i.lib; \
+       $(INSTALL_DATA) ./lib/$$i.lib $(LIBDIR)/$$i.lib; done
+
+uninstall.libs ::
+       -@for i in $(DLL_ROOTS); do \
+       echo uninstalling $(LIBDIR)/$$i.dll; \
+       rm -f $(LIBDIR)/$$i.dll; done
+       -@for i in $(LIB_ROOTS); do \
+       echo uninstalling $(LIBDIR)/$$i.lib; \
+       rm -f $(LIBDIR)/$$i.lib; done
+
+make.defs :
+       for i in $(LIBRARIES); do \
+       echo LIBRARY $${i}$(DLL_TAG) INITINSTANCE TERMINSTANCE > ./misc/$$i.def; \
+       echo DESCRIPTION \"$(DLL_SIGNATURE), module $$i\" >> ./misc/$$i.def; \
+       echo CODE LOADONCALL >> ./misc/$$i.def; \
+       echo DATA LOADONCALL NONSHARED MULTIPLE >> ./misc/$$i.def; \
+       echo EXPORTS >> ./misc/$$i.def; \
+       echo Creating $$i.def; \
+       (cmd /C ".\\misc\\makedef.cmd ./lib/$$i.a ./misc/$$i.ref >> ./misc/$$i.def" \
+        && cmd /C ".\\misc\\chkdef.cmd ./misc/$$i.def") \
+       || exit 1; \
+       done
+       touch make.defs
+
+save.defs :
+       for i in $(LIBRARIES); do \
+       test -f ./misc/$$i.def && cp ./misc/$$i.def ./misc/$$i.ref; \
+       done
+
+clean \
+os2clean ::
+       -rm -f $(DLLS) $(LIBS)
+
+realclean ::
+       -rm -f $(addprefix ./misc/, $(addsuffix .def, $(LIBRARIES)))
+
+#
+# This is a simplified version of misc/Makefile
+#
+
+TICDIR = $(INSTALL_PREFIX)$(datadir)/terminfo
+TABSETDIR = $(INSTALL_PREFIX)$(datadir)/tabset
+
+$(TICDIR) :
+       mkdir -p $@
+
+install \
+install.emxdata :: $(TICDIR)
+       -@rm -fr $(TICDIR)/*
+       echo Building terminfo database, please wait...
+       set TERMINFO=$(TICDIR); ./progs/tic ./misc/emx.src
+       echo Installing the terminfo cleaner and the sources...
+       cp ./misc/emx.src ./misc/cleantic.cmd $(TICDIR)
+       ./misc/cleantic.cmd $(TICDIR)
+
+uninstall \
+uninstall.emxdata ::
+       -cd $(TICDIR) && rm -rf *
+       -cd $(TABSETDIR) && rm -rf *
+
+#
+# This is for preparing binary distributions
+#
+
+OS2NAME=ncurses-$(NCURSES_MAJOR).$(NCURSES_MINOR)-emx
+
+#
+# FIXME: this assumes that we can rerun the configure script, changing only
+# the install-prefix.  That means we cannot provide "interesting" options
+# when building.
+#
+os2dist :
+       $(MAKE) -f Makefile.os2 os2clean
+       ./configure --without-debug --with-install-prefix=`pwd|sed -e 's@^.:@@'`/$(OS2NAME)
+       $(MAKE) -f Makefile.os2 $(CF_MFLAGS) install.os2
+       -rm -f $(OS2NAME).zip
+       echo NCurses-$(NCURSES_MAJOR).$(NCURSES_MINOR)-$(NCURSES_PATCH) for emx > $(OS2NAME)/FILE_ID.DIZ
+       echo Binary release. >> $(OS2NAME)/FILE_ID.DIZ
+       zip -r $(OS2NAME).zip ./$(OS2NAME)
+
+clean \
+os2clean ::
+       -rm -rf $(OS2NAME)
+       -rm -f $(OS2NAME).zip
+
diff --git a/NEWS b/NEWS
index 5b22ebafd225c4ef074479e3cfc4b48862d287f8..274f0815b6b8af0740bc0a1421a70f9b5fe1bc66 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
--- $Id: NEWS,v 1.316 1998/02/28 23:10:26 tom Exp $
+-- $Id: NEWS,v 1.504 1999/10/24 00:31:05 tom Exp $
 
 This is a log of changes that ncurses has gone through since Zeyd started
 working with Pavel Curtis' original work, pcurses, in 1992.
@@ -6,6 +6,1163 @@ working with Pavel Curtis' original work, pcurses, in 1992.
 Changes through 1.9.9e are recorded by Zeyd M. Ben-Halim.
 Changes since 1.9.9e are recorded by Thomas Dickey.
 
+19991023 5.0 release for upload to ftp.gnu.org
+       + effective with release of 5.0, change NCURSES_VERSION_PATCH to
+         4-digit year.
+       + add function curses_version(), to return ncurses library version
+         (request by Bob van der Poel).
+       + remove rmam, smam from cygwin terminfo entry.
+       + modify FreeBSD cons25 terminfo entry to add cnorm and cvvis, as well
+         as update ncv to indicate that 'dim' conflicts with colors.
+       + modify configure script to use symbolic links for FreeBSD shared
+         libraries by default.
+       + correct ranf() function in rain and worm programs to ensure it does
+         not return 1.0
+       + hide the cursor in hanoi.c if it is running automatically.
+       + amend lrtest.c to account for optimizations that exploit margin
+         wrapping.
+       + add a simple terminfo demo, dots.c
+       + modify SIGINT/SIGQUIT handler to set a flag used in _nc_outch() to
+         tell it to use write() rather than putc(), since the latter is not
+         safe in a signal handler according to POSIX.
+       + add/use internal macros _nc_flush() and NC_OUTPUT to hide details
+         of output-file pointer in ncurses library.
+       + uncomment CC_SHARED_OPTS (see 971115), since they are needed for SCO
+         OpenServer.
+       + correct CC_SHARED_OPTS for building shared libraries for SCO
+         OpenServer.
+       + remove usleep() from alternatives in napms(), since it may interact
+         with alarm(), causing a process to be interrupted by SIGALRM (with
+         advice from Bela Lubkin).
+       + modify terminal_interface-curses-forms.ads.m4 to build/work with
+         GNAT 3.10 (patch by Juergen Pfeifer).
+       + remove part of CF_GPP_LIBRARY configure-script macro, which did not
+         work with gcc 2.7.2.3
+       + minor fix to test/tclock.c to avoid beeping more than once per second
+       + add 's' and ' ' decoding to test/rain.c
+
+991016 pre-release
+       + corrected BeOS code for lib_twait.c, making nodelay() function work.
+
+991009 pre-release
+       + correct ncurses' value for cursor-column in PutCharLR(), which was
+         off-by-one in one case (patch by Ilya Zakharevich).
+       + fix some minor errors in position_check() debugging code, found while
+         using this to validate the PutCharLR() patch.
+       + modify firework, lrtest, worm examples to be resizable, and to
+         recognize 'q' for quit, 's' for single-step and ' ' for resume.
+       + restore reverted change to  terminal_interface-curses-forms.ads.m4,
+         add a note on building with gnat 3.10p to Ada95/TODO.
+       + add a copy of the standalone configure script for the test-directory
+         to simplify testing on SCO and Solaris.
+
+991002 pre-release
+       + minor fixes for _nc_msec_cost(), color_content(), pair_content(),
+         _nc_freewin(), ClrBottom() and onscreen_mvcur() (analysis by Philippe
+         Blain, comments by Alexander Lukyanov).
+       + simplify definition of PANEL and eliminate internal functions
+         _nc_calculate_obscure(), _nc_free_obscure() and _nc_override(),
+         (patch by Juergen Pfeifer, based on analysis by Philippe Blain
+         <bledp@voila.fr>)).
+       + change renaming of dft_fgbg.3x to use_default_colors.3ncurses in
+         man_db.renames, since Debian is not concerned with 14-character
+         filename limitation (from Debian bug report by Josip Rodin
+         <joy@cibalia.gkvk.hr>).
+       + corrected scoansi terminfo entry by testing with scoterm and console.
+       + revert change from 990614 to terminal_interface-curses-forms.ads.m4,
+         since this does not work for gnat 3.10p
+       + modify tclock example to be resizable (if ncurses' sigwinch handler
+         is used), and in color.
+       + use $(CC) rather than 'gcc' in MK_SHARED_LIB symbols, used for Linux
+         shared library rules.
+
+990925 pre-release
+       + add newer NetBSD console terminfo entries
+       + add amiga-8bit terminfo entry (from Henning 'Faroul' Peters
+         <Faroul@beyond.kn-bremen.de>)
+       + remove -lcurses -ltermcap from configure script's check for the gpm
+         library, since they are not really necessary (a properly configured
+         gpm library has no dependency on any curses library), and if the
+         curses library is not installed, this would cause the test to fail.
+       + modify tic's -C option so that terminfo "use=" clauses are translated
+         to "tc=" clauses even when running it as captoinfo.
+       + modify CF_STDCPP_LIBRARY configure macro to perform its check only
+         for GNU C++, since that library conflicts with SGI's libC on IRIX-6.2
+       + modify CF_SHARED_OPTS configure macro to support build on NetBSD with
+         ELF libraries (patch by Bernd Ernesti <bernd@arresum.inka.de>).
+       + correct a problem in libpanel, where the _nc_top_panel variable was
+         not set properly when bottom_panel() is called to hide a panel which
+         is the only one on the stack (report/analysis by Michael Andres
+         <ma@suse.de>, patch by Juergen Pfeifer).
+
+990918 pre-release
+       + add acsc string to HP 70092 terminfo entry (patch by Joerg Wunsch
+         <j@interface-business.de>).
+       + add top-level uninstall.data and uninstall.man makefile rules.
+       + correct logic of CF_LINK_FUNCS configure script, from BeOS changes so
+         that hard-links work on Unix again.
+       + change default value of cf_cv_builtin_bool to 1 as suggested by
+         Jeremy Buhler, making it less likely that a conflicting declaration
+         of bool will be seen when compiling with C++.
+
+990911 pre-release
+       + improved configure checks for builtin.h
+       + minor changes to C++ binding (remove static initializations, and make
+         configure-test for parameter initializations) for features not
+         allowed by vendor's C++ compilers (reported by Martin Mokrejs, this
+         applies to SGI, though I found SCO has the same characteristics).
+       + corrected quoting of ETIP_xxx definitions which support old versions
+         of g++, e.g., those using -lg++
+       + remove 'L' code from safe_sprintf.c, since 'long double' is not
+         widely portable.  safe_sprintf.c is experimental, however, and
+         exists mainly as a fallback for systems without snprintf (reported
+         by Martin Mokrejs <mmokrejs@natur.cuni.cz>, for IRIX 6.2)
+       + modify definition of _nc_tinfo_fkeys in broken-linker configuration
+         so that it is not unnecessarily made extern (Jeffrey C Honig).
+
+990904 pre-release
+       + move definition for builtin.h in configure tests to specific check
+         for libg++, since qt uses the same filename incompatibly.
+       + correct logic of lib_termcap.c tgetstr function, which did not copy
+         the result to the buffer parameter.  Testing shows Solaris does
+         update this, though of course tgetent's buffer is untouched (from
+         mpc.lists.freebsd.current newsgroup item by Peter Edwards
+         <peter.edwards@ireland.com>).
+       + corrected beterm terminfo entry, which lists some capabilities which
+         are not actually provided by the BeOS Terminal.
+       + add special logic to replace select() calls on BeOS, whose select()
+         function works only for sockets.
+       + correct missing escape in mkterm.h.awk.in, which caused part
+         of the copyright noticed to be omitted (reported by Peter
+         Wemm <peter@netplex.com.au>).
+       > several small changes to make the c++ binding and demo work on OS/2
+         EMX (related to a clean reinstall of EMX):
+       + correct library-prefix for c++ binding; none is needed.
+       + add $x suffix to make_hash and make_keys so 'make distclean' works.
+       + correct missing $x suffix for tack, c++ demo executables.
+       + split CF_CXX_LIBRARY into CF_GPP_LIBRARY (for -lg++) and
+         CF_STDCPP_LIBRARY (for -lstdc++)
+
+990828 pre-release
+       + add cygwin terminfo entry -TD
+       + modify CF_PROG_EXT configure macro to set .exe extension for cygwin.
+       + add configure option --without-cxx-binding, modifying the existing
+         --without-cxx option to check only for the C++ compiler
+         characteristics.  Whether or not the C++ binding is needed, the
+         configure script checks for the size/type of bool, to make ncurses
+         match.  Otherwise C++ applications cannot use ncurses.
+
+990821 pre-release
+       + updated configure macros CF_MAKEFLAGS, CF_CHECK_ERRNO
+       + minor corrections to beterm terminfo entry.
+       + modify lib_setup.c to reject values of $TERM which have a '/' in them.
+       + add ifdef's to guard against CS5, CS6, CS7, CS8 being zero, as more
+         than one is on BeOS.  That would break a switch statement.
+       + add configure macro CF_LINK_FUNCS to detect and work around BeOS's
+         nonfunctional link().
+       + improved configure macros CF_BOOL_DECL and CF_BOOL_SIZE to detect
+         BeOS's bool, which is declared as an unsigned char.
+
+990814 pre-release
+       + add ms-vt100 terminfo entry -TD
+       + minor fixes for misc/emx.src, based on testing with tack.
+       + minor fix for test/ncurses.c, test 'a', in case ncv is not set.
+
+990731 pre-release
+       + minor correction for 'screen' terminfo entry.
+       + clarify description of errret values for setupterm in manpage.
+       + modify tput to allow it to emit capabilities for hardcopy terminals
+         (patch by Goran Uddeborg <goeran@uddeborg.pp.se>).
+       + modify the 'o' (panel) test in ncurses.c to show the panels in color
+         or at least in bold, to test Juergen's change to wrefresh().
+       > patches by Juergen Pfeifer:
+       + Fixes a problem using wbkgdset() with panels.  It has actually
+         nothing to with panels but is a problem in the implementation of
+         wrefresh().  Whenever a window changes its background attribute to
+         something different than newscr's background attribute, the whole
+         window is touched to force a copy to newscr.  This is an unwanted
+         side-effect of wrefresh() and it is actually not necessary.  A changed
+         background attribute affects only further outputs of background it
+         doesn't mean anything to the current content of the window.  So there
+         is no need to force a copy.  (reported by Frank Heckenbach
+         <frank@g-n-u.de>).
+       + an upward compatible enhancement of the NCursesPad class in the C++
+         binding.  It allows one to add a "viewport" window to a pad and then
+         to use panning to view the pad through the viewport window.
+
+990724 pre-release
+       + suppress a call to def_prog_mode() in the SIGTSTP handler if the
+         signal was received while not in curses mode, e.g., endwin() was
+         called in preparation for spawning a shell command (reported by Frank
+         Heckenbach <frank@g-n-u.de>)
+       + corrected/enhanced xterm-r5, xterm+sl, xterm+sl-twm terminfo entries.
+       + change test for xterm mouse capability:  it now checks only if the
+         user's $DISPLAY variable is set in conjunction with the kmous
+         capability being present in the terminfo.  Before, it checked if any
+         of "xterm", "rxvt" or "kterm" were substrings of the terminal name.
+         However, some emulators which are incompatible with xterm in other
+         ways do support the xterm mouse capability.
+       + reviewed and made minor changes in ncurses to quiet g++ warnings
+         about shadowed or uninitialized variables.  g++ incorrectly warns
+         about uninitialized variables because it does not take into account
+         short-circuit expression evaluation.
+       + change ncurses 'b' test to start in color pair 0 and to show in the
+         right margin those attributes which are suppressed by no_color_video,
+         i.e., "(NCV)".
+       + modify ifdef's in curses.h so that __attribute__ is not redefined
+         when compiling with g++, but instead disabled the macros derived for
+         __attribute__ since g++ does not consistently recognize the same
+         keywords as gcc (reported by Stephan K Zitz <zitz@erf.net>).
+       + update dependencies for term.h in ncurses/modules (reported by
+         Ilya Zakharevich).
+
+990710 pre-release
+       + modify the form demo in ncurses.c to illustrate how to manipulate the
+         field appearance, e.g, for highlighting or translating the field
+         contents.
+       + correct logic in write_entry from split-out of home_terminfo in
+         980919, which prevented update of $HOME/.terminfo (reported by Philip
+         Spencer <pspencer@fields.utoronto.ca>).
+
+990703 pre-release
+       + modify linux terminfo description to make use of kernel 2.2.x mods
+         that support cursor style, e.g., to implement cvvis (patch by Frank
+         Heckenbach <frank@g-n-u.de>)
+       + add special-case in setupterm to retain previously-saved terminal
+         settings in cur_term, which happens when curses and termcap calls are
+         mixed (from report by Bjorn Helgaas <helgaas@dhc.net>).
+       + suppress initialization of key-tries in _nc_keypad() if we are only
+         disabling keypad mode, e.g., in endwin() called when keypad() was not.
+       + modify the Ada95 makefile to ensure that always the Ada files from
+         the development tree are used for building and not the eventually
+         installed ones (patch by Juergen Pfeifer).
+
+990626 pre-release
+       + use TTY definition in tack/sysdep.c rather than struct termios
+         (reported by Philippe De Muyter).
+       + add a fallback for strstr, used in lib_mvcur.c and tack/edit.c,
+         not present on sysV68 (reported by Philippe De Muyter).
+       + correct definition in comp_hash.c to build with configure
+         --with-rcs-ids option.
+
+990619 pre-release
+       + modified ifdef's for sigaction and sigvec to ensure we do not try to
+         handle SIGTSTP if neither is available (from report by Philippe De
+         Muyter).
+       > patch by Philippe De Muyter:
+       + in tic.c, use `unlink' if `remove' is not available.
+       + use only `unsigned' as fallback value for `speed_t'.  Some files used
+         `short' instead.
+
+990616 pre-release
+       + fix some compiler warnings in tack.
+       + add a check for predefined bool type in CC, based on report that
+         BeOS predefines a bool type.
+       + correct logic for infocmp -e option (i.e., the configure
+         --with-fallbacks option), which I'd not updated when implementing
+         extended names (cf:  990301).  The new implementation adds a -E
+         option to infocmp.
+       > patch by Juergen Pfeifer:
+       + introduce the private type Curses_Bool in the Ada95 binding
+         implementation.  This is to clearly represent the use of "bool" also
+         in the binding.  It should have no effect on the generated code.
+       + improve the man page for field_buffer() to tell the people, that the
+         whole buffer including leading/trailing spaces is returned.  This is
+         a common source of confusion, so it's better to document it clearly.
+
+990614 pre-release
+       > patch by Juergen Pfeifer:
+       + use pragma PreElaborate in several places.
+       + change a few System.Address uses to more specific types.
+       + change interface version-number to 1.0
+       + regenerate Ada95 HTML files.
+
+990612 pre-release
+       + modify lib_endwin.c to avoid calling reset_shell_mode(), return ERR
+         if it appears that curses was never initialized, e.g., by initscr().
+         For instance, this guards against setting the terminal modes to
+         strange values if endwin() is called after setupterm().  In the same
+         context, Solaris curses will dump core.
+       + modify logic that avoids a conflict in lib_vidattr.c between sgr0 and
+         equivalent values in rmso or rmul by ensuring we do not modify the
+         data which would be returned by the terminfo or termcap interfaces
+         (reported by Brad Pepers <brad@linuxcanada.com>, cf:  960706).
+       + add a null-pointer check for SP in lib_vidattr.c to logic that checks
+         for magic cookies.
+       + improve fallback declaration of 'bool' when the --without-cxx option
+         is given, by using a 'char' on i386 and related hosts (from discussion
+         with Alexander Lukyanov).
+
+990605 pre-release
+       + include time.h in lib_napms.c if nanosleep is used (patch by
+         R Lindsay Todd <toddr@rpi.edu>).
+       + add an "#undef bool" to curses.h, in case someone tries to define it,
+         e.g., perl.
+       + add check to tparm to guard against divide by zero (reported by Aaron
+         Campbell <aaron@ug.cs.dal.ca>).
+
+990516 pre-release
+       + minor fix to build tack on CLIX (mismatched const).
+       > patch by Juergen Pfeifer:
+       + change Juergen's old email address with new one in the files where it
+         is referenced.  The Ada95 HTML pages are regenerated.
+       + update MANIFEST to list the tack files.
+
+990509 pre-release
+       + minor fixes to make 'tack' build/link on NeXT (reported by Francisco
+         A. Tomei Torres).
+
+990417 pre-release
+       + add 'tack' program (which is GPL'd), updating it to work with the
+         modified TERMTYPE struct and making a fix to support setaf/setab
+         capabilities.  Note that the tack program is not part of the
+         ncurses libraries, but an application which can be distributed with
+         ncurses.  The configure script will ignore the directory if it is
+         omitted, however.
+       + modify gpm mouse support so that buttons 2 and 3 are used for
+         select/paste only when shift key is pressed, making them available
+         for use by an application (patch by Klaus Weide).
+       + add complete list of function keys to scoansi terminfo entry - TD
+
+990410 pre-release
+       + add a simple test program cardfile.c to illustrate how to read form
+         fields, and showing forms within panels.
+       + change shared-library versioning for the Hurd to be like Linux rather
+         than *BSD (patch by Mark Kettenis <kettenis@wins.uva.nl>).
+       + add linux-lat terminfo entry.
+       + back-out _nc_access check in read_termcap.c (both incorrect and
+         unnecessary, except to guard against a small window where the file's
+         ownership may change).
+
+990403 pre-release
+       + remove conflicting _nc_free_termtype() function from test module
+         lib_freeall.c
+       + use _nc_access check in read_termcap.c for termpaths[] array (noted
+         by Jeremy Buhler, indicating that Alan Cox made a similar patch).
+       > patch by Juergen Pfeifer:
+       + modify menu creation to not inherit status flag from the default menu
+         which says that the associated marker string has been allocated and
+         should be freed (bug reported by Marek Paliwoda" <paliwoda@kki.net.pl>)
+
+990327 pre-release (alpha.gnu.org:/gnu/ncurses-5.0-beta1.tar.gz)
+       + minor fixes to xterm-xfree86 terminfo entry - TD.
+       + split up an expression in configure script check for ldconfig to
+         workaround limitation of BSD/OS sh (reported by Jeff Haas
+         <jmh@mail.msen.com>).
+       + correct a typo in man/form_hook.3x (Todd Miller).
+
+990318 pre-release
+       + parenthesize and undef 'index' symbol in c++ binding and demo, to
+         accommodate its definition on NeXT (reported by Francisco A. Tomei
+         Torres).
+       + add sigismember() to base/sigaction.c compatibility to link on NeXT
+         (reported by Francisco A. Tomei Torres).
+       + further refinements to inequality in hashmap.c to cover a case with
+         ^U in nvi (patch by Alexander Lukyanov).
+
+990316 pre-release
+       + add fallback definition for getcwd, to link on NeXT.
+       + add a copy of cur_term to tic.c to make it link properly on NeXT
+         (reported by Francisco A. Tomei Torres).
+       + change inequality in hashmap.c which checks the distance traveled by
+         a chunk so that ^D command in nvi (scrolls 1/2 screen) will use
+         scrolling logic (patch by Alexander Lukyanov, reported by Jeffrey
+         C Honig).
+
+990314 pre-release
+       + modify lib_color.c to handle a special case where the curscr
+         attributes have been made obsolete (patch by Alexander Lukyanov).
+       + update BSD/OS console terminfo entries to use klone+sgr and
+         klone+color (patch by Jeffrey C Honig).
+       + update glibc addon configure script for extended capabilities.
+       + correct a couple of warnings in the --enable-const configuration.
+       + make comp_hash build properly with _nc_strdup(), on NeXT (reported by
+         Francisco A. Tomei Torres <francisco.tomei@cwix.com>).
+
+990313 pre-release
+       + correct typos in linux-c initc string - TD
+       + add 'crt' terminfo entry, update xterm-xfree86 entry - TD
+       + remove a spurious argument to tparm() in lib_sklrefr.c (patch by
+         Alexander Lukyanov).
+
+990307 pre-release
+       + back-out change to wgetch because it causes a problem with ^Z
+         handling in lynx (reported by Kim DeVaughn).
+
+990306 pre-release
+       + add -G option to tic and infocmp, to reverse the -g option.
+       + recode functions in name_match.c to avoid use of strncpy, which
+         caused a 4-fold slowdown in tic (cf: 980530).
+       + correct a few warnings about sign-extension in recent changes.
+       > patch by Juergen Pfeifer:
+       + fixes suggested by Jeff Bradbury <jibradbury@lucent.com>:
+         + improved parameter checking in new_fieldtype().
+         + fixed a typo in wgetch() timeout handling.
+         + allow slk_init() to be called per newterm call.  The internal SLK
+           state is stored in the SCREEN struct after every newterm() and then
+           reset for the next newterm.
+         + fix the problem that a slk_refresh() refreshes stdscr if the
+           terminal has true SLKs.
+       + update HTML documentation for Ada binding.
+
+990301 pre-release
+       + remove 'bool' casts from definitions of TRUE/FALSE so that statements
+         such as "#if TRUE" work.  This was originally done to allow for a C++
+         compiler which would warn of implicit conversions between enum and
+         int, but is not needed for g++ (reported by Kim DeVaughn).
+       + add use_extended_names() function to allow applications to suppress
+         read of the extended capabilities.
+       + add configure option --enable-tcap-names to support logic which
+         allows ncurses' tic to define new (i.e., extended) terminal
+         capabilities.  This is activated by the tic -x switch.  The infocmp
+         program automatically shows or compares extended capabilities.
+         Note:  This changes the Strings and similar arrays in the TERMTYPE
+         struct so that applications which manipulate it must be recompiled.
+       + use macros typeMalloc, typeCalloc and typeRealloc consistently
+         throughout ncurses library.
+       + add _nc_strdup() to doalloc.c.
+       + modify define_key() to allow multiple strings to be bound to the
+         same keycode.
+       + correct logic error in _nc_remove_string, from 990220.
+       > patch by Juergen Pfeifer, for Ada95 binding:
+       + regenerate some of the html documentation
+       + minor cleanup in terminal_interface-curses.adb
+
+990220 pre-release
+       + resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in
+         xterm and ncsa terminfo entries by removing the unneeded ones.  Note
+         that some entries will return kend & khome versus kslt and kfnd, for
+         PC-style keyboards versus strict vt220 compatiblity - TD
+       + add function keybound(), which returns the definition associated with
+         a given keycode.
+       + modify define_key() to undefine the given string when no keycode is
+         given.
+       + modify keyok() so it works properly if there is more than one string
+         defined for a keycode.
+       + add check to tic to warn about terminfo descriptions that contain
+         more than one key assigned to the same string.  This is shown only if
+         the verbose (-v) option is given.  Moved related logic (tic -v) from
+         comp_parse.c into the tic program.
+       + add/use _nc_trace_tries() to show the function keys that will be
+         recognized.
+       + rename init_acs to _nc_init_acs (request by Alexander Lukyanov).
+       > patch by Juergen Pfeifer, for Ada95 binding:
+       + remove all the *_adabind.c from ncurses, menu and form projects.
+         Those little helper routines have all been implemented in Ada and are
+         no longer required.
+       + The option handling routines in menu and form have been made more
+         save.  They now make sure that the unused bits in options are always
+         zero.
+       + modify configuration scripts to
+         + use gnatmake as default compiler name.  This is a safer choice than
+           gcc, because some GNAT implementations use other names for the
+           compilerdriver to avoid conflicts.
+         + use new default installation locations for the Ada files according
+           to the proposed GNU Ada filesystem standard (for Linux).
+       + simplify the Makefiles for the Ada binding
+       + rename ada_include directory to src.
+
+990213
+       + enable sigwinch handler by default.
+       + disable logic that allows setbuf to be turned off/on, because some
+         implementations will overrun the buffer after it has been disabled
+         once.
+
+990206
+       + suppress sc/rc capabilities from terminal description if they appear
+         in smcup/rmcup.  This affects only scrolling optimization, to fix a
+         problem reported by several people with xterm's alternate screen,
+         though the problem is more general.
+       > patch by Juergen Pfeifer, for Ada95 binding:
+       + removed all pragma Preelaborate() stuff, because the just released
+         gnat-3.11p complains on some constructs.
+       + fixed some upper/lower case notations because gnat-3.11p found
+         inconsistent use.
+       + used a new method to generate the HTML documentation of the Ada95
+         binding.  This invalidates nearly the whole ./Ada95/html subtree.
+         Nearly all current files in this subtree are removed
+
+990130
+       + cache last result from _nc_baudrate, for performance (suggested by
+         Alexander Lukyanov).
+       + modify ClrUpdate() function to workaround a problem in nvi, which
+         uses redrawwin in SIGTSTP handling.  Jeffrey C Honig reported that
+         ncurses repainted the screen with nulls before resuming normal
+         operation (patch by Alexander Lukyanov).
+       + generalize is_xterm() function a little by letting xterm/rxvt/kterm
+         be any substring rather than the prefix.
+       + modify lib_data.c to initialize SP.  Some linkers, e.g., IBM's, will
+         not link a module if the only symbols exported from the module are
+         uninitialized ones (patch by Ilya Zakharevich, who says that he has
+         seen messages claiming this behaviour conforms to the standard.)
+       + move call on _nc_signal_handler past _nc_initscr, to avoid a small
+         window where Nttyb hasn't yet been filled (reported by Klaus Weide).
+       + modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a
+         problem where ncurses applications which were run via a shell script
+         would hang when given a ^Z.  Also, check if the terminal's process
+         group is consistent, i.e., a shell has not taken ownership of it,
+         before deciding to save the current terminal settings in the SIGTSTP
+         handler (patch by Klaus Weide).
+       + correct spelling of ACS_ names in curs_border.3x (reported by Bob van
+         der Poel <bvdpoel@kootenay.com>).
+       + correct a couple of typos in the macros supporting the configure
+         --with-shlib-version option.
+
+990123
+       + modify fty_regex.c to compile on HAVE_REGEXPR_H_FUNCS machine (patch
+         by Kimio Ishii <ishii@csl.sony.co.jp>).
+       + rename BSDI console terminfo entries:  bsdos to bsdos-pc-nobold, and
+         bsdos-bold to bsdos-pc (patch by Jeffrey C Honig).
+       + modify tput to accept termcap names as an alternative to terminfo
+         names (patch by Jeffrey C Honig).
+       + correct a typo in term.7 (Todd Miller).
+       + add configure --with-shlib-version option to allow installing shared
+         libraries named according to release or ABI versions.  This
+         parameterizes some existing logic in the configure script, and is
+         intended for compatiblity upgrades on Digital Unix, which used
+         versioned libraries in ncurses 4.2, but no longer does (cf:  980425).
+       + resync configure script against autoconf 2.13 + patches
+       + minor improvements for teraterm terminfo entry based on the program's
+         source distribution.
+
+990116
+       + change default for configure --enable-big-core to assume machines do
+         have enough memory to resolve terminfo.src in-memory.
+       + correct name of ncurses library in TEST_ARGS when configuring with
+         debug library.
+       + minor fixes to compile ncurses library with broken-linker with g++.
+       + add --enable-broken-linker configure option, default to environment
+         variable $BROKEN_LINKER (request by Jeffrey C Honig).
+       + change key_names[] array to static since it is not part of the curses
+         interface (reported by Jeffrey C Honig <jch@bsdi.com>).
+
+990110
+       + add Tera Term terminfo entry - TD
+
+990109
+       + reviewed/corrected macros in curses.h as per XSI document.
+       + provide support for termcap PC variable by copying it from terminfo
+         data and using it as the padding character in tputs (reported by
+         Alexander Lukyanov).
+       + corrected iris-ansi and iris-ansi-ap terminfo entries for kent and
+         kf9-kf12 capabilities, as well as adding kcbt.
+       + document the mouse handling mechanism in menu_driver and make a small
+         change in menu_driver's return codes to provide more consistency
+         (patch by Juergen Pfeifer).
+       + add fallback definition for NCURSES_CONST to termcap.h.in (reported
+         by Uchiyama Yasushi <uch@nop.or.jp>).
+       + move lib_restart.c to ncurses/base, since it uses curses functions
+         directly, and therefore cannot be used in libtinfo.so
+       + rename micro_char_size to micro_col_size, adding #define to retain
+         old name.
+       + add set_a_attributes and set_pglen_inch to terminfo structure, as per
+         XSI and Solaris 2.5.
+       + minor makefile files to build ncurses test_progs
+       + update html files in misc directory to reflect changes since 4.2
+
+990102
+       + disable scroll hints when hashmap is enabled (patch by Alexander
+         Lukyanov).
+       + move logic for tic's verify of -e option versus -I and -C so that the
+         terminfo data is not processed if we cannot handle -e (reported by
+         Steven Schwartz <steves@unitrends.com>.
+       + add test-driver traces to terminfo and termcap functions.
+       + provide support for termcap ospeed variable by copying it from the
+         internal cur_term member, and using ospeed as the baudrate reference
+         for the delay_output and tputs functions.  If an application does not
+         set ospeed, the library behaves as before, except that _nc_timed_wait
+         is no longer used, or needed, since ospeed always has a value.  But
+         the application can modify ospeed to adjust the output of padding
+         characters (from a bug report for screen 3.7.6 and email from Michael
+         Schroeder <Michael.Schroeder@informatik.uni-erlangen.de>).
+       + removed some unused ifdef's as part of Alexander's restructuring.
+       + reviewed/updated curses.h, term.h against X/Open Curses Issue 4
+         Version 2.  This includes making some parameters NCURSES_CONST
+         rather than const, e.g., in termcap.h.
+       + change linux terminfo entry to use ncv#2, since underline does not
+         work with color
+
+981226
+       + miscellaneous corrections for curses.h to match XSI.
+       + change --enable-no-padding configure option to be normally enabled.
+       + add section to ncurses manpage for environment variables.
+       + investigated Debian bug report that pertains to screen 3.7.4/3.7.6
+         changes, found no sign of problems on Linux (or on SunOS, Solaris)
+         running screen built with ncurses.
+       + check if tmp_fp is opened in tic.c before closing it (patch by Pavel
+         Roskin <pavel_roskin@geocities.com>).
+       + correct several font specification typos in man-pages.
+
+981220
+       + correct default value for BUILD_CC (reported by Larry Virden).
+
+981219
+       + modify _nc_set_writedir() to set a flag in _nc_tic_dir() to prevent
+         it from changing the terminfo directory after chdir'ing to it.
+         Otherwise, a relative path in $TERMINFO would confuse tic (from a
+         Debian bug report).
+       + correct/update ncsa terminfo entry (report by Larry Virden).
+       + update xterm-xfree86 terminfo to current (patch 90), smcur/rmcur changes
+       + add Mathew Vernon's mach console entries to terminfo.src
+       + more changes, moving functions, as part of Alexander's restructuring.
+       + modify configure script for GNU/Hurd share-library support, introduce
+         BUILD_CC variable for cross compiling (patch by Uchiyama Yasushi
+         <uch@nop.or.jp>)
+
+981212
+       + add environment variable NCURSES_NO_SETBUF to allow disabling the
+         setbuf feature, for testing purposes.
+       + correct ifdef's for termcap.h versus term.h that suppress redundant
+         declarations of prototypes (reported by H.J.Lu).
+       + modify Makefile.os2 to add linker flags which allow multiple copies
+         of an application to coexist (reported by Ilya Zakharevich).
+       + update Makefile.glibc and associated configure script so that ncurses
+         builds as a glibc add-on with the new directory configuration
+         (reported by H.J.Lu).
+
+981205
+       + modify gen_reps() function in gen.c to work properly on SunOS
+         (sparc), which is a left-to-right architecture.
+       + modify relative_move and tputs to avoid an interaction with the
+         BSD-style padding.  The relative_move function could produce a string
+         to replace on the screen which began with a numeric character, which
+         was then interpreted by tputs as padding.  Now relative_move will not
+         generate a string with a leading digit in that case (overwrite).
+         Also, tputs will only interpret padding if the string begins with a
+         digit; as coded it permitted a string to begin with a decimal point
+         or asterisk (reported by Larry Virden).
+       > patches by Juergen Pfeifer:
+       + fix a typo in m_driver.c mouse handling and improves the error
+         handling.
+       + fix broken mouse handling in the Ada95 binding
+       + make the Ada95 sample application menus work with the new menu mouse
+         support
+       + improve the mouse handling introduced by Ilya; it now handles menus
+         with spacing.
+       + repair a minor bug in the menu_driver code discovered during this
+         rework.
+       + add new function wmouse_trafo() to hide implementation details of
+         _yoffset member of WINDOW struct needed for mouse coordinate
+         transformation.
+
+981128
+       + modify Ada95/gen/gen.c to avoid using return-value of sprintf, since
+         some older implementations (e.g., SunOS 4.x) return the buffer
+         address rather than its length.
+       > patch by Rick Ohnemus:
+       + modify demo.cc to get it to compile with newer versions of egcs.
+       + trim a space that appears at the end of the table preprocessor lines
+         ('\" t).  This space prevents some versions of man from displaying
+         the pages - changed to remove all trailing whitespace (TD)
+       + finally, 'make clean' does not remove panel objects.
+       > patches by Ilya Zakharevich:
+       + allow remapping of OS/2 mouse buttons using environment variable
+         MOUSE_BUTTONS_123 with the default value 132.
+       + add mouse support to ncurses menus.
+
+981121
+       + modify misc/makedef.cmd to report old-style .def file symbols, and to
+         generate the .def files sorted by increasing names rather than the
+         reverse.
+       + add misc/*.ref which are J.J.G.Ripoll's dll definition files (renamed
+         from misc/*.old), and updated based on the entrypoint coding he used
+         for an older version of ncurses.
+       + add README.emx, to document how to build on OS/2 EMX.
+       + updates for config.guess, config.sub from Lynx
+       > patches by Ilya Zakharevich:
+       + minor fixes for mouse handling mode:
+         a) Do not initialize mouse if the request is to have no mouse;
+         b) Allow switching of OS/2 VIO mouse on and off.
+       + modify Makefile.os2 to support alternative means of generating
+         configure script, by translating Unix script with Perl.
+       > patches by Juergen Pfeifer:
+       + Updates MANIFEST to reflect changes in source structure
+       + Eliminates a problem introduced with my last patch for the C++
+         binding in the panels code.  It removes the update() call done in the
+         panel destructor.
+       + Changes in the Ada95 binding to better support systems where
+         sizeof(chtype)!=sizeof(int) (e.g.  DEC Alpha).
+
+981114
+       + modify install-script for manpages to skip over .orig and .rej files
+         (request by Larry Virden).
+       > patches/discussion by Alexander Lukyanov:
+       + move base-library sources into ncurses/base and tty (serial terminal)
+         sources into ncurses/tty, as part of Alexander Lukyanov's proposed
+         changes to ncurses library.
+       + copy _tracemouse() into ncurses.c so that lib_tracemse.c need not
+         be linked into the normal ncurses library.
+       + move macro winch to a function, to hide details of struct ldat
+       > patches by Juergen Pfeifer:
+       + fix a potential compile problem in cursesw.cc
+       + some Ada95 cosmetics
+       + fix a gen.c problem when compiling on 64-Bit machines
+       + fix Ada95/gen/Makefile.in "-L" linker switch
+       + modify Ada95 makefiles to use the INSTALL_PREFIX setting.
+
+981107
+       + ifdef'd out lib_freeall.c when not configured.
+       + rename _tracebits() to _nc_tracebits().
+       + move terminfo-library sources into ncurses/tinfo, and trace-support
+         functions into ncurses/trace as part of Alexander Lukyanov's proposed
+         changes to ncurses library.
+       + modify generated term.h to always specify its own definitions for
+         HAVE_TERMIOS_H, etc., to guard against inclusion by programs with
+         broken configure scripts.
+
+981031
+       + modify terminfo parsing to accept octal and hexadecimal constants,
+         like Solaris.
+       + remove an autoconf 2.10 artifact from the configure script's check
+         for "-g" compiler options.  (Though harmless, this confused someone
+         at Debian, who recently issued a patch that results in the opposite
+         effect).
+       + add configure option --with-ada-compiler to accommodate installations
+         that do not use gcc as the driver for GNAT (patch by Juergen
+         Pfeifer).
+
+981017
+       + ensure ./man exists in configure script, needed when configuring
+         with --srcdir option.
+       + modify infocmp "-r" option to remove limit on formatted termcap
+         output, which makes it more like Solaris' version.
+       + modify captoinfo to treat no-argument case more like Solaris' version,
+         which uses the contents of $TERMCAP as the entry to format.
+       + modify mk-2nd.awk to handle subdirectories, e.g., ncurses/tty
+         (patch by Alexander V Lukyanov).
+
+981010
+       + modify --with-terminfo-dirs option so that the default value is the
+         ${datadir} value, unless $TERMINFO_DIRS is already set.  This gets
+         rid of a hardcoded list of candidate directories in the configure
+         script.
+       + add some error-checking to _nc_read_file_entry() to ensure that
+         strings are properly terminated (Todd Miller).
+       + rename manpage file curs_scr_dmp.3x to curs_scr_dump.3x, to
+         correspond with contents (reported by Neil Zanella
+         <nzanella@cs.mun.ca>).
+       + remove redundant configure check for C++ which did not work when $CXX
+         was specified with a full pathname (reported by Andreas Jaeger).
+       + corrected bcopy/memmove check; the macro was not standalone.
+
+981003
+       + remove unnecessary portion of OS/2 EMX mouse change from
+         check_pending() (reported by Alexander V Lukyanov).
+
+980926
+       + implement mouse support for OS/2 EMX (adapted from patch against
+         4.2(?) by Ilya Zakharevich).
+       + add configure-check for bcopy/memmove, for 980919 changes to hashmap.
+       + merge Data General terminfo from Hasufin <hasufin@vidnet.net> - TD
+       + merge AIX 3.2.5 terminfo descriptions for IBM terminals, replaces
+         some older entries - TD
+       + modify tic to compile into %'char' form in preference to %{number},
+         since that is a little more efficient.
+       + minor correction to infocmp to avoid displaying "difference" between
+         two capabilities that are rendered in equivalent forms.
+       + add -g option to tic/infocmp to force character constants to be
+         displayed in quoted form.  Otherwise their decimal values are shown.
+       + modify setupterm so that cancelled strings are treated the same as
+         absent strings, cancelled and absent booleans false (does not affect
+         tic, infocmp).
+       + modify tic, infocmp to discard redundant i3, r3 strings when output
+         to termcap format.
+       > patch by Alexander V Lukyanov:
+       + improve performance of tparm, now it takes 19% instead of 25% when
+         profiling worm.
+       + rename maxlen/minlen to prec/width for better readability.
+       + use format string for printing strings.
+       + use len argument correctly in save_text, and pass it to save_number.
+
+980919
+       + make test_progs compile (but hashmap does not function).
+       + correct NC_BUFFERED macro, used in lib_mvcur test-driver, modify
+         associated logic to avoid freeing the SP->_setbuf data.
+       + add modules home_terminfo and getenv_num to libtinfo.
+       + move write_entry to libtinfo, to work with termcap caching.
+       + minor fixes to blue.c to build with atac.
+       + remove softscroll.c module; no longer needed for testing.
+       > patches by Todd C Miller:
+       + use strtol(3) instead of atoi(3) when parsing env variables so we can
+         detect a bogus (non-numeric) value.
+       + check for terminal names > MAX_NAME_SIZE in a few more places when
+         dealing with env variables again.
+       + fix a MAX_NAME_SIZE that should be MAX_NAME_SIZE+1
+       + use sizeof instead of strlen(3) on PRIVATE_INFO since it is a fixed
+         string #define (compile time vs runtime).
+       + when setting errno to ENOMEM, set it right before the return, not
+         before code that could, possibly, set errno to a different value.
+       > patches by Alexander V Lukyanov:
+       + use default background in update_cost_from_blank()
+       + disable scroll-hints when hashmap is configured.
+       + improve integration of hashmap scrolling code, by adding oldhash and
+         newhash data to SP struct.
+       + invoke del_curterm from delscreen.
+       + modify del_curterm to set cur_term to null if it matches the function's
+         parameter which is deleted.
+       + modify lib_doupdate to prefer parm_ich to the enter_insert_mode and
+         exit_insert_mode combination, adjusting InsCharCost to check
+         enter_insert_mode, exit_insert_mode and insert_padding.  Add
+         insert_padding in insert mode after each char.  This adds new costs
+         to the SP struct.
+
+980912
+       + modify test-driver in lib_mvcur.s to use _nc_setbuffer, for consistent
+         treatment.
+       + modify ncurses to restore output to unbuffered on endwin, and resume
+         buffering in refresh (see lib_set_term.c and NC_BUFFERED macro).
+       + corrected HTML version numbers (according to the W3C validator, they
+         never were HTML 2.0-compliant, but are acceptable 3.0).
+
+980905
+       + modify MKterminfo.sh to generate terminfo.5 with tables sorted by
+         capability name, as in SVr4.
+       + modified term.h, termcap.h headers to avoid redundant declarations.
+       + change 'u_int' type in tset.c to unsigned, making this compile on
+         Sequent PRX 4.1 (reported by Michael Sterrett <msterret@coat.com>).
+
+980829
+       + corrections to mailing addresses, and moving the magic line that
+         causes the man program to invoke tbl to the first line of each
+         manpage (patch by Rick Ohnemus <rick@ecompcon.com>).
+       + add Makefile.os2 and supporting scripts to generate dll's on OS/2 EMX
+         (from J.J.G.Ripoll, with further integration by TD).
+       + correct a typo in icl6404 terminfo entry.
+       + add xtermm and xtermc terminfo entries.
+       > from esr's terminfo version:
+       + Added Francesco Potorti's tuned Wyse 99 entries.
+       + dtterm enacs correction from Alexander V Lukyanov.
+       + Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version.
+
+980822
+       + document AT&T acs characters in terminfo.5 manpage.
+       + use EMX _scrsize() function if terminfo and environment do not
+         declare the screen size (reported by Ilya Zakharevich
+         <ilya@math.ohio-state.edu>).
+       + remove spurious '\' characters from eterm and osborne terminfo
+         entries (prompted by an old Debian bug report).
+       + correct reversed malloc/realloc calls in _nc_doalloc (reported by
+         Hans-Joachim Widmaier <hjwidmai@foxboro.com>).
+       + correct misplaced parenthesis which caused file-descriptor from
+         opening termcap to be lost, from 980725 changes (reported by Andreas
+         Jaeger).
+
+980815
+       + modify lib_setup.c to eliminate unneeded include of <sys/ioctl.h> when
+         termios is not used (patch by Todd C Miller).
+       + add function _nc_doalloc, to ensure that failed realloc calls do not
+         leak memory (reported by Todd C Miller).
+       + improved ncsa-telnet terminfo entry.
+
+980809
+       + correct missing braces around a trace statement in read_entry.c,
+         from 980808 (reported by Kim DeVaughn <kimdv@best.com> and Liviu
+         Daia).
+
+980808
+       + fix missing include <errno.h> in ditto.c (reported by Bernhard
+         Rosenkraenzer <bero@k5.sucks.eu.org>)
+       + add NCSA telnet terminfo entries from Francesco Potorti
+         <F.Potorti@cnuce.cnr.it>, from Debian bug reports.
+       + make handling of $LINES and $COLUMNS variables more compatible with
+         Solaris by allowing them to individually override the window size
+         as obtained via ioctl.
+
+980801
+       + modify lib_vidattr.c to allow for terminal types (e.g., xterm-color)
+         which may reset all attributes in the 'op' capability, so that colors
+         are set before turning on bold and other attributes, but still after
+         turning attributes off.
+       + add 'ditto.c' to test directory to illustrate use of newterm for
+         initializing multiple screens.
+       + modify _nc_write_entry() to recover from failed attempt to link alias
+         for a terminfo on a filesystem which does not preserve character case
+         (reported by Peter L Jordan <PJordan@chla.usc.edu>).
+
+980725
+       + updated versions of config.guess and config.sub based on automake 1.3
+       + change name-comparisons in lib_termcap to compare no more than 2
+         characters (gleaned from Debian distribution of 1.9.9g-8.8, verified
+         with Solaris curses).
+       + fix typo in curs_insstr.3x (patch by Todd C Miller)
+       + use 'access()' to check if ncurses library should be permitted to
+         open or modify files with fopen/open/link/unlink/remove calls, in
+         case the calling application is running in setuid mode (request by
+         Cristian Gafton <gafton@redhat.com>, responding to Duncan Simpson
+         <dps@io.stargate.co.uk>).
+       + arm100 terminfo entries from Dave Millen <dmill@globalnet.co.uk>).
+       + qnxt2 and minitel terminfo entries from esr's version.
+
+980718
+       + use -R option with ldconfig on FreeBSD because otherwise it resets
+         the search path to /usr/lib (reported by Dan Nelson).
+       + add -soname option when building shared libraries on OpenBSD 2.x
+         (request by QingLong).
+       + add configure options --with-manpage-format and --with-manpage-renames
+         (request by QingLong).
+       + correct conversion of CANCELLED_NUMERIC in write_object(), which was
+         omitting the high-order byte, producing a 254 in the compiled
+         terminfo.
+       + modify return-values of tgetflag, tgetnum, tgetstr, tigetflag,
+         tigetnum and tigetstr to be compatible with Solaris (gleaned from
+         Debian distribution of 1.9.9g-8.8).
+       + modify _nc_syserr_abort to abort only when compiled for debugging,
+         otherwise simply exit with an error.
+
+980711
+       + modify Ada95 'gen' program to use appropriate library suffix (e.g.,
+         "_g" for a debug build).
+       + update Ada95 'make clean' rule to include generics .ali files
+       + add a configure test to ensure that if GNAT is found, that it can
+         compile/link working Ada95 program.
+       + flush output in beep and flash functions, fixing a problem with
+         getstr (patch by Alexander V Lukyanov)
+       + fix egcs 1.0.2 warning for etip.h (patch by Chris Johns).
+       + correct ifdef/brace nesting in lib_sprintf.c (patch by Bernhard
+         Rosenkraenzer <bero@Pool.Informatik.RWTH-Aachen.DE>).
+       + correct typo in wattr_get macro from 980509 fixes (patch by Dan
+         Nelson).
+
+980704
+       + merge changes from current XFree86 xterm terminfo descriptions.
+       + add configure option '--without-ada'.
+       + add a smart-default for termcap 'ac' to terminfo 'acs_chars' which
+         corresponds to vt100.
+       + change translation for termcap 'rs' to terminfo 'rs2', which is
+         the documented equivalent, rather than 'rs1'.
+
+980627
+       + slow 'worm' down a little, for very fast machines.
+       + corrected firstchar/lastchar computation in lib_hline.c
+       + simplify some expressions with CHANGED_CELL, CHANGED_RANGE and
+         CHANGED_TO_EOL macros.
+       + modify init_pair so that if a color-pair is reinitialized, we will
+         repaint the areas of the screen whose color changes, like SVr4 curses
+         (reported by Christian Maurer <maurer@inf.fu-berlin.de>).
+       + modify getsyx/setsyx macros to comply with SVr4 man-page which
+         says that leaveok() affects their behavior (report by Darryl Miles,
+         patch by Alexander V Lukyanov).
+
+980620
+       + review terminfo.5 against Solaris 2.6 curses version, corrected
+         several minor errors/omissions.
+       + implement tparm %l format.
+       + implement tparm printf-style width and precision for %s, %d, %x, %o
+         as per XSI.
+       + implement tparm dynamic variables (reported by Xiaodan Tang).
+
+980613
+       + update man-page for for wattr_set, wattr_get (cf:  980509)
+       + correct limits in hashtest, which would cause nonprinting characters
+         to be written to large screens.
+       + correct configure script, when --without-cxx was specified:  the
+         wrong variable was used for cf_cv_type_of_bool.  Compilers up to gcc
+         2.8 tolerated the missing 'int'.
+       + remove the hardcoded name "gcc" for the GNU Ada compiler.  The
+         compiler's name might be something like "egcs" (patch by Juergen
+         Pfeifer).
+       + correct curs_addch.3x, which implied that echochar could directly
+         display control characters (patch by Alexander V Lukyanov).
+       + fix typos in ncurses-intro.html (patch by Sidik Isani
+         <isani@cfht.hawaii.edu>)
+
+980606
+       + add configure test for conflicting use of exception in math.h and
+         other headers.
+       + minor optimization to 'hash()' function in hashmap.c, reduces its
+         time by 10%.
+       + correct form of LD_SHARED_OPTS for HP-UX 10.x (patch by Tim Mooney).
+       + fix missing quotes for 'print' in MKunctrl.awk script (reported by
+         Mihai Budiu <mihaib@gs41.sp.cs.cmu.edu>).
+       > patch by Alexander V Lukyanov:
+       + correct problem on Solaris (with poll() function) where getch could
+         hang indefinitely even if timeout(x) was called.  This turned out to
+         be because milliseconds was not updated before 'goto retry' in
+         _nc_timed_wait.
+       + simplified the function _nc_timed_wait and fixed another bug, which
+         was the assumption of !GOOD_SELECT && HAVE_GETTIMEOFDAY in *timeleft
+         assignment.
+       + removed the cycle on EINTR, as it seems to be useless.
+
+980530
+       + add makefile-rule for test/keynames
+       + modify run_tic.sh and shlib to ensure that user's .profile does not
+         override the $PATH used to run tic (patch by Tim Mooney).
+       + restore LD_SHARED_OPTS to $(LD_SHARED_FLAGS) when linking programs,
+         needed for HP-UX shared-library path (recommended by Tim Mooney).
+       + remove special case of HP-UX -L options, use +b options to embed
+         $(libdir) in the shared libraries (recommended by Tim Mooney).
+       + add checks for some possible buffer overflows and unchecked
+         malloc/realloc/calloc/strdup return values (patch by Todd C Miller
+         <Todd.Miller@courtesan.com>)
+
+980523
+       + correct maxx/maxy expression for num_columns/num_lines in derwin
+         (patch by Alexander V Lukyanov).
+       + add /usr/share/lib/terminfo and /usr/lib/terminfo as compatibilty
+         fallbacks to _nc_read_entry(), along with --with-terminfo-dirs
+         configure option (suggested by Mike Hopkirk).
+       + modify config.guess to recognize Unixware 2.1 and 7 (patch by Mike
+         Hopkirk <hops@sco.com>).
+       + suppress definition of CC_SHARED_OPTS in LDFLAGS_SHARED in c++
+         Makefile.in, since this conflicts when g++ is used with HP-UX
+         compiler (reported by Tim Mooney).
+       + parenthesize 'strcpy' calls in c++ binding to workaround redefinition
+         in some C++ implementations (reported by several people running
+         egcs with glibc 2.0.93, analysis by Andreas Jaeger.
+
+980516
+       + modify write_entry.c so that it will not attempt to link aliases
+         with embedded '/', but give only a warning.
+       + put -L$(libdir) first when linking programs, except for HP-UX.
+       + modify comp_scan.c to handle SVr4 terminfo description for att477,
+         which contains a colon in the description field.
+       + modify configure script to support SCO osr5.0.5 shared libraries
+         (from comp.unix.sco.programmer newsgroup item by Mike Hopkirk
+         <hops@sco.com>).
+       + eliminate extra GoTo call in lib_doupdate.c (patch by Alexander V.
+         Lukyanov).
+       + minor adjustments of const/NCURSES_CONST from IRIX compile.
+       + add updates based on esr's 980509 version of terminfo.src.
+
+980509
+       + correct macros for wattr_set, wattr_get, separate wattrset macro from
+         these to preserve behavior that allows attributes to be combined with
+         color pair numbers.
+       + add configure option --enable-no-padding, to allow environment
+         variable $NCURSES_NO_PADDING to eliminate non-mandatory padding,
+         thereby making terminal emulators (e.g., for vt100) a little more
+         efficient (request by Daniel Eisenbud <eisenbud@cs.swarthmore.edu>).
+       + modify configure script to embed ABI in shared libraries for HP-UX
+         10.x (detailed request by Tim Mooney).
+       + add test/example of the 'filter()' function.
+       + add nxterm and xterm-color terminfo description (request by Cristian
+         Gafton <gafton@redhat.com>).
+       + modify rxvt terminfo description to clear alternate screen before
+         switching back to normal screen, for compatibility with applications
+         which use xterm (reported by Manoj Kasichainula <manojk@io.com>).
+       + modify linux terminfo description to reset color palette (reported
+         by Telford Tendys <telford@eng.uts.edu.au>).
+       + correction to doupdate, for case where terminal does not support
+         insert/delete character.  The logic did not check that there was a
+         difference in alignment of changes to old/new screens before
+         repainting the whole non-blank portion of the line.  Modified to fall
+         through into logic that reduces by the portion which does not differ
+         (reported by Daniel Eisenbud <eisenbud@cs.swarthmore.edu>).
+       + minor performance improvement to wnoutrefresh by moving some
+         comparisons out of inner loop.
+
+980425
+       + modify configure script to substitute NCURSES_CONST in curses.h
+       + updated terminfo entries for xterm-xf86-v40, xterm-16color,
+         xterm-8bit to correspond to XFree86 3.9Ag.
+       + remove restriction that forces ncurses to use setaf/setab if the
+         number of colors is greater than 8.  (see 970524 for xterm-16color).
+       + change order of -L options (so that $(libdir) is searched first) when
+         linking tic and other programs, to workaround HP's linker.
+         Otherwise, the -L../lib is embedded when linking against shared
+         libraries and the installed program does not run (reported by Ralf
+         Hildebrandt).
+       + modify configuration of shared libraries on Digital Unix so that
+         versioning is embedded in the library, rather than implied by
+         links (patch by Tim Mooney).
+
+980418
+       + modify etip.h to avoid conflict with math.h on HP-UX 9.03 with gcc
+         2.8.1 which redefines 'exception' (reported by Ralf Hildebrandt
+         <R.Hildebrandt@tu-bs.de>).
+       + correct configure tests in CF_SHARED_OPTS which used $CC value to
+         check for gcc, rather than autoconf's $GCC value.  This did not
+         work properly if the full pathname of the compiler were given
+         (reported by Michael Yount <yount@csf.Colorado.edu>).
+       + revise check for compiler options to force ANSI mode since repeating
+         an option such as -Aa causes HP's compiler to fail on its own headers
+         (reported by Clint Olsen <olsenc@ichips.intel.com>).
+
+980411
+       + ifdef'd has_key() and mcprint() as extended functions.
+       + modified several prototypes to correspond with 1997 version of
+         X/Open Curses (affects ABI since developers have used attr_get).
+       + remove spurious trailing blanks in glibc addon-scripts (patch by
+         H.J.Lu).
+       + insert a few braces at locations where gcc-2.8.x asks to use them to
+         avoid ambigous else's, use -fpic rather than -fPIC for Linux (patch
+         by Juergen Pfeifer).
+
+980404
+       + split SHLIB_LIST into SHLIB_DIRS/SHLIB_LIST to keep -L options
+         before -l to accommodate Solaris' linker (reported by Larry Virden).
+
+980328
+       + modify lib_color.c to eliminate dependency on orig_colors and
+         orig_pair, since SVr4 curses does not require these either, but
+         uses them when they are available.
+       + add detailed usage-message to infocmp.
+       + correct a typo in att6386 entry (a "%?" which was "?").
+       + add -f option to infocmp and tic, which formats the terminfo
+         if/then/else/endif so that they are readable (with newlines and
+         tabs).
+       + fixes for glibc addon scripts (patch by H.J.Lu).
+
+980321
+       + revise configure macro CF_SPEED_TYPE so that termcap.h has speed_t
+         declared (from Adam J. Richter <adam@yggdrasil.com>)
+       + remove spurious curs_set() call from leaveok() (J.T.Conklin).
+       + corrected handling leaveok() in doupdate() (patch by Alexander V.
+         Lukyanov).
+       + improved version of wredrawln (patch by Alexander V. Lukyanov).
+       + correct c++/Makefile.in so install target do not have embedded ../lib
+         to confuse it (patch by Thomas Graf <graf@essi.fr>).
+       + add warning to preinstall rule which checks if the installer would
+         overwrite a curses.h or termcap.h that is not derived from ncurses.
+         (The recommended configuration for developers who need both is to
+         use --disable-overwrite).
+       + modify preinstall rule in top-level Makefile to avoid implicit
+         use of 'sh', to accommodate Ultrix 4.4 (reported by Joao Palhoto
+         Matos <jmatos@math.ist.utl.pt>, patch by Thomas Esser
+         <te@informatik.uni-hannover.de>)
+       + refine ifdef's for TRACE so that libncurses has fewer dependencies
+         on libtinfo when TRACE is disabled.
+       + modify configure script so that if the --with-termlib option is used
+         to generate a separate terminfo library, we chain it to the ncurses
+         library with a "-l" option (reported by Darryl Miles and Ian T.
+         Zimmerman).
+
+980314
+       + correct limits and window in wredrawln function (reported/analysis by
+         Alexander V. Lukyanov).
+       + correct sed expression in configure script for --with-fallback
+         option (patch by Jesse Thilo).
+       + correct some places in configure script where $enableval was used
+         rather than $withval (patch by Darryl Miles <dlm@g7led.demon.co.uk>).
+       + modify some man-pages so no '.' or '..' falls between TH and SH
+         macros, to accommodate man_db program (reported by Ian T. Zimmerman
+         <itz@rahul.net>).
+       + terminfo.src 10.2.1 from Eric's webpage.
+       > several changes by Juergen Pfeifer:
+       + add copyright notices (and rcs id's) on remaining man-pages.
+       + corrected prototypes for slk_* functions, using chtype rather than
+         attr_t.
+       + implemented the wcolor_set() and slk_color() functions
+       + the slk_attr_{set,off,on} functions need an additional void*
+         parameter according to XSI.
+       + fix the C++ and Ada95 binding as well as the man pages to
+         reflect above enhancements.
+
+980307
+       + use 'stat()' rather than 'access()' in toe.c to check for the
+         existence of $HOME/.terminfo, since it may be a file.
+       + suppress configure CF_CXX_LIBRARY check if we are not using g++
+         2.7.x, since this is not needed with g++ 2.8 or egcs (patch by
+         Juergen Pfeifer).
+       + turn on hashmap scrolling code by default, intend to remedy defects
+         by 4.3 release.
+       + minor corrections to terminfo.src changelog.
+
+980302 4.2 release for upload to prep.ai.mit.edu
+       + correct Florian's email address in ncurses-intro.html
+       + terminfo.src 10.2.0 from Eric.
+
 980228 pre-release
        + add linux-koi8r replace linux-koi8, which is not KOI8 (patch by
          QingLong <qinglong@Bolizm.ihep.su>).
@@ -87,7 +1244,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
        + remove sgr string from qnx terminfo entry since it is reported to
          turn off attributes inconsistently.
 
-980124 
+980124
        + add f/F/b/B commands to ncurses 'b' test to toggle colors, providing
          test for no_color_video.
        + adjusted emx.src to use no_color_video, now works with ncurses 'b'
diff --git a/README b/README
index cf1ab656612f25004446ff506dde2db2d33d2e7d..8b8c78ac29a3d93654199c02e5b96ddaa358baaf 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
--- $Id: README,v 1.17 1998/02/15 01:26:47 tom Exp $
+-- $Id: README,v 1.19 1999/10/23 20:39:24 tom Exp $
 -------------------------------------------------------------------------------
                README file for the ncurses package
 
@@ -18,7 +18,7 @@ You should be reading this file in a directory called:  ncurses-d.d, where d.d
 is the current version number (see the dist.mk file in this directory for
 that).  There should be a number of subdirectories, including `c++', `form',
 `man', `menu', `misc', `ncurses', `panel', `progs', `test', 'tack' and `Ada95'. 
-(The 'tack' program is distributed separately).
+(The 'tack' program may be distributed separately).
 
 A full build/install of this package typically installs several libraries, a
 handful of utilities, and a database hierarchy.  Here is an inventory of the
@@ -114,7 +114,7 @@ Pavel Curtis:
 Zeyd M. Ben-Halim:
        port of original to Linux and many enhancements.
 
-Thomas Dickey (maintainer since 1.9.9e):
+Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0):
        configuration scripts, porting, mods to adhere to XSI Curses in the
        areas of background color, terminal modes.  Also memory leak testing,
        the wresize, default colors and key definition extensions and numerous
diff --git a/README.emx b/README.emx
new file mode 100644 (file)
index 0000000..4fa430a
--- /dev/null
@@ -0,0 +1,48 @@
+-- $Id: README.emx,v 1.1 1998/11/21 20:13:05 tom Exp $
+-- Author: Thomas Dickey <dickey@clark.net>
+-------------------------------------------------------------------------------
+
+You can build ncurses on OS/2 in the EMX environment.  But you must build and
+acquire tools.  Not all of the tools distributed with EMX work properly, and
+some additional ones are required.
+
+First, the configure script distributed with ncurses will not run as-is in EMX. 
+You can generate a new one if you have autoconf built for EMX.  You will need
+the EMX development tools, of course.  Get these programs to start:
+
+       GNU m4 program (version 1.4)
+       GNU autoconf (version 2.12).
+       GNU patch (version 2.5)
+
+Apply the autoconf patches from
+
+       http://www.clark.net/pub/dickey/autoconf
+       ftp://ftp.clark.net/pub/dickey/autoconf
+
+These are ordered by date:
+
+       autoconf-2.12-970309.patch
+       autoconf-2.12-970429.patch
+       autoconf-2.12-971222-emx.patch
+       autoconf-2.12-971222.patch
+       autoconf-2.12-971230.patch
+
+I built my development environment for ncurses using EMX 0.9c at the end of
+1997.  Much of the EMX patch for autoconf was done originally by J.J.G.Ripoll,
+using a similar environment (he prefers using the 'ash' shell).  Newer versions
+may fix these problems:
+
+       + The pdksh program distributed at Hobbes and Leo (with a 1996 date) is
+         defective.  It does not process "here documents" correctly (which
+         renders it useless for running the autoconf script).  I built my own
+         copy of pdksh 5.2.13, which does have the bug corrected (documented
+         in the change log for pdksh).
+
+       + I also built from sources (because the distributed binaries did not
+         work) the cmp, diff programs.
+         
+         Other required utilities such as ar, cat, chmod, cp, gawk, grep, mv,
+         ls, rm, mkdir, sed, sort and tr worked.
+
+Once you have autoconf patched and installed, run 'autoconf' from the top-level
+directory of ncurses to generate the EMX-specific configure script.
diff --git a/TO-DO b/TO-DO
index 57c87f85bd68e28a0bf3a25dfe5ec74cd8150a00..21e8ee0ca9ebd9a719758cdfd6439a2e0be75837 100644 (file)
--- a/TO-DO
+++ b/TO-DO
@@ -1,9 +1,12 @@
--- $Id: TO-DO,v 1.38 1997/10/11 14:47:42 tom Exp $
+-- $Id: TO-DO,v 1.39 1998/07/12 00:25:39 tom Exp $
 
 SHORT-TERM TO-DO ITEMS:
 
 Known Problems:
 
+* GNAT does not put libraries in the correct order, so a build only links
+  properly if you use shared libraries since -lncurses is first.
+
 * XPG4 specifies that the enhanced features are not available unless the
   _XOPEN_SOURCE_EXTENDED test macro is defined by the application.  Ncurses uses
   this macro (incorrectly) to address a dependency upon wchar_t.  The functions
index dbc6baa2d118d388b6015accfee8c7794253ac30..b4edb242bb98ec10c43ed693acab4c921dc48e35 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright (c) 1998 Free Software Foundation, Inc.                        *
+dnl Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
 dnl copy of this software and associated documentation files (the            *
@@ -28,7 +28,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
 dnl
-dnl $Id: aclocal.m4,v 1.121 1998/02/11 12:13:40 tom Exp $
+dnl $Id: aclocal.m4,v 1.179 1999/10/23 21:49:25 tom Exp $
 dnl Macros used in NCURSES auto-configuration script.
 dnl
 dnl ---------------------------------------------------------------------------
@@ -55,6 +55,72 @@ fi
 AC_SUBST(ACPPFLAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES'
+dnl in the sharutils 4.2 distribution.
+AC_DEFUN([CF_ANSI_CC_CHECK],
+[
+AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
+AC_CACHE_VAL(cf_cv_ansi_cc,[
+cf_cv_ansi_cc=no
+cf_save_CFLAGS="$CFLAGS"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX                  -qlanglvl=ansi
+# Ultrix and OSF/1     -std1
+# HP-UX                        -Aa -D_HPUX_SOURCE
+# SVR4                 -Xc
+# UnixWare 1.2         (cannot use -Xc, since ANSI/POSIX clashes)
+for cf_arg in "-DCC_HAS_PROTOS" \
+       "" \
+       -qlanglvl=ansi \
+       -std1 \
+       "-Aa -D_HPUX_SOURCE +e" \
+       "-Aa -D_HPUX_SOURCE" \
+       -Xc
+do
+       CFLAGS="$cf_save_CFLAGS $cf_arg"
+       AC_TRY_COMPILE(
+[
+#ifndef CC_HAS_PROTOS
+#if !defined(__STDC__) || (__STDC__ != 1)
+choke me
+#endif
+#endif
+],[
+       int test (int i, double x);
+       struct s1 {int (*f) (int a);};
+       struct s2 {int (*f) (double a);};],
+       [cf_cv_ansi_cc="$cf_arg"; break])
+done
+CFLAGS="$cf_save_CFLAGS"
+])
+AC_MSG_RESULT($cf_cv_ansi_cc)
+
+if test "$cf_cv_ansi_cc" != "no"; then
+if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
+       CFLAGS="$CFLAGS $cf_cv_ansi_cc"
+else
+       AC_DEFINE(CC_HAS_PROTOS)
+fi
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl For programs that must use an ANSI compiler, obtain compiler options that
+dnl will make it recognize prototypes.  We'll do preprocessor checks in other
+dnl macros, since tools such as unproto can fake prototypes, but only part of
+dnl the preprocessor.
+AC_DEFUN([CF_ANSI_CC_REQD],
+[AC_REQUIRE([CF_ANSI_CC_CHECK])
+if test "$cf_cv_ansi_cc" = "no"; then
+       AC_ERROR(
+[Your compiler does not appear to recognize prototypes.
+You have the following choices:
+       a. adjust your compiler options
+       b. get an up-to-date compiler
+       c. use a wrapper such as unproto])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl Test if 'bool' is a builtin type in the configured C++ compiler.  Some
 dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc
 dnl 2.6.3 does, in anticipation of the ANSI C++ standard.
@@ -63,13 +129,16 @@ dnl Treat the configuration-variable specially here, since we're directly
 dnl substituting its value (i.e., 1/0).
 AC_DEFUN([CF_BOOL_DECL],
 [
-AC_MSG_CHECKING([for builtin c++ bool type])
-AC_CACHE_VAL(cf_cv_builtin_bool,[
-       AC_TRY_COMPILE([],[bool x = false],
-               [cf_cv_builtin_bool=1],
-               [cf_cv_builtin_bool=0])
+AC_MSG_CHECKING([for builtin ifelse(AC_LANG,[C],$CC,$CXX) bool type])
+AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
+       AC_TRY_COMPILE([
+#include <stdio.h>
+#include <sys/types.h>
+],[bool x = false],
+               [ifelse($1,,cf_cv_builtin_bool,[$1])=1],
+               [ifelse($1,,cf_cv_builtin_bool,[$1])=0])
        ])
-if test $cf_cv_builtin_bool = 1
+if test $ifelse($1,,cf_cv_builtin_bool,[$1]) = 1
 then   AC_MSG_RESULT(yes)
 else   AC_MSG_RESULT(no)
 fi
@@ -79,13 +148,17 @@ dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type).
 dnl Don't bother looking for bool.h, since it's been deprecated.
 AC_DEFUN([CF_BOOL_SIZE],
 [
-AC_MSG_CHECKING([for size of c++ bool])
+AC_MSG_CHECKING([for size of ifelse(AC_LANG,[C],$CC,$CXX) bool])
 AC_CACHE_VAL(cf_cv_type_of_bool,[
        rm -f cf_test.out
        AC_TRY_RUN([
 #include <stdlib.h>
 #include <stdio.h>
-#if HAVE_BUILTIN_H
+#if HAVE_GXX_BUILTIN_H
+#include <g++/builtin.h>
+#elif HAVE_GPP_BUILTIN_H
+#include <gpp/builtin.h>
+#elif HAVE_BUILTIN_H
 #include <builtin.h>
 #endif
 main()
@@ -93,7 +166,7 @@ main()
        FILE *fp = fopen("cf_test.out", "w");
        if (fp != 0) {
                bool x = true;
-               if ((-x) >= 0)
+               if ((bool)(-x) >= 0)
                        fputs("unsigned ", fp);
                if (sizeof(x) == sizeof(int))       fputs("int",  fp);
                else if (sizeof(x) == sizeof(char)) fputs("char", fp);
@@ -168,47 +241,6 @@ AC_MSG_RESULT($includedir)
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl Check for data that is usually declared in <stdio.h> or <errno.h>
-dnl $1 = the name to check
-AC_DEFUN([CF_CHECK_ERRNO],
-[
-AC_MSG_CHECKING([declaration of $1])
-AC_CACHE_VAL(cf_cv_dcl_$1,[
-    AC_TRY_COMPILE([
-#include <stdio.h>
-#include <sys/types.h>
-#include <errno.h> ],
-    [long x = (long) $1],
-    [eval 'cf_cv_dcl_'$1'=yes'],
-    [eval 'cf_cv_dcl_'$1'=no]')])
-eval 'cf_result=$cf_cv_dcl_'$1
-AC_MSG_RESULT($cf_result)
-
-# It's possible (for near-UNIX clones) that the data doesn't exist
-AC_CACHE_VAL(cf_cv_have_$1,[
-if test $cf_result = no ; then
-    eval 'cf_result=DECL_'$1
-    CF_UPPER(cf_result,$cf_result)
-    AC_DEFINE_UNQUOTED($cf_result)
-    AC_MSG_CHECKING([existence of $1])
-        AC_TRY_LINK([
-#undef $1
-extern long $1;
-],
-            [$1 = 2],
-            [eval 'cf_cv_have_'$1'=yes'],
-            [eval 'cf_cv_have_'$1'=no'])
-        eval 'cf_result=$cf_cv_have_'$1
-        AC_MSG_RESULT($cf_result)
-else
-    eval 'cf_cv_have_'$1'=yes'
-fi
-])
-eval 'cf_result=HAVE_'$1
-CF_UPPER(cf_result,$cf_result)
-eval 'test $cf_cv_have_'$1' = yes && AC_DEFINE_UNQUOTED($cf_result)'
-])dnl
-dnl ---------------------------------------------------------------------------
 dnl Check if the terminal-capability database functions are available.  If not,
 dnl ncurses has a much-reduced version.
 AC_DEFUN([CF_CGETENT],[
@@ -234,7 +266,7 @@ dnl Check if we're accidentally using a cache from a different machine.
 dnl Derive the system name, as a check for reusing the autoconf cache.
 dnl
 dnl If we've packaged config.guess and config.sub, run that (since it does a
-dnl better job than uname). 
+dnl better job than uname).
 AC_DEFUN([CF_CHECK_CACHE],
 [
 if test -f $srcdir/config.guess ; then
@@ -258,26 +290,99 @@ if test ".$system_name" != ".$cf_cv_system_name" ; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl If we're trying to use g++, test if libg++ is installed (a rather common
-dnl problem :-).  If we have the compiler but no library, we'll be able to
-dnl configure, but won't be able to build the c++ demo program.
-AC_DEFUN([CF_CXX_LIBRARY],
+dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g.,
+dnl the 'errno' variable.  Define a DECL_xxx symbol if we must declare it
+dnl ourselves.
+dnl
+dnl (I would use AC_CACHE_CHECK here, but it will not work when called in a
+dnl loop from CF_SYS_ERRLIST).
+dnl
+dnl $1 = the name to check
+AC_DEFUN([CF_CHECK_ERRNO],
 [
-cf_cxx_library=unknown
-if test $ac_cv_prog_gxx = yes; then
-       AC_MSG_CHECKING([for libg++])
-       cf_save="$LIBS"
-       LIBS="$LIBS -lg++ -lm"
-       AC_TRY_LINK([
-#include <builtin.h>
-       ],
-       [float foo=abs(1.0)],
-       [cf_cxx_library=yes
-        CXXLIBS="$CXXLIBS -lg++ -lm"],
-       [cf_cxx_library=no])
-       LIBS="$cf_save"
-       AC_MSG_RESULT($cf_cxx_library)
+AC_MSG_CHECKING(if external $1 is declared)
+AC_CACHE_VAL(cf_cv_dcl_$1,[
+    AC_TRY_COMPILE([
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#include <sys/types.h>
+#include <errno.h> ],
+    [long x = (long) $1],
+    [eval 'cf_cv_dcl_'$1'=yes'],
+    [eval 'cf_cv_dcl_'$1'=no]')
+])
+
+eval 'cf_result=$cf_cv_dcl_'$1
+AC_MSG_RESULT($cf_result)
+
+if test "$cf_result" = no ; then
+    eval 'cf_result=DECL_'$1
+    CF_UPPER(cf_result,$cf_result)
+    AC_DEFINE_UNQUOTED($cf_result)
+fi
+
+# It's possible (for near-UNIX clones) that the data doesn't exist
+CF_CHECK_EXTERN_DATA($1,int)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl Check for existence of external data in the current set of libraries.  If
+dnl we can modify it, it's real enough.
+dnl $1 = the name to check
+dnl $2 = its type
+AC_DEFUN([CF_CHECK_EXTERN_DATA],
+[
+AC_MSG_CHECKING(if external $1 exists)
+AC_CACHE_VAL(cf_cv_have_$1,[
+    AC_TRY_LINK([
+#undef $1
+extern $2 $1;
+],
+    [$1 = 2],
+    [eval 'cf_cv_have_'$1'=yes'],
+    [eval 'cf_cv_have_'$1'=no'])])
+
+eval 'cf_result=$cf_cv_have_'$1
+AC_MSG_RESULT($cf_result)
+
+if test "$cf_result" = yes ; then
+    eval 'cf_result=HAVE_'$1
+    CF_UPPER(cf_result,$cf_result)
+    AC_DEFINE_UNQUOTED($cf_result)
+fi
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl Check if the C++ compiler accepts duplicate parameter initialization.  This
+dnl is a late feature for the standard and is not in some recent compilers
+dnl (1999/9/11).
+AC_DEFUN([CF_CPP_PARAM_INIT],
+[
+if test -n "$CXX" ; then
+AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[
+       AC_LANG_CPLUSPLUS
+       AC_TRY_RUN([
+class TEST {
+private:
+       int value;
+public:
+       TEST(int x = 1);
+       ~TEST();
+};
+
+TEST::TEST(int x = 1)  // some compilers do not like second initializer
+{
+       value = x;
+}
+void main() { }
+],
+       [cf_cv_cpp_param_init=yes],
+       [cf_cv_cpp_param_init=no],
+       [cf_cv_cpp_param_init=unknown])
+])
 fi
+test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT)
 ])dnl
 dnl ---------------------------------------------------------------------------
 AC_DEFUN([CF_DIRS_TO_MAKE],
@@ -301,6 +406,63 @@ AC_DEFUN([CF_ERRNO],
 CF_CHECK_ERRNO(errno)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
+dnl math.h and builtin.h, only for ncurses
+AC_DEFUN([CF_ETIP_DEFINES],
+[
+AC_MSG_CHECKING(for special defines needed for etip.h)
+cf_save_CXXFLAGS="$CXXFLAGS"
+cf_result="none"
+for cf_math in "" MATH_H
+do
+for cf_excp in "" MATH_EXCEPTION
+do
+       CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu"
+       test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
+       test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
+AC_TRY_COMPILE([
+#include <etip.h.in>
+],[],[
+       test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math})
+       test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp})
+       cf_result="$cf_math $cf_excp"
+       break
+],[])
+done
+done
+AC_MSG_RESULT($cf_result)
+CXXFLAGS="$cf_save_CXXFLAGS"
+])
+dnl ---------------------------------------------------------------------------
+dnl Check for memmove, or a bcopy that can handle overlapping copy.  If neither
+dnl is found, add our own version of memmove to the list of objects.
+AC_DEFUN([CF_FUNC_MEMMOVE],
+[
+AC_CHECK_FUNC(memmove,,[
+AC_CHECK_FUNC(bcopy,[
+       AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
+               AC_TRY_RUN([
+int main() {
+       static char data[] = "abcdefghijklmnopqrstuwwxyz";
+       char temp[40];
+       bcopy(data, temp, sizeof(data));
+       bcopy(temp+10, temp, 15);
+       bcopy(temp+5, temp+15, 10);
+       exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
+}
+               ],
+               [cf_cv_good_bcopy=yes],
+               [cf_cv_good_bcopy=no],
+               [cf_cv_good_bcopy=unknown])
+               ])
+       ],[cf_cv_good_bcopy=no])
+       if test $cf_cv_good_bcopy = yes ; then
+               AC_DEFINE(USE_OK_BCOPY)
+       else
+               AC_DEFINE(USE_MY_MEMMOVE)
+       fi
+])])dnl
+dnl ---------------------------------------------------------------------------
 dnl Test for availability of useful gcc __attribute__ directives to quiet
 dnl compiler warnings.  Though useful, not all are supported -- and contrary
 dnl to documentation, unrecognized directives cause older compilers to barf.
@@ -324,7 +486,7 @@ cat > conftest.i <<EOF
 EOF
 if test -n "$GCC"
 then
-       AC_CHECKING([for gcc __attribute__ directives])
+       AC_CHECKING([for $CC __attribute__ directives])
        changequote(,)dnl
 cat > conftest.$ac_ext <<EOF
 #line __oline__ "configure"
@@ -351,7 +513,7 @@ EOF
        do
                CF_UPPER(CF_ATTRIBUTE,$cf_attribute)
                cf_directive="__attribute__(($cf_attribute))"
-               echo "checking for gcc $cf_directive" 1>&AC_FD_CC
+               echo "checking for $CC $cf_directive" 1>&AC_FD_CC
                case $cf_attribute in
                scanf|printf)
                cat >conftest.h <<EOF
@@ -394,10 +556,10 @@ then
        changequote(,)dnl
        cat > conftest.$ac_ext <<EOF
 #line __oline__ "configure"
-int main(int argc, char *argv[]) { return argv[argc-1] == 0; }
+int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
        changequote([,])dnl
-       AC_CHECKING([for gcc warning options])
+       AC_CHECKING([for $CC warning options])
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="-W -Wall"
        cf_warn_CONST=""
@@ -427,6 +589,29 @@ fi
 AC_SUBST(EXTRA_CFLAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Verify that a test program compiles and runs with GNAT
+dnl $cf_ada_make is set to the program that compiles/links
+AC_DEFUN([CF_GNAT_TRY_RUN],
+[
+rm -f conftest*
+cat >>conftest.ads <<CF_EOF
+$1
+CF_EOF
+cat >>conftest.adb <<CF_EOF
+$2
+CF_EOF
+if ( $cf_ada_make conftest 1>&AC_FD_CC 2>&1 ) ; then
+   if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
+ifelse($3,,      :,[      $3])
+ifelse($4,,,[   else
+      $4])
+   fi
+ifelse($4,,,[else
+   $4])
+fi
+rm -f conftest*
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl Verify Version of GNAT.
 AC_DEFUN([CF_GNAT_VERSION],
 [
@@ -435,22 +620,68 @@ cf_cv_gnat_version=`$cf_ada_make -v 2>&1 | grep '[0-9].[0-9][0-9]*' |\
   sed -e 's/[^0-9 \.]//g' | $AWK '{print $<<1>>;}'`
 case $cf_cv_gnat_version in
   3.[1-9]*|[4-9].*)
-    ac_cv_prog_gnat_correct=yes
+    cf_cv_prog_gnat_correct=yes
     ;;
   *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.10 or better. Disabling Ada95 binding.
-     ac_cv_prog_gnat_correct=no
+     cf_cv_prog_gnat_correct=no
      ;;
 esac
 case $cf_cv_gnat_version in
   3.1*|[4-9].*)
       cf_compile_generics=generics
+      cf_generic_objects="\$(GENOBJS)"
       ;;
   *)  cf_compile_generics=
+      cf_generic_objects=
       ;;
 esac
 changequote([, ])dnl
 ])
 dnl ---------------------------------------------------------------------------
+dnl If we're trying to use g++, test if libg++ is installed (a rather common
+dnl problem :-).  If we have the compiler but no library, we'll be able to
+dnl configure, but won't be able to build the c++ demo program.
+AC_DEFUN([CF_GPP_LIBRARY],
+[
+cf_cxx_library=unknown
+case $cf_cv_system_name in #(vi
+os2*) #(vi
+       cf_gpp_libname=gpp
+       ;;
+*)
+       cf_gpp_libname=g++
+       ;;
+esac
+if test $ac_cv_prog_gxx = yes; then
+       AC_MSG_CHECKING([for lib$cf_gpp_libname])
+       cf_save="$LIBS"
+       LIBS="$LIBS -l$cf_gpp_libname -lm"
+       AC_TRY_LINK([
+#include <$cf_gpp_libname/builtin.h>
+       ],
+       [//float foo=abs(1.0);
+        two_arg_error_handler_t foo2 = lib_error_handler],
+       [cf_cxx_library=yes
+        CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+        if test "$cf_gpp_libname" = cpp ; then
+           AC_DEFINE(HAVE_GPP_BUILTIN_H)
+        else
+           AC_DEFINE(HAVE_GXX_BUILTIN_H)
+        fi],
+       [AC_TRY_LINK([
+#include <builtin.h>
+       ],
+       [//float foo=abs(1.0);
+        two_arg_error_handler_t foo2 = lib_error_handler],
+       [cf_cxx_library=yes
+        CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+        AC_DEFINE(HAVE_BUILTIN_H)],
+       [cf_cxx_library=no])])
+       LIBS="$cf_save"
+       AC_MSG_RESULT($cf_cxx_library)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
 AC_DEFUN([CF_HELP_MESSAGE],
 [AC_DIVERT_HELP([$1])dnl
@@ -493,6 +724,18 @@ AC_MSG_RESULT($cf_cv_have_isascii)
 test $cf_cv_have_isascii = yes && AC_DEFINE(HAVE_ISASCII)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Compute the library-prefix for the given host system
+dnl $1 = variable to set
+AC_DEFUN([CF_LIB_PREFIX],
+[
+       case $cf_cv_system_name in
+       os2)    $1=''     ;;
+       *)      $1='lib'  ;;
+       esac
+       LIB_PREFIX=[$]$1
+       AC_SUBST(LIB_PREFIX)
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl Append definitions and rules for the given models to the subdirectory
 dnl Makefiles, and the recursion rule for the top-level Makefile.  If the
 dnl subdirectory is a library-source directory, modify the LIBRARIES list in
@@ -525,7 +768,7 @@ do
                                ;;
                        *) #(vi
                                cf_item=`echo $cf_libs_to_make |sed -e s/$LIB_NAME/$TINFO_NAME/g`
-                               cf_libs_to_make="$cf_libs_to_make $cf_item"
+                               cf_libs_to_make="$cf_item $cf_libs_to_make"
                                ;;
                        esac
                fi
@@ -637,10 +880,12 @@ done
 
 cat >> Makefile <<CF_EOF
 
-install.data ::
+install.data \
+uninstall.data ::
        cd misc && \$(MAKE) \$(CF_MFLAGS) \[$]@
 
-install.man ::
+install.man \
+uninstall.man ::
        cd man && \$(MAKE) \$(CF_MFLAGS) \[$]@
 
 distclean ::
@@ -737,16 +982,6 @@ CF_EOF
        fi
 done
 
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl Compute the library-prefix for the given host system
-dnl $1 = variable to set
-AC_DEFUN([CF_LIB_PREFIX],
-[
-       case $cf_cv_system_name in
-       os2)    $1=''     ;;
-       *)      $1='lib'  ;;
-       esac
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl Compute the library-suffix from the given model name
@@ -761,8 +996,15 @@ AC_DEFUN([CF_LIB_SUFFIX],
        profile) $2='_p.a' ;;
        shared)
                case $cf_cv_system_name in
-               openbsd*|netbsd*|freebsd*)
+               openbsd*|freebsd*)
                        $2='.so.$(REL_VERSION)' ;;
+               netbsd*)
+                       if test -f /usr/libexec/ld.elf_so; then
+                               $2='.so'
+                       else
+                               $2='.so.$(REL_VERSION)'
+                       fi
+                       ;;
                hpux*)  $2='.sl'  ;;
                *)      $2='.so'  ;;
                esac
@@ -840,47 +1082,120 @@ AC_MSG_RESULT($cf_cv_link_dataonly)
 test $cf_cv_link_dataonly = no && AC_DEFINE(BROKEN_LINKER)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Most Unix systems have both link and symlink, a few don't have symlink.
+dnl A few non-Unix systems implement symlink, but not link.
+dnl A few non-systems implement neither (or have nonfunctional versions).
+AC_DEFUN([CF_LINK_FUNCS],
+[
+AC_CHECK_FUNCS( \
+       remove \
+       unlink )
+
+if test "$ac_cv_prog_cc_cross" = yes ; then
+       AC_CHECK_FUNCS( \
+               link \
+               symlink )
+else
+       AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[
+               cf_cv_link_funcs=
+               for cf_func in link symlink ; do
+                       AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+int main()
+{
+       int fail = 0;
+       char *src = "config.log";
+       char *dst = "conftest.chk";
+       struct stat src_sb;
+       struct stat dst_sb;
+
+       stat(src, &src_sb);
+       fail = ($cf_func("config.log", "conftest.chk") < 0)
+           || (stat(dst, &dst_sb) < 0)
+           || (dst_sb.st_mtime != src_sb.st_mtime);
+#ifdef HAVE_UNLINK
+       unlink(dst);
+#else
+       remove(dst);
+#endif
+       exit (fail);
+}
+                       ],[
+                       cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
+                       eval 'ac_cv_func_'$cf_func'=yes'
+                       CF_UPPER(cf_FUNC,$cf_func)
+                       AC_DEFINE_UNQUOTED(HAVE_$cf_FUNC)],[
+                       eval 'ac_cv_func_'$cf_func'=no'],[
+                       eval 'ac_cv_func_'$cf_func'=error'])
+               done
+               test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
+       ])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl Some 'make' programs support $(MAKEFLAGS), some $(MFLAGS), to pass 'make'
 dnl options to lower-levels.  It's very useful for "make -n" -- if we have it.
-dnl (GNU 'make' does both :-)
+dnl (GNU 'make' does both, something POSIX 'make', which happens to make the
+dnl $(MAKEFLAGS) variable incompatible because it adds the assignments :-)
 AC_DEFUN([CF_MAKEFLAGS],
 [
 AC_MSG_CHECKING([for makeflags variable])
 AC_CACHE_VAL(cf_cv_makeflags,[
        cf_cv_makeflags=''
-       for cf_option in '$(MFLAGS)' '-$(MAKEFLAGS)'
+       for cf_option in '-$(MAKEFLAGS)' '$(MFLAGS)'
        do
                cat >cf_makeflags.tmp <<CF_EOF
 all :
-       echo '.$cf_option'
+       echo '.$cf_option'
 CF_EOF
-               set cf_result=`${MAKE-make} -f cf_makeflags.tmp 2>/dev/null`
-               if test "$cf_result" != "."
-               then
-                       cf_cv_makeflags=$cf_option
+               cf_result=`${MAKE-make} -k -f cf_makeflags.tmp 2>/dev/null`
+               case "$cf_result" in
+               .*k)
+                       cf_result=`${MAKE-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
+                       case "$cf_result" in
+                       .*CC=*) cf_cv_makeflags=
+                               ;;
+                       *)      cf_cv_makeflags=$cf_option
+                               ;;
+                       esac
                        break
-               fi
+                       ;;
+               *)      echo no match "$cf_result"
+                       ;;
+               esac
        done
        rm -f cf_makeflags.tmp])
 AC_MSG_RESULT($cf_cv_makeflags)
 AC_SUBST(cf_cv_makeflags)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl Try to determine if the man-pages on the system are compressed, and if
-dnl so, what format is used.  Use this information to construct a script that
-dnl will install man-pages.
-AC_DEFUN([CF_MAN_PAGES],
-[AC_MSG_CHECKING(format of man-pages)
+dnl Option to allow user to override automatic configuration of manpage format.
+dnl There are several special cases.
+AC_DEFUN([CF_MANPAGE_FORMAT],
+[ AC_MSG_CHECKING(format of man-pages)
+
+AC_ARG_WITH(manpage-format,
+       [  --with-manpage-format   specify manpage-format: gzip/compress/BSDI/normal and
+                          optionally formatted, e.g., gzip,formatted],
+       [cf_manpage_form=$withval],
+       [cf_manpage_form=unknown])
+
+case ".$cf_manpage_form" in
+.gzip|.compress|.BSDI|.normal|.formatted) # (vi
+  ;;
+.unknown|.) # (vi
   if test -z "$MANPATH" ; then
     MANPATH="/usr/man:/usr/share/man"
   fi
   # look for the 'date' man-page (it's most likely to be installed!)
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  cf_form=unknown
+  cf_manpage_form=unknown
   for cf_dir in $MANPATH; do
     test -z "$cf_dir" && cf_dir=/usr/man
-    cf_rename=""
-    cf_format=no
 changequote({{,}})dnl
     for cf_name in $cf_dir/*/date.[01]* $cf_dir/*/date
 changequote([,])dnl
@@ -888,41 +1203,97 @@ changequote([,])dnl
        cf_test=`echo $cf_name | sed -e 's/*//'`
        if test "x$cf_test" = "x$cf_name" ; then
          case "$cf_name" in
-         *.gz) cf_form=gzip;     cf_name=`basename $cf_name .gz`;;
-         *.Z)  cf_form=compress; cf_name=`basename $cf_name .Z`;;
-         *.0)  cf_form=BSDI; cf_format=yes;;
-         *)    cf_form=cat;;
+         *.gz) cf_manpage_form=gzip;;
+         *.Z)  cf_manpage_form=compress;;
+         *.0)  cf_manpage_form=BSDI,formatted;;
+         *)    cf_manpage_form=normal;;
          esac
          break
        fi
     done
-    if test "$cf_form" != "unknown" ; then
+    if test "$cf_manpage_form" != "unknown" ; then
        break
     fi
   done
   IFS="$ac_save_ifs"
-  if test "$prefix" = "NONE" ; then
-     cf_prefix="$ac_default_prefix"
+  ;;
+.*) # (vi
+  AC_MSG_WARN(Unexpected manpage-format)
+  ;;
+esac
+
+AC_MSG_RESULT($cf_manpage_form)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl The Debian people have their own naming convention for manpages.  This
+dnl option lets us override the name of the file containing renaming, or
+dnl disable it altogether.
+AC_DEFUN([CF_MANPAGE_RENAMES],
+[
+AC_MSG_CHECKING(for manpage renaming)
+
+AC_ARG_WITH(manpage-renames,
+       [  --with-manpage-renames  specify manpage-renaming],
+       [cf_manpage_renames=$withval],
+       [cf_manpage_renames=yes])
+
+case ".$cf_manpage_renames" in #(vi
+.no) #(vi
+  ;;
+.|.yes)
+  # Debian 'man' program?
+  if test -f /etc/debian_version ; then
+    cf_manpage_renames=`cd $srcdir && pwd`/man/man_db.renames
   else
-     cf_prefix="$prefix"
+    cf_manpage_renames=no
   fi
+  ;;
+esac
 
-  # Debian 'man' program?
-  test -f /etc/debian_version && \
-  cf_rename=`cd $srcdir && pwd`/man/man_db.renames
+if test "$cf_manpage_renames" != no ; then
+  if test ! -f $cf_manpage_renames ; then
+    AC_MSG_ERROR(not a filename: $cf_manpage_renames)
+  fi
 
   test ! -d man && mkdir man
 
   # Construct a sed-script to perform renaming within man-pages
-  if test -n "$cf_rename" ; then
-    $srcdir/man/make_sed.sh $cf_rename >man/edit_man.sed
+  if test -n "$cf_manpage_renames" ; then
+    test ! -d man && mkdir man
+    $srcdir/man/make_sed.sh $cf_manpage_renames >man/edit_man.sed
   fi
-  if test $cf_format = yes ; then
-    cf_subdir='$mandir/cat'
+fi
+
+AC_MSG_RESULT($cf_manpage_renames)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl Try to determine if the man-pages on the system are compressed, and if
+dnl so, what format is used.  Use this information to construct a script that
+dnl will install man-pages.
+AC_DEFUN([CF_MAN_PAGES],
+[
+CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:)
+CF_MANPAGE_FORMAT
+CF_MANPAGE_RENAMES
+
+  if test "$prefix" = "NONE" ; then
+     cf_prefix="$ac_default_prefix"
   else
-    cf_subdir='$mandir/man'
+     cf_prefix="$prefix"
   fi
 
+  case "$cf_manpage_form" in # (vi
+  *formatted*) # (vi
+    cf_subdir='$mandir/cat'
+    cf_format=yes
+    ;;
+  *)
+    cf_subdir='$mandir/man'
+    cf_format=no
+    ;;
+  esac
+
+test ! -d man && mkdir man
 cat >man/edit_man.sh <<CF_EOF
 changequote({{,}})dnl
 #! /bin/sh
@@ -941,9 +1312,9 @@ shift
 mandir=\{{$}}1
 shift
 
-for i in \{{$}}*
-do
-case \$i in
+for i in \{{$}}* ; do
+case \$i in #(vi
+*.orig|*.rej) ;; #(vi
 *.[0-9]*)
        section=\`expr "\$i" : '.*\\.\\([0-9]\\)[xm]*'\`;
        if test \$verb = installing ; then
@@ -953,14 +1324,14 @@ case \$i in
        fi
        source=\`basename \$i\`
 CF_EOF
-if test -z "$cf_rename" ; then
+if test "$cf_manpage_renames" = no ; then
 cat >>man/edit_man.sh <<CF_EOF
        target=$cf_subdir\${section}/\$source
        sed -e "s,@DATADIR@,\$datadir," < \$i >\$TMP
 CF_EOF
 else
 cat >>man/edit_man.sh <<CF_EOF
-       target=\`grep "^\$source" $cf_rename | $AWK '{print \{{$}}2}'\`
+       target=\`grep "^\$source" $cf_manpage_renames | $AWK '{print \{{$}}2}'\`
        if test -z "\$target" ; then
                echo '? missing rename for '\$source
                target="\$source"
@@ -969,16 +1340,14 @@ cat >>man/edit_man.sh <<CF_EOF
        test \$verb = installing && sed -e "s,@DATADIR@,\$datadir," < \$i | sed -f edit_man.sed >\$TMP
 CF_EOF
 fi
-if test \$verb = installing ; then
 if test $cf_format = yes ; then
 cat >>man/edit_man.sh <<CF_EOF
        nroff -man \$TMP >\$TMP.out
        mv \$TMP.out \$TMP
 CF_EOF
 fi
-fi
-case "$cf_form" in
-compress)
+case "$cf_manpage_form" in #(vi
+*compress*) #(vi
 cat >>man/edit_man.sh <<CF_EOF
        if test \$verb = installing ; then
        if ( compress -f \$TMP )
@@ -989,7 +1358,7 @@ cat >>man/edit_man.sh <<CF_EOF
        target="\$target.Z"
 CF_EOF
   ;;
-gzip)
+*gzip*) #(vi
 cat >>man/edit_man.sh <<CF_EOF
        if test \$verb = installing ; then
        if ( gzip -f \$TMP )
@@ -1000,7 +1369,7 @@ cat >>man/edit_man.sh <<CF_EOF
        target="\$target.gz"
 CF_EOF
   ;;
-BSDI)
+*BSDI*)
 cat >>man/edit_man.sh <<CF_EOF
        # BSDI installs only .0 suffixes in the cat directories
        target="\`echo \$target|sed -e 's/\.[1-9]\+.\?/.0/'\`"
@@ -1016,11 +1385,11 @@ cat >>man/edit_man.sh <<CF_EOF
        fi
        ;;
 esac
-done 
+done
 CF_EOF
 changequote([,])dnl
 chmod 755 man/edit_man.sh
-AC_MSG_RESULT($cf_form)
+
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl Compute the object-directory name from the given model name
@@ -1034,23 +1403,49 @@ AC_DEFUN([CF_OBJ_SUBDIR],
        esac
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl Within AC_OUTPUT, check if the given file differs from the target, and
-dnl update it if so.  Otherwise, remove the generated file.
-dnl
-dnl Parameters:
-dnl $1 = input, which configure has done substitutions upon
-dnl $2 = target file
-dnl
-AC_DEFUN([CF_OUTPUT_IF_CHANGED],[
-if ( cmp -s $1 $2 2>/dev/null )
-then
-       echo "$2 is unchanged"
-       rm -f $1
-else
-       echo "creating $2"
-       rm -f $2
-       mv $1 $2
-fi
+dnl Check the argument to see that it looks like a pathname.  Rewrite it if it
+dnl begins with one of the prefix/exec_prefix variables, and then again if the
+dnl result begins with 'NONE'.  This is necessary to workaround autoconf's
+dnl delayed evaluation of those symbols.
+AC_DEFUN([CF_PATH_SYNTAX],[
+case ".[$]$1" in #(vi
+./*) #(vi
+  ;;
+.\[$]{*prefix}*) #(vi
+  eval $1="[$]$1"
+  case ".[$]$1" in #(vi
+  .NONE/*)
+    $1=`echo [$]$1 | sed -e s@NONE@$ac_default_prefix@`
+    ;;
+  esac
+  ;; #(vi
+.NONE/*)
+  $1=`echo [$]$1 | sed -e s@NONE@$ac_default_prefix@`
+  ;;
+*)
+  AC_ERROR(expected a pathname)
+  ;;
+esac
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
+AC_DEFUN([CF_PROG_EXT],
+[
+AC_REQUIRE([CF_CHECK_CACHE])
+PROG_EXT=
+case $cf_cv_system_name in
+os2*)
+    # We make sure -Zexe is not used -- it would interfere with @PROG_EXT@
+    CFLAGS="$CFLAGS -Zmt -D__ST_MT_ERRNO__"
+    CXXFLAGS="$CXXFLAGS -Zmt -D__ST_MT_ERRNO__"
+    LDFLAGS=`echo "$LDFLAGS -Zmt -Zcrtdll" | sed "s/-Zexe//g"`
+    PROG_EXT=".exe"
+    ;;
+cygwin*)
+    PROG_EXT=".exe"
+    ;;
+esac
+AC_SUBST(PROG_EXT)
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl Force $INSTALL to be an absolute-path.  Otherwise, edit_man.sh and the
@@ -1103,55 +1498,10 @@ case $cf_cv_regex in
 esac
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl This bypasses the normal autoconf process because we're generating an
-dnl arbitrary number of NEED_xxxx definitions with the CF_HAVE_FUNCS macro. 
-dnl Rather than populate an aclocal.h file with all of those definitions, we do
-dnl it here.
-dnl
-dnl Parameters:
-dnl $1 = input, which configure has done substitutions upon (will delete)
-dnl $2 = target file
-dnl $3 = preamble, if any (a 'here' document)
-dnl $4 = trailer, if any (a 'here' document)
-dnl
-AC_DEFUN([CF_SED_CONFIG_H],[
-cf_config_h=conf$$
-rm -f $cf_config_h
-## PREAMBLE
-ifelse($3,,[
-echo '/* generated by configure-script */' >$cf_config_h
-],[cat >$cf_config_h <<CF_EOF
-$3[]dnl
-CF_EOF])
-## DEFINITIONS
-if test -n "$ac_cv_path_TD_CONFIG" ; then
-       $ac_cv_path_TD_CONFIG $1 |egrep -v '^#' >$cf_config_h
-       $ac_cv_path_TD_CONFIG $1 |egrep '^#' | sort >>$cf_config_h
-else
-grep -v '^ -D' $1 >>$cf_config_h
-changequote(,)dnl
-sed    -e '/^ -D/!d' \
-       -e '/^# /d' \
-       -e 's/ -D/\
-#define /g' \
-       -e 's/\(#define [A-Za-z_][A-Za-z0-9_]*\)=/\1    /g' \
-       -e 's@\\@@g' \
-       $1 | sort >>$cf_config_h
-changequote([,])dnl
-fi
-## TRAILER
-ifelse($4,,,
-[cat >>$cf_config_h <<CF_EOF
-$4[]dnl
-CF_EOF])
-CF_OUTPUT_IF_CHANGED($cf_config_h,$2)
-rm -f $1 $cf_config_h
-])dnl
-dnl ---------------------------------------------------------------------------
 dnl Attempt to determine the appropriate CC/LD options for creating a shared
 dnl library.
 dnl
-dnl Note: $(LOCAL_LDFLAGS) is used to link executables that will run within the 
+dnl Note: $(LOCAL_LDFLAGS) is used to link executables that will run within the
 dnl build-tree, i.e., by making use of the libraries that are compiled in ../lib
 dnl We avoid compiling-in a ../lib path for the shared library since that can
 dnl lead to unexpected results at runtime.
@@ -1161,6 +1511,9 @@ dnl
 dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
 dnl to install symbolic links to the rel/abi versions of shared libraries.
 dnl
+dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi
+dnl version when making symbolic links.
+dnl
 dnl Some loaders leave 'so_locations' lying around.  It's nice to clean up.
 AC_DEFUN([CF_SHARED_OPTS],
 [
@@ -1171,26 +1524,60 @@ AC_DEFUN([CF_SHARED_OPTS],
        INSTALL_LIB="-m 644"
 
        cf_cv_do_symlinks=no
+
+       AC_MSG_CHECKING(if release/abi version should be used for shared libs)
+       AC_ARG_WITH(shlib-version,
+       [  --with-shlib-version=X  Specify rel or abi version for shared libs],
+       [test -z "$withval" && withval=auto
+       case $withval in #(vi
+       yes) #(vi
+               cf_cv_shlib_version=auto
+               ;;
+       rel|abi|auto|no) #(vi
+               cf_cv_shlib_version=$withval
+               ;;
+       *)
+               AC_ERROR([option value must be one of: rel, abi, auto or no])
+               ;;
+       esac
+       ],[cf_cv_shlib_version=auto])
+       AC_MSG_RESULT($cf_cv_shlib_version)
+
        cf_cv_rm_so_locs=no
 
        case $cf_cv_system_name in
+       hpux10.*)
+               # (tested with gcc 2.7.2 -- I don't have c89)
+               if test -n "$GCC"; then
+                       CC_SHARED_OPTS='-fPIC'
+                       LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
+               else
+                       CC_SHARED_OPTS='+Z'
+                       LD_SHARED_OPTS='-Wl,+b,$(libdir)'
+               fi
+               MK_SHARED_LIB='$(LD) +b $(libdir) -b +h `basename $[@]` -o $[@]'
+               # HP-UX shared libraries must be executable, and should be
+               # readonly to exploit a quirk in the memory manager.
+               INSTALL_LIB="-m 555"
+               cf_cv_do_symlinks=reverse
+               ;;
        hpux*)
                # (tested with gcc 2.7.2 -- I don't have c89)
-               if test "${CC}" = "gcc"; then
+               if test -n "$GCC"; then
                        CC_SHARED_OPTS='-fPIC'
                        LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
                else
                        CC_SHARED_OPTS='+Z'
-                       LD_SHARED_OPTS='+b $(libdir)'
+                       LD_SHARED_OPTS='-Wl,+b,$(libdir)'
                fi
-               MK_SHARED_LIB='$(LD) -b -o $[@]'
+               MK_SHARED_LIB='$(LD) +b $(libdir) -b -o $[@]'
                # HP-UX shared libraries must be executable, and should be
                # readonly to exploit a quirk in the memory manager.
                INSTALL_LIB="-m 555"
                ;;
        irix*)
                # tested with IRIX 5.2 and 'cc'.
-               if test "${CC}" = "gcc"; then
+               if test -n "$GCC"; then
                        CC_SHARED_OPTS='-fPIC'
                else
                        CC_SHARED_OPTS='-KPIC'
@@ -1198,40 +1585,78 @@ AC_DEFUN([CF_SHARED_OPTS],
                MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $[@]` -o $[@]'
                cf_cv_rm_so_locs=yes
                ;;
-       linux*)
+       linux*|gnu*)
                # tested with Linux 2.0.29 and gcc 2.7.2 (ELF)
-               CC_SHARED_OPTS='-fPIC'
-               MK_SHARED_LIB='gcc -o $[@].$(REL_VERSION) -L../lib -L\$(libdir) -shared -Wl,-soname,`basename $[@].$(ABI_VERSION)`,-stats,$(SHLIB_LIST)-lc'
+               CC_SHARED_OPTS='-fpic'
                test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-Wl,-rpath,"
                if test $DFT_LWR_MODEL = "shared" ; then
                        LOCAL_LDFLAGS='-Wl,-rpath,../lib'
                        LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
                fi
-               cf_cv_do_symlinks=yes
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+               if test $cf_cv_shlib_version = no ; then
+                       MK_SHARED_LIB='$(CC) -shared -Wl,-stats,-lc -o $[@]'
+               else
+                       MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@].$(ABI_VERSION)`,-stats,-lc -o $[@]'
+               fi
+               ;;
+       openbsd2*)
+               CC_SHARED_OPTS='-fpic -DPIC'
+               MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $[@].$(ABI_VERSION)` -o $[@]'
                ;;
-       openbsd*|netbsd*|freebsd*)
+       openbsd*|freebsd*)
                CC_SHARED_OPTS='-fpic -DPIC'
                MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+               ;;
+       netbsd*)
+               CC_SHARED_OPTS='-fpic -DPIC'
+               test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-Wl,-rpath,"
+               if test $DFT_LWR_MODEL = "shared" && test $cf_cv_ld_rpath = yes ; then
+                       LOCAL_LDFLAGS='-Wl,-rpath,../lib'
+                       LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
+                       EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
+                       MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@].$(ABI_VERSION)` -o $[@]'
+                       test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+               else
+                       MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
+               fi
                ;;
        osf*|mls+*)
                # tested with OSF/1 V3.2 and 'cc'
                # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
                # link with shared libs).
                CC_SHARED_OPTS=''
-               MK_SHARED_LIB='$(LD) -o $[@].$(REL_VERSION) -set_version $(ABI_VERSION):$(REL_VERSION) -expect_unresolved "*" -shared -soname `basename $[@].$(ABI_VERSION)`'
+               MK_SHARED_LIB='$(LD) -set_version $(REL_VERSION):$(ABI_VERSION) -expect_unresolved "*" -shared -soname `basename $[@]`'
                test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-rpath"
                case $host_os in
                osf4*)
                        MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
                        ;;
                esac
+               MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
                if test $DFT_LWR_MODEL = "shared" ; then
                        LOCAL_LDFLAGS='-Wl,-rpath,../lib'
                        LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
                fi
-               cf_cv_do_symlinks=yes
                cf_cv_rm_so_locs=yes
                ;;
+       sco3.2v5*)  # (also uw2* and UW7) hops 13-Apr-98
+               # tested with osr5.0.5
+               if test $ac_cv_prog_gcc = yes; then
+                       CC_SHARED_OPTS='-fpic'
+               else
+                       CC_SHARED_OPTS='-belf -KPIC'
+               fi
+               MK_SHARED_LIB='$(LD) -dy -G -h `basename [$]@.$(ABI_VERSION)` -o [$]@'
+               if test $cf_cv_ld_rpath = yes ; then
+                       # only way is to set LD_RUN_PATH but no switch for it
+                       RUN_PATH=$libdir
+               fi
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+               LINK_PROGS='LD_RUN_PATH=$(libdir)'
+               LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
+               ;;
        sunos4*)
                # tested with SunOS 4.1.1 and gcc 2.7.0
                if test $ac_cv_prog_gcc = yes; then
@@ -1239,8 +1664,8 @@ AC_DEFUN([CF_SHARED_OPTS],
                else
                        CC_SHARED_OPTS='-KPIC'
                fi
-               MK_SHARED_LIB='$(LD) -assert pure-text -o $[@].$(REL_VERSION)'
-               cf_cv_do_symlinks=yes
+               MK_SHARED_LIB='$(LD) -assert pure-text -o $[@]'
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
                ;;
        solaris2*)
                # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
@@ -1249,12 +1674,12 @@ AC_DEFUN([CF_SHARED_OPTS],
                else
                        CC_SHARED_OPTS='-KPIC'
                fi
-               MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@].$(ABI_VERSION)` -o $[@].$(REL_VERSION)'
+               MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@].$(ABI_VERSION)` -o $[@]'
                if test $cf_cv_ld_rpath = yes ; then
                        cf_ld_rpath_opt="-R"
                        EXTRA_LDFLAGS="-R ../lib:\$(libdir) $EXTRA_LDFLAGS"
                fi
-               cf_cv_do_symlinks=yes
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
                ;;
        unix_sv*)
                # tested with UnixWare 1.1.2
@@ -1267,6 +1692,28 @@ AC_DEFUN([CF_SHARED_OPTS],
                ;;
        esac
 
+       # This works if the last tokens in $MK_SHARED_LIB are the -o target.
+       case "$cf_cv_shlib_version" in #(vi
+       rel|abi)
+               case "$MK_SHARED_LIB" in #(vi
+               *'-o $[@]')
+                       if test "$cf_cv_do_symlinks" = reverse ; then
+                               AC_ERROR(cannot use --with-shlib-version with this platform)
+                       fi
+                       if test "$cf_cv_shlib_version" = rel ; then
+                               MK_SHARED_LIB="$MK_SHARED_LIB"'.$(REL_VERSION)'
+                       else
+                               MK_SHARED_LIB="$MK_SHARED_LIB"'.$(ABI_VERSION)'
+                       fi
+                       cf_cv_do_symlinks=yes
+                       ;;
+               *)
+                       AC_MSG_WARN(ignored --with-shlib-version)
+                       ;;
+               esac
+               ;;
+       esac
+
        if test -n "$cf_ld_rpath_opt" ; then
                AC_MSG_CHECKING(if we need a space after rpath option)
                cf_save_LIBS="$LIBS"
@@ -1281,6 +1728,8 @@ AC_DEFUN([CF_SHARED_OPTS],
        AC_SUBST(CC_SHARED_OPTS)
        AC_SUBST(LD_SHARED_OPTS)
        AC_SUBST(MK_SHARED_LIB)
+       AC_SUBST(LINK_PROGS)
+       AC_SUBST(LINK_TESTS)
        AC_SUBST(EXTRA_LDFLAGS)
        AC_SUBST(LOCAL_LDFLAGS)
        AC_SUBST(LOCAL_LDFLAGS2)
@@ -1353,19 +1802,24 @@ dnl Check for datatype 'speed_t', which is normally declared via either
 dnl sys/types.h or termios.h
 AC_DEFUN([CF_SPEED_TYPE],
 [
-AC_MSG_CHECKING([for speed_t])
-AC_CACHE_VAL(cf_cv_type_speed_t,[
-       AC_TRY_COMPILE([
-#include <sys/types.h>
-#if HAVE_TERMIOS_H
-#include <termios.h>
-#endif],
-       [speed_t x = 0],
-       [cf_cv_type_speed_t=yes],
-       [cf_cv_type_speed_t=no])
-       ])
-AC_MSG_RESULT($cf_cv_type_speed_t)
-test $cf_cv_type_speed_t != yes && AC_DEFINE(speed_t,unsigned)
+AC_MSG_CHECKING(for speed_t)
+OSPEED_INCLUDES=
+AC_TRY_COMPILE([#include <sys/types.h>],
+       [speed_t some_variable = 0],
+       [OSPEED_TYPE=speed_t],
+       [OSPEED_TYPE=unsigned])
+AC_TRY_COMPILE([#include <termios.h>],
+       [speed_t some_variable = 0],
+       [OSPEED_TYPE=speed_t
+        OSPEED_INCLUDES="#include <termios.h>"],[])
+AC_SUBST(OSPEED_TYPE)
+AC_SUBST(OSPEED_INCLUDES)
+if test "$OSPEED_TYPE" = "unsigned" ; then
+       AC_MSG_RESULT(no)
+       AC_DEFINE(speed_t,unsigned)
+else
+       AC_MSG_RESULT(yes)
+fi
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl For each parameter, test if the source-directory exists, and if it contains
@@ -1433,12 +1887,12 @@ do
        SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir"
 done
 SRC_SUBDIRS="$SRC_SUBDIRS misc test"
-test $cf_cxx_library != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
+test $cf_with_cxx_binding != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
 
 ADA_SUBDIRS=
-if test "$ac_cv_prog_gnat_correct" = yes && test -d $srcdir/Ada95; then
+if test "$cf_cv_prog_gnat_correct" = yes && test -d $srcdir/Ada95; then
    SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
-   ADA_SUBDIRS="gen ada_include samples"
+   ADA_SUBDIRS="gen src samples"
 fi
 
 SUB_MAKEFILES=
@@ -1449,13 +1903,42 @@ done
 
 if test -n "$ADA_SUBDIRS"; then
    for cf_dir in $ADA_SUBDIRS
-   do  
+   do
       SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile"
    done
    AC_SUBST(ADA_SUBDIRS)
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl Check for -lstdc++, which is GNU's standard C++ library.
+AC_DEFUN([CF_STDCPP_LIBRARY],
+[
+if test -n "$GXX" ; then
+case $cf_cv_system_name in #(vi
+os2*) #(vi
+       cf_stdcpp_libname=stdcpp
+       ;;
+*)
+       cf_stdcpp_libname=stdc++
+       ;;
+esac
+AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
+       cf_save="$LIBS"
+       LIBS="$LIBS -l$cf_stdcpp_libname -lm"
+AC_TRY_LINK([
+#include <strstream.h>],[
+char buf[80];
+strstreambuf foo(buf, sizeof(buf))
+//destroy foo
+],
+       [cf_cv_libstdcpp=yes],
+       [cf_cv_libstdcpp=no])
+       LIBS="$cf_save"
+])
+test $cf_cv_libstdcpp = yes && CXXLIBS="$CXXLIBS -l$cf_stdcpp_libname"
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl    Remove "-g" option from the compiler options
 AC_DEFUN([CF_STRIP_G_OPT],
 [$1=`echo ${$1} | sed -e 's/-g //' -e 's/-g$//'`])dnl
@@ -1546,8 +2029,9 @@ AC_SUBST(NCURSES_PATCH)
 dnl We need these values in the generated makefiles
 AC_SUBST(cf_cv_rel_version)
 AC_SUBST(cf_cv_abi_version)
+AC_SUBST(cf_cv_cc_bool_type)
 AC_SUBST(cf_cv_builtin_bool)
-AC_SUBST(cf_cv_type_of_bool)
+AC_SUBST(cf_cv_type_of_bool)dnl
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
@@ -1741,24 +2225,33 @@ dnl
 AC_DEFUN([CF_WITH_PATH],
 [AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
 ifelse($4,,[withval="${$3}"],[withval="${$3-ifelse($5,,$4,$5)}"]))dnl
-case ".$withval" in #(vi
-./*) #(vi
-  ;;
-.\[$]{*prefix}*) #(vi
-  eval withval="$withval"
-  case ".$withval" in #(vi
-  .NONE/*)
-    withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
-    ;;
-  esac
-  ;; #(vi
-.NONE/*)
-  withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
-  ;;
-*)
-  AC_ERROR(expected a pathname for $1)
-  ;;
-esac
+CF_PATH_SYNTAX(withval)
 eval $3="$withval"
 AC_SUBST($3)dnl
 ])dnl
+dnl ---------------------------------------------------------------------------
+dnl Process an option specifying a list of colon-separated paths.
+dnl
+dnl $1 = option name
+dnl $2 = help-text
+dnl $3 = environment variable to set
+dnl $4 = default value, shown in the help-message, must be a constant
+dnl $5 = default value, if it's an expression & cannot be in the help-message
+dnl
+AC_DEFUN([CF_WITH_PATHLIST],[
+AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
+ifelse($4,,[withval="${$3}"],[withval="${$3-ifelse($5,,$4,$5)}"]))dnl
+
+IFS="${IFS=    }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+cf_dst_path=
+for cf_src_path in $withval
+do
+  CF_PATH_SYNTAX(cf_src_path)
+  test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:"
+  cf_dst_path="${cf_dst_path}${cf_src_path}"
+done
+IFS="$ac_save_ifs"
+
+eval $3="$cf_dst_path"
+AC_SUBST($3)dnl
+])dnl
index 611888a5bc715dad5ae7b12609a9a781bdb1fca2..f87c7c4f13fa80f0b471c914779faf912d0e5c1f 100644 (file)
@@ -1,18 +1,19 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: announce.html,v 1.23 1998/02/28 23:21:12 tom Exp $
+  $Id: announce.html,v 1.34 1999/10/23 21:13:11 tom Exp $
 -->
 <HTML>
 <HEAD>
-<TITLE>Announcing ncurses 4.2</TITLE>
+<TITLE>Announcing ncurses 5.0</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 </HEAD>
 <BODY>
 
-<H1>Announcing ncurses 4.2</H1>
+<H1>Announcing ncurses 5.0</H1>
 
-The ncurses (new curses) library is a freeware emulation of System V
-Release 4.0 curses.  It uses terminfo format, supports pads and color
+The ncurses (new curses) library is a free software emulation of
+curses in System V Release 4.0, and more.  It uses terminfo format,
+supports pads and color
 and multiple highlights and forms characters and function-key mapping,
 and has all the other SYSV-curses enhancements over BSD curses.<P>
 
@@ -21,7 +22,7 @@ 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.<P>
 
-The ncurses code was developed under Linux.  It should port easily to
+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!<P>
 
 The distribution includes the library and support utilities, including a
@@ -31,24 +32,170 @@ the library and tools.<P>
 
 The ncurses distribution is available via anonymous FTP at
 the GNU distribution site
-<A HREF="ftp://prep.ai.mit.edu/pub/gnu">ftp://prep.ai.mit.edu/pub/gnu</A>.
+<A HREF="ftp://ftp.gnu.org/pub/gnu/ncurses">ftp://ftp.gnu.org/pub/gnu/ncurses</A>.
 It is also available at
 <A HREF="ftp://ftp.clark.net/pub/dickey/ncurses">ftp://ftp.clark.net/pub/dickey/ncurses</A>.
 
-<H1>Features of ncurses</H1>
+<H1>Release Notes</H1>
 
-The ncurses package is fully compatible with SVr4 (System V Release 4) curses:<P>
+We decided to release ncurses as a new whole number release (5.0) because it
+incorporates several interface changes, including some that would invalidate
+existing shared libraries.  These are the highlights from the change-log
+since ncurses 4.2 release.
+<p>
+Interface changes:
+<ul>
+       <li>The principal source of changes to the interface comes from the
+         release of X/Open Curses in 1997.  Earlier versions of ncurses (4.0
+         and before) were based on a draft version of the specification.  The
+         release version adds parameters to some functions to support the
+         evolving internationalization of curses.  These summarize the impact:
+<ul>
+         <li>modified several prototypes to correspond with 1997 version of
+           X/Open Curses (affects ABI since developers have used attr_get).
+
+         <li>corrected prototypes for slk_* functions, using chtype rather than
+           attr_t.
+
+         <li>the slk_attr_{set,off,on} functions need an additional void*
+           parameter according to XSI.
+
+         <li>correct macros for wattr_set, wattr_get, separate wattrset macro from
+           these to preserve behavior that allows attributes to be combined with
+           color pair numbers.
+
+         <li>reviewed/updated curses.h, term.h against X/Open Curses Issue 4
+           Version 2.  This includes making some parameters NCURSES_CONST
+           rather than const, e.g., in termcap.h.
+
+         <li>reviewed/corrected macros in curses.h as per XSI document.
+
+         <li>add set_a_attributes and set_pglen_inch to terminfo structure, as per
+           XSI and Solaris 2.5.
+</ul>
+       <li>The newest version of the X/Open Curses is implemented on Solaris
+         and other vendor's systems.  It adds new features to the terminfo
+         descriptions:
+<ul>
+         <li>implement tparm %l format.
+
+         <li>implement tparm printf-style width and precision for %s, %d, %x, %o
+           as per XSI.
+</ul>
+       <li>We made additional changes to reduce impact by future interface
+         changes:
+<ul>
+         <li>rename key_names[] array to _nc_key_names since it is not part of
+           the curses interface.
+
+         <li>move macro winch to a function, to hide details of struct ldat
+</ul>
+       <li>modify configure script to embed ABI in shared libraries for HP-UX
+         10.x (detailed request by Tim Mooney).
+
+       <li>modify configuration of shared libraries on Digital Unix so that
+         versioning is embedded in the library, rather than implied by
+         links (patch by Tim Mooney).
+</ul>
+New features:
+<ul>
+       <li>enable sigwinch handler by default.
+
+       <li>turn on hashmap scrolling code by default
+
+       <li>improved support for termcap applications
+<ul>
+         <li>modify tput to accept termcap names as an alternative to terminfo
+           names.
+
+         <li>provide support for termcap PC variable by copying it from terminfo
+           data and using it as the padding character in tputs.
+
+         <li>provide support for termcap ospeed variable by copying it from the
+           internal cur_term member, and using ospeed as the baudrate
+           reference for the delay_output and tputs functions.
+
+         <li>change name-comparisons in lib_termcap to compare no more than 2
+           characters.
+
+         <li>add configure option --enable-tcap-names, which essentially
+           allows users to define new capabilities as in termcap.
+</ul>
+       <li>add mouse support to ncurses menus.
+
+       <li>add mouse and dll support for OS/2 EMX
+
+       <li>modify terminfo parsing to accept octal and hexadecimal constants
+
+       <li>add configure option --enable-no-padding, to allow environment
+         variable $NCURSES_NO_PADDING to eliminate non-mandatory padding,
+         thereby making terminal emulators (e.g., for vt100) a little more
+         efficient.
+
+       <li>modify lib_color.c to eliminate dependency on orig_colors and
+         orig_pair, since SVr4 curses does not require these either, but
+         uses them when they are available.
+
+       <li>add -f option to infocmp and tic, which formats the terminfo
+         if/then/else/endif so that they are readable (with newlines and
+         tabs).
+
+       <li>modify tic to compile into %'char' form in preference to %{number},
+         since that is a little more efficient.
+</ul>
+Major bug fixes:
+<ul>
+       <li>modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a
+         problem where ncurses applications which were run via a shell script
+         would hang when given a ^Z.  Also, check if the terminal's process
+         group is consistent, i.e., a shell has not taken ownership of it,
+         before deciding to save the current terminal settings in the SIGTSTP
+         handler.
+
+       <li>suppress sc/rc capabilities from terminal description if they appear
+         in smcup/rmcup.  This affects only scrolling optimization, to fix a
+         problem reported by several people with xterm's alternate screen,
+         though the problem is more general.
+
+       <li>modify relative_move and tputs to avoid an interaction with the
+         BSD-style padding.  The relative_move function could produce a string
+         to replace on the screen which began with a numeric character, which
+         was then interpreted by tputs as padding.
+
+       <li>modify setupterm so that cancelled strings are treated the same as
+         absent strings, cancelled and absent booleans false (does not affect
+         tic, infocmp).
+
+       <li>modify lib_vidattr.c to allow for terminal types (e.g., xterm-color)
+         which may reset all attributes in the 'op' capability, so that colors
+         are set before turning on bold and other attributes, but still after
+         turning attributes off.
+
+       <li>use 'access()' to check if ncurses library should be permitted to
+         open or modify files with fopen/open/link/unlink/remove calls, in
+         case the calling application is running in setuid mode.
+
+       <li>correction to doupdate, for case where terminal does not support
+         insert/delete character.  The logic did not check that there was a
+         difference in alignment of changes to old/new screens before
+         repainting the whole non-blank portion of the line.  Modified to fall
+         through into logic that reduces by the portion which does not differ.
+</ul>
+
+<H1>Features of Ncurses</H1>
+
+The ncurses package is fully compatible with SVr4 (System V Release 4) curses:
 
 <UL>
 <LI>All 257 of the SVr4 calls have been implemented (and are documented).
 <LI>Full support for SVr4 curses features including keyboard mapping, color,
 forms-drawing with ACS characters, and automatic recognition of keypad
 and function keys.
-<LI>An emulation of the SVr4 panels library, supporting 
+<LI>An emulation of the SVr4 panels library, supporting
 a stack of windows with backing store, is included.
-<LI>An emulation of the SVr4 menus library, supporting 
+<LI>An emulation of the SVr4 menus library, supporting
 a uniform but flexible interface for menu programming, is included.
-<LI>An emulation of the SVr4 form library, supporting 
+<LI>An emulation of the SVr4 form library, supporting
 data collection through on-screen forms, is included.
 <LI>Binary terminfo entries generated by the ncurses tic(1) implementation
 are bit-for-bit-compatible with the entry format SVr4 curses uses.
@@ -56,21 +203,19 @@ are bit-for-bit-compatible with the entry format SVr4 curses uses.
 entries for use with less capable <STRONG>curses</STRONG>/<STRONG>terminfo</STRONG>
 versions such as the HP/UX and AIX ports.</UL>
 
-The ncurses package also has many useful extensions over SVr4:<P>
+The ncurses package also has many useful extensions over SVr4:
 
 <UL>
 <LI>The API is 8-bit clean and base-level conformant with the X/OPEN curses
-specification, XSI Curses (that is, it implements all BASE level features,
+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 documented so you can use the SVr4 subset only).
-<LI>Unlike SVr4 curses, ncurses can write to the rightmost-bottommost corner
+<LI>Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner
 of the screen if your terminal has an insert-character capability.
-<LI>(PC-clone boxes only) Support for access to the IBM PC ROM characters
-0-32 through the highlight A_ALTCHARSET.
 <LI>Ada95 and C++ bindings.
-<LI>Support for mouse event reporting under xterm.
+<LI>Support for mouse event reporting with X Window xterm and OS/2 console windows.
 <LI>Extended mouse support via Alessandro Rubini's gpm package.
 <LI>The function <CODE>wresize()</CODE> allows you to resize windows, preserving
 their data.
@@ -98,7 +243,7 @@ after the end would step on a non-space character.  It will
 automatically shift highlight boundaries when doing so would make it
 possible to draw the highlight without changing the visual appearance
 of the screen.
-<LI>It is possible to generate the library with a list of pre-loaded 
+<LI>It is possible to generate the library with a list of pre-loaded
 fallback entries linked to it so that it can serve those terminal types even
 when no terminfo tree or termcap file is accessible (this may be useful
 for support of screen-oriented programs that must run in single-user mode).
@@ -111,7 +256,7 @@ entries from $HOME/.terminfo if it exists, and compile to that directory
 if it exists and the user has no write access to the system directory.
 This feature makes it easier for users to have personal terminfo entries
 without giving up access to the system terminfo directory.
-<LI>You may specify a path of directories to search for compiled 
+<LI>You may specify a path of directories to search for compiled
 descriptions with the environment variable TERMINFO_DIRS (this
 generalizes the feature provided by TERMINFO under stock System V.)
 <LI>In terminfo source files, use capabilities may refer not just to
@@ -139,30 +284,37 @@ a narrative introduction to the curses programming interface.
 <H1>State of the Package</H1>
 
 Numerous bugs present in earlier versions have been fixed; the
-library is far more reliable than it used to be.  Bounds checking in many 
-`dangerous' entry points has been improved.  The code is now type-safe 
+library is far more reliable than it used to be.  Bounds checking in many
+`dangerous' entry points has been improved.  The code is now type-safe
 according to gcc -Wall.  The library has been checked for malloc leaks and
 arena corruption by the Purify memory-allocation tester.<P>
 
 The ncurses code has been tested with a wide variety of applications
-including:<P>
+including (versions starting with those noted):
 <DL>
+<DT> cdk
+<DD> Curses Development Kit
+<A HREF="http://www.vexus.ca/CDK.html">Curses Development Kit</a>
+<A HREF="ftp://ftp.clark.net/pub/dickey/cdk">ftp://ftp.clark.net/pub/dickey/cdk</A>.
 <DT> ded
 <DD> directory-editor
 <A HREF="ftp://ftp.clark.net/pub/dickey/ded">ftp://ftp.clark.net/pub/dickey/ded</A>.
 <DT> dialog
 <DD> the underlying application used in Slackware's setup, and the basis
-for similar applications on Linux.
-<DT> lynx-2.7 
+for similar applications on GNU/Linux.
+<DT> lynx
 <DD> the character-screen WWW browser
 <DT> Midnight Commander 4.1
 <DD> file manager
-<DT> mutt 0.88
+<DT> mutt
 <DD> mail utility
-<DT> ncftp 2.0
+<DT> ncftp
 <DD> file-transfer utility
 <DT> nvi
 <DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
+<DT> tin
+<DD> newsreader, supporting color, MIME
+<A HREF="ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff">ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff</A>.
 <DT> taper
 <DD> tape archive utility
 <DT> vh-1.6
@@ -170,11 +322,8 @@ for similar applications on Linux.
 </DL>
 as well as some that use ncurses for the terminfo support alone:
 <DL>
-<DT> minicom-1.75
+<DT> minicom
 <DD> terminal emulator
-<DT> tin-unoff
-<DD> tin 1.4 newsreader, supporting color, MIME
-<A HREF="ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff">ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff</A>.
 <DT> vile
 <DD> vi-like-emacs
 <A HREF="ftp://ftp.clark.net/pub/dickey/vile">ftp://ftp.clark.net/pub/dickey/vile</A>.
@@ -192,8 +341,8 @@ HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
 Ongoing work is being done by
 <A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
 and
-<A HREF="mailto:Juergen.Pfeifer@T-Online.de">J&uuml;rgen Pfeifer</A>.
-<A HREF="mailto:florian@gnu.org">Florian La Roche</A>
+<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
+<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
 acts as the maintainer for the Free Software Foundation, which holds the
 copyright on ncurses.
 Contact the current maintainers at
@@ -217,7 +366,7 @@ Beta versions of ncurses and patches to the current release are made available a
 <LI>Extended-level XPG4 conformance, with internationalization support.
 <LI>Ports to more systems, including DOS and Windows.
 </UL>
-We need people to help with these projects.  If you are interested in working 
+We need people to help with these projects.  If you are interested in working
 on them, please join the ncurses list.
 
 <H2>Other Related Resources</H2>
@@ -232,7 +381,7 @@ not covered in the terminfo file at
 archive</A>.
 </BODY>
 </HTML>
-<!-- 
+<!--
 # The following sets edit modes for GNU EMACS
 # Local Variables:
 # mode:html
index 256e95bad35b098d1c7cca9f5dbfd11f342c073b..b797f0d03c36d00f7d7451a83f7c697083300dea 100644 (file)
@@ -1,6 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: announce.html.in,v 1.24 1998/02/28 23:16:48 tom Exp $
+  $Id: announce.html.in,v 1.34 1999/10/23 20:52:29 tom Exp $
 -->
 <HTML>
 <HEAD>
@@ -11,8 +11,9 @@
 
 <H1>Announcing ncurses @VERSION@</H1>
 
-The ncurses (new curses) library is a freeware emulation of System V
-Release 4.0 curses.  It uses terminfo format, supports pads and color
+The ncurses (new curses) library is a free software emulation of
+curses in System V Release 4.0, and more.  It uses terminfo format,
+supports pads and color
 and multiple highlights and forms characters and function-key mapping,
 and has all the other SYSV-curses enhancements over BSD curses.<P>
 
@@ -21,7 +22,7 @@ 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.<P>
 
-The ncurses code was developed under Linux.  It should port easily to
+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!<P>
 
 The distribution includes the library and support utilities, including a
@@ -31,24 +32,170 @@ the library and tools.<P>
 
 The ncurses distribution is available via anonymous FTP at
 the GNU distribution site
-<A HREF="ftp://prep.ai.mit.edu/pub/gnu">ftp://prep.ai.mit.edu/pub/gnu</A>.
+<A HREF="ftp://ftp.gnu.org/pub/gnu/ncurses">ftp://ftp.gnu.org/pub/gnu/ncurses</A>.
 It is also available at
 <A HREF="ftp://ftp.clark.net/pub/dickey/ncurses">ftp://ftp.clark.net/pub/dickey/ncurses</A>.
 
-<H1>Features of ncurses</H1>
+<H1>Release Notes</H1>
 
-The ncurses package is fully compatible with SVr4 (System V Release 4) curses:<P>
+We decided to release ncurses as a new whole number release (5.0) because it
+incorporates several interface changes, including some that would invalidate
+existing shared libraries.  These are the highlights from the change-log
+since ncurses 4.2 release.
+<p>
+Interface changes:
+<ul>
+       <li>The principal source of changes to the interface comes from the
+         release of X/Open Curses in 1997.  Earlier versions of ncurses (4.0
+         and before) were based on a draft version of the specification.  The
+         release version adds parameters to some functions to support the
+         evolving internationalization of curses.  These summarize the impact:
+<ul>
+         <li>modified several prototypes to correspond with 1997 version of
+           X/Open Curses (affects ABI since developers have used attr_get).
+
+         <li>corrected prototypes for slk_* functions, using chtype rather than
+           attr_t.
+
+         <li>the slk_attr_{set,off,on} functions need an additional void*
+           parameter according to XSI.
+
+         <li>correct macros for wattr_set, wattr_get, separate wattrset macro from
+           these to preserve behavior that allows attributes to be combined with
+           color pair numbers.
+
+         <li>reviewed/updated curses.h, term.h against X/Open Curses Issue 4
+           Version 2.  This includes making some parameters NCURSES_CONST
+           rather than const, e.g., in termcap.h.
+
+         <li>reviewed/corrected macros in curses.h as per XSI document.
+
+         <li>add set_a_attributes and set_pglen_inch to terminfo structure, as per
+           XSI and Solaris 2.5.
+</ul>
+       <li>The newest version of the X/Open Curses is implemented on Solaris
+         and other vendor's systems.  It adds new features to the terminfo
+         descriptions:
+<ul>
+         <li>implement tparm %l format.
+
+         <li>implement tparm printf-style width and precision for %s, %d, %x, %o
+           as per XSI.
+</ul>
+       <li>We made additional changes to reduce impact by future interface
+         changes:
+<ul>
+         <li>rename key_names[] array to _nc_key_names since it is not part of
+           the curses interface.
+
+         <li>move macro winch to a function, to hide details of struct ldat
+</ul>
+       <li>modify configure script to embed ABI in shared libraries for HP-UX
+         10.x (detailed request by Tim Mooney).
+
+       <li>modify configuration of shared libraries on Digital Unix so that
+         versioning is embedded in the library, rather than implied by
+         links (patch by Tim Mooney).
+</ul>
+New features:
+<ul>
+       <li>enable sigwinch handler by default.
+
+       <li>turn on hashmap scrolling code by default
+
+       <li>improved support for termcap applications
+<ul>
+         <li>modify tput to accept termcap names as an alternative to terminfo
+           names.
+
+         <li>provide support for termcap PC variable by copying it from terminfo
+           data and using it as the padding character in tputs.
+
+         <li>provide support for termcap ospeed variable by copying it from the
+           internal cur_term member, and using ospeed as the baudrate
+           reference for the delay_output and tputs functions.
+
+         <li>change name-comparisons in lib_termcap to compare no more than 2
+           characters.
+
+         <li>add configure option --enable-tcap-names, which essentially
+           allows users to define new capabilities as in termcap.
+</ul>
+       <li>add mouse support to ncurses menus.
+
+       <li>add mouse and dll support for OS/2 EMX
+
+       <li>modify terminfo parsing to accept octal and hexadecimal constants
+
+       <li>add configure option --enable-no-padding, to allow environment
+         variable $NCURSES_NO_PADDING to eliminate non-mandatory padding,
+         thereby making terminal emulators (e.g., for vt100) a little more
+         efficient.
+
+       <li>modify lib_color.c to eliminate dependency on orig_colors and
+         orig_pair, since SVr4 curses does not require these either, but
+         uses them when they are available.
+
+       <li>add -f option to infocmp and tic, which formats the terminfo
+         if/then/else/endif so that they are readable (with newlines and
+         tabs).
+
+       <li>modify tic to compile into %'char' form in preference to %{number},
+         since that is a little more efficient.
+</ul>
+Major bug fixes:
+<ul>
+       <li>modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a
+         problem where ncurses applications which were run via a shell script
+         would hang when given a ^Z.  Also, check if the terminal's process
+         group is consistent, i.e., a shell has not taken ownership of it,
+         before deciding to save the current terminal settings in the SIGTSTP
+         handler.
+
+       <li>suppress sc/rc capabilities from terminal description if they appear
+         in smcup/rmcup.  This affects only scrolling optimization, to fix a
+         problem reported by several people with xterm's alternate screen,
+         though the problem is more general.
+
+       <li>modify relative_move and tputs to avoid an interaction with the
+         BSD-style padding.  The relative_move function could produce a string
+         to replace on the screen which began with a numeric character, which
+         was then interpreted by tputs as padding.
+
+       <li>modify setupterm so that cancelled strings are treated the same as
+         absent strings, cancelled and absent booleans false (does not affect
+         tic, infocmp).
+
+       <li>modify lib_vidattr.c to allow for terminal types (e.g., xterm-color)
+         which may reset all attributes in the 'op' capability, so that colors
+         are set before turning on bold and other attributes, but still after
+         turning attributes off.
+
+       <li>use 'access()' to check if ncurses library should be permitted to
+         open or modify files with fopen/open/link/unlink/remove calls, in
+         case the calling application is running in setuid mode.
+
+       <li>correction to doupdate, for case where terminal does not support
+         insert/delete character.  The logic did not check that there was a
+         difference in alignment of changes to old/new screens before
+         repainting the whole non-blank portion of the line.  Modified to fall
+         through into logic that reduces by the portion which does not differ.
+</ul>
+
+<H1>Features of Ncurses</H1>
+
+The ncurses package is fully compatible with SVr4 (System V Release 4) curses:
 
 <UL>
 <LI>All 257 of the SVr4 calls have been implemented (and are documented).
 <LI>Full support for SVr4 curses features including keyboard mapping, color,
 forms-drawing with ACS characters, and automatic recognition of keypad
 and function keys.
-<LI>An emulation of the SVr4 panels library, supporting 
+<LI>An emulation of the SVr4 panels library, supporting
 a stack of windows with backing store, is included.
-<LI>An emulation of the SVr4 menus library, supporting 
+<LI>An emulation of the SVr4 menus library, supporting
 a uniform but flexible interface for menu programming, is included.
-<LI>An emulation of the SVr4 form library, supporting 
+<LI>An emulation of the SVr4 form library, supporting
 data collection through on-screen forms, is included.
 <LI>Binary terminfo entries generated by the ncurses tic(1) implementation
 are bit-for-bit-compatible with the entry format SVr4 curses uses.
@@ -56,21 +203,19 @@ are bit-for-bit-compatible with the entry format SVr4 curses uses.
 entries for use with less capable <STRONG>curses</STRONG>/<STRONG>terminfo</STRONG>
 versions such as the HP/UX and AIX ports.</UL>
 
-The ncurses package also has many useful extensions over SVr4:<P>
+The ncurses package also has many useful extensions over SVr4:
 
 <UL>
 <LI>The API is 8-bit clean and base-level conformant with the X/OPEN curses
-specification, XSI Curses (that is, it implements all BASE level features,
+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 documented so you can use the SVr4 subset only).
-<LI>Unlike SVr4 curses, ncurses can write to the rightmost-bottommost corner
+<LI>Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner
 of the screen if your terminal has an insert-character capability.
-<LI>(PC-clone boxes only) Support for access to the IBM PC ROM characters
-0-32 through the highlight A_ALTCHARSET.
 <LI>Ada95 and C++ bindings.
-<LI>Support for mouse event reporting under xterm.
+<LI>Support for mouse event reporting with X Window xterm and OS/2 console windows.
 <LI>Extended mouse support via Alessandro Rubini's gpm package.
 <LI>The function <CODE>wresize()</CODE> allows you to resize windows, preserving
 their data.
@@ -98,7 +243,7 @@ after the end would step on a non-space character.  It will
 automatically shift highlight boundaries when doing so would make it
 possible to draw the highlight without changing the visual appearance
 of the screen.
-<LI>It is possible to generate the library with a list of pre-loaded 
+<LI>It is possible to generate the library with a list of pre-loaded
 fallback entries linked to it so that it can serve those terminal types even
 when no terminfo tree or termcap file is accessible (this may be useful
 for support of screen-oriented programs that must run in single-user mode).
@@ -111,7 +256,7 @@ entries from $HOME/.terminfo if it exists, and compile to that directory
 if it exists and the user has no write access to the system directory.
 This feature makes it easier for users to have personal terminfo entries
 without giving up access to the system terminfo directory.
-<LI>You may specify a path of directories to search for compiled 
+<LI>You may specify a path of directories to search for compiled
 descriptions with the environment variable TERMINFO_DIRS (this
 generalizes the feature provided by TERMINFO under stock System V.)
 <LI>In terminfo source files, use capabilities may refer not just to
@@ -139,30 +284,37 @@ a narrative introduction to the curses programming interface.
 <H1>State of the Package</H1>
 
 Numerous bugs present in earlier versions have been fixed; the
-library is far more reliable than it used to be.  Bounds checking in many 
-`dangerous' entry points has been improved.  The code is now type-safe 
+library is far more reliable than it used to be.  Bounds checking in many
+`dangerous' entry points has been improved.  The code is now type-safe
 according to gcc -Wall.  The library has been checked for malloc leaks and
 arena corruption by the Purify memory-allocation tester.<P>
 
 The ncurses code has been tested with a wide variety of applications
-including:<P>
+including (versions starting with those noted):
 <DL>
+<DT> cdk
+<DD> Curses Development Kit
+<A HREF="http://www.vexus.ca/CDK.html">Curses Development Kit</a>
+<A HREF="ftp://ftp.clark.net/pub/dickey/cdk">ftp://ftp.clark.net/pub/dickey/cdk</A>.
 <DT> ded
 <DD> directory-editor
 <A HREF="ftp://ftp.clark.net/pub/dickey/ded">ftp://ftp.clark.net/pub/dickey/ded</A>.
 <DT> dialog
 <DD> the underlying application used in Slackware's setup, and the basis
-for similar applications on Linux.
-<DT> lynx-2.7 
+for similar applications on GNU/Linux.
+<DT> lynx
 <DD> the character-screen WWW browser
 <DT> Midnight Commander 4.1
 <DD> file manager
-<DT> mutt 0.88
+<DT> mutt
 <DD> mail utility
-<DT> ncftp 2.0
+<DT> ncftp
 <DD> file-transfer utility
 <DT> nvi
 <DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
+<DT> tin
+<DD> newsreader, supporting color, MIME
+<A HREF="ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff">ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff</A>.
 <DT> taper
 <DD> tape archive utility
 <DT> vh-1.6
@@ -170,11 +322,8 @@ for similar applications on Linux.
 </DL>
 as well as some that use ncurses for the terminfo support alone:
 <DL>
-<DT> minicom-1.75
+<DT> minicom
 <DD> terminal emulator
-<DT> tin-unoff
-<DD> tin 1.4 newsreader, supporting color, MIME
-<A HREF="ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff">ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff</A>.
 <DT> vile
 <DD> vi-like-emacs
 <A HREF="ftp://ftp.clark.net/pub/dickey/vile">ftp://ftp.clark.net/pub/dickey/vile</A>.
@@ -192,8 +341,8 @@ HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
 Ongoing work is being done by
 <A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
 and
-<A HREF="mailto:Juergen.Pfeifer@T-Online.de">J&uuml;rgen Pfeifer</A>.
-<A HREF="mailto:florian@gnu.org">Florian La Roche</A>
+<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
+<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
 acts as the maintainer for the Free Software Foundation, which holds the
 copyright on ncurses.
 Contact the current maintainers at
@@ -217,7 +366,7 @@ Beta versions of ncurses and patches to the current release are made available a
 <LI>Extended-level XPG4 conformance, with internationalization support.
 <LI>Ports to more systems, including DOS and Windows.
 </UL>
-We need people to help with these projects.  If you are interested in working 
+We need people to help with these projects.  If you are interested in working
 on them, please join the ncurses list.
 
 <H2>Other Related Resources</H2>
@@ -232,7 +381,7 @@ not covered in the terminfo file at
 archive</A>.
 </BODY>
 </HTML>
-<!-- 
+<!--
 # The following sets edit modes for GNU EMACS
 # Local Variables:
 # mode:html
index 5b3c1beb074397f37bd8ffc007e954d053394199..886678df2fce04145e8bbbd80b4ca208c8a845b4 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.42 1998/02/19 16:54:54 florian Exp $
+# $Id: Makefile.in,v 1.51 1999/10/23 20:13:02 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,1999 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"), #
 
 SHELL          = /bin/sh
 
+CF_MFLAGS      = @cf_cv_makeflags@
+@SET_MAKE@
+x              = @PROG_EXT@
+
 MODEL          = ../@DFT_OBJ_SUBDIR@
 INSTALL_PREFIX = @INSTALL_PREFIX@
 srcdir         = @srcdir@
@@ -56,24 +60,24 @@ CXXFLAGS    = @CXXFLAGS@
 CXXLIBS                = @CXXLIBS@
 
 INCDIR         = ../include
-CPPFLAGS       = -I../c++ -I$(INCDIR) -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@ 
+CPPFLAGS       = -I../c++ -I$(INCDIR) -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@
 
 CCFLAGS                = $(CPPFLAGS) $(CXXFLAGS)
 
 CFLAGS_NORMAL  = $(CCFLAGS)
 CFLAGS_DEBUG   = $(CCFLAGS) @CXX_G_OPT@ -DTRACE
 CFLAGS_PROFILE = $(CCFLAGS) -pg
-CFLAGS_SHARED  = $(CCFLAGS) @CC_SHARED_OPTS@
+CFLAGS_SHARED  = $(CCFLAGS) @CC_SHARED_OPTS@
 
 CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
 
 REL_VERSION     = @cf_cv_rel_version@
 ABI_VERSION    = @cf_cv_abi_version@
 
-LINK           = $(CXX)
+LINK           = @LINK_PROGS@ $(CXX) @CXXLDFLAGS@
 
 LIBROOT        = ncurses++
-LIBNAME        = ../lib/lib$(LIBROOT).a
+LIBNAME        = @LIB_PREFIX@$(LIBROOT).a
 
 LDFLAGS                = @EXTRA_LDFLAGS@ -L../lib -L$(libdir) \
        -l$(LIBROOT) \
@@ -83,14 +87,14 @@ LDFLAGS             = @EXTRA_LDFLAGS@ -L../lib -L$(libdir) \
 LDFLAGS_NORMAL = $(LDFLAGS)
 LDFLAGS_DEBUG  = $(LDFLAGS) @CC_G_OPT@
 LDFLAGS_PROFILE        = $(LDFLAGS) -pg
-LDFLAGS_SHARED = $(LDFLAGS) @CC_SHARED_OPTS@ # @LD_SHARED_OPTS@
+LDFLAGS_SHARED = $(LDFLAGS) @LD_SHARED_OPTS@
 
 LDFLAGS_DEFAULT        = $(LDFLAGS_@DFT_UPR_MODEL@)
 
 AUTO_SRC       = \
                etip.h
 
-all:           $(AUTO_SRC) $(LIBNAME) demo
+all:           $(AUTO_SRC) ../lib/$(LIBNAME) demo$x
 
 sources :      $(AUTO_SRC)
 
@@ -101,12 +105,13 @@ LIB_OBJS = \
        $(MODEL)/cursesf.o \
        $(MODEL)/cursesm.o \
        $(MODEL)/cursesw.o \
+       $(MODEL)/cursespad.o \
        $(MODEL)/cursesp.o \
        $(MODEL)/cursslk.o \
        $(MODEL)/cursesapp.o \
        $(MODEL)/cursesmain.o
 
-$(LIBNAME) : $(LIB_OBJS)
+../lib/$(LIBNAME) : $(LIB_OBJS)
        $(AR) $(AR_OPTS) $@ $?
        $(RANLIB) $@
 
@@ -115,8 +120,8 @@ OBJS_DEMO = $(MODEL)/demo.o
 $(MODEL)/demo.o : $(srcdir)/demo.cc \
        $(cursesf_h) $(cursesm_h) $(cursesapp_h)
 
-demo:  $(OBJS_DEMO) \
-       $(LIBNAME)  \
+demo$x:        $(OBJS_DEMO) \
+       ../lib/$(LIBNAME)  \
        @TEST_DEPS@
        @ECHO_LINK@ $(LINK) -o $@ $(OBJS_DEMO) $(LDFLAGS_DEFAULT)
 
@@ -128,8 +133,8 @@ $(INSTALL_PREFIX)$(libdir) :
        $(srcdir)/../mkinstalldirs $@
 
 install \
-install.libs:: $(LIBNAME) $(INSTALL_PREFIX)$(libdir)
-       $(INSTALL) $(LIBNAME) $(INSTALL_PREFIX)$(libdir)/$(LIBNAME)
+install.libs:: ../lib/$(LIBNAME) $(INSTALL_PREFIX)$(libdir)
+       $(INSTALL) ../lib/$(LIBNAME) $(INSTALL_PREFIX)$(libdir)/$(LIBNAME)
 
 uninstall \
 uninstall.libs::
@@ -139,7 +144,7 @@ mostlyclean ::
        -rm -f core tags TAGS *~ *.ln *.atac trace
 
 clean :: mostlyclean
-       -rm -f demo $(AUTO_SRC) $(LIBNAME) $(LIB_OBJS) $(OBJS_DEMO)
+       -rm -f demo$x $(AUTO_SRC) ../lib/$(LIBNAME) $(LIB_OBJS) $(OBJS_DEMO)
 
 distclean :: clean
        -rm -f Makefile
index 2472ea98f5754570beae4cc14b4f651ffa4975bc..299292d18a7e9952bf21744751be8b2b45662d5d 100644 (file)
--- a/c++/NEWS
+++ b/c++/NEWS
@@ -2,6 +2,10 @@ This is a log of changes that the ncurses C++ binding has gone
 through starting with the integration of menu and forms integration
 into the binding.
 
+990731  + Improve support for pads. A viewport window may now be added to
+          a pad. It will then be possible to use a builtin panning mechanism
+          to view the pad.
+
 970908 + Improve NCursesWindow class: added additional methods to
          cover more ncurses functionality. Make refresh() and 
          noutrefresh() virtual members to allow different implementation
index b3b0b9d8f71e1dc00e38a232d803a7fb4c33c86f..eb37ac6702476abbd81fd399c30d6df9ba47b425 100644 (file)
@@ -55,4 +55,4 @@ Authors of first ncurses based release (NCursesWindow, NCursesPanel):
  and Anatoly Ivasyuk     <anatoly@nick.csh.rit.edu>
 
 Author of this release:
-     Juergen Pfeifer     <Juergen.Pfeifer@T-Online.de>
+     Juergen Pfeifer     <juergen.pfeifer@gmx.net>
index ec45577a922b9426c03e7f4b5f8be130d79d2149..ae88b44e0a4c5ac7bd1f7d0a3027926f73f199f4 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
 #include "cursesapp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesapp.cc,v 1.2 1998/02/11 12:13:41 tom Exp $")
+MODULE_ID("$Id: cursesapp.cc,v 1.4 1999/05/16 17:31:11 juergen Exp $")
 
 void
 NCursesApplication::init(bool bColors) {
index 998f14f1ce37a49eac1bfd8800c99d028fc6aac2..f13fd1bdb45795d816a059fcfd71d5b58d86cdde 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
-// $Id: cursesapp.h,v 1.3 1998/02/11 12:13:41 tom Exp $
+// $Id: cursesapp.h,v 1.5 1999/05/16 17:29:59 juergen Exp $
 
 #ifndef _CURSESAPP_H
 #define _CURSESAPP_H
index 66a6f09eca493fe11484cec1c7d62e0a45168df1..12b9cd4fcce2387db5dcce370044822bf10e6ef7 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
 #include "cursesf.h"
 #include "cursesapp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesf.cc,v 1.7 1998/02/11 12:13:41 tom Exp $")
+MODULE_ID("$Id: cursesf.cc,v 1.9 1999/05/16 17:29:36 juergen Exp $")
   
 NCursesFormField::~NCursesFormField () {
   if (field)
index d90a852081dfa10d943148d75832f620811214ba..1119f5cbc70a3fa698a0af5c39b9e66c4a00afac 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
-// $Id: cursesf.h,v 1.6 1998/02/11 12:13:41 tom Exp $
+// $Id: cursesf.h,v 1.10 1999/05/16 17:31:42 juergen Exp $
 
 #ifndef _CURSESF_H
 #define _CURSESF_H
@@ -255,7 +255,7 @@ public:
 
   // Return the index of the field in the field array of a form
   // or -1 if the field is not associated to a form
-  inline int index() const {
+  inline int (index)() const {
     return ::field_index(field);
   }
 
@@ -712,7 +712,7 @@ public:
   Regular_Expression_Field(const char *expr)
     : NCursesFieldType(TYPE_REGEXP) {
       regex = new char[1+::strlen(expr)];
-      strcpy(regex,expr);
+      (strcpy)(regex,expr);
   }
 
   ~Regular_Expression_Field() {
index 632ab6f9b4e12a885a09191bd50818c4bd06a670..599b5f1788858293edf44c8fcf7a04e57d5639d4 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
 #include "cursesm.h"
 #include "cursesapp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesm.cc,v 1.8 1998/02/11 12:13:40 tom Exp $")
+MODULE_ID("$Id: cursesm.cc,v 1.11 1999/07/31 09:45:23 juergen Exp $")
   
 NCursesMenuItem::~NCursesMenuItem() {
   if (item)
@@ -306,7 +306,10 @@ NCursesMenu::operator()(void) {
          NCursesMenuItem* itm = current_item();
          assert(itm);
          if (itm->options() & O_SELECTABLE)
-           b_action = itm->action();
+           {
+             b_action = itm->action();
+             refresh();
+           }
          else
            On_Not_Selectable(c);
        }
@@ -316,6 +319,7 @@ NCursesMenu::operator()(void) {
            NCursesMenuItem* itm = my_items[i];
            if (itm->value()) {
              b_action |= itm->action();
+             refresh();
            }
          }
        }
index 03065cffa6e06f7ee9615401ba8038e69e3dbb02..5037ae23fb7547598888e3ad5c07fe8595bc1209 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
-// $Id: cursesm.h,v 1.9 1998/02/11 12:13:41 tom Exp $
+// $Id: cursesm.h,v 1.12 1999/05/16 17:30:27 juergen Exp $
 
 #ifndef _CURSESM_H
 #define _CURSESM_H
@@ -81,7 +81,7 @@ public:
   }
   // Description of the item
   
-  inline int index (void) const {
+  inline int (index) (void) const {
     return ::item_index (item);
   }
   // Index of the item in an item array (or -1)
index 30e5e888a749d36e2f05fda4cbbf5a15440b6927..09400b8d690a0e71128b47229be158047bb4c3f2 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
 #include "cursesapp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesmain.cc,v 1.3 1998/02/11 12:13:41 tom Exp $")
+MODULE_ID("$Id: cursesmain.cc,v 1.5 1999/05/16 17:31:22 juergen Exp $")
 
 /* This is the default implementation of main() for a NCursesApplication.
  * You only have to instantiate a static NCursesApplication object in your
index 9b3b204cafa40c434493e1fbc7b7b7eacd5b0922..e0c17aea7eb406e1fad8e36188da0eb2cb15c6e3 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1993,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1993,1997            *
  ****************************************************************************/
 
 #include "cursesp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesp.cc,v 1.11 1998/02/17 09:04:12 juergen Exp $")
+MODULE_ID("$Id: cursesp.cc,v 1.14 1999/05/16 17:30:51 juergen Exp $")
 
 NCursesPanel* NCursesPanel::dummy = (NCursesPanel*)0;
 
@@ -56,7 +56,6 @@ NCursesPanel::~NCursesPanel() {
   delete hook;
   ::del_panel(p);
   ::update_panels();
-  ::doupdate();
 }
 
 void
index f347875f2c79a708d0a01200a4b2fd96ee636e1f..51cb4cdbf8471d8a5d47b6c19168e7378e4efc65 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _CURSESP_H
 #define _CURSESP_H
 
-// $Id: cursesp.h,v 1.10 1998/02/17 09:01:28 juergen Exp $
+// $Id: cursesp.h,v 1.11 1999/07/31 09:46:05 juergen Exp $
 
 #include <cursesw.h>
 
@@ -86,7 +86,7 @@ public:
   // N.B.: The panel associated with ::stdscr is always on the bottom. So
   // actually bottom() makes the panel the first above ::stdscr.
   
-  inline int mvwin(int y, int x) {
+  virtual int mvwin(int y, int x) {
     OnError(::move_panel(p, y, x));
     return OK;
   }
@@ -115,11 +115,11 @@ public:
 
   // Those two are rewrites of the corresponding virtual members of
   // NCursesWindow
-  int refresh();
+  virtual int refresh();
   // Propagate all panel changes to the virtual screen and update the 
   // physical screen.
 
-  int noutrefresh();
+  virtual int noutrefresh();
   // Propagate all panel changes to the virtual screen.
 
   static void redraw();
diff --git a/c++/cursespad.cc b/c++/cursespad.cc
new file mode 100644 (file)
index 0000000..b82d393
--- /dev/null
@@ -0,0 +1,270 @@
+// * this is for making emacs happy: -*-Mode: C++;-*-
+/****************************************************************************
+ * Copyright (c) 1999 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1999                 *
+ ****************************************************************************/
+
+#include "etip.h"
+#include "cursesw.h"
+#include "internal.h"
+
+MODULE_ID("$Id: cursespad.cc,v 1.2 1999/09/11 23:25:54 tom Exp $")
+
+NCursesPad::NCursesPad(int lines, int cols)
+  : NCursesWindow(),
+    viewWin((NCursesWindow*)0),
+    viewSub((NCursesWindow*)0),
+    h_gridsize(0), v_gridsize(0),
+    min_row(0), min_col(0)
+{
+  w = ::newpad(lines,cols);
+  if ((WINDOW*)0==w) {
+    count--;
+    err_handler("Cannot construct window");
+  }
+  alloced = TRUE;
+}
+
+
+int NCursesPad::driver (int key) {
+  // Default implementation
+  switch(key) {
+  case KEY_UP:
+    // =======
+    return REQ_PAD_UP;
+  case KEY_DOWN:
+    // =========
+    return REQ_PAD_DOWN;
+  case KEY_LEFT:
+    // =========
+    return REQ_PAD_LEFT;
+  case KEY_RIGHT:
+    // ==========
+    return REQ_PAD_RIGHT;
+  case KEY_EXIT:
+    // =========
+  case CTRL('X'):
+    // ==========
+    return REQ_PAD_EXIT;
+
+  default: return(key);
+  }
+}
+
+
+void NCursesPad::operator()(void) {
+  NCursesWindow* W = Win();
+
+  if ((NCursesWindow*)0 != W) {
+    int Width  = W->width();
+    int Height = W->height();
+
+    int req = REQ_PAD_REFRESH;
+
+    W->keypad(TRUE);
+    W->meta(TRUE);
+    refresh();
+
+    do {
+      bool changed = FALSE;
+
+      switch (req) {
+      case REQ_PAD_REFRESH:
+       // ================
+       changed = TRUE;
+       break;
+      case REQ_PAD_LEFT:
+       // =============
+       if (min_col > 0) {
+         changed = TRUE;
+         if (min_col < h_gridsize)
+           min_col = 0;
+         else
+           min_col -= h_gridsize;
+       }
+       else
+         OnNavigationError(req);
+       break;
+      case REQ_PAD_RIGHT:
+       // ==============
+       if (min_col < (width() - Width - 1)) {
+         changed = TRUE;
+         if (min_col > (width() - Width - h_gridsize - 1))
+           min_col = width() - Width - 1;
+         else
+           min_col += h_gridsize;
+       }
+       else
+         OnNavigationError(req);
+       break;
+      case REQ_PAD_UP:
+       // ===========
+       if (min_row > 0) {
+         changed = TRUE;
+         if (min_row < v_gridsize)
+           min_row = 0;
+         else
+           min_row -= v_gridsize;
+       }
+       else
+         OnNavigationError(req);
+       break;
+      case REQ_PAD_DOWN:
+       // =============
+       if (min_row < (height() - Height - 1)) {
+         changed = TRUE;
+         if (min_row > (height() - Height - v_gridsize - 1))
+           min_row = height() - Height - 1;
+         else
+           min_row += v_gridsize;
+       }
+       else
+         OnNavigationError(req);
+       break;
+
+      default:
+       OnUnknownOperation(req);
+      }
+
+      if (changed) {
+       noutrefresh();
+       W->syncup();
+       OnOperation(req);
+       viewWin->refresh();
+      }
+    } while( (req=driver(W->getch())) != REQ_PAD_EXIT );
+  }
+}
+
+
+int NCursesPad::refresh() {
+  int res = noutrefresh();
+  if (res==OK && ((NCursesWindow*)0 != viewWin)) {
+    res = (viewWin->refresh());
+  }
+  return(res);
+}
+
+int NCursesPad::noutrefresh() {
+  int res = OK;
+  NCursesWindow* W = Win();
+  if ((NCursesWindow*)0 != W) {
+    res = copywin(*W,min_row,min_col,
+                 0,0,W->maxy(),W->maxx(),
+                 FALSE);
+    if (res==OK) {
+      W->syncup();
+      res = viewWin->noutrefresh();
+    }
+  }
+  return (res);
+}
+
+void NCursesPad::setWindow(NCursesWindow& view,
+                          int v_grid NCURSES_PARAM_INIT(1),
+                          int h_grid NCURSES_PARAM_INIT(1))
+{
+  viewWin = &view;
+  min_row = min_col = 0;
+  if (h_grid <=0 || v_grid <= 0)
+    err_handler("Illegal Gridsize");
+  else {
+    h_gridsize = h_grid;
+    v_gridsize = v_grid;
+  }
+}
+
+void NCursesPad::setSubWindow(NCursesWindow& sub)
+{
+  if ((NCursesWindow*)0 == viewWin)
+    err_handler("Pad has no viewport");
+  if (!viewWin->isDescendant(sub))
+    THROW(new NCursesException("NCursesFramePad", E_SYSTEM_ERROR));
+  viewSub = &sub;
+}
+
+void NCursesFramedPad::OnOperation(int pad_req) {
+  NCursesWindow* W = Win();
+  NCursesWindow* Win = getWindow();
+
+  if (((NCursesWindow*)0 != W) && ((NCursesWindow*)0 != Win)) {
+    int Width  = W->width();
+    int Height = W->height();
+    int i, row, col, h_len, v_len;
+
+    h_len = (Width*Width + width() - 1)/width();
+    if (h_len==0)
+      h_len = 1;
+    if (h_len > Width)
+      h_len = Width;
+
+    v_len = (Height*Height + height() - 1)/height();
+    if (v_len==0)
+      v_len = 1;
+    if (v_len > Height)
+      v_len = Height;
+
+    col  = (min_col * Width + width() - 1)  / width();
+    if (col + h_len > Width)
+      col = Width - h_len;
+
+    row  = (min_row * Height + height() - 1) / height();
+    if (row + v_len > Height)
+      row = Height - v_len;
+
+    Win->vline(1,Width+1,Height);
+    Win->attron(A_REVERSE);
+    if (v_len>=2) {
+      Win->addch(row+1,Width+1,ACS_UARROW);
+      for(i=2;i<v_len;i++)
+       Win->addch(row+i,Width+1,' ');
+      Win->addch(row+v_len,Width+1,ACS_DARROW);
+    }
+    else {
+      for(i=1;i<=v_len;i++)
+       Win->addch(row+i,Width+1,' ');
+    }
+    Win->attroff(A_REVERSE);
+
+    Win->hline(Height+1,1,Width);
+    Win->attron(A_REVERSE);
+    if (h_len >= 2) {
+      Win->addch(Height+1,col+1,ACS_LARROW);
+      for(i=2;i<h_len;i++)
+       Win->addch(Height+1,col+i,' ');
+      Win->addch(Height+1,col+h_len,ACS_RARROW);
+    }
+    else {
+      for(i=1;i<=h_len;i++)
+       Win->addch(Height+1,col+i,' ');
+    }
+    Win->attroff(A_REVERSE);
+  }
+}
index b3bd3071c5f218ab2ab410143b1cb4bcde683991..4072c3c3f6930b6bf139b7a11c4b5e12575eef9c 100644 (file)
   modified by Ulrich Drepper  (drepper@karlsruhe.gmd.de)
           and Anatoly Ivasyuk (anatoly@nick.csh.rit.edu)
 
-  modified by Juergen Pfeifer (Juergen.Pfeifer@T-Online.de)      
+  modified by Juergen Pfeifer (juergen.pfeifer@gmx.net)
 */
 
 #include "cursesw.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursesw.cc,v 1.10 1997/10/20 21:26:35 juergen Exp $")
+MODULE_ID("$Id: cursesw.cc,v 1.15 1999/09/11 23:26:29 tom Exp $")
 
 #define COLORS_NEED_INITIALIZATION  -1
 #define COLORS_NOT_INITIALIZED       0
@@ -36,6 +36,12 @@ MODULE_ID("$Id: cursesw.cc,v 1.10 1997/10/20 21:26:35 juergen Exp $")
 long NCursesWindow::count = 0L;
 bool NCursesWindow::b_initialized = FALSE;
 
+#if defined(__GNUG__)
+#  ifndef _IO_va_list
+#    define _IO_va_list char *
+#  endif
+#endif
+
 int
 NCursesWindow::scanw(const char* fmt, ...)
 {
@@ -45,8 +51,8 @@ NCursesWindow::scanw(const char* fmt, ...)
     char buf[BUFSIZ];
     int result = wgetstr(w, buf);
     if (result == OK) {
-       strstreambuf ss(buf, BUFSIZ);
-       result = ss.vscan(fmt, args);
+       strstreambuf ss(buf, sizeof(buf));
+       result = ss.vscan(fmt, (_IO_va_list)args);
     }
     va_end(args);
     return result;
@@ -67,8 +73,8 @@ NCursesWindow::scanw(int y, int x, const char* fmt, ...)
     if (result == OK) {
        result = wgetstr(w, buf);
        if (result == OK) {
-           strstreambuf ss(buf, BUFSIZ);
-           result = ss.vscan(fmt, args);
+           strstreambuf ss(buf, sizeof(buf));
+           result = ss.vscan(fmt, (_IO_va_list)args);
        }
     }
     va_end(args);
@@ -138,7 +144,7 @@ NCursesWindow::initialize() {
 NCursesWindow::NCursesWindow() {
   if (!b_initialized)
     initialize();
-  
+
   w = (WINDOW *)0;
   init();
   alloced = FALSE;
@@ -166,7 +172,7 @@ NCursesWindow::NCursesWindow(WINDOW* &window)
 {
     if (!b_initialized)
       initialize();
-    
+
     w = window;
     init();
     alloced = FALSE;
@@ -177,7 +183,7 @@ NCursesWindow::NCursesWindow(WINDOW* &window)
 NCursesWindow::NCursesWindow(NCursesWindow& win, int l, int c,
                             int begin_y, int begin_x, char absrel)
 {
-    if (absrel == 'a') { // absolute origin 
+    if (absrel == 'a') { // absolute origin
        begin_y -= win.begy();
        begin_x -= win.begx();
     }
@@ -198,7 +204,28 @@ NCursesWindow::NCursesWindow(NCursesWindow& win, int l, int c,
     alloced = TRUE;
     count++;
 }
-  
+
+NCursesWindow::NCursesWindow(NCursesWindow& win,
+                               bool do_box NCURSES_PARAM_INIT(TRUE))
+{
+  w = :: derwin(win.w,win.height()-2,win.width()-2,1,1);
+  if (w == 0) {
+    err_handler("Cannot construct subwindow");
+  }
+
+  par = &win;
+  sib = win.subwins;
+  win.subwins = this;
+  subwins = 0;
+  alloced = TRUE;
+  count++;
+
+  if (do_box) {
+    win.box();
+    win.touchwin();
+  }
+}
+
 NCursesWindow NCursesWindow::Clone() {
   WINDOW *d = ::dupwin(w);
   NCursesWindow W(d);
@@ -317,7 +344,7 @@ int NCursesWindow::colorInitialized = COLORS_NOT_INITIALIZED;
 void
 NCursesWindow::useColors(void)
 {
-    if (colorInitialized == COLORS_NOT_INITIALIZED) {        
+    if (colorInitialized == COLORS_NOT_INITIALIZED) {
       if (b_initialized) {
        if (::has_colors()) {
          ::start_color();
@@ -332,12 +359,12 @@ NCursesWindow::useColors(void)
 }
 
 short
-NCursesWindow::getcolor(int getback) const 
+NCursesWindow::getcolor(int getback) const
 {
     short fore, back;
 
     if (colorInitialized==COLORS_ARE_REALLY_THERE) {
-      if (pair_content(PAIR_NUMBER(w->_attrs), &fore, &back))
+      if (pair_content((short)PAIR_NUMBER(w->_attrs), &fore, &back))
        err_handler("Can't get color pair");
     }
     else {
@@ -357,7 +384,7 @@ int NCursesWindow::NumberOfColors()
 }
 
 short
-NCursesWindow::getcolor() const 
+NCursesWindow::getcolor() const
 {
   if (colorInitialized==COLORS_ARE_REALLY_THERE)
     return PAIR_NUMBER(w->_attrs);
@@ -378,7 +405,7 @@ int
 NCursesWindow::setpalette(short fore, short back)
 {
   if (colorInitialized==COLORS_ARE_REALLY_THERE)
-    return setpalette(fore, back, PAIR_NUMBER(w->_attrs));
+    return setpalette(fore, back, (short)PAIR_NUMBER(w->_attrs));
   else
     return OK;
 }
@@ -390,7 +417,7 @@ NCursesWindow::setcolor(short pair)
   if (colorInitialized==COLORS_ARE_REALLY_THERE) {
     if ((pair < 1) || (pair > COLOR_PAIRS))
       err_handler("Can't set color pair");
-    
+
     attroff(A_COLOR);
     attrset(COLOR_PAIR(pair));
   }
@@ -400,15 +427,6 @@ NCursesWindow::setcolor(short pair)
 extern "C" int _nc_has_mouse(void);
 
 bool NCursesWindow::has_mouse() const {
-  return ((::has_key(KEY_MOUSE) || ::_nc_has_mouse()) 
+  return ((::has_key(KEY_MOUSE) || ::_nc_has_mouse())
          ? TRUE : FALSE);
 }
-
-NCursesPad::NCursesPad(int lines, int cols) : NCursesWindow() {
-  w = ::newpad(lines,cols);
-  if (w==(WINDOW*)0) {
-    count--;
-    err_handler("Cannot construct window");
-  }
-  alloced = TRUE;
-}
index 0e8e7d4df2f610825bc288eb0c24cfc5dcdc0db9..8091194cbc5e81c13c2e169faf3d75f92fe03ea0 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _CURSESW_H
 #define _CURSESW_H
 
-// $Id: cursesw.h,v 1.13 1998/01/20 16:53:50 Fred.Fish Exp $
+// $Id: cursesw.h,v 1.18 1999/10/23 15:16:53 tom Exp $
 
 #include <etip.h>
 #include <stdio.h>
@@ -74,6 +74,12 @@ inline chtype UNDEF(attrset)(chtype at) { return attrset(at); }
 #define attrset UNDEF(attrset)
 #endif
 
+#ifdef color_set
+inline chtype UNDEF(color_set)(short p,void* opts) { return color_set(p,opts); }
+#undef color_set
+#define color_set UNDEF(color_set)
+#endif
+
 #ifdef border
 inline int UNDEF(border)(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl, chtype tr, chtype bl, chtype br)
 { return border(ls,rs,ts,bs,tl,tr,bl,br); }
@@ -366,7 +372,7 @@ inline WINDOW *UNDEF(subpad)(WINDOW *p, int l, int c, int y, int x)
 #endif
 
 #ifdef timeout
-inline int UNDEF(timeout)(int delay) { return timeout(delay); }
+inline void UNDEF(timeout)(int delay) { timeout(delay); }
 #undef timeout
 #define timeout UNDEF(timeout)
 #endif
@@ -726,6 +732,12 @@ public:
                char absrel = 'a');// if `a', by & bx are
   // absolute screen pos, else if `r', they are relative to par origin
 
+  NCursesWindow(NCursesWindow& par,// parent window
+               bool do_box = TRUE);
+  // this is the very common case that we want to create the subwindow that
+  // is two lines and two columns smaller and begins at (1,1).
+  // We may automatically request the box around it.
+
   virtual ~NCursesWindow();
 
   NCursesWindow Clone();
@@ -921,7 +933,7 @@ public:
   // position.
 
   int            insch(int y, int x, chtype ch) {
-    return ::mvwinsch(w,y,x,ch); }
+    return ::mvwinsch(w,y,x,(char)ch); }
   // Move cursor to requested position and then insert the attributed
   // character before that position.
 
@@ -946,12 +958,16 @@ public:
   int            attron (chtype at) { return ::wattron (w, at); }
   // Switch on the window attributes;
   
-  int            attroff(chtype at) { return ::wattroff(w, at); }
+  int            attroff(chtype at) { return ::wattroff(w, (int) at); }
   // Switch off the window attributes;
 
-  int            attrset(chtype at) { return ::wattrset(w, at); }
+  int            attrset(chtype at) { return ::wattrset(w, (int) at); }
   // Set the window attributes;
 
+  int            color_set(short color_pair_number, void* opts=NULL) {
+    return ::wcolor_set(w, color_pair_number, opts); }
+  // Set the window color attribute;
+
   int            chgat(int n,attr_t attr, short color, const void *opts=NULL) {
     return ::wchgat(w,n,attr,color,opts); }
   // Change the attributes of the next n characters in the current line. If
@@ -1216,19 +1232,79 @@ public:
       useColors(); }                      
 };
 
+// These enum definitions really belong inside the NCursesPad class, but only
+// recent compilers support that feature.
+
+  typedef enum {
+    REQ_PAD_REFRESH = KEY_MAX + 1,
+    REQ_PAD_UP,
+    REQ_PAD_DOWN,
+    REQ_PAD_LEFT,
+    REQ_PAD_RIGHT,
+    REQ_PAD_EXIT
+  } Pad_Request;
+
+  const Pad_Request PAD_LOW  = REQ_PAD_REFRESH;   // lowest  op-code
+  const Pad_Request PAD_HIGH = REQ_PAD_EXIT;      // highest op-code
+
+// -------------------------------------------------------------------------
+// Pad Support. We allow an association of a pad with a "real" window
+// through which the pad may be viewed.
+// -------------------------------------------------------------------------
 class NCursesPad : public NCursesWindow {
+private:
+  NCursesWindow* viewWin;       // the "viewport" window
+  NCursesWindow* viewSub;       // the "viewport" subwindow
+
+  int h_gridsize, v_gridsize;
+
+protected:
+  int min_row, min_col;         // top left row/col of the pads display area
+
+  NCursesWindow* Win(void) const {
+    // Get the window into which the pad should be copied (if any)
+    return (viewSub?viewSub:(viewWin?viewWin:0));
+  }
+
+  NCursesWindow* getWindow(void) const {
+    return viewWin;
+  }
+
+  NCursesWindow* getSubWindow(void) const {
+    return viewSub;
+  }
+
+  virtual int driver (int key);      // Virtualize keystroke key
+  // The driver translates the keystroke c into an Pad_Request
+
+  virtual void OnUnknownOperation(int pad_req) {
+    ::beep();
+  }
+  // This is called if the driver returns an unknown op-code
+
+  virtual void OnNavigationError(int pad_req) {
+    ::beep();
+  }
+  // This is called if a navigation request couldn't be satisfied
+
+  virtual void OnOperation(int pad_req) {
+  };
+  // OnOperation is called if a Pad_Operation was executed and just before
+  // the refresh() operation is done.
+
 public:
   NCursesPad(int lines, int cols);
+  // create a pad with the given size
+
+  virtual ~NCursesPad() {}
 
   int echochar(const chtype ch) { return ::pechochar(w,ch); }
   // Put the attributed character onto the pad and immediately do a
   // prefresh().
   
-  // For Pad's we reimplement refresh() and noutrefresh() to do nothing.
-  // You should call the versions with the argument list that are specific
-  // for Pad's.
-  int refresh() { return OK; };
-  int noutrefresh() { return OK; };
+  int refresh();
+  // If a viewport is defined the pad is displayed in this window, otherwise
+  // this is a noop.
 
   int refresh(int pminrow, int pmincol,
              int sminrow, int smincol,
@@ -1240,6 +1316,10 @@ public:
   // on the screen. <b>refresh</b> copies a rectangle of this size beginning
   // with top left corner pminrow,pmincol onto the screen and calls doupdate().
 
+  int noutrefresh();
+  // If a viewport is defined the pad is displayed in this window, otherwise
+  // this is a noop.
+
   int noutrefresh(int pminrow, int pmincol,
                  int sminrow, int smincol,
                  int smaxrow, int smaxcol) {
@@ -1247,6 +1327,49 @@ public:
                          sminrow,smincol,smaxrow,smaxcol);
   }
   // Does the same like refresh() but without calling doupdate().
+
+  virtual void setWindow(NCursesWindow& view, int v_grid = 1, int h_grid = 1);
+  // Add the window "view" as viewing window to the pad.
+
+  virtual void setSubWindow(NCursesWindow& sub);
+  // Use the subwindow "sub" of the viewport window for the actual viewing.
+  // The full viewport window is usually used to provide some decorations
+  // like frames, titles etc.
+
+  virtual void operator() (void);
+  // Perform Pad's operation
+};
+
+// A FramedPad is constructed always with a viewport window. This viewport
+// will be framed (by a box() command) and the interior of the box is the
+// viewport subwindow. On the frame we display scrollbar sliders.
+class NCursesFramedPad : public NCursesPad {
+protected:
+  virtual void OnOperation(int pad_req);
+
+public:
+  NCursesFramedPad(NCursesWindow& win, int lines, int cols,
+                  int v_grid = 1, int h_grid = 1)
+    : NCursesPad(lines,cols) {
+    NCursesPad::setWindow(win,v_grid,h_grid);
+    NCursesPad::setSubWindow(*(new NCursesWindow(win)));
+  }
+  // Construct the FramedPad with the given Window win as viewport.
+
+  virtual ~NCursesFramedPad() {
+    delete getSubWindow();
+  }
+
+  void setWindow(NCursesWindow& view, int v_grid = 1, int h_grid = 1) {
+    err_handler("Operation not allowed");
+  }
+  // Disable this call; the viewport is already defined
+
+  void setSubWindow(NCursesWindow& sub) {
+    err_handler("Operation not allowed");
+  }
+  // Disable this call; the viewport subwindow is already defined
+
 };
 
 #endif // _CURSESW_H
index 719006ec02f6ea59525987ca08e530335737e85b..82ff83e11954cdf96c181866b3dd2542db4320fe 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
 #include "cursslk.h"
 #include "cursesapp.h"
 #include "internal.h"
 
-MODULE_ID("$Id: cursslk.cc,v 1.2 1998/02/11 12:13:41 tom Exp $")
+MODULE_ID("$Id: cursslk.cc,v 1.5 1999/05/16 17:31:01 juergen Exp $")
 
 void Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text)  {
   delete[] label;
   label = new char[1 + ::strlen(text)];
-  ::strcpy(label,text);
+  (strcpy)(label,text);
 }
 
 long Soft_Label_Key_Set::count      = 0L;
index f2e2570151c3da58a9faff4b306fb0599f0230a7..1598b0634baba1ee4bd67aa3ef76c8d811bdc184 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
-// $Id: cursslk.h,v 1.2 1998/02/11 12:13:41 tom Exp $
+// $Id: cursslk.h,v 1.5 1999/05/16 17:30:08 juergen Exp $
 
 #ifndef _CURSSLK_H
 #define _CURSSLK_H
@@ -192,6 +192,11 @@ public:
       Error("slk_attrset");
   }
 
+  inline void color(short color_pair_number) {
+    if (ERR==::slk_color(color_pair_number))
+      Error("slk_color");
+  }
+
   inline attr_t attr() const {
     return ::slk_attr();
   }
index d0728eff98992985db1ecc4e4d258d8766b7a780..088dc2fbc86dc810e6deeadeab303cf15a7e5b74 100644 (file)
@@ -4,9 +4,9 @@
  *   written by Anatoly Ivasyuk (anatoly@nick.csh.rit.edu)
  *
  *   Demo code for NCursesMenu and NCursesForm written by
- *   Juergen Pfeifer <Juergen.Pfeifer@T-Online.de>
+ *   Juergen Pfeifer <juergen.pfeifer@gmx.net>
  *
- * $Id: demo.cc,v 1.13 1998/02/19 16:54:54 florian Exp $
+ * $Id: demo.cc,v 1.18 1999/09/11 18:57:54 tom Exp $
  */
 
 #include "cursesapp.h"
 
 extern "C" unsigned int sleep(unsigned int);
 
+#undef index   // needed for NeXT
+
 //
 // -------------------------------------------------------------------------
 //
-class SillyDemo 
+class SillyDemo
 {
   public:
   void run(int sleeptime) {
@@ -128,8 +130,8 @@ class UserData
 private:
   int u;
 public:
-  UserData(int x) : u(x) {} 
-  int sleeptime() const { return u; }  
+  UserData(int x) : u(x) {}
+  int sleeptime() const { return u; }
 };
 //
 // -------------------------------------------------------------------------
@@ -146,7 +148,7 @@ public:
 
   bool action() {
     SillyDemo a;
-    a.run(UserData()->sleeptime());
+    a.run(NCursesUserItem<T>::UserData()->sleeptime());
     return FALSE;
   }
 };
@@ -167,7 +169,7 @@ public:
 class Label : public NCursesFormField
 {
 public:
-  Label(const char*title,
+  Label(const char* title,
        int row, int col)
     : NCursesFormField(1,(int)::strlen(title),row,col) {
       set_value(title);
@@ -203,10 +205,10 @@ private:
   Enumeration_Field *eft;
 
   static char *weekdays[];
-  
+
 public:
   TestForm() : NCursesForm(13,51,(lines()-15)/2,(cols()-53)/2) {
-    
+
     F     = new NCursesFormField*[10];
     mft   = new MyFieldType('X');
     ift   = new Integer_Field(0,1,10);
@@ -222,10 +224,10 @@ public:
     F[7]  = new NCursesFormField(1,12,3,35);
     F[8]  = new NCursesFormField(4,46,6,1,2);
     F[9]  = new NCursesFormField();
-  
+
     InitForm(F,TRUE,TRUE);
     boldframe();
-    
+
     F[5]->set_fieldtype(*eft);
     F[6]->set_fieldtype(*ift);
 
@@ -271,6 +273,48 @@ public:
     return FALSE;
   }
 };
+//
+// -------------------------------------------------------------------------
+//
+class PadAction : public NCursesMenuItem
+{
+public:
+  PadAction(const char* s) : NCursesMenuItem(s) {
+  }
+
+  bool action() {
+    const int GRIDSIZE = 3;
+    const int PADSIZE  = 200;
+    unsigned gridcount = 0;
+
+    NCursesPanel std;
+    NCursesPanel P(std.lines()-2,std.cols()-2,1,1);
+    NCursesFramedPad FP(P,PADSIZE,PADSIZE);
+
+    for (int i=0; i < PADSIZE; i++) {
+      for (int j=0; j < PADSIZE; j++) {
+       if (i % GRIDSIZE == 0 && j % GRIDSIZE == 0) {
+         if (i==0 || j==0)
+           FP.addch('+');
+         else
+           FP.addch((chtype)('A' + (gridcount++ % 26)));
+       }
+       else if (i % GRIDSIZE == 0)
+         FP.addch('-');
+       else if (j % GRIDSIZE == 0)
+         FP.addch('|');
+       else
+         FP.addch(' ');
+      }
+    }
+
+    P.label("Pad Demo",NULL);
+    FP();
+    P.clear();
+    return FALSE;
+  }
+};
+
 //
 // -------------------------------------------------------------------------
 //
@@ -289,24 +333,26 @@ private:
   NCursesPanel* P;
   NCursesMenuItem** I;
   UserData *u;
+  #define n_items 7
 
 public:
-  MyMenu () 
-    : NCursesMenu (8, 8, (lines()-10)/2, (cols()-10)/2)
+  MyMenu ()
+    : NCursesMenu (n_items+2, 8, (lines()-10)/2, (cols()-10)/2)
   {
     u = new UserData(1);
-    I = new NCursesMenuItem*[7];
+    I = new NCursesMenuItem*[1+n_items];
     I[0] = new PassiveItem("One");
     I[1] = new PassiveItem("Two");
     I[2] = new MyAction<UserData> ("Silly", u);
     I[3] = new FormAction("Form");
-    I[4] = new PassiveItem("Five");
-    I[5] = new QuitItem();
-    I[6] = new NCursesMenuItem(); // Terminating empty item
+    I[4] = new PadAction("Pad");
+    I[5] = new PassiveItem("Six");
+    I[6] = new QuitItem();
+    I[7] = new NCursesMenuItem(); // Terminating empty item
 
     InitMenu(I,TRUE,TRUE);
-    
-    P = new NCursesPanel(1,6,LINES-1,1);
+
+    P = new NCursesPanel(1,n_items,LINES-1,1);
     boldframe("Demo","Silly");
     P->show();
   }
@@ -387,7 +433,7 @@ void TestApplication::title() {
 
   titleWindow->bkgd(screen_titles());
   titleWindow->addstr(0,(titleWindow->cols()-len)/2,title);
-  titleWindow->noutrefresh();  
+  titleWindow->noutrefresh();
 }
 
 
index 04f4e2225dcad0f5512f38436e2e2ff4f235245b..e108074adf4e5706b9c135c3ac46c8dafcfa5943 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id: edit_cfg.sh,v 1.4 1998/02/11 12:13:41 tom Exp $
+# $Id: edit_cfg.sh,v 1.7 1999/09/12 02:00:14 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
 #      $2 = etip.h
 #
 for name in \
+       CPP_HAS_PARAM_INIT \
+       ETIP_NEEDS_MATH_EXCEPTION \
+       ETIP_NEEDS_MATH_H \
        HAVE_BUILTIN_H \
+       HAVE_GXX_BUILTIN_H \
+       HAVE_GPP_BUILTIN_H \
        HAVE_TYPEINFO \
        HAVE_VALUES_H
 do
index 170d604629b597b1fa42d1aa80f05f3fd7979297..985cd1eb6a06695f81ceac4c6e152d3c08cdcfdc 100644 (file)
@@ -1,6 +1,6 @@
 // * This makes emacs happy -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
-// $Id: etip.h.in,v 1.4 1998/02/17 09:01:38 juergen Exp $
+// $Id: etip.h.in,v 1.13 1999/09/12 02:01:59 tom Exp $
 
 #ifndef _ETIP_H
 #define _ETIP_H
 #define HAVE_BUILTIN_H 0
 #endif
 
+#ifndef HAVE_GXX_BUILTIN_H
+#define HAVE_GXX_BUILTIN_H 0
+#endif
+
+#ifndef HAVE_GPP_BUILTIN_H
+#define HAVE_GPP_BUILTIN_H 0
+#endif
+
 #ifndef HAVE_TYPEINFO
 #define HAVE_TYPEINFO 0
 #endif
 #define HAVE_VALUES_H 0
 #endif
 
+#ifndef ETIP_NEEDS_MATH_H
+#define ETIP_NEEDS_MATH_H 0
+#endif
+
+#ifndef ETIP_NEEDS_MATH_EXCEPTION
+#define ETIP_NEEDS_MATH_EXCEPTION 0
+#endif
+
+#ifndef CPP_HAS_PARAM_INIT
+#define CPP_HAS_PARAM_INIT 0
+#endif
+
 #ifdef __GNUG__
 #  if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8))
 #    if HAVE_TYPEINFO
 #endif
 
 #if defined(__GNUG__)
-#  if HAVE_BUILTIN_H
+#  if HAVE_BUILTIN_H || HAVE_GXX_BUILTIN_H || HAVE_GPP_BUILTIN_H
+#    if ETIP_NEEDS_MATH_H
+#      if ETIP_NEEDS_MATH_EXCEPTION
+#        undef exception
+#        define exception math_exception
+#      endif
+#      include <math.h>
+#    endif
+#    undef exception
 #    define exception builtin_exception
-#    include <builtin.h>
+#    if HAVE_GPP_BUILTIN_H
+#     include <gpp/builtin.h>
+#    elif HAVE_GXX_BUILTIN_H
+#     include <g++/builtin.h>
+#    else
+#     include <builtin.h>
+#    endif
 #    undef exception
 #  endif
 #elif defined (__SUNPRO_CC)
@@ -80,6 +114,13 @@ extern "C" {
 #include <errno.h>
 }
 
+// Language features
+#if CPP_HAS_PARAM_INIT
+#define NCURSES_PARAM_INIT(value) = value
+#else
+#define NCURSES_PARAM_INIT(value) /*nothing*/
+#endif
+
 // Forward Declarations
 class NCursesPanel;
 class NCursesMenu;
@@ -88,8 +129,8 @@ class NCursesForm;
 class NCursesException
 {
 public:
-  int errorno;
   const char *message;
+  int errorno;
 
   NCursesException (const char* msg, int err)
     : message(msg), errorno (err)
index 9e5de1b468c3cf8ba3035435c0298cba751a3fe1..cdf256cbd71e130d853cdae8f69b59a15c0cb778 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997             *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997                 *
  ****************************************************************************/
 
-// $Id: internal.h,v 1.3 1998/02/11 12:13:40 tom Exp $
+// $Id: internal.h,v 1.5 1999/05/16 17:29:25 juergen Exp $
 
 #ifndef _CPLUS_INTERNAL_H
 #define _CPLUS_INTERNAL_H 1
index 55048d9e268230440e2de21af3030543530198a8..0709805847d2070e77f0507350a123814ce3d05c 100644 (file)
@@ -1,5 +1,5 @@
 # Program modules
-# $Id: modules,v 1.5 1998/02/11 12:13:41 tom Exp $
+# $Id: modules,v 1.6 1999/07/31 09:46:54 juergen Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -36,6 +36,7 @@ cursesf               c++             $(srcdir)       $(cursesf_h) $(cursesapp_h)
 cursesm                c++             $(srcdir)       $(cursesm_h) $(cursesapp_h)
 cursesp                c++             $(srcdir)       $(cursesp_h)
 cursesw                c++             $(srcdir)       $(cursesw_h)
+cursespad      c++             $(srcdir)       $(cursesw_h)
 cursslk                c++             $(srcdir)       $(cursslk_h) $(cursesapp_h)
 cursesapp      c++             $(srcdir)       $(cursesapp_h)
 cursesmain     c++             $(srcdir)       $(cursesapp_h)
index 5bb9a89ddc9e00298636ac9c69e086f55b8608fa..729d6cfef51806cd218aa0386c1b5077ad3b9736 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
 #
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -52,11 +52,53 @@ trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     alpha:OSF1:*:*)
+       if test $UNAME_RELEASE = "V4.0"; then
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+       fi
        # A Vn.n version is a released version.
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
+       cat <<EOF >dummy.s
+       .globl main
+       .ent main
+main:
+       .frame \$30,0,\$26,0
+       .prologue 0
+       .long 0x47e03d80 # implver $0
+       lda \$2,259
+       .long 0x47e20c21 # amask $2,$1
+       srl \$1,8,\$2
+       sll \$2,2,\$2
+       sll \$0,3,\$0
+       addl \$1,\$0,\$0
+       addl \$2,\$0,\$0
+       ret \$31,(\$26),1
+       .end main
+EOF
+       ${CC-cc} dummy.s -o dummy 2>/dev/null
+       if test "$?" = 0 ; then
+               ./dummy
+               case "$?" in
+                       7)
+                               UNAME_MACHINE="alpha"
+                               ;;
+                       15)
+                               UNAME_MACHINE="alphaev5"
+                               ;;
+                       14)
+                               UNAME_MACHINE="alphaev56"
+                               ;;
+                       10)
+                               UNAME_MACHINE="alphapca56"
+                               ;;
+                       16)
+                               UNAME_MACHINE="alphaev6"
+                               ;;
+               esac
+       fi
+       rm -f dummy.s dummy
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
        exit 0 ;;
     21064:Windows_NT:50:3)
        echo alpha-dec-winnt3.5
@@ -68,12 +110,39 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
       echo m68k-cbm-netbsd${UNAME_RELEASE}
       exit 0 ;;
     amiga:OpenBSD:*:*)
-      echo m68k-cbm-openbsd${UNAME_RELEASE}
-      exit 0 ;;
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit 0 ;;
+    arc64:OpenBSD:*:*)
+       echo mips64el-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    arc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    hkmips:OpenBSD:*:*)
+       echo mips-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    pmax:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sgi:OpenBSD:*:*)
+       echo mips-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit 0;;
-    Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
+    arm32:NetBSD:*:*)
+       echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       exit 0 ;;
+    SR2?01:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit 0;;
+    Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*)
        # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
        if test "`(/bin/universe) 2>/dev/null`" = att ; then
                echo pyramid-pyramid-sysv3
@@ -84,6 +153,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     NILE:*:*:dcosx)
        echo pyramid-pyramid-svr4
        exit 0 ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
        echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit 0 ;;
@@ -108,6 +180,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     sun3*:SunOS:*:*)
        echo m68k-sun-sunos${UNAME_RELEASE}
        exit 0 ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit 0 ;;
     aushp:SunOS:*:*)
        echo sparc-auspex-sunos${UNAME_RELEASE}
        exit 0 ;;
@@ -115,23 +199,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        echo m68k-atari-netbsd${UNAME_RELEASE}
        exit 0 ;;
     atari*:OpenBSD:*:*)
-       echo m68k-atari-openbsd${UNAME_RELEASE}
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     sun3*:NetBSD:*:*)
        echo m68k-sun-netbsd${UNAME_RELEASE}
        exit 0 ;;
     sun3*:OpenBSD:*:*)
-       echo m68k-sun-openbsd${UNAME_RELEASE}
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     mac68k:NetBSD:*:*)
        echo m68k-apple-netbsd${UNAME_RELEASE}
        exit 0 ;;
     mac68k:OpenBSD:*:*)
-       echo m68k-apple-openbsd${UNAME_RELEASE}
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+       echo m88k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     powerpc:machten:*:*)
        echo powerpc-apple-machten${UNAME_RELEASE}
        exit 0 ;;
+    macppc:NetBSD:*:*)
+        echo powerpc-apple-netbsd${UNAME_RELEASE}
+        exit 0 ;;
     RISC*:Mach:*:*)
        echo mips-dec-mach_bsd4.3
        exit 0 ;;
@@ -141,7 +234,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     VAX*:ULTRIX*:*:*)
        echo vax-dec-ultrix${UNAME_RELEASE}
        exit 0 ;;
-    2020:CLIX:*:*)
+    2020:CLIX:*:* | 2430:CLIX:*:*)
        echo clipper-intergraph-clix${UNAME_RELEASE}
        exit 0 ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
@@ -214,6 +307,10 @@ EOF
     i?86:AIX:*:*)
        echo i386-ibm-aix
        exit 0 ;;
+    *:MVS:*:* | *:OS390:*:*|*:OS/390:*:*)
+                              # uname -m gives a processor model number  /* S/390 -- gil -- 1389 */
+       echo s390-ibm-os390    # on R1 and R2, uname -s reports OS390
+       exit 0 ;;              # on R3, uname -s reports OS/390
     *:AIX:2:3)
        if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
                sed 's/^                //' << EOF >dummy.c
@@ -237,7 +334,8 @@ EOF
        fi
        exit 0 ;;
     *:AIX:*:4)
-       if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
                IBM_ARCH=rs6000
        else
                IBM_ARCH=powerpc
@@ -270,12 +368,44 @@ EOF
     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
        echo m68k-hp-bsd4.4
        exit 0 ;;
-    9000/[3478]??:HP-UX:*:*)
+    9000/[34678]??:HP-UX:*:*)
        case "${UNAME_MACHINE}" in
            9000/31? )            HP_ARCH=m68000 ;;
            9000/[34]?? )         HP_ARCH=m68k ;;
-           9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
-           9000/8?? )            HP_ARCH=hppa1.0 ;;
+           9000/6?? | 9000/7?? | 9000/80[024] | 9000/8?[13679] | 9000/892 )
+              sed 's/^              //' << EOF >dummy.c
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+               {
+               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+               case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+                   switch (bits)
+                       {
+                       case 64: puts ("hppa2.0w"); break;
+                       case 32: puts ("hppa2.0n"); break;
+                       default: puts ("hppa2.0"); break;
+                       } break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+                   puts ("hppa2.0"); break;
+              #endif
+               default: puts ("hppa1.0"); break;
+               }
+                  exit (0);
+              }
+EOF
+       (${CC-cc} dummy.c -o dummy 2>/dev/null ) && HP_ARCH=`./dummy`
+       rm -f dummy.c dummy
        esac
        HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
        echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@@ -378,8 +508,11 @@ EOF
     hp3[0-9][05]:NetBSD:*:*)
        echo m68k-hp-netbsd${UNAME_RELEASE}
        exit 0 ;;
-    hp3[0-9][05]:OpenBSD:*:*)
-       echo m68k-hp-openbsd${UNAME_RELEASE}
+    hp300:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
        exit 0 ;;
     i?86:BSD/386:*:* | *:BSD/OS:*:*)
        echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -394,52 +527,146 @@ EOF
        echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        exit 0 ;;
     i*:CYGWIN*:*)
-       echo i386-pc-cygwin32
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit 0 ;;
+    i*:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
        exit 0 ;;
     p*:CYGWIN*:*)
-       echo powerpcle-unknown-cygwin32
+       echo powerpcle-unknown-cygwin
        exit 0 ;;
     prep*:SunOS:5.*:*)
        echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit 0 ;;
     *:GNU:*:*)
-       echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit 0 ;;
     *:Linux:*:*)
+       # uname on the ARM produces all sorts of strangeness, and we need to
+       # filter it out.
+       case "$UNAME_MACHINE" in
+         arm* | sa110*)              UNAME_MACHINE="arm" ;;
+       esac
+
        # The BFD linker knows what the default object file format is, so
        # first see if it will tell us.
        ld_help_string=`ld --help 2>&1`
-       if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then
-         echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
-         echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then
-         echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0
-       elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then
-         echo "powerpc-unknown-linux-gnu" ; exit 0
-       elif test "${UNAME_MACHINE}" = "alpha" ; then
-         echo alpha-unknown-linux-gnu ; exit 0
-       elif test "${UNAME_MACHINE}" = "sparc" ; then
-         echo sparc-unknown-linux-gnu ; exit 0
+       ld_supported_emulations=`echo $ld_help_string \
+                        | sed -ne '/supported emulations:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported emulations: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_emulations" in
+         i?86linux)  echo "${UNAME_MACHINE}-pc-linux-gnuaout"      ; exit 0 ;;
+         i?86coff)   echo "${UNAME_MACHINE}-pc-linux-gnucoff"      ; exit 0 ;;
+         sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+         armlinux)   echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+         m68klinux)  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+         elf32ppc)   echo "powerpc-unknown-linux-gnu"              ; exit 0 ;;
+       esac
+
+       if test "${UNAME_MACHINE}" = "alpha" ; then
+               sed 's/^        //'  <<EOF >dummy.s
+               .globl main
+               .ent main
+       main:
+               .frame \$30,0,\$26,0
+               .prologue 0
+               .long 0x47e03d80 # implver $0
+               lda \$2,259
+               .long 0x47e20c21 # amask $2,$1
+               srl \$1,8,\$2
+               sll \$2,2,\$2
+               sll \$0,3,\$0
+               addl \$1,\$0,\$0
+               addl \$2,\$0,\$0
+               ret \$31,(\$26),1
+               .end main
+EOF
+               LIBC=""
+               ${CC-cc} dummy.s -o dummy 2>/dev/null
+               if test "$?" = 0 ; then
+                       ./dummy
+                       case "$?" in
+                       7)
+                               UNAME_MACHINE="alpha"
+                               ;;
+                       15)
+                               UNAME_MACHINE="alphaev5"
+                               ;;
+                       14)
+                               UNAME_MACHINE="alphaev56"
+                               ;;
+                       10)
+                               UNAME_MACHINE="alphapca56"
+                               ;;
+                       16)
+                               UNAME_MACHINE="alphaev6"
+                               ;;
+                       esac
+
+                       objdump --private-headers dummy | \
+                         grep ld.so.1 > /dev/null
+                       if test "$?" = 0 ; then
+                               LIBC="libc1"
+                       fi
+               fi
+               rm -f dummy.s dummy
+               echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
+       elif test "${UNAME_MACHINE}" = "mips" ; then
+         cat >dummy.c <<EOF
+main(argc, argv)
+     int argc;
+     char *argv[];
+{
+#ifdef __MIPSEB__
+  printf ("%s-unknown-linux-gnu\n", argv[1]);
+#endif
+#ifdef __MIPSEL__
+  printf ("%sel-unknown-linux-gnu\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+         ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
+         rm -f dummy.c dummy
        else
-         # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us
-         # useful --help.  Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout.
-         test ! -d /usr/lib/ldscripts/. \
-           && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+         # Either a pre-BFD a.out linker (linux-gnuoldld)
+         # or one that does not give us useful --help.
+         # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+         # If ld does not provide *any* "supported emulations:"
+         # that means it is gnuoldld.
+         echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
+         test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+
+         case "${UNAME_MACHINE}" in
+         i?86)
+           VENDOR=pc;
+           ;;
+         *)
+           VENDOR=unknown;
+           ;;
+         esac
          # Determine whether the default compiler is a.out or elf
          cat >dummy.c <<EOF
+#include <features.h>
 main(argc, argv)
-int argc;
-char *argv[];
+     int argc;
+     char *argv[];
 {
 #ifdef __ELF__
-  printf ("%s-pc-linux-gnu\n", argv[1]);
+# ifdef __GLIBC__
+#  if (__GLIBC__ >= 2)
+    printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
+#  else
+    printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+#  endif
+# else
+   printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
+# endif
 #else
-  printf ("%s-pc-linux-gnuaout\n", argv[1]);
+  printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
 #endif
   return 0;
 }
@@ -452,9 +679,31 @@ EOF
     i?86:DYNIX/ptx:4*:*)
        echo i386-sequent-sysv4
        exit 0 ;;
+    i?86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit 0 ;;
+    # SysVr5/Unixware7
+    i?86:*:5*:* | i?86:SYSTEM_V:5*:*)
+        if uname -a | grep SCO >/dev/null 2>/dev/null ; then
+           (/bin/uname -s|egrep UnixWare >/dev/null) && UNAME_VER=uw${UNAME_VERSION}
+           if /bin/uname -X 2>/dev/null >/dev/null ; then
+               (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+           fi
+               echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}${UNAME_VER}
+       else
+               echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}
+       fi
+       exit 0 ;;
     i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
        if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+               echo ${UNAME_MACHINE}-univel-sysv4.2uw${UNAME_VERSION}
        else
                echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
        fi
@@ -473,6 +722,18 @@ EOF
                echo ${UNAME_MACHINE}-pc-sysv32
        fi
        exit 0 ;;
+    i?86:UnixWare:*:*)
+       if /bin/uname -X 2>/dev/null >/dev/null ; then
+         (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+           && UNAME_MACHINE=i586
+       fi
+       echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
+       exit 0 ;;
+    pc:*:*:*)
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+       echo i386-pc-msdosdjgpp
+        exit 0 ;;
     Intel:Mach:3*:*)
        echo i386-pc-mach3
        exit 0 ;;
@@ -532,6 +793,10 @@ EOF
                echo ns32k-sni-sysv
        fi
        exit 0 ;;
+    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                           # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
     *:UNIX_System_V:4*:FTX*)
        # From Gerald Hewes <hewes@openmarket.com>.
        # How about differentiating between stratus architectures? -djm
@@ -544,17 +809,25 @@ EOF
     mc68*:A/UX:*:*)
        echo m68k-apple-aux${UNAME_RELEASE}
        exit 0 ;;
-    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
+    news*:NEWS-OS:*:6*)
+       echo mips-sony-newsos6
+       exit 0 ;;
+    R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
        if [ -d /usr/nec ]; then
                echo mips-nec-sysv${UNAME_RELEASE}
        else
                echo mips-unknown-sysv${UNAME_RELEASE}
        fi
         exit 0 ;;
-    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                           # says <Richard.M.Bartel@ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit 0 ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit 0 ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit 0 ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit 0 ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
index 0432524944d2fe8d27d215bc19ba633c57f1c48a..9c47333ac99109af1dbc27619d697eb007add652 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Configuration validation subroutine script, version 1.1.
-#   Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
+#   Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
 # can handle that machine.  It does not imply ALL GNU software can.
@@ -149,19 +149,21 @@ esac
 case $basic_machine in
        # Recognize the basic CPU types without company name.
        # Some are omitted here because they have special meanings below.
-       tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \
-               | arme[lb] | pyramid \
-               | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
-               | alpha | we32k | ns16k | clipper | i370 | sh \
-               | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \
-               | pdp11 | mips64el | mips64orion | mips64orionel \
-               | sparc | sparclet | sparclite | sparc64)
+       tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+               | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
+               | 580 | i960 | h8300 \
+               | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w \
+               | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
+               | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
+               | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
+               | mipstx39 | mipstx39el \
+               | sparc | sparclet | sparclite | sparc64 | v850)
                basic_machine=$basic_machine-unknown
                ;;
        # We use `pc' rather than `unknown'
        # because (1) that's what they normally are, and
        # (2) the word "unknown" tends to confuse beginning users.
-       i[3456]86)
+       i[34567]86)
          basic_machine=$basic_machine-pc
          ;;
        # Object if more than one company name word.
@@ -170,14 +172,19 @@ case $basic_machine in
                exit 1
                ;;
        # Recognize the basic CPU types with company name.
-       vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \
-             | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
-             | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
-             | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
-             | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
-             | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
-             | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
-             | mips64el-* | mips64orion-* | mips64orionel-* | f301-*)
+       vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
+             | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
+             | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
+             | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
+             | xmp-* | ymp-* \
+             | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
+             | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
+             | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
+             | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+             | sparc64-* | mips64-* | mipsel-* \
+             | mips64el-* | mips64orion-* | mips64orionel-*  \
+             | mipstx39-* | mipstx39el-* \
+             | f301-*)
                ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
@@ -204,9 +211,9 @@ case $basic_machine in
        amiga | amiga-*)
                basic_machine=m68k-cbm
                ;;
-       amigados)
+       amigaos | amigados)
                basic_machine=m68k-cbm
-               os=-amigados
+               os=-amigaos
                ;;
        amigaunix | amix)
                basic_machine=m68k-cbm
@@ -344,20 +351,27 @@ case $basic_machine in
                basic_machine=i370-ibm
                os=-mvs
                ;;
+       s390 | s390-ibm*)
+# OS/390 support after:
+#  Linkname: Mortice Kern Systems (MKS) Inc. - OS/390 OpenEdition -- GNU Utilities Downloads
+#       URL: http://www.mks.com/s390/gnu/download.htm#autoconf
+               basic_machine=s390-ibm  #  /* S/390 -- gil -- 1419 */
+               os=-os390
+               ;;
 # I'm not sure what "Sysv32" means.  Should this be sysv3.2?
-       i[3456]86v32)
+       i[34567]86v32)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv32
                ;;
-       i[3456]86v4*)
+       i[34567]86v4*)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv4
                ;;
-       i[3456]86v)
+       i[34567]86v)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-sysv
                ;;
-       i[3456]86sol2)
+       i[34567]86sol2)
                basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
                os=-solaris2
                ;;
@@ -389,6 +403,14 @@ case $basic_machine in
        miniframe)
                basic_machine=m68000-convergent
                ;;
+       mipsel*-linux*)
+               basic_machine=mipsel-unknown
+               os=-linux-gnu
+               ;;
+       mips*-linux*)
+               basic_machine=mips-unknown
+               os=-linux-gnu
+               ;;
        mips3*-*)
                basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
                ;;
@@ -456,25 +478,23 @@ case $basic_machine in
         pc532 | pc532-*)
                basic_machine=ns32k-pc532
                ;;
-       pentium | p5)
-               basic_machine=i586-intel
+       pentium | p5 | k5 | nexen)
+               basic_machine=i586-pc
                ;;
-       pentiumpro | p6)
-               basic_machine=i686-intel
+       pentiumpro | p6 | k6 | 6x86)
+               basic_machine=i686-pc
                ;;
-       pentium-* | p5-*)
+       pentiumii | pentium2)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | nexen-*)
                basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       pentiumpro-* | p6-*)
+       pentiumpro-* | p6-* | k6-* | 6x86-*)
                basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       k5)
-               # We don't have specific support for AMD's K5 yet, so just call it a Pentium
-               basic_machine=i586-amd
-               ;;
-       nexen)
-               # We don't have specific support for Nexgen yet, so just call it a Pentium
-               basic_machine=i586-nexgen
+       pentiumii-* | pentium2-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        pn)
                basic_machine=pn-gould
@@ -558,6 +578,12 @@ case $basic_machine in
                basic_machine=i386-sequent
                os=-dynix
                ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
        tower | tower-32)
                basic_machine=m68k-ncr
                ;;
@@ -577,7 +603,7 @@ case $basic_machine in
                basic_machine=vax-dec
                os=-vms
                ;;
-       vpp*|vx|vx-*)
+       vpp*|vx|vx-*)
                basic_machine=f301-fujitsu
                ;;
        vxworks960)
@@ -607,7 +633,11 @@ case $basic_machine in
 # Here we handle the default manufacturer of certain CPU types.  It is in
 # some cases the only manufacturer, in others, it is the most popular.
        mips)
-               basic_machine=mips-mips
+               if [ x$os = x-linux-gnu ]; then
+                       basic_machine=mips-unknown
+               else
+                       basic_machine=mips-mips
+               fi
                ;;
        romp)
                basic_machine=romp-ibm
@@ -668,9 +698,12 @@ case $os in
        -solaris)
                os=-solaris2
                ;;
-       -unixware* | svr4*)
+       -svr4*)
                os=-sysv4
                ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
        -gnu/linux*)
                os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
                ;;
@@ -681,15 +714,16 @@ case $os in
        -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
              | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
              | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-             | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* | -os390* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
              | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -linux-gnu* | -uxpv*)
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -uxpv* | -beos*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -linux*)
@@ -802,6 +836,12 @@ case $basic_machine in
        sparc-* | *-sun)
                os=-sunos4.1.1
                ;;
+       *-be)
+               os=-beos
+               ;;
+       s390-ibm)
+               os=-os390  #  /* S/390 -- gil -- 1451 */
+               ;;
        *-ibm)
                os=-aix
                ;;
@@ -815,7 +855,7 @@ case $basic_machine in
                os=-sysv
                ;;
        *-cbm)
-               os=-amigados
+               os=-amigaos
                ;;
        *-dg)
                os=-dgux
index 6304cea7f3b1e87dd2ccb860e3397a97c4ccbad5..db90758feac27b28594b69d6d65719bd0e5110d8 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,9 +1,10 @@
 #! /bin/sh
 
-# From configure.in Revision: 1.126 
+# From configure.in Revision: 1.179 
+
 
 # Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.12.971230 
+# Generated automatically using autoconf version 2.13.19990117 
 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
@@ -51,6 +52,7 @@ mandir='${prefix}/man'
 # Initialize some other variables.
 subdirs=
 MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
 # Maximum number of lines to put in a shell here document.
 ac_max_here_lines=12
 
@@ -186,57 +188,71 @@ cat <<EOF
 --enable and --with options recognized:
   --with-system-type=XXX  test: override derived host system-type
   --enable-add-ons=DIR... used to check if we are a glibc add-on.
-  --without-cxx           suppress check for C++, don't build demo
+  --without-cxx           do not adjust ncurses bool to match C++
+  --without-cxx-binding   do not build C++ binding and demo
+  --without-ada           suppress check for Ada95, don't build demo
   --without-progs         suppress build with programs (e.g., tic)
   --with-install-prefix   prefixes actual install-location
+Options to Specify How Manpages are Installed:
+  --with-manpage-format   specify manpage-format: gzip/compress/BSDI/normal and
+                          optionally formatted, e.g., gzip,formatted
+  --with-manpage-renames  specify manpage-renaming
 Options to Specify the Libraries Built/Used:
   --with-shared           generate shared-libraries
   --with-normal           generate normal-libraries (default)
+EOF
+cat <<EOF
   --with-debug            generate debug-libraries (default)
   --with-profile          generate profile-libraries
   --with-termlib          generate separate terminfo library
   --with-dbmalloc         test: use Conor Cahill's dbmalloc library
   --with-dmalloc          test: use Gray Watson's dmalloc library
-EOF
-cat <<EOF
   --with-gpm              use Alessandro Rubini's GPM library
   --enable-rpath          use rpath option when generating shared libraries
+  --with-shlib-version=X  Specify rel or abi version for shared libs
 Fine-Tuning Your Configuration:
   --disable-overwrite     leave out the link to -lcurses
   --disable-database      use only built-in data
   --disable-ext-funcs     disable function-extensions
+EOF
+cat <<EOF
   --with-fallbacks=XXX    specify list of fallback terminal descriptions
-  --enable-big-core       assume machine has lots of memory
+  --with-terminfo-dirs=XXX specify list of terminfo directories (default: DATADIR/terminfo)
+  --disable-big-core      assume machine has little memory
   --enable-termcap        compile in termcap fallback support
   --enable-getcap         fast termcap load, no xrefs to terminfo
   --enable-getcap-cache   cache translated termcaps in ~/.terminfo
   --enable-symlinks       make tic use symbolic links not hard links
-EOF
-cat <<EOF
   --enable-bsdpad         recognize BSD-style prefix padding
   --enable-const          compile with extra/non-standard const
   --with-rcs-ids          compile-in RCS identifiers
 Experimental Code:
   --with-develop          enable all experimental options for testing
+EOF
+cat <<EOF
+  --enable-broken_linker  compile with broken-linker support code
   --enable-hard-tabs      compile with experimental hard-tabs code
   --enable-hashmap        compile with experimental hashmap code
-  --disable-safe-sprintf  compile with experimental safe-sprintf code
+  --enable-no-padding     compile with experimental no-padding code
+  --enable-safe-sprintf   compile with experimental safe-sprintf code
   --disable-scroll-hints  compile hashmap without scroll-hints code
+  --enable-tcap-names     compile with experimental definable-name code
   --enable-sigwinch       compile with experimental SIGWINCH handler
   --enable-widec          compile with experimental wide-char code
   --enable-xmc-glitch     compile with experimental xmc code
-EOF
-cat <<EOF
 Testing/development Options:
   --enable-echo           build: display "compiling" commands (default)
+EOF
+cat <<EOF
   --enable-warnings       build: turn on GCC compiler warnings
   --enable-assertions     test: turn on generation of assertion code
   --disable-leaks         test: suppress permanent memory-leaks
   --enable-expanded       test: generate functions for certain macros
   --disable-macros        test: use functions rather than macros
 Ada95 Binding Options:
-  --with-ada-include=DIR  Ada includes are in DIR (default: EPREFIX/ada_include)
-  --with-ada-objects=DIR  Ada objects are in DIR (default: EPREFIX/ada_objects)
+  --with-ada-compiler=CMD Specify Ada95 compiler command (default gnatmake)
+  --with-ada-include=DIR  Ada includes are in DIR (default: PREFIX/lib/gnu-Ada/adainclude)
+  --with-ada-objects=DIR  Ada objects are in DIR (default: PREFIX/lib/gnu-Ada/adalib)
 EOF
     exit 0 ;;
 
@@ -387,7 +403,7 @@ EOF
     verbose=yes ;;
 
   -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.12.971230"
+    echo "configure generated by autoconf version 2.13.19990117"
     exit 0 ;;
 
   -with-* | --with-*)
@@ -505,7 +521,7 @@ echo > confdefs.h
 
 # A filename unique to this package, relative to the directory that
 # configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=ncurses/lib_initscr.c
+ac_unique_file=ncurses/base/lib_initscr.c
 
 # Find the source files, if location was not specified.
 if test -z "$srcdir"; then
@@ -557,9 +573,11 @@ ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cc_cross
 
+ac_exeext=
+ac_objext=o
 if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
   # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
   if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
@@ -613,26 +631,26 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 if test -f $srcdir/config.guess ; then
        
 # Make sure we can run config.sub.
-if $ac_config_sub sun4 >/dev/null 2>&1; then :
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
 else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:622: checking host system type" >&5
+echo "configure:640: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
 NONE)
   case $nonopt in
   NONE)
-    if host_alias=`$ac_config_guess`; then :
+    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
     else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
     fi ;;
   *) host_alias=$nonopt ;;
   esac ;;
 esac
 
-host=`$ac_config_sub $host_alias`
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
 host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
 host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
@@ -709,7 +727,7 @@ cf_user_CFLAGS="$CFLAGS"
 ###    Default install-location
 
 echo $ac_n "checking for prefix""... $ac_c" 1>&6
-echo "configure:713: checking for prefix" >&5
+echo "configure:731: checking for prefix" >&5
 if test "x$prefix" = "xNONE" ; then
        case "$cf_cv_system_name" in
                # non-vendor systems don't have a conflict
@@ -724,7 +742,7 @@ echo "$ac_t""$prefix" 1>&6
 
 if test "x$prefix" = "xNONE" ; then
 echo $ac_n "checking for default include-directory""... $ac_c" 1>&6
-echo "configure:728: checking for default include-directory" >&5
+echo "configure:746: checking for default include-directory" >&5
 test -n "$verbose" && echo 1>&6
 for cf_symbol in \
        $includedir \
@@ -754,15 +772,16 @@ fi
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:758: checking for $ac_word" >&5
+echo "configure:776: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_CC="gcc"
@@ -783,16 +802,17 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:787: checking for $ac_word" >&5
+echo "configure:806: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
   ac_prog_rejected=no
-  for ac_dir in $PATH; do
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
@@ -827,25 +847,61 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
+  if test -z "$CC"; then
+    case "`uname -s`" in
+    *win32* | *WIN32*)
+      # Extract the first word of "cl", so it can be a program name with args.
+set dummy cl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:857: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_CC="cl"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+ ;;
+    esac
+  fi
   test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:835: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cc_cross
 
-cat > conftest.$ac_ext <<EOF
-#line 845 "configure"
+cat > conftest.$ac_ext << EOF
+
+#line 900 "configure"
 #include "confdefs.h"
+
 main(){return(0);}
 EOF
-if { (eval echo configure:849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -859,18 +915,24 @@ else
   ac_cv_prog_cc_works=no
 fi
 rm -fr conftest*
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
 
 echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
 if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:869: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:874: checking whether we are using GNU C" >&5
+echo "configure:936: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -879,7 +941,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -890,11 +952,15 @@ echo "$ac_t""$ac_cv_prog_gcc" 1>&6
 
 if test $ac_cv_prog_gcc = yes; then
   GCC=yes
-  ac_test_CFLAGS="${CFLAGS+set}"
-  ac_save_CFLAGS="$CFLAGS"
-  CFLAGS=
-  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:898: checking whether ${CC-cc} accepts -g" >&5
+else
+  GCC=
+fi
+
+ac_test_CFLAGS="${CFLAGS+set}"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS=
+echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:964: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -909,25 +975,65 @@ rm -f conftest*
 fi
 
 echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-  if test "$ac_test_CFLAGS" = set; then
-    CFLAGS="$ac_save_CFLAGS"
-  elif test $ac_cv_prog_cc_g = yes; then
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS="$ac_save_CFLAGS"
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
     CFLAGS="-g -O2"
   else
-    CFLAGS="-O2"
+    CFLAGS="-g"
   fi
 else
-  GCC=
-  test "${CFLAGS+set}" = set || CFLAGS="-g"
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
 fi
 
 if test -n "$GCC" ; then
 echo $ac_n "checking version of gcc""... $ac_c" 1>&6
-echo "configure:927: checking version of gcc" >&5
+echo "configure:997: checking version of gcc" >&5
 eval "$CC --version"
+fi
+if test $host != $build; then
+  for ac_prog in $CC gcc cc
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1006: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$BUILD_CC"; then
+  ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_BUILD_CC="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+BUILD_CC="$ac_cv_prog_BUILD_CC"
+if test -n "$BUILD_CC"; then
+  echo "$ac_t""$BUILD_CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+test -n "$BUILD_CC" && break
+done
+
 fi
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:931: checking how to run the C preprocessor" >&5
+echo "configure:1037: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -942,14 +1048,14 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 946 "configure"
+#line 1052 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:952: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
 else
@@ -959,14 +1065,31 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 963 "configure"
+#line 1069 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -nologo -E"
+  cat > conftest.$ac_ext <<EOF
+#line 1086 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
 else
@@ -978,6 +1101,8 @@ else
 fi
 rm -f conftest*
 fi
+rm -f conftest*
+fi
 rm -f conftest*
   ac_cv_prog_CPP="$CPP"
 fi
@@ -989,13 +1114,13 @@ echo "$ac_t""$CPP" 1>&6
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:993: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:1118: checking whether ${CC-cc} needs -traditional" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
     ac_pattern="Autoconf.*'x'"
   cat > conftest.$ac_ext <<EOF
-#line 999 "configure"
+#line 1124 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -1013,7 +1138,7 @@ rm -f conftest*
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 1017 "configure"
+#line 1142 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -1035,7 +1160,7 @@ echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6
 fi
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1039: checking for POSIXized ISC" >&5
+echo "configure:1164: checking for POSIXized ISC" >&5
 if test -d /etc/conf/kconfig.d &&
   grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
 then
@@ -1055,10 +1180,110 @@ else
   ISC=
 fi
 
-# Extract the first word of "ldconfig", so it can be a program name with args.
+
+echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
+echo "configure:1186: checking for ${CC-cc} option to accept ANSI C" >&5
+if eval "test \"`echo '$''{'cf_cv_ansi_cc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+cf_cv_ansi_cc=no
+cf_save_CFLAGS="$CFLAGS"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX                  -qlanglvl=ansi
+# Ultrix and OSF/1     -std1
+# HP-UX                        -Aa -D_HPUX_SOURCE
+# SVR4                 -Xc
+# UnixWare 1.2         (cannot use -Xc, since ANSI/POSIX clashes)
+for cf_arg in "-DCC_HAS_PROTOS" \
+       "" \
+       -qlanglvl=ansi \
+       -std1 \
+       "-Aa -D_HPUX_SOURCE +e" \
+       "-Aa -D_HPUX_SOURCE" \
+       -Xc
+do
+       CFLAGS="$cf_save_CFLAGS $cf_arg"
+       cat > conftest.$ac_ext <<EOF
+#line 1210 "configure"
+#include "confdefs.h"
+
+#ifndef CC_HAS_PROTOS
+#if !defined(__STDC__) || (__STDC__ != 1)
+choke me
+#endif
+#endif
+
+int main() {
+
+       int test (int i, double x);
+       struct s1 {int (*f) (int a);};
+       struct s2 {int (*f) (double a);};
+; return 0; }
+EOF
+if { (eval echo configure:1226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  cf_cv_ansi_cc="$cf_arg"; break
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+done
+CFLAGS="$cf_save_CFLAGS"
+
+fi
+
+echo "$ac_t""$cf_cv_ansi_cc" 1>&6
+
+if test "$cf_cv_ansi_cc" != "no"; then
+if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
+       CFLAGS="$CFLAGS $cf_cv_ansi_cc"
+else
+       cat >> confdefs.h <<\EOF
+#define CC_HAS_PROTOS 1
+EOF
+
+fi
+fi
+
+
+if test "$cf_cv_ansi_cc" = "no"; then
+       { echo "configure: error: Your compiler does not appear to recognize prototypes.
+You have the following choices:
+       a. adjust your compiler options
+       b. get an up-to-date compiler
+       c. use a wrapper such as unproto" 1>&2; exit 1; }
+fi
+
+
+
+PROG_EXT=
+case $cf_cv_system_name in
+os2*)
+    # We make sure -Zexe is not used -- it would interfere with @PROG_EXT@
+    CFLAGS="$CFLAGS -Zmt -D__ST_MT_ERRNO__"
+    CXXFLAGS="$CXXFLAGS -Zmt -D__ST_MT_ERRNO__"
+    LDFLAGS=`echo "$LDFLAGS -Zmt -Zcrtdll" | sed "s/-Zexe//g"`
+    PROG_EXT=".exe"
+    ;;
+cygwin*)
+    PROG_EXT=".exe"
+    ;;
+esac
+
+
+
+case "$cf_cv_system_name" in
+freebsd*) #(vi
+  test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
+  ;;
+*) LDPATH=$PATH:/sbin:/usr/sbin
+  # Extract the first word of "ldconfig", so it can be a program name with args.
 set dummy ldconfig; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1062: checking for $ac_word" >&5
+echo "configure:1287: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_LDCONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1066,9 +1291,13 @@ else
   /*)
   ac_cv_path_LDCONFIG="$LDCONFIG" # Let the user override the test with a path.
   ;;
+  ?:/*)                         
+  ac_cv_path_LDCONFIG="$LDCONFIG" # Let the user override the test with a dos path.
+  ;;
   *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH:/sbin:/usr/sbin$ac_dummy; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$LDPATH"
+  for ac_dir in $ac_dummy; do 
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_path_LDCONFIG="$ac_dir/$ac_word"
@@ -1086,9 +1315,12 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
+  ;;
+esac
 
-echo $ac_n "checking if you want to build with C++""... $ac_c" 1>&6
-echo "configure:1092: checking if you want to build with C++" >&5
+
+echo $ac_n "checking if you want to ensure bool is consistent with C++""... $ac_c" 1>&6
+echo "configure:1324: checking if you want to ensure bool is consistent with C++" >&5
 
 # Check whether --with-cxx or --without-cxx was given.
 if test "${with_cxx+set}" = set; then
@@ -1099,21 +1331,25 @@ else
 fi
 
 echo "$ac_t""$cf_with_cxx" 1>&6
-if test "X$cf_with_cxx" != Xno ; then
-for ac_prog in $CCC c++ g++ gcc CC cxx cc++
+if test "X$cf_with_cxx" = Xno ; then
+       CXX=""
+       GXX=""
+else
+       for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1109: checking for $ac_word" >&5
+echo "configure:1344: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$CXX"; then
   ac_cv_prog_CXX="$CXX" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_CXX="$ac_prog"
@@ -1136,21 +1372,23 @@ test -n "$CXX" || CXX="gcc"
 
 
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1140: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1376: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
 
 ac_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cxx_cross
 
-cat > conftest.$ac_ext <<EOF
-#line 1150 "configure"
+cat > conftest.$ac_ext << EOF
+
+#line 1387 "configure"
 #include "confdefs.h"
-main(){return(0);}
+
+int main(){return(0);}
 EOF
-if { (eval echo configure:1154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cxx_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1168,7 +1406,7 @@ ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
@@ -1176,12 +1414,12 @@ if test $ac_cv_prog_cxx_works = no; then
   { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1180: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1418: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
 cross_compiling=$ac_cv_prog_cxx_cross
 
 echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1185: checking whether we are using GNU C++" >&5
+echo "configure:1423: checking whether we are using GNU C++" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1190,7 +1428,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gxx=yes
 else
   ac_cv_prog_gxx=no
@@ -1201,11 +1439,15 @@ echo "$ac_t""$ac_cv_prog_gxx" 1>&6
 
 if test $ac_cv_prog_gxx = yes; then
   GXX=yes
-  ac_test_CXXFLAGS="${CXXFLAGS+set}"
-  ac_save_CXXFLAGS="$CXXFLAGS"
-  CXXFLAGS=
-  echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1209: checking whether ${CXX-g++} accepts -g" >&5
+else
+  GXX=
+fi
+
+ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ac_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS=
+echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
+echo "configure:1451: checking whether ${CXX-g++} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1220,23 +1462,53 @@ rm -f conftest*
 fi
 
 echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
-  if test "$ac_test_CXXFLAGS" = set; then
-    CXXFLAGS="$ac_save_CXXFLAGS"
-  elif test $ac_cv_prog_cxx_g = yes; then
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS="$ac_save_CXXFLAGS"
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
     CXXFLAGS="-g -O2"
   else
-    CXXFLAGS="-O2"
+    CXXFLAGS="-g"
   fi
 else
-  GXX=
-  test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
 fi
 
 fi
 if test -n "$GXX" ; then case "`${CXX-g++} --version`" in 1*|2.[0-6]*) GXX=""; CXX=""; ac_cv_prog_gxx=no; cf_cxx_library=no ; echo No: templates do not work;; esac; fi
 
+echo $ac_n "checking if you want to build C++ binding and demo""... $ac_c" 1>&6
+echo "configure:1486: checking if you want to build C++ binding and demo" >&5
+
+# Check whether --with-cxx-binding or --without-cxx-binding was given.
+if test "${with_cxx_binding+set}" = set; then
+  withval="$with_cxx_binding"
+  cf_with_cxx_binding=$withval
+else
+  cf_with_cxx_binding=$cf_with_cxx
+fi
+
+echo "$ac_t""$cf_with_cxx_binding" 1>&6
+
+echo $ac_n "checking if you want to build with Ada95""... $ac_c" 1>&6
+echo "configure:1499: checking if you want to build with Ada95" >&5
+
+# Check whether --with-ada or --without-ada was given.
+if test "${with_ada+set}" = set; then
+  withval="$with_ada"
+  cf_with_ada=$withval
+else
+  cf_with_ada=yes
+fi
+
+echo "$ac_t""$cf_with_ada" 1>&6
+
 echo $ac_n "checking if you want to build programs such as tic""... $ac_c" 1>&6
-echo "configure:1240: checking if you want to build programs such as tic" >&5
+echo "configure:1512: checking if you want to build programs such as tic" >&5
 
 # Check whether --with-progs or --without-progs was given.
 if test "${with_progs+set}" = set; then
@@ -1259,15 +1531,16 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1263: checking for $ac_word" >&5
+echo "configure:1535: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_AWK="$ac_prog"
@@ -1288,7 +1561,7 @@ test -n "$AWK" && break
 done
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1292: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1565: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1321,28 +1594,30 @@ fi
 # SunOS /usr/etc/install
 # IRIX /sbin/install
 # AIX /bin/install
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1329: checking for a BSD compatible install" >&5
+echo "configure:1603: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
+    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
   for ac_dir in $PATH; do
     # Account for people who put trailing slashes in PATH elements.
     case "$ac_dir/" in
     /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
     *)
       # OSF1 and SCO ODT 3.0 have their own names for install.
-      for ac_prog in ginstall installbsd scoinst install; do
+      # Don't use installbsd from OSF since it installs stuff as root
+      # by default.
+      for ac_prog in ginstall scoinst install; do
         if test -f $ac_dir/$ac_prog; then
          if test $ac_prog = install &&
             grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
-           # OSF/1 installbsd also uses dspmsg, but is usable.
            :
          else
            ac_cv_path_install="$ac_dir/$ac_prog -c"
@@ -1372,6 +1647,8 @@ echo "$ac_t""$INSTALL" 1>&6
 # It thinks the first close brace ends the variable substitution.
 test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
 
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 case $INSTALL in
@@ -1385,7 +1662,7 @@ case $INSTALL in
 esac
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:1389: checking for long file names" >&5
+echo "configure:1666: checking for long file names" >&5
 if eval "test \"`echo '$''{'ac_cv_sys_long_file_names'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1429,7 +1706,7 @@ EOF
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1433: checking whether ln -s works" >&5
+echo "configure:1710: checking whether ln -s works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1452,15 +1729,16 @@ fi
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1456: checking for $ac_word" >&5
+echo "configure:1733: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_RANLIB="ranlib"
@@ -1483,15 +1761,16 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1487: checking for $ac_word" >&5
+echo "configure:1765: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LINT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$LINT"; then
   ac_cv_prog_LINT="$LINT" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_LINT="$ac_prog"
@@ -1516,15 +1795,16 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1520: checking for $ac_word" >&5
+echo "configure:1799: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$MAN"; then
   ac_cv_prog_MAN="$MAN" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_MAN="$ac_prog"
@@ -1551,7 +1831,7 @@ if eval "test \"`echo '$''{'cf_cv_subst_LD'+set}'`\" = set"; then
 else
   
 echo $ac_n "checking for loader (symbol LD)""... $ac_c" 1>&6
-echo "configure:1555: checking for loader (symbol LD)" >&5
+echo "configure:1835: checking for loader (symbol LD)" >&5
 test -z "$LD" && LD=ld
 echo "$ac_t""$LD" 1>&6
 
@@ -1565,7 +1845,7 @@ if eval "test \"`echo '$''{'cf_cv_subst_AR'+set}'`\" = set"; then
 else
   
 echo $ac_n "checking for archiver (symbol AR)""... $ac_c" 1>&6
-echo "configure:1569: checking for archiver (symbol AR)" >&5
+echo "configure:1849: checking for archiver (symbol AR)" >&5
 test -z "$AR" && AR=ar
 echo "$ac_t""$AR" 1>&6
 
@@ -1579,7 +1859,7 @@ if eval "test \"`echo '$''{'cf_cv_subst_AR_OPTS'+set}'`\" = set"; then
 else
   
 echo $ac_n "checking for archiver options (symbol AR_OPTS)""... $ac_c" 1>&6
-echo "configure:1583: checking for archiver options (symbol AR_OPTS)" >&5
+echo "configure:1863: checking for archiver options (symbol AR_OPTS)" >&5
 test -z "$AR_OPTS" && AR_OPTS=rv
 echo "$ac_t""$AR_OPTS" 1>&6
 
@@ -1591,24 +1871,33 @@ AR_OPTS=${cf_cv_subst_AR_OPTS}
 
 
 echo $ac_n "checking for makeflags variable""... $ac_c" 1>&6
-echo "configure:1595: checking for makeflags variable" >&5
+echo "configure:1875: checking for makeflags variable" >&5
 if eval "test \"`echo '$''{'cf_cv_makeflags'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cf_cv_makeflags=''
-       for cf_option in '$(MFLAGS)' '-$(MAKEFLAGS)'
+       for cf_option in '-$(MAKEFLAGS)' '$(MFLAGS)'
        do
                cat >cf_makeflags.tmp <<CF_EOF
 all :
-       echo '.$cf_option'
+       echo '.$cf_option'
 CF_EOF
-               set cf_result=`${MAKE-make} -f cf_makeflags.tmp 2>/dev/null`
-               if test "$cf_result" != "."
-               then
-                       cf_cv_makeflags=$cf_option
+               cf_result=`${MAKE-make} -k -f cf_makeflags.tmp 2>/dev/null`
+               case "$cf_result" in
+               .*k)
+                       cf_result=`${MAKE-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
+                       case "$cf_result" in
+                       .*CC=*) cf_cv_makeflags=
+                               ;;
+                       *)      cf_cv_makeflags=$cf_option
+                               ;;
+                       esac
                        break
-               fi
+                       ;;
+               *)      echo no match "$cf_result"
+                       ;;
+               esac
        done
        rm -f cf_makeflags.tmp
 fi
 echo "$ac_t""$cf_cv_makeflags" 1>&6
 
 
-echo $ac_n "checking format of man-pages""... $ac_c" 1>&6
-echo "configure:1621: checking format of man-pages" >&5
+
+echo $ac_n "checking if you have specified an install-prefix""... $ac_c" 1>&6
+echo "configure:1911: checking if you have specified an install-prefix" >&5
+
+# Check whether --with-install-prefix or --without-install-prefix was given.
+if test "${with_install_prefix+set}" = set; then
+  withval="$with_install_prefix"
+  case "$withval" in #(vi
+       yes|no) #(vi
+               ;;
+       *)      INSTALL_PREFIX="$withval"
+               ;;
+       esac
+fi
+
+echo "$ac_t""$INSTALL_PREFIX" 1>&6
+
+
+###############################################################################
+
+
+ echo $ac_n "checking format of man-pages""... $ac_c" 1>&6
+echo "configure:1931: checking format of man-pages" >&5
+
+
+# Check whether --with-manpage-format or --without-manpage-format was given.
+if test "${with_manpage_format+set}" = set; then
+  withval="$with_manpage_format"
+  cf_manpage_form=$withval
+else
+  cf_manpage_form=unknown
+fi
+
+
+case ".$cf_manpage_form" in
+.gzip|.compress|.BSDI|.normal|.formatted) # (vi
+  ;;
+.unknown|.) # (vi
   if test -z "$MANPATH" ; then
     MANPATH="/usr/man:/usr/share/man"
   fi
   # look for the 'date' man-page (it's most likely to be installed!)
   IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  cf_form=unknown
+  cf_manpage_form=unknown
   for cf_dir in $MANPATH; do
     test -z "$cf_dir" && cf_dir=/usr/man
-    cf_rename=""
-    cf_format=no
     for cf_name in $cf_dir/*/date.[01]* $cf_dir/*/date
     do
        cf_test=`echo $cf_name | sed -e 's/*//'`
        if test "x$cf_test" = "x$cf_name" ; then
          case "$cf_name" in
-         *.gz) cf_form=gzip;     cf_name=`basename $cf_name .gz`;;
-         *.Z)  cf_form=compress; cf_name=`basename $cf_name .Z`;;
-         *.0)  cf_form=BSDI; cf_format=yes;;
-         *)    cf_form=cat;;
+         *.gz) cf_manpage_form=gzip;;
+         *.Z)  cf_manpage_form=compress;;
+         *.0)  cf_manpage_form=BSDI,formatted;;
+         *)    cf_manpage_form=normal;;
          esac
          break
        fi
     done
-    if test "$cf_form" != "unknown" ; then
+    if test "$cf_manpage_form" != "unknown" ; then
        break
     fi
   done
   IFS="$ac_save_ifs"
-  if test "$prefix" = "NONE" ; then
-     cf_prefix="$ac_default_prefix"
+  ;;
+.*) # (vi
+  echo "configure: warning: Unexpected manpage-format" 1>&2
+  ;;
+esac
+
+echo "$ac_t""$cf_manpage_form" 1>&6
+
+
+echo $ac_n "checking for manpage renaming""... $ac_c" 1>&6
+echo "configure:1983: checking for manpage renaming" >&5
+
+
+# Check whether --with-manpage-renames or --without-manpage-renames was given.
+if test "${with_manpage_renames+set}" = set; then
+  withval="$with_manpage_renames"
+  cf_manpage_renames=$withval
+else
+  cf_manpage_renames=yes
+fi
+
+
+case ".$cf_manpage_renames" in #(vi
+.no) #(vi
+  ;;
+.|.yes)
+  # Debian 'man' program?
+  if test -f /etc/debian_version ; then
+    cf_manpage_renames=`cd $srcdir && pwd`/man/man_db.renames
   else
-     cf_prefix="$prefix"
+    cf_manpage_renames=no
   fi
+  ;;
+esac
 
-  # Debian 'man' program?
-  test -f /etc/debian_version && \
-  cf_rename=`cd $srcdir && pwd`/man/man_db.renames
+if test "$cf_manpage_renames" != no ; then
+  if test ! -f $cf_manpage_renames ; then
+    { echo "configure: error: not a filename: $cf_manpage_renames" 1>&2; exit 1; }
+  fi
 
   test ! -d man && mkdir man
 
   # Construct a sed-script to perform renaming within man-pages
-  if test -n "$cf_rename" ; then
-    $srcdir/man/make_sed.sh $cf_rename >man/edit_man.sed
-  fi
-  if test $cf_format = yes ; then
-    cf_subdir='$mandir/cat'
-  else
-    cf_subdir='$mandir/man'
+  if test -n "$cf_manpage_renames" ; then
+    test ! -d man && mkdir man
+    $srcdir/man/make_sed.sh $cf_manpage_renames >man/edit_man.sed
   fi
+fi
 
-cat >man/edit_man.sh <<CF_EOF
+echo "$ac_t""$cf_manpage_renames" 1>&6
+
+
+  if test "$prefix" = "NONE" ; then
+     cf_prefix="$ac_default_prefix"
+  else
+     cf_prefix="$prefix"
+  fi
+
+  case "$cf_manpage_form" in # (vi
+  *formatted*) # (vi
+    cf_subdir='$mandir/cat'
+    cf_format=yes
+    ;;
+  *)
+    cf_subdir='$mandir/man'
+    cf_format=no
+    ;;
+  esac
+
+test ! -d man && mkdir man
+cat >man/edit_man.sh <<CF_EOF
 #! /bin/sh
 # this script is generated by the configure-script
 prefix="$cf_prefix"
@@ -1685,9 +2056,9 @@ shift
 mandir=\$1
 shift
 
-for i in \$*
-do
-case \$i in
+for i in \$* ; do
+case \$i in #(vi
+*.orig|*.rej) ;; #(vi
 *.[0-9]*)
        section=\`expr "\$i" : '.*\\.\\([0-9]\\)[xm]*'\`;
        if test \$verb = installing ; then
@@ -1697,14 +2068,14 @@ case \$i in
        fi
        source=\`basename \$i\`
 CF_EOF
-if test -z "$cf_rename" ; then
+if test "$cf_manpage_renames" = no ; then
 cat >>man/edit_man.sh <<CF_EOF
        target=$cf_subdir\${section}/\$source
        sed -e "s,@DATADIR@,\$datadir," < \$i >\$TMP
 CF_EOF
 else
 cat >>man/edit_man.sh <<CF_EOF
-       target=\`grep "^\$source" $cf_rename | $AWK '{print \$2}'\`
+       target=\`grep "^\$source" $cf_manpage_renames | $AWK '{print \$2}'\`
        if test -z "\$target" ; then
                echo '? missing rename for '\$source
                target="\$source"
@@ -1713,16 +2084,14 @@ cat >>man/edit_man.sh <<CF_EOF
        test \$verb = installing && sed -e "s,@DATADIR@,\$datadir," < \$i | sed -f edit_man.sed >\$TMP
 CF_EOF
 fi
-if test \$verb = installing ; then
 if test $cf_format = yes ; then
 cat >>man/edit_man.sh <<CF_EOF
        nroff -man \$TMP >\$TMP.out
        mv \$TMP.out \$TMP
 CF_EOF
 fi
-fi
-case "$cf_form" in
-compress)
+case "$cf_manpage_form" in #(vi
+*compress*) #(vi
 cat >>man/edit_man.sh <<CF_EOF
        if test \$verb = installing ; then
        if ( compress -f \$TMP )
@@ -1733,7 +2102,7 @@ cat >>man/edit_man.sh <<CF_EOF
        target="\$target.Z"
 CF_EOF
   ;;
-gzip)
+*gzip*) #(vi
 cat >>man/edit_man.sh <<CF_EOF
        if test \$verb = installing ; then
        if ( gzip -f \$TMP )
@@ -1744,7 +2113,7 @@ cat >>man/edit_man.sh <<CF_EOF
        target="\$target.gz"
 CF_EOF
   ;;
-BSDI)
+*BSDI*)
 cat >>man/edit_man.sh <<CF_EOF
        # BSDI installs only .0 suffixes in the cat directories
        target="\`echo \$target|sed -e 's/\.[1-9]\+.\?/.0/'\`"
@@ -1760,27 +2129,10 @@ cat >>man/edit_man.sh <<CF_EOF
        fi
        ;;
 esac
-done 
+done
 CF_EOF
 chmod 755 man/edit_man.sh
-echo "$ac_t""$cf_form" 1>&6
-
-
-echo $ac_n "checking if you have specified an install-prefix""... $ac_c" 1>&6
-echo "configure:1771: checking if you have specified an install-prefix" >&5
-
-# Check whether --with-install-prefix or --without-install-prefix was given.
-if test "${with_install_prefix+set}" = set; then
-  withval="$with_install_prefix"
-  case "$withval" in #(vi
-       yes|no) #(vi
-               ;;
-       *)      INSTALL_PREFIX="$withval"
-               ;;
-       esac
-fi
 
-echo "$ac_t""$INSTALL_PREFIX" 1>&6
 
 
 ###############################################################################
@@ -1792,7 +2144,7 @@ echo "$ac_t""$INSTALL_PREFIX" 1>&6
 cf_list_models=""
 
 echo $ac_n "checking if you want to build shared libraries""... $ac_c" 1>&6
-echo "configure:1796: checking if you want to build shared libraries" >&5
+echo "configure:2148: checking if you want to build shared libraries" >&5
 
 # Check whether --with-shared or --without-shared was given.
 if test "${with_shared+set}" = set; then
@@ -1806,7 +2158,7 @@ echo "$ac_t""$with_shared" 1>&6
 test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
 
 echo $ac_n "checking if you want to build static libraries""... $ac_c" 1>&6
-echo "configure:1810: checking if you want to build static libraries" >&5
+echo "configure:2162: checking if you want to build static libraries" >&5
 
 # Check whether --with-normal or --without-normal was given.
 if test "${with_normal+set}" = set; then
@@ -1820,7 +2172,7 @@ echo "$ac_t""$with_normal" 1>&6
 test "$with_normal" = "yes" && cf_list_models="$cf_list_models normal"
 
 echo $ac_n "checking if you want to build debug libraries""... $ac_c" 1>&6
-echo "configure:1824: checking if you want to build debug libraries" >&5
+echo "configure:2176: checking if you want to build debug libraries" >&5
 
 # Check whether --with-debug or --without-debug was given.
 if test "${with_debug+set}" = set; then
@@ -1834,7 +2186,7 @@ echo "$ac_t""$with_debug" 1>&6
 test "$with_debug" = "yes" && cf_list_models="$cf_list_models debug"
 
 echo $ac_n "checking if you want to build profiling libraries""... $ac_c" 1>&6
-echo "configure:1838: checking if you want to build profiling libraries" >&5
+echo "configure:2190: checking if you want to build profiling libraries" >&5
 
 # Check whether --with-profile or --without-profile was given.
 if test "${with_profile+set}" = set; then
@@ -1848,7 +2200,7 @@ echo "$ac_t""$with_profile" 1>&6
 test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
 
 echo $ac_n "checking if you want to build a separate terminfo library""... $ac_c" 1>&6
-echo "configure:1852: checking if you want to build a separate terminfo library" >&5
+echo "configure:2204: checking if you want to build a separate terminfo library" >&5
 
 # Check whether --with-termlib or --without-termlib was given.
 if test "${with_termlib+set}" = set; then
@@ -1862,12 +2214,12 @@ echo "$ac_t""$with_termlib" 1>&6
 
 ### Checks for special libraries, must be done up-front.
 echo $ac_n "checking if you want to link with dbmalloc for testing""... $ac_c" 1>&6
-echo "configure:1866: checking if you want to link with dbmalloc for testing" >&5
+echo "configure:2218: checking if you want to link with dbmalloc for testing" >&5
 
 # Check whether --with-dbmalloc or --without-dbmalloc was given.
 if test "${with_dbmalloc+set}" = set; then
   withval="$with_dbmalloc"
-  with_dbmalloc=yes
+  with_dbmalloc=$withval
 else
   with_dbmalloc=no
 fi
@@ -1875,7 +2227,7 @@ fi
 echo "$ac_t""$with_dbmalloc" 1>&6
 if test $with_dbmalloc = yes ; then
        echo $ac_n "checking for debug_malloc in -ldbmalloc""... $ac_c" 1>&6
-echo "configure:1879: checking for debug_malloc in -ldbmalloc" >&5
+echo "configure:2231: checking for debug_malloc in -ldbmalloc" >&5
 ac_lib_var=`echo dbmalloc'_'debug_malloc | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1883,7 +2235,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldbmalloc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1887 "configure"
+#line 2239 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -1894,7 +2246,7 @@ int main() {
 debug_malloc()
 ; return 0; }
 EOF
-if { (eval echo configure:1898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1924,12 +2276,12 @@ fi
 fi
 
 echo $ac_n "checking if you want to link with dmalloc for testing""... $ac_c" 1>&6
-echo "configure:1928: checking if you want to link with dmalloc for testing" >&5
+echo "configure:2280: checking if you want to link with dmalloc for testing" >&5
 
 # Check whether --with-dmalloc or --without-dmalloc was given.
 if test "${with_dmalloc+set}" = set; then
   withval="$with_dmalloc"
-  with_dmalloc=yes
+  with_dmalloc=$withval
 else
   with_dmalloc=no
 fi
@@ -1937,7 +2289,7 @@ fi
 echo "$ac_t""$with_dmalloc" 1>&6
 if test $with_dmalloc = yes ; then
        echo $ac_n "checking for dmalloc_debug in -ldmalloc""... $ac_c" 1>&6
-echo "configure:1941: checking for dmalloc_debug in -ldmalloc" >&5
+echo "configure:2293: checking for dmalloc_debug in -ldmalloc" >&5
 ac_lib_var=`echo dmalloc'_'dmalloc_debug | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1945,7 +2297,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldmalloc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1949 "configure"
+#line 2301 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -1956,7 +2308,7 @@ int main() {
 dmalloc_debug()
 ; return 0; }
 EOF
-if { (eval echo configure:1960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1985,13 +2337,14 @@ fi
 
 fi
 
+SHLIB_LIST=""
 echo $ac_n "checking if you want to link with the gpm mouse library""... $ac_c" 1>&6
-echo "configure:1990: checking if you want to link with the gpm mouse library" >&5
+echo "configure:2343: checking if you want to link with the gpm mouse library" >&5
 
 # Check whether --with-gpm or --without-gpm was given.
 if test "${with_gpm+set}" = set; then
   withval="$with_gpm"
-  with_gpm=yes
+  with_gpm=$withval
 else
   with_gpm=no
 fi
@@ -1999,15 +2352,15 @@ fi
 echo "$ac_t""$with_gpm" 1>&6
 if test $with_gpm = yes ; then
        echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:2003: checking for Gpm_Open in -lgpm" >&5
+echo "configure:2356: checking for Gpm_Open in -lgpm" >&5
 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_save_LIBS="$LIBS"
-LIBS="-lgpm -lcurses -ltermcap $LIBS"
+LIBS="-lgpm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2011 "configure"
+#line 2364 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2018,7 +2371,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:2022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2034,8 +2387,8 @@ fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
-               EXTRA_LIBS="$EXTRA_LIBS -lgpm -lncurses"
-               SHLIB_LIST="$SHLIB_DEPS -lgpm "
+               EXTRA_LIBS="-lgpm -lncurses $EXTRA_LIBS"
+               SHLIB_LIST="-lgpm $SHLIB_LIST"
                cat >> confdefs.h <<\EOF
 #define HAVE_LIBGPM 1
 EOF
@@ -2044,18 +2397,18 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2048: checking for $ac_hdr" >&5
+echo "configure:2401: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2053 "configure"
+#line 2406 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:2411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   eval "ac_cv_header_$ac_safe=yes"
@@ -2083,15 +2436,20 @@ done
        
 else
   echo "$ac_t""no" 1>&6
+echo "configure: warning: Cannot link with gpm library - read the FAQ" 1>&2
 fi
 
 fi
 
+TINFO_LIST="$SHLIB_LIST"
+test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo"
+
+
 
 
 
 echo $ac_n "checking for specified models""... $ac_c" 1>&6
-echo "configure:2095: checking for specified models" >&5
+echo "configure:2453: checking for specified models" >&5
 test -z "$cf_list_models" && cf_list_models=normal
 echo "$ac_t""$cf_list_models" 1>&6
 
@@ -2108,8 +2466,15 @@ DFT_UPR_MODEL=`echo $DFT_LWR_MODEL | tr '[a-z]' '[A-Z]'`
        profile) DFT_DEP_SUFFIX='_p.a' ;;
        shared)
                case $cf_cv_system_name in
-               openbsd*|netbsd*|freebsd*)
+               openbsd*|freebsd*)
                        DFT_DEP_SUFFIX='.so.$(REL_VERSION)' ;;
+               netbsd*)
+                       if test -f /usr/libexec/ld.elf_so; then
+                               DFT_DEP_SUFFIX='.so'
+                       else
+                               DFT_DEP_SUFFIX='.so.$(REL_VERSION)'
+                       fi
+                       ;;
                hpux*)  DFT_DEP_SUFFIX='.sl'  ;;
                *)      DFT_DEP_SUFFIX='.so'  ;;
                esac
@@ -2141,6 +2506,8 @@ LIB_DIR=../lib
        os2)    cf_prefix=''     ;;
        *)      cf_prefix='lib'  ;;
        esac
+       LIB_PREFIX=$cf_prefix
+       
 
 LIB_PREFIX=$LIB_DIR/$cf_prefix
 
@@ -2148,13 +2515,13 @@ LIB_PREFIX=$LIB_DIR/$cf_prefix
 
 if test X"$CC_G_OPT" = X"" ; then
        CC_G_OPT='-g'
-       test -n "$GCC" && test "${ac_cv_prog_cc_g}${ac_cv_prog_gcc_g}" != yes && CC_G_OPT=''
+       test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
 fi
 
 
 if test X"$CXX_G_OPT" = X"" ; then
        CXX_G_OPT='-g'
-       test -n "$GXX" && test "${ac_cv_prog_cxx_g}${ac_cv_prog_gxx_g}" != yes && CXX_G_OPT=''
+       test -n "$GXX" && test "${ac_cv_prog_cxx_g}" != yes && CXX_G_OPT=''
 fi
 
 
@@ -2166,7 +2533,7 @@ shared)  LD_MODEL=''   ;;
 esac
 
 echo $ac_n "checking if rpath option should be used""... $ac_c" 1>&6
-echo "configure:2170: checking if rpath option should be used" >&5
+echo "configure:2537: checking if rpath option should be used" >&5
 
 # Check whether --enable-rpath or --disable-rpath was given.
 if test "${enable_rpath+set}" = set; then
@@ -2186,26 +2553,67 @@ echo "$ac_t""$cf_cv_ld_rpath" 1>&6
        INSTALL_LIB="-m 644"
 
        cf_cv_do_symlinks=no
+
+       echo $ac_n "checking if release/abi version should be used for shared libs""... $ac_c" 1>&6
+echo "configure:2559: checking if release/abi version should be used for shared libs" >&5
+       
+# Check whether --with-shlib-version or --without-shlib-version was given.
+if test "${with_shlib_version+set}" = set; then
+  withval="$with_shlib_version"
+  test -z "$withval" && withval=auto
+       case $withval in #(vi
+       yes) #(vi
+               cf_cv_shlib_version=auto
+               ;;
+       rel|abi|auto|no) #(vi
+               cf_cv_shlib_version=$withval
+               ;;
+       *)
+               { echo "configure: error: option value must be one of: rel, abi, auto or no" 1>&2; exit 1; }
+               ;;
+       esac
+       
+else
+  cf_cv_shlib_version=auto
+fi
+
+       echo "$ac_t""$cf_cv_shlib_version" 1>&6
+
        cf_cv_rm_so_locs=no
 
        case $cf_cv_system_name in
+       hpux10.*)
+               # (tested with gcc 2.7.2 -- I don't have c89)
+               if test -n "$GCC"; then
+                       CC_SHARED_OPTS='-fPIC'
+                       LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
+               else
+                       CC_SHARED_OPTS='+Z'
+                       LD_SHARED_OPTS='-Wl,+b,$(libdir)'
+               fi
+               MK_SHARED_LIB='$(LD) +b $(libdir) -b +h `basename $@` -o $@'
+               # HP-UX shared libraries must be executable, and should be
+               # readonly to exploit a quirk in the memory manager.
+               INSTALL_LIB="-m 555"
+               cf_cv_do_symlinks=reverse
+               ;;
        hpux*)
                # (tested with gcc 2.7.2 -- I don't have c89)
-               if test "${CC}" = "gcc"; then
+               if test -n "$GCC"; then
                        CC_SHARED_OPTS='-fPIC'
                        LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
                else
                        CC_SHARED_OPTS='+Z'
-                       LD_SHARED_OPTS='+b $(libdir)'
+                       LD_SHARED_OPTS='-Wl,+b,$(libdir)'
                fi
-               MK_SHARED_LIB='$(LD) -b -o $@'
+               MK_SHARED_LIB='$(LD) +b $(libdir) -b -o $@'
                # HP-UX shared libraries must be executable, and should be
                # readonly to exploit a quirk in the memory manager.
                INSTALL_LIB="-m 555"
                ;;
        irix*)
                # tested with IRIX 5.2 and 'cc'.
-               if test "${CC}" = "gcc"; then
+               if test -n "$GCC"; then
                        CC_SHARED_OPTS='-fPIC'
                else
                        CC_SHARED_OPTS='-KPIC'
@@ -2213,40 +2621,78 @@ echo "$ac_t""$cf_cv_ld_rpath" 1>&6
                MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $@` -o $@'
                cf_cv_rm_so_locs=yes
                ;;
-       linux*)
+       linux*|gnu*)
                # tested with Linux 2.0.29 and gcc 2.7.2 (ELF)
-               CC_SHARED_OPTS='-fPIC'
-               MK_SHARED_LIB='gcc -o $@.$(REL_VERSION) -L../lib -L\$(libdir) -shared -Wl,-soname,`basename $@.$(ABI_VERSION)`,-stats,$(SHLIB_LIST)-lc'
+               CC_SHARED_OPTS='-fpic'
                test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-Wl,-rpath,"
                if test $DFT_LWR_MODEL = "shared" ; then
                        LOCAL_LDFLAGS='-Wl,-rpath,../lib'
                        LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
                fi
-               cf_cv_do_symlinks=yes
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+               if test $cf_cv_shlib_version = no ; then
+                       MK_SHARED_LIB='$(CC) -shared -Wl,-stats,-lc -o $@'
+               else
+                       MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@.$(ABI_VERSION)`,-stats,-lc -o $@'
+               fi
+               ;;
+       openbsd2*)
+               CC_SHARED_OPTS='-fpic -DPIC'
+               MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $@.$(ABI_VERSION)` -o $@'
                ;;
-       openbsd*|netbsd*|freebsd*)
+       openbsd*|freebsd*)
                CC_SHARED_OPTS='-fpic -DPIC'
                MK_SHARED_LIB='$(LD) -Bshareable -o $@'
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+               ;;
+       netbsd*)
+               CC_SHARED_OPTS='-fpic -DPIC'
+               test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-Wl,-rpath,"
+               if test $DFT_LWR_MODEL = "shared" && test $cf_cv_ld_rpath = yes ; then
+                       LOCAL_LDFLAGS='-Wl,-rpath,../lib'
+                       LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
+                       EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
+                       MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@.$(ABI_VERSION)` -o $@'
+                       test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+               else
+                       MK_SHARED_LIB='$(LD) -Bshareable -o $@'
+               fi
                ;;
        osf*|mls+*)
                # tested with OSF/1 V3.2 and 'cc'
                # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
                # link with shared libs).
                CC_SHARED_OPTS=''
-               MK_SHARED_LIB='$(LD) -o $@.$(REL_VERSION) -set_version $(ABI_VERSION):$(REL_VERSION) -expect_unresolved "*" -shared -soname `basename $@.$(ABI_VERSION)`'
+               MK_SHARED_LIB='$(LD) -set_version $(REL_VERSION):$(ABI_VERSION) -expect_unresolved "*" -shared -soname `basename $@`'
                test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-rpath"
                case $host_os in
                osf4*)
                        MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
                        ;;
                esac
+               MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@'
                if test $DFT_LWR_MODEL = "shared" ; then
                        LOCAL_LDFLAGS='-Wl,-rpath,../lib'
                        LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
                fi
-               cf_cv_do_symlinks=yes
                cf_cv_rm_so_locs=yes
                ;;
+       sco3.2v5*)  # (also uw2* and UW7) hops 13-Apr-98
+               # tested with osr5.0.5
+               if test $ac_cv_prog_gcc = yes; then
+                       CC_SHARED_OPTS='-fpic'
+               else
+                       CC_SHARED_OPTS='-belf -KPIC'
+               fi
+               MK_SHARED_LIB='$(LD) -dy -G -h `basename $@.$(ABI_VERSION)` -o $@'
+               if test $cf_cv_ld_rpath = yes ; then
+                       # only way is to set LD_RUN_PATH but no switch for it
+                       RUN_PATH=$libdir
+               fi
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+               LINK_PROGS='LD_RUN_PATH=$(libdir)'
+               LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
+               ;;
        sunos4*)
                # tested with SunOS 4.1.1 and gcc 2.7.0
                if test $ac_cv_prog_gcc = yes; then
@@ -2254,8 +2700,8 @@ echo "$ac_t""$cf_cv_ld_rpath" 1>&6
                else
                        CC_SHARED_OPTS='-KPIC'
                fi
-               MK_SHARED_LIB='$(LD) -assert pure-text -o $@.$(REL_VERSION)'
-               cf_cv_do_symlinks=yes
+               MK_SHARED_LIB='$(LD) -assert pure-text -o $@'
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
                ;;
        solaris2*)
                # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
@@ -2264,12 +2710,12 @@ echo "$ac_t""$cf_cv_ld_rpath" 1>&6
                else
                        CC_SHARED_OPTS='-KPIC'
                fi
-               MK_SHARED_LIB='$(LD) -dy -G -h `basename $@.$(ABI_VERSION)` -o $@.$(REL_VERSION)'
+               MK_SHARED_LIB='$(LD) -dy -G -h `basename $@.$(ABI_VERSION)` -o $@'
                if test $cf_cv_ld_rpath = yes ; then
                        cf_ld_rpath_opt="-R"
                        EXTRA_LDFLAGS="-R ../lib:\$(libdir) $EXTRA_LDFLAGS"
                fi
-               cf_cv_do_symlinks=yes
+               test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
                ;;
        unix_sv*)
                # tested with UnixWare 1.1.2
@@ -2282,20 +2728,42 @@ echo "$ac_t""$cf_cv_ld_rpath" 1>&6
                ;;
        esac
 
+       # This works if the last tokens in $MK_SHARED_LIB are the -o target.
+       case "$cf_cv_shlib_version" in #(vi
+       rel|abi)
+               case "$MK_SHARED_LIB" in #(vi
+               *'-o $@')
+                       if test "$cf_cv_do_symlinks" = reverse ; then
+                               { echo "configure: error: cannot use --with-shlib-version with this platform" 1>&2; exit 1; }
+                       fi
+                       if test "$cf_cv_shlib_version" = rel ; then
+                               MK_SHARED_LIB="$MK_SHARED_LIB"'.$(REL_VERSION)'
+                       else
+                               MK_SHARED_LIB="$MK_SHARED_LIB"'.$(ABI_VERSION)'
+                       fi
+                       cf_cv_do_symlinks=yes
+                       ;;
+               *)
+                       echo "configure: warning: ignored --with-shlib-version" 1>&2
+                       ;;
+               esac
+               ;;
+       esac
+
        if test -n "$cf_ld_rpath_opt" ; then
                echo $ac_n "checking if we need a space after rpath option""... $ac_c" 1>&6
-echo "configure:2288: checking if we need a space after rpath option" >&5
+echo "configure:2756: checking if we need a space after rpath option" >&5
                cf_save_LIBS="$LIBS"
                LIBS="$LIBS ${cf_ld_rpath_opt}/usr/lib"
                cat > conftest.$ac_ext <<EOF
-#line 2292 "configure"
+#line 2760 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_rpath_space=no
 else
@@ -2318,7 +2786,8 @@ rm -f conftest*
        
        
        
-
+       
+       
 
 if test "$CC_SHARED_OPTS" = "unknown"; then
        for model in $cf_list_models; do
@@ -2333,7 +2802,7 @@ fi
 
 ###    use option --disable-overwrite to leave out the link to -lcurses
 echo $ac_n "checking if you wish to install ncurses overwriting curses""... $ac_c" 1>&6
-echo "configure:2337: checking if you wish to install ncurses overwriting curses" >&5
+echo "configure:2806: checking if you wish to install ncurses overwriting curses" >&5
 
 # Check whether --enable-overwrite or --disable-overwrite was given.
 if test "${enable_overwrite+set}" = set; then
@@ -2349,11 +2818,11 @@ fi
 
 echo "$ac_t""$with_overwrite" 1>&6
 echo $ac_n "checking where we will install curses.h""... $ac_c" 1>&6
-echo "configure:2353: checking where we will install curses.h" >&5
+echo "configure:2822: checking where we will install curses.h" >&5
 echo "$ac_t""$includedir" 1>&6
 
 echo $ac_n "checking if external terminfo-database is used""... $ac_c" 1>&6
-echo "configure:2357: checking if external terminfo-database is used" >&5
+echo "configure:2826: checking if external terminfo-database is used" >&5
 
 # Check whether --enable-database or --disable-database was given.
 if test "${enable_database+set}" = set; then
@@ -2370,7 +2839,7 @@ EOF
 
 
 echo $ac_n "checking if you want to build with function extensions""... $ac_c" 1>&6
-echo "configure:2374: checking if you want to build with function extensions" >&5
+echo "configure:2843: checking if you want to build with function extensions" >&5
 
 # Check whether --enable-ext-funcs or --disable-ext-funcs was given.
 if test "${enable_ext_funcs+set}" = set; then
@@ -2387,7 +2856,7 @@ EOF
 
 
 echo $ac_n "checking for list of fallback descriptions""... $ac_c" 1>&6
-echo "configure:2391: checking for list of fallback descriptions" >&5
+echo "configure:2860: checking for list of fallback descriptions" >&5
 
 # Check whether --with-fallbacks or --without-fallbacks was given.
 if test "${with_fallbacks+set}" = set; then
@@ -2398,7 +2867,56 @@ else
 fi
 
 echo "$ac_t""$with_fallback" 1>&6
-FALLBACK_LIST=`echo $with_fallback|sed -e 's/,/ /'`
+FALLBACK_LIST=`echo $with_fallback|sed -e 's/,/ /g'`
+
+
+echo $ac_n "checking for list of terminfo directories""... $ac_c" 1>&6
+echo "configure:2875: checking for list of terminfo directories" >&5
+
+
+# Check whether --with-terminfo-dirs or --without-terminfo-dirs was given.
+if test "${with_terminfo_dirs+set}" = set; then
+  withval="$with_terminfo_dirs"
+  :
+else
+  withval="${TERMINFO_DIRS-${datadir}/terminfo}"
+fi
+
+IFS="${IFS=    }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+cf_dst_path=
+for cf_src_path in $withval
+do
+  
+case ".$cf_src_path" in #(vi
+./*) #(vi
+  ;;
+.\${*prefix}*) #(vi
+  eval cf_src_path="$cf_src_path"
+  case ".$cf_src_path" in #(vi
+  .NONE/*)
+    cf_src_path=`echo $cf_src_path | sed -e s@NONE@$ac_default_prefix@`
+    ;;
+  esac
+  ;; #(vi
+.NONE/*)
+  cf_src_path=`echo $cf_src_path | sed -e s@NONE@$ac_default_prefix@`
+  ;;
+*)
+  { echo "configure: error: expected a pathname" 1>&2; exit 1; }
+  ;;
+esac
+
+  test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:"
+  cf_dst_path="${cf_dst_path}${cf_src_path}"
+done
+IFS="$ac_save_ifs"
+
+eval TERMINFO_DIRS="$cf_dst_path"
+
+echo "$ac_t""$TERMINFO_DIRS" 1>&6
+test -n "$TERMINFO_DIRS" && cat >> confdefs.h <<EOF
+#define TERMINFO_DIRS "$TERMINFO_DIRS"
+EOF
 
 
 if test $with_database = no ; then
@@ -2407,17 +2925,40 @@ if test $with_database = no ; then
        fi
 fi
 
-###    use option --enable-big-core to make tic run faster on big machines
+###    use option --disable-big-core to make tic run on small machines
+###    We need 4Mb, check if we can allocate 50% more than that.
 echo $ac_n "checking if big-core option selected""... $ac_c" 1>&6
-echo "configure:2413: checking if big-core option selected" >&5
+echo "configure:2932: checking if big-core option selected" >&5
 
 # Check whether --enable-big-core or --disable-big-core was given.
 if test "${enable_big_core+set}" = set; then
   enableval="$enable_big_core"
   with_big_core=$enableval
 else
+  if test "$cross_compiling" = yes; then
+  with_big_core=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2943 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+int main() { exit(malloc(6000000L) == 0); }
+EOF
+if { (eval echo configure:2950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  with_big_core=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
   with_big_core=no
 fi
+rm -fr conftest*
+fi
+
+fi
 
 echo "$ac_t""$with_big_core" 1>&6
 test "$with_big_core" = "yes" && cat >> confdefs.h <<\EOF
@@ -2427,7 +2968,7 @@ EOF
 
 ###    use option --enable-termcap to compile in the termcap fallback support
 echo $ac_n "checking if you want termcap-fallback support""... $ac_c" 1>&6
-echo "configure:2431: checking if you want termcap-fallback support" >&5
+echo "configure:2972: checking if you want termcap-fallback support" >&5
 
 # Check whether --enable-termcap or --disable-termcap was given.
 if test "${enable_termcap+set}" = set; then
@@ -2448,7 +2989,7 @@ else
 
 ###    use option --enable-getcap to use a hacked getcap for reading termcaps
 echo $ac_n "checking if fast termcap-loader is needed""... $ac_c" 1>&6
-echo "configure:2452: checking if fast termcap-loader is needed" >&5
+echo "configure:2993: checking if fast termcap-loader is needed" >&5
 
 # Check whether --enable-getcap or --disable-getcap was given.
 if test "${enable_getcap+set}" = set; then
@@ -2465,7 +3006,7 @@ EOF
 
 
 echo $ac_n "checking if translated termcaps will be cached in ~/.terminfo""... $ac_c" 1>&6
-echo "configure:2469: checking if translated termcaps will be cached in ~/.terminfo" >&5
+echo "configure:3010: checking if translated termcaps will be cached in ~/.terminfo" >&5
 
 # Check whether --enable-getcap-cache or --disable-getcap-cache was given.
 if test "${enable_getcap_cache+set}" = set; then
@@ -2485,22 +3026,77 @@ fi
 
 ###   Use option --enable-symlinks to make tic use symlinks, not hard links
 ###   to reduce storage requirements for the terminfo database.
-###
-###   Most Unix systems have both link and symlink, a few don't have symlink.
-###   A few non-Unix systems implement symlink, but not link.
-###   A few non-systems implement neither.
 
 for ac_func in \
-       link \
-       symlink 
+       remove \
+       unlink 
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:3036: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3041 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:3064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+
+if test "$ac_cv_prog_cc_cross" = yes ; then
+       for ac_func in \
+               link \
+               symlink 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2499: checking for $ac_func" >&5
+echo "configure:3095: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2504 "configure"
+#line 3100 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2523,7 +3119,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2547,13 +3143,86 @@ else
 fi
 done
 
+else
+       echo $ac_n "checking if link/symlink functions work""... $ac_c" 1>&6
+echo "configure:3149: checking if link/symlink functions work" >&5
+if eval "test \"`echo '$''{'cf_cv_link_funcs'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+               cf_cv_link_funcs=
+               for cf_func in link symlink ; do
+                       if test "$cross_compiling" = yes; then
+  
+                       eval 'ac_cv_func_'$cf_func'=error'
+else
+  cat > conftest.$ac_ext <<EOF
+#line 3161 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+int main()
+{
+       int fail = 0;
+       char *src = "config.log";
+       char *dst = "conftest.chk";
+       struct stat src_sb;
+       struct stat dst_sb;
+
+       stat(src, &src_sb);
+       fail = ($cf_func("config.log", "conftest.chk") < 0)
+           || (stat(dst, &dst_sb) < 0)
+           || (dst_sb.st_mtime != src_sb.st_mtime);
+#ifdef HAVE_UNLINK
+       unlink(dst);
+#else
+       remove(dst);
+#endif
+       exit (fail);
+}
+                       
+EOF
+if { (eval echo configure:3190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  
+                       cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
+                       eval 'ac_cv_func_'$cf_func'=yes'
+                       
+cf_FUNC=`echo $cf_func | tr '[a-z]' '[A-Z]'`
+
+                       cat >> confdefs.h <<EOF
+#define HAVE_$cf_FUNC 1
+EOF
+
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  
+                       eval 'ac_cv_func_'$cf_func'=no'
+fi
+rm -fr conftest*
+fi
+
+               done
+               test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
+       
+fi
+
+echo "$ac_t""$cf_cv_link_funcs" 1>&6
+fi
+
 
 with_links=no
 with_symlinks=no
 
 if test "$ac_cv_func_link" != yes ; then
     echo $ac_n "checking if tic should use symbolic links""... $ac_c" 1>&6
-echo "configure:2557: checking if tic should use symbolic links" >&5
+echo "configure:3226: checking if tic should use symbolic links" >&5
     if test "$ac_cv_func_symlink" = yes ; then
        with_symlinks=yes
     else
@@ -2562,7 +3231,7 @@ echo "configure:2557: checking if tic should use symbolic links" >&5
     echo "$ac_t""$with_symlinks" 1>&6
 elif test "$ac_cv_func_symlink" != yes ; then
     echo $ac_n "checking if tic should use hard links""... $ac_c" 1>&6
-echo "configure:2566: checking if tic should use hard links" >&5
+echo "configure:3235: checking if tic should use hard links" >&5
     if test "$ac_cv_func_link" = yes ; then
        with_links=yes
     else
@@ -2571,7 +3240,7 @@ echo "configure:2566: checking if tic should use hard links" >&5
     echo "$ac_t""$with_links" 1>&6
 else
     echo $ac_n "checking if tic should use symbolic links""... $ac_c" 1>&6
-echo "configure:2575: checking if tic should use symbolic links" >&5
+echo "configure:3244: checking if tic should use symbolic links" >&5
     
 # Check whether --enable-symlinks or --disable-symlinks was given.
 if test "${enable_symlinks+set}" = set; then
@@ -2595,7 +3264,7 @@ EOF
 
 ###   use option --enable-bsdpad to have tputs process BSD-style prefix padding
 echo $ac_n "checking if tputs should process BSD-style prefix padding""... $ac_c" 1>&6
-echo "configure:2599: checking if tputs should process BSD-style prefix padding" >&5
+echo "configure:3268: checking if tputs should process BSD-style prefix padding" >&5
 
 # Check whether --enable-bsdpad or --disable-bsdpad was given.
 if test "${enable_bsdpad+set}" = set; then
@@ -2613,7 +3282,7 @@ EOF
 
 ###   use option --enable-const to turn on use of const beyond that in XSI.
 echo $ac_n "checking for extended use of const keyword""... $ac_c" 1>&6
-echo "configure:2617: checking for extended use of const keyword" >&5
+echo "configure:3286: checking for extended use of const keyword" >&5
 
 # Check whether --enable-const or --disable-const was given.
 if test "${enable_const+set}" = set; then
@@ -2624,19 +3293,24 @@ else
 fi
 
 echo "$ac_t""$with_ext_const" 1>&6
-test "$with_ext_const" = yes && cat >> confdefs.h <<\EOF
+NCURSES_CONST=""
+if test "$with_ext_const" = yes ; then
+       cat >> confdefs.h <<\EOF
 #define NCURSES_CONST const
 EOF
 
+       NCURSES_CONST=const
+fi
+
 
 ### Enable compiling-in rcs id's
 echo $ac_n "checking if RCS identifiers should be compiled-in""... $ac_c" 1>&6
-echo "configure:2635: checking if RCS identifiers should be compiled-in" >&5
+echo "configure:3309: checking if RCS identifiers should be compiled-in" >&5
 
 # Check whether --with-rcs-ids or --without-rcs-ids was given.
 if test "${with_rcs_ids+set}" = set; then
   withval="$with_rcs_ids"
-  with_rcs_ids=$enableval
+  with_rcs_ids=$withval
 else
   with_rcs_ids=no
 fi
@@ -2650,7 +3324,7 @@ EOF
 ###############################################################################
 
 echo $ac_n "checking if you want all experimental code""... $ac_c" 1>&6
-echo "configure:2654: checking if you want all experimental code" >&5
+echo "configure:3328: checking if you want all experimental code" >&5
 
 # Check whether --with-develop or --without-develop was given.
 if test "${with_develop+set}" = set; then
@@ -2662,9 +3336,27 @@ fi
 
 echo "$ac_t""$with_develop" 1>&6
 
+###   use option --enable-broken-linker to force on use of broken-linker support
+echo $ac_n "checking if you want broken-linker support code""... $ac_c" 1>&6
+echo "configure:3342: checking if you want broken-linker support code" >&5
+
+# Check whether --enable-broken_linker or --disable-broken_linker was given.
+if test "${enable_broken_linker+set}" = set; then
+  enableval="$enable_broken_linker"
+  with_broken_linker=$enableval
+else
+  with_broken_linker=$BROKEN_LINKER
+fi
+
+echo "$ac_t""$with_broken_linker" 1>&6
+test "$with_broken_linker" = yes && cat >> confdefs.h <<\EOF
+#define BROKEN_LINKER 1
+EOF
+
+
 ###   use option --enable-hard-tabs to turn on use of hard-tabs optimize
 echo $ac_n "checking if you want experimental hard-tabs code""... $ac_c" 1>&6
-echo "configure:2668: checking if you want experimental hard-tabs code" >&5
+echo "configure:3360: checking if you want experimental hard-tabs code" >&5
 
 # Check whether --enable-hard-tabs or --disable-hard-tabs was given.
 if test "${enable_hard_tabs+set}" = set; then
@@ -2682,14 +3374,14 @@ EOF
 
 ###   use option --enable-hashmap to turn on use of hashmap scrolling logic
 echo $ac_n "checking if you want experimental hashmap code""... $ac_c" 1>&6
-echo "configure:2686: checking if you want experimental hashmap code" >&5
+echo "configure:3378: checking if you want experimental hashmap code" >&5
 
 # Check whether --enable-hashmap or --disable-hashmap was given.
 if test "${enable_hashmap+set}" = set; then
   enableval="$enable_hashmap"
   with_hashmap=$enableval
 else
-  with_hashmap=$with_develop
+  with_hashmap=yes
 fi
 
 echo "$ac_t""$with_hashmap" 1>&6
@@ -2698,8 +3390,25 @@ test "$with_hashmap" = yes && cat >> confdefs.h <<\EOF
 EOF
 
 
+echo $ac_n "checking if you want experimental no-padding code""... $ac_c" 1>&6
+echo "configure:3395: checking if you want experimental no-padding code" >&5
+
+# Check whether --enable-no-padding or --disable-no-padding was given.
+if test "${enable_no_padding+set}" = set; then
+  enableval="$enable_no_padding"
+  with_no_padding=$enableval
+else
+  with_no_padding=yes
+fi
+
+echo "$ac_t""$with_no_padding" 1>&6
+test "$with_no_padding" = yes && cat >> confdefs.h <<\EOF
+#define NCURSES_NO_PADDING 1
+EOF
+
+
 echo $ac_n "checking if you want experimental safe-sprintf code""... $ac_c" 1>&6
-echo "configure:2703: checking if you want experimental safe-sprintf code" >&5
+echo "configure:3412: checking if you want experimental safe-sprintf code" >&5
 
 # Check whether --enable-safe-sprintf or --disable-safe-sprintf was given.
 if test "${enable_safe_sprintf+set}" = set; then
@@ -2717,14 +3426,16 @@ EOF
 
 ###   use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic
 echo $ac_n "checking if you want to experiment without scrolling-hints code""... $ac_c" 1>&6
-echo "configure:2721: checking if you want to experiment without scrolling-hints code" >&5
+echo "configure:3430: checking if you want to experiment without scrolling-hints code" >&5
 
 # Check whether --enable-scroll-hints or --disable-scroll-hints was given.
 if test "${enable_scroll_hints+set}" = set; then
   enableval="$enable_scroll_hints"
   with_scroll_hints=$enableval
 else
-  with_scroll_hints=yes
+  with_scroll_hints=yes;
+        # when hashmap is used scroll hints are useless
+        test $with_hashmap = yes && with_scroll_hints=no
 fi
 
 echo "$ac_t""$with_scroll_hints" 1>&6
@@ -2733,16 +3444,33 @@ test "$with_scroll_hints" = yes && cat >> confdefs.h <<\EOF
 EOF
 
 
+###   use option --enable-tcap-names to allow user to define new capabilities
+echo $ac_n "checking if you want experimental definable names like termcap""... $ac_c" 1>&6
+echo "configure:3450: checking if you want experimental definable names like termcap" >&5
+
+# Check whether --enable-tcap-names or --disable-tcap-names was given.
+if test "${enable_tcap_names+set}" = set; then
+  enableval="$enable_tcap_names"
+  with_tcap_names=$enableval
+else
+  with_tcap_names=$with_develop
+fi
+
+echo "$ac_t""$with_tcap_names" 1>&6
+NCURSES_XNAMES=0
+test "$with_tcap_names" = yes && NCURSES_XNAMES=1
+
+
 ###   use option --enable-sigwinch to turn on use of SIGWINCH logic
 echo $ac_n "checking if you want experimental SIGWINCH handler""... $ac_c" 1>&6
-echo "configure:2739: checking if you want experimental SIGWINCH handler" >&5
+echo "configure:3467: checking if you want experimental SIGWINCH handler" >&5
 
 # Check whether --enable-sigwinch or --disable-sigwinch was given.
 if test "${enable_sigwinch+set}" = set; then
   enableval="$enable_sigwinch"
   with_sigwinch=$enableval
 else
-  with_sigwinch=$with_develop
+  with_sigwinch=yes
 fi
 
 echo "$ac_t""$with_sigwinch" 1>&6
@@ -2753,7 +3481,7 @@ EOF
 
 ###   use option --enable-widec to turn on use of wide-character support
 echo $ac_n "checking if you want experimental wide-character code""... $ac_c" 1>&6
-echo "configure:2757: checking if you want experimental wide-character code" >&5
+echo "configure:3485: checking if you want experimental wide-character code" >&5
 
 # Check whether --enable-widec or --disable-widec was given.
 if test "${enable_widec+set}" = set; then
@@ -2771,7 +3499,7 @@ EOF
 
 ###   use option --enable-xmc-glitch to turn on use of magic-cookie optimize
 echo $ac_n "checking if you want experimental xmc code""... $ac_c" 1>&6
-echo "configure:2775: checking if you want experimental xmc code" >&5
+echo "configure:3503: checking if you want experimental xmc code" >&5
 
 # Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
 if test "${enable_xmc_glitch+set}" = set; then
@@ -2821,11 +3549,11 @@ if test -n "$with_warnings"; then
 if test -n "$GCC"
 then
                cat > conftest.$ac_ext <<EOF
-#line 2825 "configure"
-int main(int argc, char *argv[]) { return argv[argc-1] == 0; }
+#line 3553 "configure"
+int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
-               echo "checking for gcc warning options" 1>&6
-echo "configure:2829: checking for gcc warning options" >&5
+               echo "checking for $CC warning options" 1>&6
+echo "configure:3557: checking for $CC warning options" >&5
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="-W -Wall"
        cf_warn_CONST=""
@@ -2843,7 +3571,7 @@ echo "configure:2829: checking for gcc warning options" >&5
                Wstrict-prototypes $cf_warn_CONST
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo configure:2847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:3575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                        test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6
                        EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
                        test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES"
@@ -2874,10 +3602,10 @@ cat > conftest.i <<EOF
 EOF
 if test -n "$GCC"
 then
-       echo "checking for gcc __attribute__ directives" 1>&6
-echo "configure:2879: checking for gcc __attribute__ directives" >&5
+       echo "checking for $CC __attribute__ directives" 1>&6
+echo "configure:3607: checking for $CC __attribute__ directives" >&5
        cat > conftest.$ac_ext <<EOF
-#line 2881 "configure"
+#line 3609 "configure"
 #include "confdefs.h"
 #include "conftest.h"
 #include "conftest.i"
@@ -2902,7 +3630,7 @@ EOF
 CF_ATTRIBUTE=`echo $cf_attribute | tr '[a-z]' '[A-Z]'`
 
                cf_directive="__attribute__(($cf_attribute))"
-               echo "checking for gcc $cf_directive" 1>&5
+               echo "checking for $CC $cf_directive" 1>&5
                case $cf_attribute in
                scanf|printf)
                cat >conftest.h <<EOF
@@ -2915,7 +3643,7 @@ EOF
 EOF
                        ;;
                esac
-               if { (eval echo configure:2919: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:3647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                        test -n "$verbose" && echo "$ac_t""... $cf_attribute" 1>&6
                        cat conftest.h >>confdefs.h
 #              else
@@ -2995,12 +3723,12 @@ fi
 
 ###    Checks for libraries.
 echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6
-echo "configure:2999: checking for gettimeofday" >&5
+echo "configure:3727: checking for gettimeofday" >&5
 if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3004 "configure"
+#line 3732 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gettimeofday(); below.  */
@@ -3023,7 +3751,7 @@ gettimeofday();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gettimeofday=yes"
 else
@@ -3046,7 +3774,7 @@ else
 
 
 echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
-echo "configure:3050: checking for gettimeofday in -lbsd" >&5
+echo "configure:3778: checking for gettimeofday in -lbsd" >&5
 ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3054,7 +3782,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbsd  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3058 "configure"
+#line 3786 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3065,7 +3793,7 @@ int main() {
 gettimeofday()
 ; return 0; }
 EOF
-if { (eval echo configure:3069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3093,12 +3821,12 @@ fi
 
 MATH_LIB=""
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:3097: checking for sin" >&5
+echo "configure:3825: checking for sin" >&5
 if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3102 "configure"
+#line 3830 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -3121,7 +3849,7 @@ sin();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_sin=yes"
 else
@@ -3139,7 +3867,7 @@ if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:3143: checking for sin in -lm" >&5
+echo "configure:3871: checking for sin in -lm" >&5
 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3147,7 +3875,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3151 "configure"
+#line 3879 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3158,7 +3886,7 @@ int main() {
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:3162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:3890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3184,12 +3912,12 @@ fi
 
 ###    Checks for header files.
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3188: checking for ANSI C header files" >&5
+echo "configure:3916: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3193 "configure"
+#line 3921 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3197,8 +3925,8 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:3929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   ac_cv_header_stdc=yes
@@ -3214,7 +3942,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3218 "configure"
+#line 3946 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3232,7 +3960,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3236 "configure"
+#line 3964 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3253,7 +3981,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 3257 "configure"
+#line 3985 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3264,7 +3992,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -3292,12 +4020,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:3296: checking for $ac_hdr that defines DIR" >&5
+echo "configure:4024: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3301 "configure"
+#line 4029 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -3305,7 +4033,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:3309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -3330,7 +4058,7 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:3334: checking for opendir in -ldir" >&5
+echo "configure:4062: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3338,7 +4066,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3342 "configure"
+#line 4070 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3349,7 +4077,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:3353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3371,7 +4099,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:3375: checking for opendir in -lx" >&5
+echo "configure:4103: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3379,7 +4107,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3383 "configure"
+#line 4111 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3390,7 +4118,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:3394: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3414,13 +4142,13 @@ fi
 
 
 echo $ac_n "checking for regular-expression headers""... $ac_c" 1>&6
-echo "configure:3418: checking for regular-expression headers" >&5
+echo "configure:4146: checking for regular-expression headers" >&5
 if eval "test \"`echo '$''{'cf_cv_regex'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 3424 "configure"
+#line 4152 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <regex.h>
@@ -3433,7 +4161,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:3437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_regex="regex.h"
 else
@@ -3442,7 +4170,7 @@ else
   rm -rf conftest*
   
        cat > conftest.$ac_ext <<EOF
-#line 3446 "configure"
+#line 4174 "configure"
 #include "confdefs.h"
 #include <regexp.h>
 int main() {
@@ -3452,7 +4180,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:3456: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_regex="regexp.h"
 else
@@ -3463,7 +4191,7 @@ else
                cf_save_LIBS="$LIBS"
                LIBS="-lgen $LIBS"
                cat > conftest.$ac_ext <<EOF
-#line 3467 "configure"
+#line 4195 "configure"
 #include "confdefs.h"
 #include <regexpr.h>
 int main() {
@@ -3473,7 +4201,7 @@ int main() {
                
 ; return 0; }
 EOF
-if { (eval echo configure:3477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_regex="regexpr.h"
 else
@@ -3530,18 +4258,18 @@ values.h \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3534: checking for $ac_hdr" >&5
+echo "configure:4262: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3539 "configure"
+#line 4267 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:4272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   eval "ac_cv_header_$ac_safe=yes"
@@ -3567,58 +4295,11 @@ fi
 done
 
 
-PROG_EXT=
-case $cf_cv_system_name in
-hpux*)
-    # check for HPUX's ANSI compiler
-    if test -z "$GCC"; then
-       echo $ac_n "checking for HP/UX ANSI compiler""... $ac_c" 1>&6
-echo "configure:3577: checking for HP/UX ANSI compiler" >&5
-       cf_save_CFLAGS="$CFLAGS"
-       CFLAGS="$CFLAGS -Aa"
-       cat > conftest.$ac_ext <<EOF
-#line 3581 "configure"
-#include "confdefs.h"
-
-int main() {
-void (*f)(void)=0
-; return 0; }
-EOF
-if { (eval echo configure:3588: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  cf_hpux_cc=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  cf_hpux_cc=no
-fi
-rm -f conftest*
-       echo "$ac_t""$cf_hpux_cc" 1>&6
-       if test $cf_hpux_cc = yes; then
-               cat >> confdefs.h <<\EOF
-#define _HPUX_SOURCE 1
-EOF
-
-       else
-               CFLAGS="$cf_save_CFLAGS"
-       fi
-    fi
-    ;;
-os2*)
-    # We make sure -Zexe is not used -- it would interfere with @PROG_EXT@
-    CFLAGS="$CFLAGS -Zmt -D__ST_MT_ERRNO__"
-    LDFLAGS=`echo "$LDFLAGS -Zmt -Zcrtdll" | sed "s/-Zexe//g"`
-    PROG_EXT=".exe"
-    ;;
-esac
-
-
 # check for ISC (this may also define _POSIX_SOURCE)
 # Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
 if test "$ISC" = yes ; then
        echo $ac_n "checking for main in -lcposix""... $ac_c" 1>&6
-echo "configure:3622: checking for main in -lcposix" >&5
+echo "configure:4303: checking for main in -lcposix" >&5
 ac_lib_var=`echo cposix'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3626,14 +4307,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3630 "configure"
+#line 4311 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:3637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3661,7 +4342,7 @@ else
 fi
 
        echo $ac_n "checking for bzero in -linet""... $ac_c" 1>&6
-echo "configure:3665: checking for bzero in -linet" >&5
+echo "configure:4346: checking for bzero in -linet" >&5
 ac_lib_var=`echo inet'_'bzero | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3669,7 +4350,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-linet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3673 "configure"
+#line 4354 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3680,7 +4361,7 @@ int main() {
 bzero()
 ; return 0; }
 EOF
-if { (eval echo configure:3684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3703,18 +4384,18 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3707: checking for $ac_hdr" >&5
+echo "configure:4388: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3712 "configure"
+#line 4393 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:4398: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   eval "ac_cv_header_$ac_safe=yes"
@@ -3743,13 +4424,13 @@ fi
 
 
 echo $ac_n "checking if sys/time.h works with sys/select.h""... $ac_c" 1>&6
-echo "configure:3747: checking if sys/time.h works with sys/select.h" >&5
+echo "configure:4428: checking if sys/time.h works with sys/select.h" >&5
 if eval "test \"`echo '$''{'cf_cv_sys_time_select'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 3753 "configure"
+#line 4434 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -3764,7 +4445,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4449: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_sys_time_select=yes
 else
@@ -3789,16 +4470,16 @@ ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3797: checking for working const" >&5
+echo "configure:4478: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3802 "configure"
+#line 4483 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3847,7 +4528,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:3851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -3868,21 +4549,21 @@ EOF
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:3872: checking for inline" >&5
+echo "configure:4553: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 3879 "configure"
+#line 4560 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:3886: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -3914,20 +4595,20 @@ EOF
 
 
 echo $ac_n "checking if unsigned literals are legal""... $ac_c" 1>&6
-echo "configure:3918: checking if unsigned literals are legal" >&5
+echo "configure:4599: checking if unsigned literals are legal" >&5
 if eval "test \"`echo '$''{'cf_cv_unsigned_literals'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 3924 "configure"
+#line 4605 "configure"
 #include "confdefs.h"
 
 int main() {
 long x = 1L + 1UL + 1U + 1
 ; return 0; }
 EOF
-if { (eval echo configure:3931: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_unsigned_literals=yes
 else
@@ -3945,7 +4626,7 @@ echo "$ac_t""$cf_cv_unsigned_literals" 1>&6
 
 
 echo $ac_n "checking for type of chtype""... $ac_c" 1>&6
-echo "configure:3949: checking for type of chtype" >&5
+echo "configure:4630: checking for type of chtype" >&5
 if eval "test \"`echo '$''{'cf_cv_typeof_chtype'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3954,7 +4635,7 @@ else
   cf_cv_typeof_chtype=long
 else
   cat > conftest.$ac_ext <<EOF
-#line 3958 "configure"
+#line 4639 "configure"
 #include "confdefs.h"
 
 #if USE_WIDEC_SUPPORT
@@ -4000,7 +4681,7 @@ int main()
 }
                
 EOF
-if { (eval echo configure:4004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_typeof_chtype=`cat cf_test.out`
 else
@@ -4033,7 +4714,7 @@ test "$cf_cv_typeof_chtype"    = long && cf_cv_1UL="${cf_cv_1UL}L"
 
 
 echo $ac_n "checking for number of bits in chtype""... $ac_c" 1>&6
-echo "configure:4037: checking for number of bits in chtype" >&5
+echo "configure:4718: checking for number of bits in chtype" >&5
 if eval "test \"`echo '$''{'cf_cv_shift_limit'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4042,7 +4723,7 @@ else
   cf_cv_shift_limit=32
 else
   cat > conftest.$ac_ext <<EOF
-#line 4046 "configure"
+#line 4727 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4065,7 +4746,7 @@ int main()
 }
                
 EOF
-if { (eval echo configure:4069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_shift_limit=`cat cf_test.out`
 else
@@ -4085,7 +4766,7 @@ echo "$ac_t""$cf_cv_shift_limit" 1>&6
 
 
 echo $ac_n "checking for width of character-index""... $ac_c" 1>&6
-echo "configure:4089: checking for width of character-index" >&5
+echo "configure:4770: checking for width of character-index" >&5
 if eval "test \"`echo '$''{'cf_cv_widec_shift'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4111,16 +4792,19 @@ echo "$ac_t""$cf_cv_widec_shift" 1>&6
 ###    Checks for external-data
 
 
-echo $ac_n "checking declaration of errno""... $ac_c" 1>&6
-echo "configure:4116: checking declaration of errno" >&5
+echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6
+echo "configure:4797: checking if external errno is declared" >&5
 if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
     cat > conftest.$ac_ext <<EOF
-#line 4122 "configure"
+#line 4803 "configure"
 #include "confdefs.h"
 
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
 #include <stdio.h>
 #include <sys/types.h>
 #include <errno.h> 
@@ -4128,7 +4812,7 @@ int main() {
 long x = (long) errno
 ; return 0; }
 EOF
-if { (eval echo configure:4132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval 'cf_cv_dcl_'errno'=yes'
 else
@@ -4138,17 +4822,14 @@ else
   eval 'cf_cv_dcl_'errno'=no'
 fi
 rm -f conftest*
+
 fi
 
+
 eval 'cf_result=$cf_cv_dcl_'errno
 echo "$ac_t""$cf_result" 1>&6
 
-# It's possible (for near-UNIX clones) that the data doesn't exist
-if eval "test \"`echo '$''{'cf_cv_have_errno'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-if test $cf_result = no ; then
+if test "$cf_result" = no ; then
     eval 'cf_result=DECL_'errno
     
 cf_result=`echo $cf_result | tr '[a-z]' '[A-Z]'`
@@ -4157,20 +4838,28 @@ cf_result=`echo $cf_result | tr '[a-z]' '[A-Z]'`
 #define $cf_result 1
 EOF
 
-    echo $ac_n "checking existence of errno""... $ac_c" 1>&6
-echo "configure:4162: checking existence of errno" >&5
-        cat > conftest.$ac_ext <<EOF
-#line 4164 "configure"
+fi
+
+# It's possible (for near-UNIX clones) that the data doesn't exist
+
+echo $ac_n "checking if external errno exists""... $ac_c" 1>&6
+echo "configure:4847: checking if external errno exists" >&5
+if eval "test \"`echo '$''{'cf_cv_have_errno'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+    cat > conftest.$ac_ext <<EOF
+#line 4853 "configure"
 #include "confdefs.h"
 
 #undef errno
-extern long errno;
+extern int errno;
 
 int main() {
 errno = 2
 ; return 0; }
 EOF
-if { (eval echo configure:4174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:4863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval 'cf_cv_have_'errno'=yes'
 else
@@ -4180,43 +4869,45 @@ else
   eval 'cf_cv_have_'errno'=no'
 fi
 rm -f conftest*
-        eval 'cf_result=$cf_cv_have_'errno
-        echo "$ac_t""$cf_result" 1>&6
-else
-    eval 'cf_cv_have_'errno'=yes'
 fi
 
-fi
 
-eval 'cf_result=HAVE_'errno
+eval 'cf_result=$cf_cv_have_'errno
+echo "$ac_t""$cf_result" 1>&6
 
+if test "$cf_result" = yes ; then
+    eval 'cf_result=HAVE_'errno
+    
 cf_result=`echo $cf_result | tr '[a-z]' '[A-Z]'`
 
-eval 'test $cf_cv_have_'errno' = yes && cat >> confdefs.h <<EOF
+    cat >> confdefs.h <<EOF
 #define $cf_result 1
 EOF
-'
+
+fi
+
+
 
 
 
 echo $ac_n "checking if data-only library module links""... $ac_c" 1>&6
-echo "configure:4204: checking if data-only library module links" >&5
+echo "configure:4895: checking if data-only library module links" >&5
 if eval "test \"`echo '$''{'cf_cv_link_dataonly'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        rm -f conftest.a
                cat >conftest.$ac_ext <<EOF
-#line 4211 "configure"
+#line 4902 "configure"
 int    testdata[3] = { 123, 456, 789 };
 EOF
-               if { (eval echo configure:4214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } ; then
+               if { (eval echo configure:4905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } ; then
                mv conftest.o data.o && \
                ( $AR $AR_OPTS conftest.a data.o ) 2>&5 1>/dev/null
        fi
        rm -f conftest.$ac_ext data.o
                cat >conftest.$ac_ext <<EOF
-#line 4220 "configure"
+#line 4911 "configure"
 int    testfunc()
 {
 #if defined(NeXT)
@@ -4229,7 +4920,7 @@ int       testfunc()
 #endif
 }
 EOF
-               if { (eval echo configure:4233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+               if { (eval echo configure:4924: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
                mv conftest.o func.o && \
                ( $AR $AR_OPTS conftest.a func.o ) 2>&5 1>/dev/null
        fi
@@ -4241,7 +4932,7 @@ EOF
   cf_cv_link_dataonly=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 4245 "configure"
+#line 4936 "configure"
 #include "confdefs.h"
 
        int main()
@@ -4251,7 +4942,7 @@ else
        }
        
 EOF
-if { (eval echo configure:4255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_link_dataonly=yes
 else
@@ -4275,45 +4966,58 @@ EOF
 
 
 echo $ac_n "checking for speed_t""... $ac_c" 1>&6
-echo "configure:4279: checking for speed_t" >&5
-if eval "test \"`echo '$''{'cf_cv_type_speed_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-       cat > conftest.$ac_ext <<EOF
-#line 4285 "configure"
+echo "configure:4970: checking for speed_t" >&5
+OSPEED_INCLUDES=
+cat > conftest.$ac_ext <<EOF
+#line 4973 "configure"
 #include "confdefs.h"
-
 #include <sys/types.h>
-#if HAVE_TERMIOS_H
-#include <termios.h>
-#endif
 int main() {
-speed_t x = 0
+speed_t some_variable = 0
 ; return 0; }
 EOF
-if { (eval echo configure:4296: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
-  cf_cv_type_speed_t=yes
+  OSPEED_TYPE=speed_t
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  cf_cv_type_speed_t=no
+  OSPEED_TYPE=unsigned
 fi
 rm -f conftest*
-       
+cat > conftest.$ac_ext <<EOF
+#line 4991 "configure"
+#include "confdefs.h"
+#include <termios.h>
+int main() {
+speed_t some_variable = 0
+; return 0; }
+EOF
+if { (eval echo configure:4998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  OSPEED_TYPE=speed_t
+        OSPEED_INCLUDES="#include <termios.h>"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
 fi
+rm -f conftest*
+
 
-echo "$ac_t""$cf_cv_type_speed_t" 1>&6
-test $cf_cv_type_speed_t != yes && cat >> confdefs.h <<\EOF
+if test "$OSPEED_TYPE" = "unsigned" ; then
+       echo "$ac_t""no" 1>&6
+       cat >> confdefs.h <<\EOF
 #define speed_t unsigned
 EOF
 
+else
+       echo "$ac_t""yes" 1>&6
+fi
 
 
 ###    Checks for library functions.
-for ac_func in \
+for ac_func in getcwd \
 getttynam \
 memccpy \
 nanosleep \
@@ -4326,21 +5030,22 @@ setvbuf \
 sigaction \
 sigvec \
 strdup \
+strstr \
 tcgetattr \
+tcgetpgrp \
 times \
-usleep \
 vfscanf \
 vsnprintf \
 vsscanf \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4339: checking for $ac_func" >&5
+echo "configure:5044: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4344 "configure"
+#line 5049 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4363,7 +5068,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -4388,16 +5093,17 @@ fi
 done
 
 
+
 if test "$with_getcap" = "yes" ; then
        
 echo $ac_n "checking for terminal-capability database functions""... $ac_c" 1>&6
-echo "configure:4395: checking for terminal-capability database functions" >&5
+echo "configure:5101: checking for terminal-capability database functions" >&5
 if eval "test \"`echo '$''{'cf_cv_cgetent'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
 cat > conftest.$ac_ext <<EOF
-#line 4401 "configure"
+#line 5107 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -4412,7 +5118,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:4416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_cgetent=yes
 else
@@ -4435,20 +5141,20 @@ fi
 
 
 echo $ac_n "checking for isascii""... $ac_c" 1>&6
-echo "configure:4439: checking for isascii" >&5
+echo "configure:5145: checking for isascii" >&5
 if eval "test \"`echo '$''{'cf_cv_have_isascii'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 4445 "configure"
+#line 5151 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 int main() {
 int x = isascii(' ')
 ; return 0; }
 EOF
-if { (eval echo configure:4452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cv_have_isascii=yes
 else
@@ -4469,9 +5175,9 @@ EOF
 
 if test $ac_cv_func_sigaction = yes; then
 echo $ac_n "checking whether sigaction needs _POSIX_SOURCE""... $ac_c" 1>&6
-echo "configure:4473: checking whether sigaction needs _POSIX_SOURCE" >&5
+echo "configure:5179: checking whether sigaction needs _POSIX_SOURCE" >&5
 cat > conftest.$ac_ext <<EOF
-#line 4475 "configure"
+#line 5181 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -4480,7 +5186,7 @@ int main() {
 struct sigaction act
 ; return 0; }
 EOF
-if { (eval echo configure:4484: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   sigact_bad=no
 else
@@ -4489,7 +5195,7 @@ else
   rm -rf conftest*
   
 cat > conftest.$ac_ext <<EOF
-#line 4493 "configure"
+#line 5199 "configure"
 #include "confdefs.h"
 
 #define _POSIX_SOURCE
@@ -4499,7 +5205,7 @@ int main() {
 struct sigaction act
 ; return 0; }
 EOF
-if { (eval echo configure:4503: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   sigact_bad=yes
         cat >> confdefs.h <<\EOF
@@ -4527,16 +5233,16 @@ if test $ac_cv_header_termios_h = yes ; then
        esac
        if test $termios_bad = maybe ; then
        echo $ac_n "checking whether termios.h needs _POSIX_SOURCE""... $ac_c" 1>&6
-echo "configure:4531: checking whether termios.h needs _POSIX_SOURCE" >&5
+echo "configure:5237: checking whether termios.h needs _POSIX_SOURCE" >&5
        cat > conftest.$ac_ext <<EOF
-#line 4533 "configure"
+#line 5239 "configure"
 #include "confdefs.h"
 #include <termios.h>
 int main() {
 struct termios foo; int x = foo.c_iflag
 ; return 0; }
 EOF
-if { (eval echo configure:4540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   termios_bad=no
 else
@@ -4545,7 +5251,7 @@ else
   rm -rf conftest*
   
                cat > conftest.$ac_ext <<EOF
-#line 4549 "configure"
+#line 5255 "configure"
 #include "confdefs.h"
 
 #define _POSIX_SOURCE
@@ -4554,7 +5260,7 @@ int main() {
 struct termios foo; int x = foo.c_iflag
 ; return 0; }
 EOF
-if { (eval echo configure:4558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   termios_bad=unknown
 else
@@ -4579,7 +5285,7 @@ if test "$cross_compiling" = yes ; then
        echo "configure: warning: cross compiling: assume setvbuf params not reversed" 1>&2
 else
        echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6
-echo "configure:4583: checking whether setvbuf arguments are reversed" >&5
+echo "configure:5289: checking whether setvbuf arguments are reversed" >&5
 if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4587,7 +5293,7 @@ else
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4591 "configure"
+#line 5297 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 /* If setvbuf has the reversed format, exit 0. */
@@ -4601,7 +5307,7 @@ main () {
   exit(0);                     /* Non-reversed systems segv here.  */
 }
 EOF
-if { (eval echo configure:4605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_setvbuf_reversed=yes
 else
@@ -4626,12 +5332,12 @@ fi
 
 fi
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:4630: checking return type of signal handlers" >&5
+echo "configure:5336: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4635 "configure"
+#line 5341 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -4648,7 +5354,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:4652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -4668,13 +5374,13 @@ EOF
 
 
 echo $ac_n "checking for type sigaction_t""... $ac_c" 1>&6
-echo "configure:4672: checking for type sigaction_t" >&5
+echo "configure:5378: checking for type sigaction_t" >&5
 if eval "test \"`echo '$''{'cf_cv_type_sigaction'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 4678 "configure"
+#line 5384 "configure"
 #include "confdefs.h"
 
 #include <signal.h>
@@ -4682,7 +5388,7 @@ int main() {
 sigaction_t x
 ; return 0; }
 EOF
-if { (eval echo configure:4686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_type_sigaction=yes
 else
@@ -4702,7 +5408,7 @@ EOF
 
 
 echo $ac_n "checking declaration of size-change""... $ac_c" 1>&6
-echo "configure:4706: checking declaration of size-change" >&5
+echo "configure:5412: checking declaration of size-change" >&5
 if eval "test \"`echo '$''{'cf_cv_sizechange'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4716,7 +5422,7 @@ do
     CFLAGS="$cf_save_CFLAGS"
     test -n "$cf_opts" && CFLAGS="$CFLAGS -D$cf_opts"
     cat > conftest.$ac_ext <<EOF
-#line 4720 "configure"
+#line 5426 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if HAVE_TERMIOS_H
@@ -4755,7 +5461,7 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:4759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_sizechange=yes
 else
@@ -4786,95 +5492,344 @@ EOF
 
 
 
-case "$cf_cv_system_name" in
-linux*)
-       cat >> confdefs.h <<\EOF
-#define GOOD_SELECT 1
+echo $ac_n "checking for memmove""... $ac_c" 1>&6
+echo "configure:5497: checking for memmove" >&5
+if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 5502 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char memmove(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char memmove();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_memmove) || defined (__stub___memmove)
+choke me
+#else
+memmove();
+#endif
+
+; return 0; }
 EOF
+if { (eval echo configure:5525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_memmove=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_memmove=no"
+fi
+rm -f conftest*
+fi
 
-       ;;
-esac
+if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  :
+else
+  echo "$ac_t""no" 1>&6
 
-if test -z "$cf_user_CFLAGS" ; then
-       CFLAGS=`echo ${CFLAGS} | sed -e 's/-g //' -e 's/-g$//'`
-       CXXFLAGS=`echo ${CXXFLAGS} | sed -e 's/-g //' -e 's/-g$//'`
+echo $ac_n "checking for bcopy""... $ac_c" 1>&6
+echo "configure:5544: checking for bcopy" >&5
+if eval "test \"`echo '$''{'ac_cv_func_bcopy'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 5549 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char bcopy(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char bcopy();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_bcopy) || defined (__stub___bcopy)
+choke me
+#else
+bcopy();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:5572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_bcopy=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_bcopy=no"
+fi
+rm -f conftest*
 fi
 
-if test -n "$CXX" ; then
-       # Extract the first word of "$CXX", so it can be a program name with args.
-set dummy $CXX; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4808: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CXX_EXISTS'+set}'`\" = set"; then
+if eval "test \"`echo '$ac_cv_func_'bcopy`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  
+       echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6
+echo "configure:5588: checking if bcopy does overlapping moves" >&5
+if eval "test \"`echo '$''{'cf_cv_good_bcopy'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  if test -n "$CXX_EXISTS"; then
-  ac_cv_prog_CXX_EXISTS="$CXX_EXISTS" # Let the user override the test.
+  
+               if test "$cross_compiling" = yes; then
+  cf_cv_good_bcopy=unknown
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CXX_EXISTS="yes"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_CXX_EXISTS" && ac_cv_prog_CXX_EXISTS="no"
+  cat > conftest.$ac_ext <<EOF
+#line 5597 "configure"
+#include "confdefs.h"
+
+int main() {
+       static char data[] = "abcdefghijklmnopqrstuwwxyz";
+       char temp[40];
+       bcopy(data, temp, sizeof(data));
+       bcopy(temp+10, temp, 15);
+       bcopy(temp+5, temp+15, 10);
+       exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
+}
+               
+EOF
+if { (eval echo configure:5610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  cf_cv_good_bcopy=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  cf_cv_good_bcopy=no
 fi
+rm -fr conftest*
 fi
-CXX_EXISTS="$ac_cv_prog_CXX_EXISTS"
-if test -n "$CXX_EXISTS"; then
-  echo "$ac_t""$CXX_EXISTS" 1>&6
+
+               
+fi
+
+echo "$ac_t""$cf_cv_good_bcopy" 1>&6
+       
 else
   echo "$ac_t""no" 1>&6
+cf_cv_good_bcopy=no
 fi
 
+       if test $cf_cv_good_bcopy = yes ; then
+               cat >> confdefs.h <<\EOF
+#define USE_OK_BCOPY 1
+EOF
+
+       else
+               cat >> confdefs.h <<\EOF
+#define USE_MY_MEMMOVE 1
+EOF
+
+       fi
+
+fi
+
+
+if test -z "$cf_user_CFLAGS" ; then
+       CFLAGS=`echo ${CFLAGS} | sed -e 's/-g //' -e 's/-g$//'`
+       CXXFLAGS=`echo ${CXXFLAGS} | sed -e 's/-g //' -e 's/-g$//'`
+fi
+
+
+echo $ac_n "checking for builtin $CC bool type""... $ac_c" 1>&6
+echo "configure:5654: checking for builtin $CC bool type" >&5
+if eval "test \"`echo '$''{'cf_cv_cc_bool_type'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
-       ac_cv_prog_CXX_EXISTS=no
+  
+       cat > conftest.$ac_ext <<EOF
+#line 5660 "configure"
+#include "confdefs.h"
+
+#include <stdio.h>
+#include <sys/types.h>
+
+int main() {
+bool x = false
+; return 0; }
+EOF
+if { (eval echo configure:5670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  cf_cv_cc_bool_type=1
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cf_cv_cc_bool_type=0
+fi
+rm -f conftest*
+       
+fi
+
+if test $cf_cv_cc_bool_type = 1
+then   echo "$ac_t""yes" 1>&6
+else   echo "$ac_t""no" 1>&6
 fi
-if test "$ac_cv_prog_CXX_EXISTS" = yes; then
+
+if test -n "$CXX" ; then
        ac_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cxx_cross
 
        
+if test -n "$GXX" ; then
+case $cf_cv_system_name in #(vi
+os2*) #(vi
+       cf_stdcpp_libname=stdcpp
+       ;;
+*)
+       cf_stdcpp_libname=stdc++
+       ;;
+esac
+echo $ac_n "checking for library $cf_stdcpp_libname""... $ac_c" 1>&6
+echo "configure:5707: checking for library $cf_stdcpp_libname" >&5
+if eval "test \"`echo '$''{'cf_cv_libstdcpp'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       cf_save="$LIBS"
+       LIBS="$LIBS -l$cf_stdcpp_libname -lm"
+cat > conftest.$ac_ext <<EOF
+#line 5715 "configure"
+#include "confdefs.h"
+
+#include <strstream.h>
+int main() {
+
+char buf[80];
+strstreambuf foo(buf, sizeof(buf))
+//destroy foo
+
+; return 0; }
+EOF
+if { (eval echo configure:5727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  cf_cv_libstdcpp=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cf_cv_libstdcpp=no
+fi
+rm -f conftest*
+       LIBS="$cf_save"
+
+fi
+
+echo "$ac_t""$cf_cv_libstdcpp" 1>&6
+test $cf_cv_libstdcpp = yes && CXXLIBS="$CXXLIBS -l$cf_stdcpp_libname"
+fi
+
+       case "`${CXX-g++} --version`" in
+       1*|2.0-6*)
+           cf_cxx_library=yes
+           ;;
+       2.7*)
+           
 cf_cxx_library=unknown
+case $cf_cv_system_name in #(vi
+os2*) #(vi
+       cf_gpp_libname=gpp
+       ;;
+*)
+       cf_gpp_libname=g++
+       ;;
+esac
 if test $ac_cv_prog_gxx = yes; then
-       echo $ac_n "checking for libg++""... $ac_c" 1>&6
-echo "configure:4849: checking for libg++" >&5
+       echo $ac_n "checking for lib$cf_gpp_libname""... $ac_c" 1>&6
+echo "configure:5762: checking for lib$cf_gpp_libname" >&5
        cf_save="$LIBS"
-       LIBS="$LIBS -lg++ -lm"
+       LIBS="$LIBS -l$cf_gpp_libname -lm"
        cat > conftest.$ac_ext <<EOF
-#line 4853 "configure"
+#line 5766 "configure"
+#include "confdefs.h"
+
+#include <$cf_gpp_libname/builtin.h>
+       
+int main() {
+//float foo=abs(1.0);
+        two_arg_error_handler_t foo2 = lib_error_handler
+; return 0; }
+EOF
+if { (eval echo configure:5776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  cf_cxx_library=yes
+        CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+        if test "$cf_gpp_libname" = cpp ; then
+           cat >> confdefs.h <<\EOF
+#define HAVE_GPP_BUILTIN_H 1
+EOF
+
+        else
+           cat >> confdefs.h <<\EOF
+#define HAVE_GXX_BUILTIN_H 1
+EOF
+
+        fi
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cat > conftest.$ac_ext <<EOF
+#line 5796 "configure"
 #include "confdefs.h"
 
 #include <builtin.h>
        
 int main() {
-float foo=abs(1.0)
+//float foo=abs(1.0);
+        two_arg_error_handler_t foo2 = lib_error_handler
 ; return 0; }
 EOF
-if { (eval echo configure:4862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:5806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cf_cxx_library=yes
-        CXXLIBS="$CXXLIBS -lg++ -lm"
+        CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+        cat >> confdefs.h <<\EOF
+#define HAVE_BUILTIN_H 1
+EOF
+
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
   cf_cxx_library=no
 fi
+rm -f conftest*
+fi
 rm -f conftest*
        LIBS="$cf_save"
        echo "$ac_t""$cf_cxx_library" 1>&6
 fi
 
+           ;;
+       *)
+           cf_cxx_library=no
+           ;;
+       esac
        echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:4878: checking how to run the C++ preprocessor" >&5
+echo "configure:5833: checking how to run the C++ preprocessor" >&5
 if test -z "$CXXCPP"; then
 if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4883,17 +5838,17 @@ else
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cxx_cross
   CXXCPP="${CXX-g++} -E"
   cat > conftest.$ac_ext <<EOF
-#line 4891 "configure"
+#line 5846 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4896: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:5851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
 else
@@ -4905,27 +5860,33 @@ else
 fi
 rm -f conftest*
   ac_cv_prog_CXXCPP="$CXXCPP"
+ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
 fi
 fi
 CXXCPP="$ac_cv_prog_CXXCPP"
 echo "$ac_t""$CXXCPP" 1>&6
 
-for ac_hdr in builtin.h typeinfo
+for ac_hdr in typeinfo
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4918: checking for $ac_hdr" >&5
+echo "configure:5879: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4923 "configure"
+#line 5884 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:5889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   eval "ac_cv_header_$ac_safe=yes"
@@ -4951,21 +5912,24 @@ fi
 done
 
        
-echo $ac_n "checking for builtin c++ bool type""... $ac_c" 1>&6
-echo "configure:4956: checking for builtin c++ bool type" >&5
+echo $ac_n "checking for builtin $CXX bool type""... $ac_c" 1>&6
+echo "configure:5917: checking for builtin $CXX bool type" >&5
 if eval "test \"`echo '$''{'cf_cv_builtin_bool'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 4962 "configure"
+#line 5923 "configure"
 #include "confdefs.h"
 
+#include <stdio.h>
+#include <sys/types.h>
+
 int main() {
 bool x = false
 ; return 0; }
 EOF
-if { (eval echo configure:4969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5933: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cf_cv_builtin_bool=1
 else
@@ -4984,8 +5948,8 @@ else      echo "$ac_t""no" 1>&6
 fi
 
        
-echo $ac_n "checking for size of c++ bool""... $ac_c" 1>&6
-echo "configure:4989: checking for size of c++ bool" >&5
+echo $ac_n "checking for size of $CXX bool""... $ac_c" 1>&6
+echo "configure:5953: checking for size of $CXX bool" >&5
 if eval "test \"`echo '$''{'cf_cv_type_of_bool'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4995,7 +5959,7 @@ else
   cf_cv_type_of_bool=unknown
 else
   cat > conftest.$ac_ext <<EOF
-#line 4999 "configure"
+#line 5963 "configure"
 #include "confdefs.h"
 #ifdef __cplusplus
 extern "C" void exit(int);
@@ -5003,7 +5967,11 @@ extern "C" void exit(int);
 
 #include <stdlib.h>
 #include <stdio.h>
-#if HAVE_BUILTIN_H
+#if HAVE_GXX_BUILTIN_H
+#include <g++/builtin.h>
+#elif HAVE_GPP_BUILTIN_H
+#include <gpp/builtin.h>
+#elif HAVE_BUILTIN_H
 #include <builtin.h>
 #endif
 main()
@@ -5011,7 +5979,7 @@ main()
        FILE *fp = fopen("cf_test.out", "w");
        if (fp != 0) {
                bool x = true;
-               if ((-x) >= 0)
+               if ((bool)(-x) >= 0)
                        fputs("unsigned ", fp);
                if (sizeof(x) == sizeof(int))       fputs("int",  fp);
                else if (sizeof(x) == sizeof(char)) fputs("char", fp);
@@ -5023,7 +5991,7 @@ main()
 }
                
 EOF
-if { (eval echo configure:5027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cf_cv_type_of_bool=`cat cf_test.out`
 else
@@ -5045,38 +6013,160 @@ if test "$cf_cv_type_of_bool" = unknown ; then
        cf_cv_type_of_bool=unsigned
 fi
 
+       
+echo $ac_n "checking for special defines needed for etip.h""... $ac_c" 1>&6
+echo "configure:6019: checking for special defines needed for etip.h" >&5
+cf_save_CXXFLAGS="$CXXFLAGS"
+cf_result="none"
+for cf_math in "" MATH_H
+do
+for cf_excp in "" MATH_EXCEPTION
+do
+       CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu"
+       test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
+       test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
+cat > conftest.$ac_ext <<EOF
+#line 6030 "configure"
+#include "confdefs.h"
+
+#include <etip.h.in>
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:6039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  
+       test -n "$cf_math" && cat >> confdefs.h <<EOF
+#define ETIP_NEEDS_${cf_math} 1
+EOF
+
+       test -n "$cf_excp" && cat >> confdefs.h <<EOF
+#define ETIP_NEEDS_${cf_excp} 1
+EOF
+
+       cf_result="$cf_math $cf_excp"
+       break
+
 else
-       cf_cxx_library=no
-       if eval "test \"`echo '$''{'cf_cv_builtin_bool'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cf_cv_builtin_bool=0
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
 fi
+rm -f conftest*
+done
+done
+echo "$ac_t""$cf_result" 1>&6
+CXXFLAGS="$cf_save_CXXFLAGS"
 
-       if eval "test \"`echo '$''{'cf_cv_sizeof_bool'+set}'`\" = set"; then
+       
+if test -n "$CXX" ; then
+echo $ac_n "checking if $CXX accepts parameter initialization""... $ac_c" 1>&6
+echo "configure:6066: checking if $CXX accepts parameter initialization" >&5
+if eval "test \"`echo '$''{'cf_cv_cpp_param_init'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  cf_cv_sizeof_bool=int
+  
+       ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+
+       if test "$cross_compiling" = yes; then
+  cf_cv_cpp_param_init=unknown
+else
+  cat > conftest.$ac_ext <<EOF
+#line 6082 "configure"
+#include "confdefs.h"
+#ifdef __cplusplus
+extern "C" void exit(int);
+#endif
+
+class TEST {
+private:
+       int value;
+public:
+       TEST(int x = 1);
+       ~TEST();
+};
+
+TEST::TEST(int x = 1)  // some compilers do not like second initializer
+{
+       value = x;
+}
+void main() { }
+
+EOF
+if { (eval echo configure:6103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  cf_cv_cpp_param_init=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  cf_cv_cpp_param_init=no
+fi
+rm -fr conftest*
 fi
 
+
 fi
 
+echo "$ac_t""$cf_cv_cpp_param_init" 1>&6
+fi
+test "$cf_cv_cpp_param_init" = yes && cat >> confdefs.h <<\EOF
+#define CPP_HAS_PARAM_INIT 1
+EOF
+
+
+       case $cf_cv_system_name in #(vi
+       sco3.2v5*)
+           CXXLDFLAGS="-u main"
+           ;;
+       esac
+       
+else
+       cf_cxx_library=no
+       cf_cv_builtin_bool=1
+
+       # Just because we are not configuring against C++ right now does not
+       # mean that a user will not want to use C++.  Some distributors disable
+       # the C++ portion of this configuration as a shortcut (or just to avoid
+       # compiling the demo in the c++ directory).  So we need a reasonable
+       # default for the 'bool' type.
+       #
+       # Caveat: since the storage of the bool type is not standardized, it
+       # may change.
+
+       echo $ac_n "checking for fallback type of bool""... $ac_c" 1>&6
+echo "configure:6145: checking for fallback type of bool" >&5
+       case "$host_cpu" in #(vi
+       i?86)   cf_cv_type_of_bool=char ;; #(vi
+       *)      cf_cv_type_of_bool=int  ;;
+       esac
+       echo "$ac_t""$cf_cv_type_of_bool" 1>&6
+fi
 
 
 
+
+if test "$cf_with_ada" != "no" ; then
 cf_ada_make=gnatmake
 # Extract the first word of "$cf_ada_make", so it can be a program name with args.
 set dummy $cf_ada_make; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5072: checking for $ac_word" >&5
+echo "configure:6161: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gnat_exists'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$gnat_exists"; then
   ac_cv_prog_gnat_exists="$gnat_exists" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_gnat_exists="yes"
@@ -5102,32 +6192,35 @@ cf_cv_gnat_version=`$cf_ada_make -v 2>&1 | grep '[0-9].[0-9][0-9]*' |\
   sed -e 's/[^0-9 \.]//g' | $AWK '{print $1;}'`
 case $cf_cv_gnat_version in
   3.[1-9]*|[4-9].*)
-    ac_cv_prog_gnat_correct=yes
+    cf_cv_prog_gnat_correct=yes
     ;;
   *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.10 or better. Disabling Ada95 binding.
-     ac_cv_prog_gnat_correct=no
+     cf_cv_prog_gnat_correct=no
      ;;
 esac
 case $cf_cv_gnat_version in
   3.1*|[4-9].*)
       cf_compile_generics=generics
+      cf_generic_objects="\$(GENOBJS)"
       ;;
   *)  cf_compile_generics=
+      cf_generic_objects=
       ;;
 esac
 
    # Extract the first word of "m4", so it can be a program name with args.
 set dummy m4; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:5123: checking for $ac_word" >&5
+echo "configure:6215: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_m4_exists'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$m4_exists"; then
   ac_cv_prog_m4_exists="$m4_exists" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_m4_exists="yes"
@@ -5146,13 +6239,54 @@ else
 fi
 
    if test "$ac_cv_prog_m4_exists" = no; then
-      ac_cv_prog_gnat_correct=no
+      cf_cv_prog_gnat_correct=no
       echo Ada95 binding required program m4 not found. Ada95 binding disabled.
    fi
+   if test "$cf_cv_prog_gnat_correct" = yes; then
+      echo $ac_n "checking if GNAT works""... $ac_c" 1>&6
+echo "configure:6248: checking if GNAT works" >&5
+      
+rm -f conftest*
+cat >>conftest.ads <<CF_EOF
+procedure conftest;
+CF_EOF
+cat >>conftest.adb <<CF_EOF
+with Text_IO;
+with GNAT.OS_Lib;
+procedure conftest is
+begin
+   Text_IO.Put ("Hello World");
+   Text_IO.New_Line;
+   GNAT.OS_Lib.OS_Exit (0);
+end conftest;
+CF_EOF
+if ( $cf_ada_make conftest 1>&5 2>&1 ) ; then
+   if ( ./conftest 1>&5 2>&1 ) ; then
+      cf_cv_prog_gnat_correct=yes
+   else
+      cf_cv_prog_gnat_correct=no
+   fi
+else
+   cf_cv_prog_gnat_correct=no
 fi
-if test        "$ac_cv_prog_gnat_correct" = yes; then
-   ADAFLAGS="-O3 $ADAFLAGS"
-   cf_ada_compiler=gcc
+rm -f conftest*
+
+      echo "$ac_t""$cf_cv_prog_gnat_correct" 1>&6
+   fi
+fi
+if test        "$cf_cv_prog_gnat_correct" = yes; then
+   ADAFLAGS="-O3 -gnatpn $ADAFLAGS"
+
+   
+# Check whether --with-ada-compiler or --without-ada-compiler was given.
+if test "${with_ada_compiler+set}" = set; then
+  withval="$with_ada_compiler"
+  cf_ada_compiler=$withval
+else
+  cf_ada_compiler=gnatmake
+fi
+
+
    cf_ada_package=terminal_interface
 
    
@@ -5160,6 +6294,7 @@ if test   "$ac_cv_prog_gnat_correct" = yes; then
    
    
    
+   
 
    
 # Check whether --with-ada-include or --without-ada-include was given.
@@ -5167,8 +6302,9 @@ if test "${with_ada_include+set}" = set; then
   withval="$with_ada_include"
   :
 else
-  withval="${ADA_INCLUDE-$exec_prefix/ada_include}"
+  withval="${ADA_INCLUDE-$prefix/lib/gnu-Ada/adainclude}"
 fi
+
 case ".$withval" in #(vi
 ./*) #(vi
   ;;
@@ -5184,9 +6320,10 @@ case ".$withval" in #(vi
   withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
   ;;
 *)
-  { echo "configure: error: expected a pathname for ada-include" 1>&2; exit 1; }
+  { echo "configure: error: expected a pathname" 1>&2; exit 1; }
   ;;
 esac
+
 eval ADA_INCLUDE="$withval"
 
    
@@ -5197,8 +6334,9 @@ if test "${with_ada_objects+set}" = set; then
   withval="$with_ada_objects"
   :
 else
-  withval="${ADA_OBJECTS-$exec_prefix/ada_objects}"
+  withval="${ADA_OBJECTS-$prefix/lib/gnu-Ada/adalib}"
 fi
+
 case ".$withval" in #(vi
 ./*) #(vi
   ;;
@@ -5214,13 +6352,19 @@ case ".$withval" in #(vi
   withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
   ;;
 *)
-  { echo "configure: error: expected a pathname for ada-objects" 1>&2; exit 1; }
+  { echo "configure: error: expected a pathname" 1>&2; exit 1; }
   ;;
 esac
+
 eval ADA_OBJECTS="$withval"
 
    
 
+   if test $with_shared = no
+   then
+      echo "configure: warning: Ada95 applications will not link properly with static libraries" 1>&2
+   fi
+fi
 fi
 
 ### It's not possible to appease gcc 2.6.3's conversion-warnings if we're
@@ -5230,7 +6374,7 @@ if test -n "$with_warnings"; then
        if test -n "$GCC"; then
                case "`$CC --version`" in
                2.6.3)
-                       if test "$cf_cv_sizeof_bool" != "char"; then
+                       if test "$cf_cv_type_of_bool" != "char"; then
                                EXTRA_CFLAGS="$EXTRA_CFLAGS -Wconversion"
                        fi
                        ;;
@@ -5244,7 +6388,7 @@ fi
 ### Construct the library-subsets, if any, from this set of keywords:
 ### none, base, ext_funcs, termlib.
 echo $ac_n "checking for library subsets""... $ac_c" 1>&6
-echo "configure:5248: checking for library subsets" >&5
+echo "configure:6392: checking for library subsets" >&5
 if test "$with_termlib" = yes ; then
        LIB_SUBSETS="termlib "
 else
@@ -5306,7 +6450,7 @@ PROG_ARGS="$TEST_ARGS"
 
 
 echo $ac_n "checking for src modules""... $ac_c" 1>&6
-echo "configure:5310: checking for src modules" >&5
+echo "configure:6454: checking for src modules" >&5
 
 # dependencies and linker-arguments for test-programs
 TEST_DEPS="${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
@@ -5371,12 +6515,12 @@ do
        SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir"
 done
 SRC_SUBDIRS="$SRC_SUBDIRS misc test"
-test $cf_cxx_library != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
+test $cf_with_cxx_binding != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
 
 ADA_SUBDIRS=
-if test "$ac_cv_prog_gnat_correct" = yes && test -d $srcdir/Ada95; then
+if test "$cf_cv_prog_gnat_correct" = yes && test -d $srcdir/Ada95; then
    SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
-   ADA_SUBDIRS="gen ada_include samples"
+   ADA_SUBDIRS="gen src samples"
 fi
 
 SUB_MAKEFILES=
@@ -5387,7 +6531,7 @@ done
 
 if test -n "$ADA_SUBDIRS"; then
    for cf_dir in $ADA_SUBDIRS
-   do  
+   do
       SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile"
    done
    
@@ -5441,7 +6585,7 @@ EOF
 # Ultrix sh set writes to stderr and can't be redirected directly,
 # and sets the high bit in the cache file unless we assign to the vars.
 (set) 2>&1 |
-  case `(ac_space=' '; set) 2>&1 | grep '^ac_space='` in
+  case `(ac_space=' '; set | grep ac_space) 2>&1` in
   *ac_space=\ *)
     # `set' does not quote correctly, so add quotes (double-quote substitution
     # turns \\\\ into \\, and sed turns \\ into \).
@@ -5508,7 +6652,7 @@ do
     echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
     exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
   -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.12.971230"
+    echo "$CONFIG_STATUS generated by autoconf version 2.13.19990117"
     exit 0 ;;
   -help | --help | --hel | --he | --h)
     echo "\$ac_cs_usage"; exit 0 ;;
@@ -5534,9 +6678,11 @@ sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
  s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
 $ac_vpsub
 $extrasub
+s%@SHELL@%$SHELL%g
 s%@CFLAGS@%$CFLAGS%g
 s%@CPPFLAGS@%$CPPFLAGS%g
 s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
 s%@DEFS@%$DEFS%g
 s%@LDFLAGS@%$LDFLAGS%g
 s%@LIBS@%$LIBS%g
@@ -5560,6 +6706,7 @@ s%@NCURSES_MINOR@%$NCURSES_MINOR%g
 s%@NCURSES_PATCH@%$NCURSES_PATCH%g
 s%@cf_cv_rel_version@%$cf_cv_rel_version%g
 s%@cf_cv_abi_version@%$cf_cv_abi_version%g
+s%@cf_cv_cc_bool_type@%$cf_cv_cc_bool_type%g
 s%@cf_cv_builtin_bool@%$cf_cv_builtin_bool%g
 s%@cf_cv_type_of_bool@%$cf_cv_type_of_bool%g
 s%@host@%$host%g
@@ -5568,12 +6715,15 @@ s%@host_cpu@%$host_cpu%g
 s%@host_vendor@%$host_vendor%g
 s%@host_os@%$host_os%g
 s%@CC@%$CC%g
+s%@BUILD_CC@%$BUILD_CC%g
 s%@CPP@%$CPP%g
+s%@PROG_EXT@%$PROG_EXT%g
 s%@LDCONFIG@%$LDCONFIG%g
 s%@CXX@%$CXX%g
 s%@AWK@%$AWK%g
 s%@SET_MAKE@%$SET_MAKE%g
 s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
 s%@INSTALL_DATA@%$INSTALL_DATA%g
 s%@LN_S@%$LN_S%g
 s%@RANLIB@%$RANLIB%g
@@ -5586,6 +6736,7 @@ s%@AR_OPTS@%$AR_OPTS%g
 s%@cf_cv_makeflags@%$cf_cv_makeflags%g
 s%@INSTALL_PREFIX@%$INSTALL_PREFIX%g
 s%@EXTRA_LIBS@%$EXTRA_LIBS%g
+s%@TINFO_LIST@%$TINFO_LIST%g
 s%@SHLIB_LIST@%$SHLIB_LIST%g
 s%@DFT_OBJ_SUBDIR@%$DFT_OBJ_SUBDIR%g
 s%@DFT_LWR_MODEL@%$DFT_LWR_MODEL%g
@@ -5602,21 +6753,27 @@ s%@LD_MODEL@%$LD_MODEL%g
 s%@CC_SHARED_OPTS@%$CC_SHARED_OPTS%g
 s%@LD_SHARED_OPTS@%$LD_SHARED_OPTS%g
 s%@MK_SHARED_LIB@%$MK_SHARED_LIB%g
+s%@LINK_PROGS@%$LINK_PROGS%g
+s%@LINK_TESTS@%$LINK_TESTS%g
 s%@EXTRA_LDFLAGS@%$EXTRA_LDFLAGS%g
 s%@LOCAL_LDFLAGS@%$LOCAL_LDFLAGS%g
 s%@LOCAL_LDFLAGS2@%$LOCAL_LDFLAGS2%g
 s%@INSTALL_LIB@%$INSTALL_LIB%g
 s%@FALLBACK_LIST@%$FALLBACK_LIST%g
+s%@TERMINFO_DIRS@%$TERMINFO_DIRS%g
+s%@NCURSES_CONST@%$NCURSES_CONST%g
+s%@NCURSES_XNAMES@%$NCURSES_XNAMES%g
 s%@ECHO_LINK@%$ECHO_LINK%g
 s%@EXTRA_CFLAGS@%$EXTRA_CFLAGS%g
 s%@MATH_LIB@%$MATH_LIB%g
-s%@PROG_EXT@%$PROG_EXT%g
 s%@cf_cv_typeof_chtype@%$cf_cv_typeof_chtype%g
 s%@cf_cv_1UL@%$cf_cv_1UL%g
 s%@cf_cv_shift_limit@%$cf_cv_shift_limit%g
 s%@cf_cv_widec_shift@%$cf_cv_widec_shift%g
-s%@CXX_EXISTS@%$CXX_EXISTS%g
+s%@OSPEED_TYPE@%$OSPEED_TYPE%g
+s%@OSPEED_INCLUDES@%$OSPEED_INCLUDES%g
 s%@CXXCPP@%$CXXCPP%g
+s%@CXXLDFLAGS@%$CXXLDFLAGS%g
 s%@CXXLIBS@%$CXXLIBS%g
 s%@gnat_exists@%$gnat_exists%g
 s%@m4_exists@%$m4_exists%g
@@ -5625,6 +6782,7 @@ s%@cf_ada_compiler@%$cf_ada_compiler%g
 s%@cf_ada_package@%$cf_ada_package%g
 s%@ADAFLAGS@%$ADAFLAGS%g
 s%@cf_compile_generics@%$cf_compile_generics%g
+s%@cf_generic_objects@%$cf_generic_objects%g
 s%@ADA_INCLUDE@%$ADA_INCLUDE%g
 s%@ADA_OBJECTS@%$ADA_OBJECTS%g
 s%@ACPPFLAGS@%$ACPPFLAGS%g
@@ -5862,7 +7020,7 @@ cf_cv_do_symlinks="$cf_cv_do_symlinks"
 cf_cv_rel_version="$cf_cv_rel_version"
 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
 cf_cv_system_name="$cf_cv_system_name"
-cf_cxx_library="$cf_cxx_library"
+cf_with_cxx_binding="$cf_with_cxx_binding"
 target="$target"
 
 
@@ -5876,6 +7034,8 @@ cat >> $CONFIG_STATUS <<\EOF
        os2)    cf_prefix=''     ;;
        *)      cf_prefix='lib'  ;;
        esac
+       LIB_PREFIX=$cf_prefix
+       
 
 
 for cf_dir in $SRC_SUBDIRS
@@ -5893,8 +7053,15 @@ do
        profile) cf_suffix='_p.a' ;;
        shared)
                case $cf_cv_system_name in
-               openbsd*|netbsd*|freebsd*)
+               openbsd*|freebsd*)
                        cf_suffix='.so.$(REL_VERSION)' ;;
+               netbsd*)
+                       if test -f /usr/libexec/ld.elf_so; then
+                               cf_suffix='.so'
+                       else
+                               cf_suffix='.so.$(REL_VERSION)'
+                       fi
+                       ;;
                hpux*)  cf_suffix='.sl'  ;;
                *)      cf_suffix='.so'  ;;
                esac
@@ -5909,7 +7076,7 @@ do
                                ;;
                        *) #(vi
                                cf_item=`echo $cf_libs_to_make |sed -e s/$LIB_NAME/$TINFO_NAME/g`
-                               cf_libs_to_make="$cf_libs_to_make $cf_item"
+                               cf_libs_to_make="$cf_item $cf_libs_to_make"
                                ;;
                        esac
                fi
@@ -5936,8 +7103,15 @@ CF_ITEM=`echo $cf_item | tr '[a-z]' '[A-Z]'`
        profile) cf_suffix='_p.a' ;;
        shared)
                case $cf_cv_system_name in
-               openbsd*|netbsd*|freebsd*)
+               openbsd*|freebsd*)
                        cf_suffix='.so.$(REL_VERSION)' ;;
+               netbsd*)
+                       if test -f /usr/libexec/ld.elf_so; then
+                               cf_suffix='.so'
+                       else
+                               cf_suffix='.so.$(REL_VERSION)'
+                       fi
+                       ;;
                hpux*)  cf_suffix='.sl'  ;;
                *)      cf_suffix='.so'  ;;
                esac
@@ -6044,10 +7218,12 @@ done
 
 cat >> Makefile <<CF_EOF
 
-install.data ::
+install.data \
+uninstall.data ::
        cd misc && \$(MAKE) \$(CF_MFLAGS) \$@
 
-install.man ::
+install.man \
+uninstall.man ::
        cd man && \$(MAKE) \$(CF_MFLAGS) \$@
 
 distclean ::
index 4ccaceeedab424e368b233533428457d2f2bad00..d1bcd88e4251d930b7fd727ed7a44ecedfacd53d 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright (c) 1998 Free Software Foundation, Inc.                        *
+dnl Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
 dnl copy of this software and associated documentation files (the            *
@@ -28,11 +28,11 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
 dnl
-dnl $Id: configure.in,v 1.126 1998/02/12 23:10:43 tom Exp $
+dnl $Id: configure.in,v 1.179 1999/10/24 00:32:42 tom Exp $
 dnl Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.12.971222)
-AC_REVISION($Revision: 1.126 $)
-AC_INIT(ncurses/lib_initscr.c)
+AC_REVISION($Revision: 1.179 $)
+AC_INIT(ncurses/base/lib_initscr.c)
 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
 
 CF_SUBST_NCURSES_VERSION
@@ -83,27 +83,58 @@ if test -n "$GCC" ; then
 AC_MSG_CHECKING(version of gcc)
 eval "$CC --version"
 fi
+if test $host != $build; then
+  AC_CHECK_PROGS(BUILD_CC, $CC gcc cc)
+fi
 AC_PROG_CPP
 AC_PROG_GCC_TRADITIONAL
 AC_ISC_POSIX
-AC_PATH_PROG(LDCONFIG,ldconfig,,$PATH:/sbin:/usr/sbin)
+CF_ANSI_CC_REQD
+CF_PROG_EXT
+
+case "$cf_cv_system_name" in
+freebsd*) #(vi
+  test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
+  ;;
+*) LDPATH=$PATH:/sbin:/usr/sbin
+  AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
+  ;;
+esac
+AC_SUBST(LDCONFIG)
 
 dnl DEFECT in autoconf 2.12:   an attempt to set policy, this breaks the
 dnl                            configure script by not letting us test if C++
 dnl                            is present, making this option necessary.
-AC_MSG_CHECKING(if you want to build with C++)
+AC_MSG_CHECKING(if you want to ensure bool is consistent with C++)
 AC_ARG_WITH(cxx,
-       [  --without-cxx           suppress check for C++, don't build demo],
+       [  --without-cxx           do not adjust ncurses bool to match C++],
        [cf_with_cxx=$withval],
        [cf_with_cxx=yes])
 AC_MSG_RESULT($cf_with_cxx)
-if test "X$cf_with_cxx" != Xno ; then
-AC_PROG_CXX
+if test "X$cf_with_cxx" = Xno ; then
+       CXX=""
+       GXX=""
+else
+       AC_PROG_CXX
 fi
 changequote(,)dnl
 if test -n "$GXX" ; then case "`${CXX-g++} --version`" in 1*|2.[0-6]*) GXX=""; CXX=""; ac_cv_prog_gxx=no; cf_cxx_library=no ; echo No: templates do not work;; esac; fi
 changequote([,])dnl
 
+AC_MSG_CHECKING(if you want to build C++ binding and demo)
+AC_ARG_WITH(cxx-binding,
+       [  --without-cxx-binding   do not build C++ binding and demo],
+       [cf_with_cxx_binding=$withval],
+       [cf_with_cxx_binding=$cf_with_cxx])
+AC_MSG_RESULT($cf_with_cxx_binding)
+
+AC_MSG_CHECKING(if you want to build with Ada95)
+AC_ARG_WITH(ada,
+       [  --without-ada           suppress check for Ada95, don't build demo],
+       [cf_with_ada=$withval],
+       [cf_with_ada=yes])
+AC_MSG_RESULT($cf_with_ada)
+
 AC_MSG_CHECKING(if you want to build programs such as tic)
 AC_ARG_WITH(progs,
        [  --without-progs         suppress build with programs (e.g., tic)],
@@ -133,7 +164,6 @@ CF_SUBST(archiver,AR,ar)
 CF_SUBST(archiver options,AR_OPTS,rv)
 
 CF_MAKEFLAGS
-CF_MAN_PAGES
 
 dnl Special option for use by system-builders: the install-prefix is used to
 dnl adjust the location into which the actual install is done, so that an
@@ -150,6 +180,9 @@ AC_ARG_WITH(install-prefix,
 AC_MSG_RESULT($INSTALL_PREFIX)
 AC_SUBST(INSTALL_PREFIX)
 
+###############################################################################
+CF_MAN_PAGES
+
 ###############################################################################
 CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
 
@@ -201,7 +234,7 @@ AC_MSG_RESULT($with_termlib)
 AC_MSG_CHECKING(if you want to link with dbmalloc for testing)
 AC_ARG_WITH(dbmalloc,
        [  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
-       [with_dbmalloc=yes],
+       [with_dbmalloc=$withval],
        [with_dbmalloc=no])
 AC_MSG_RESULT($with_dbmalloc)
 if test $with_dbmalloc = yes ; then
@@ -211,29 +244,34 @@ fi
 AC_MSG_CHECKING(if you want to link with dmalloc for testing)
 AC_ARG_WITH(dmalloc,
        [  --with-dmalloc          test: use Gray Watson's dmalloc library],
-       [with_dmalloc=yes],
+       [with_dmalloc=$withval],
        [with_dmalloc=no])
 AC_MSG_RESULT($with_dmalloc)
 if test $with_dmalloc = yes ; then
        AC_CHECK_LIB(dmalloc,dmalloc_debug)
 fi
 
+SHLIB_LIST=""
 AC_MSG_CHECKING(if you want to link with the gpm mouse library)
 AC_ARG_WITH(gpm,
        [  --with-gpm              use Alessandro Rubini's GPM library],
-       [with_gpm=yes],
+       [with_gpm=$withval],
        [with_gpm=no])
 AC_MSG_RESULT($with_gpm)
 if test $with_gpm = yes ; then
        AC_CHECK_LIB(gpm,Gpm_Open,[
-               EXTRA_LIBS="$EXTRA_LIBS -lgpm -lncurses"
-               SHLIB_LIST="$SHLIB_DEPS -lgpm "
+               EXTRA_LIBS="-lgpm -lncurses $EXTRA_LIBS"
+               SHLIB_LIST="-lgpm $SHLIB_LIST"
                AC_DEFINE(HAVE_LIBGPM)
                AC_CHECK_HEADERS(gpm.h)
-       ],,-lcurses -ltermcap)
+       ],AC_MSG_WARN(Cannot link with gpm library - read the FAQ))
 fi
 
+TINFO_LIST="$SHLIB_LIST"
+test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo"
+
 AC_SUBST(EXTRA_LIBS)
+AC_SUBST(TINFO_LIST)
 AC_SUBST(SHLIB_LIST)
 
 AC_MSG_CHECKING(for specified models)
@@ -266,17 +304,16 @@ LIB_PREFIX=$LIB_DIR/$cf_prefix
 AC_SUBST(LIB_PREFIX)
 
 dnl Not all ports of gcc support the -g option
-dnl autoconf 2.12 uses different symbol for -g option than autoconf 2.10, etc.
 
 if test X"$CC_G_OPT" = X"" ; then
        CC_G_OPT='-g'
-       test -n "$GCC" && test "${ac_cv_prog_cc_g}${ac_cv_prog_gcc_g}" != yes && CC_G_OPT=''
+       test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
 fi
 AC_SUBST(CC_G_OPT)
 
 if test X"$CXX_G_OPT" = X"" ; then
        CXX_G_OPT='-g'
-       test -n "$GXX" && test "${ac_cv_prog_cxx_g}${ac_cv_prog_gxx_g}" != yes && CXX_G_OPT=''
+       test -n "$GXX" && test "${ac_cv_prog_cxx_g}" != yes && CXX_G_OPT=''
 fi
 AC_SUBST(CXX_G_OPT)
 
@@ -296,7 +333,6 @@ AC_ARG_ENABLE(rpath,
 AC_MSG_RESULT($cf_cv_ld_rpath)
 
 CF_SHARED_OPTS
-
 if test "$CC_SHARED_OPTS" = "unknown"; then
        for model in $cf_list_models; do
                if test "$model" = "shared"; then
@@ -344,21 +380,37 @@ AC_ARG_WITH(fallbacks,
        [with_fallback=$withval],
        [with_fallback=])
 AC_MSG_RESULT($with_fallback)
-FALLBACK_LIST=`echo $with_fallback|sed -e 's/,/ /'`
+FALLBACK_LIST=`echo $with_fallback|sed -e 's/,/ /g'`
 AC_SUBST(FALLBACK_LIST)
 
+AC_MSG_CHECKING(for list of terminfo directories)
+CF_WITH_PATHLIST(terminfo-dirs,
+       [  --with-terminfo-dirs=XXX specify list of terminfo directories],
+       TERMINFO_DIRS,
+       DATADIR/terminfo,
+       ${datadir}/terminfo)
+AC_MSG_RESULT($TERMINFO_DIRS)
+test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS")
+
 if test $with_database = no ; then
        if test -z $with_fallback ; then
                AC_ERROR(You have disabled the database w/o specifying fallbacks)
        fi
 fi
 
-###    use option --enable-big-core to make tic run faster on big machines
+###    use option --disable-big-core to make tic run on small machines
+###    We need 4Mb, check if we can allocate 50% more than that.
 AC_MSG_CHECKING(if big-core option selected)
 AC_ARG_ENABLE(big-core,
-       [  --enable-big-core       assume machine has lots of memory],
+       [  --disable-big-core      assume machine has little memory],
        [with_big_core=$enableval],
-       [with_big_core=no])
+       [AC_TRY_RUN([
+#include <stdlib.h>
+#include <string.h>
+int main() { exit(malloc(6000000L) == 0); }],
+       [with_big_core=yes],
+       [with_big_core=no],
+       [with_big_core=no])])
 AC_MSG_RESULT($with_big_core)
 test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE)
 
@@ -395,14 +447,7 @@ fi
 
 ###   Use option --enable-symlinks to make tic use symlinks, not hard links
 ###   to reduce storage requirements for the terminfo database.
-###
-###   Most Unix systems have both link and symlink, a few don't have symlink.
-###   A few non-Unix systems implement symlink, but not link.
-###   A few non-systems implement neither.
-
-AC_CHECK_FUNCS( \
-       link \
-       symlink )
+CF_LINK_FUNCS
 
 with_links=no
 with_symlinks=no
@@ -451,13 +496,18 @@ AC_ARG_ENABLE(const,
        [with_ext_const=$enableval],
        [with_ext_const=no])
 AC_MSG_RESULT($with_ext_const)
-test "$with_ext_const" = yes && AC_DEFINE(NCURSES_CONST,const)
+NCURSES_CONST=""
+if test "$with_ext_const" = yes ; then
+       AC_DEFINE(NCURSES_CONST,const)
+       NCURSES_CONST=const
+fi
+AC_SUBST(NCURSES_CONST)
 
 ### Enable compiling-in rcs id's
 AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
 AC_ARG_WITH(rcs-ids,
        [  --with-rcs-ids          compile-in RCS identifiers],
-       [with_rcs_ids=$enableval],
+       [with_rcs_ids=$withval],
        [with_rcs_ids=no])
 AC_MSG_RESULT($with_rcs_ids)
 test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
@@ -471,6 +521,15 @@ AC_ARG_WITH(develop,
        [with_develop=no])
 AC_MSG_RESULT($with_develop)
 
+###   use option --enable-broken-linker to force on use of broken-linker support
+AC_MSG_CHECKING(if you want broken-linker support code)
+AC_ARG_ENABLE(broken_linker,
+       [  --enable-broken_linker  compile with broken-linker support code],
+       [with_broken_linker=$enableval],
+       [with_broken_linker=$BROKEN_LINKER])
+AC_MSG_RESULT($with_broken_linker)
+test "$with_broken_linker" = yes && AC_DEFINE(BROKEN_LINKER)
+
 ###   use option --enable-hard-tabs to turn on use of hard-tabs optimize
 AC_MSG_CHECKING(if you want experimental hard-tabs code)
 AC_ARG_ENABLE(hard-tabs,
@@ -485,13 +544,21 @@ AC_MSG_CHECKING(if you want experimental hashmap code)
 AC_ARG_ENABLE(hashmap,
        [  --enable-hashmap        compile with experimental hashmap code],
        [with_hashmap=$enableval],
-       [with_hashmap=$with_develop])
+       [with_hashmap=yes])
 AC_MSG_RESULT($with_hashmap)
 test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP)
 
+AC_MSG_CHECKING(if you want experimental no-padding code)
+AC_ARG_ENABLE(no-padding,
+       [  --enable-no-padding     compile with experimental no-padding code],
+       [with_no_padding=$enableval],
+       [with_no_padding=yes])
+AC_MSG_RESULT($with_no_padding)
+test "$with_no_padding" = yes && AC_DEFINE(NCURSES_NO_PADDING)
+
 AC_MSG_CHECKING(if you want experimental safe-sprintf code)
 AC_ARG_ENABLE(safe-sprintf,
-       [  --disable-safe-sprintf  compile with experimental safe-sprintf code],
+       [  --enable-safe-sprintf   compile with experimental safe-sprintf code],
        [with_safe_sprintf=$enableval],
        [with_safe_sprintf=no])
 AC_MSG_RESULT($with_safe_sprintf)
@@ -502,16 +569,29 @@ AC_MSG_CHECKING(if you want to experiment without scrolling-hints code)
 AC_ARG_ENABLE(scroll-hints,
        [  --disable-scroll-hints  compile hashmap without scroll-hints code],
        [with_scroll_hints=$enableval],
-       [with_scroll_hints=yes])
+       [with_scroll_hints=yes;
+        # when hashmap is used scroll hints are useless
+        test $with_hashmap = yes && with_scroll_hints=no])
 AC_MSG_RESULT($with_scroll_hints)
 test "$with_scroll_hints" = yes && AC_DEFINE(USE_SCROLL_HINTS)
 
+###   use option --enable-tcap-names to allow user to define new capabilities
+AC_MSG_CHECKING(if you want experimental definable names like termcap)
+AC_ARG_ENABLE(tcap-names,
+       [  --enable-tcap-names     compile with experimental definable-name code],
+       [with_tcap_names=$enableval],
+       [with_tcap_names=$with_develop])
+AC_MSG_RESULT($with_tcap_names)
+NCURSES_XNAMES=0
+test "$with_tcap_names" = yes && NCURSES_XNAMES=1
+AC_SUBST(NCURSES_XNAMES)
+
 ###   use option --enable-sigwinch to turn on use of SIGWINCH logic
 AC_MSG_CHECKING(if you want experimental SIGWINCH handler)
 AC_ARG_ENABLE(sigwinch,
        [  --enable-sigwinch       compile with experimental SIGWINCH handler],
        [with_sigwinch=$enableval],
-       [with_sigwinch=$with_develop])
+       [with_sigwinch=yes])
 AC_MSG_RESULT($with_sigwinch)
 test "$with_sigwinch" = yes && AC_DEFINE(USE_SIGWINCH)
 
@@ -630,32 +710,6 @@ unistd.h \
 values.h \
 )
 
-PROG_EXT=
-case $cf_cv_system_name in
-hpux*)
-    # check for HPUX's ANSI compiler
-    if test -z "$GCC"; then
-       AC_MSG_CHECKING([for HP/UX ANSI compiler])
-       cf_save_CFLAGS="$CFLAGS"
-       CFLAGS="$CFLAGS -Aa"
-       AC_TRY_COMPILE([],[void (*f)(void)=0],[cf_hpux_cc=yes],[cf_hpux_cc=no])
-       AC_MSG_RESULT($cf_hpux_cc)
-       if test $cf_hpux_cc = yes; then
-               AC_DEFINE(_HPUX_SOURCE)
-       else
-               CFLAGS="$cf_save_CFLAGS"
-       fi
-    fi
-    ;;
-os2*)
-    # We make sure -Zexe is not used -- it would interfere with @PROG_EXT@
-    CFLAGS="$CFLAGS -Zmt -D__ST_MT_ERRNO__"
-    LDFLAGS=`echo "$LDFLAGS -Zmt -Zcrtdll" | sed "s/-Zexe//g"`
-    PROG_EXT=".exe"
-    ;;
-esac
-AC_SUBST(PROG_EXT)
-
 # check for ISC (this may also define _POSIX_SOURCE)
 # Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
 if test "$ISC" = yes ; then
@@ -681,7 +735,7 @@ CF_LINK_DATAONLY
 CF_SPEED_TYPE
 
 ###    Checks for library functions.
-AC_CHECK_FUNCS( \
+AC_CHECK_FUNCS( getcwd \
 getttynam \
 memccpy \
 nanosleep \
@@ -694,14 +748,16 @@ setvbuf \
 sigaction \
 sigvec \
 strdup \
+strstr \
 tcgetattr \
+tcgetpgrp \
 times \
-usleep \
 vfscanf \
 vsnprintf \
 vsscanf \
 )
 
+
 if test "$with_getcap" = "yes" ; then
        CF_CGETENT
 fi
@@ -719,13 +775,7 @@ fi
 AC_TYPE_SIGNAL
 CF_TYPE_SIGACTION
 CF_SIZECHANGE
-
-dnl FIXME checks we don't do (but neither does the old Configure script):
-case "$cf_cv_system_name" in
-linux*)
-       AC_DEFINE(GOOD_SELECT)
-       ;;
-esac
+CF_FUNC_MEMMOVE
 
 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
 if test -z "$cf_user_CFLAGS" ; then
@@ -734,21 +784,51 @@ if test -z "$cf_user_CFLAGS" ; then
 fi
 
 dnl Check for C++ compiler characteristics (and ensure that it's there!)
+CF_BOOL_DECL(cf_cv_cc_bool_type)
 if test -n "$CXX" ; then
-       AC_CHECK_PROG(CXX_EXISTS, $CXX, yes, no)
-else
-       ac_cv_prog_CXX_EXISTS=no
-fi
-if test "$ac_cv_prog_CXX_EXISTS" = yes; then
        AC_LANG_CPLUSPLUS
-       CF_CXX_LIBRARY
-       AC_CHECK_HEADERS(builtin.h typeinfo)
+       CF_STDCPP_LIBRARY
+       case "`${CXX-g++} --version`" in
+       1*|2.[0-6]*)
+           cf_cxx_library=yes
+           ;;
+       2.7*)
+           CF_GPP_LIBRARY
+           ;;
+       *)
+           cf_cxx_library=no
+           ;;
+       esac
+       AC_CHECK_HEADERS(typeinfo)
        CF_BOOL_DECL
        CF_BOOL_SIZE
+       CF_ETIP_DEFINES
+       CF_CPP_PARAM_INIT
+       case $cf_cv_system_name in #(vi
+       sco3.2v5*)
+           CXXLDFLAGS="-u main"
+           ;;
+       esac
+       AC_SUBST(CXXLDFLAGS)
 else
        cf_cxx_library=no
-       AC_CACHE_VAL(cf_cv_builtin_bool,[cf_cv_builtin_bool=0])
-       AC_CACHE_VAL(cf_cv_sizeof_bool,[cf_cv_sizeof_bool=int])
+       cf_cv_builtin_bool=1
+
+       # Just because we are not configuring against C++ right now does not
+       # mean that a user will not want to use C++.  Some distributors disable
+       # the C++ portion of this configuration as a shortcut (or just to avoid
+       # compiling the demo in the c++ directory).  So we need a reasonable
+       # default for the 'bool' type.
+       #
+       # Caveat: since the storage of the bool type is not standardized, it
+       # may change.
+
+       AC_MSG_CHECKING(for fallback type of bool)
+       case "$host_cpu" in #(vi
+       i?86)   cf_cv_type_of_bool=char ;; #(vi
+       *)      cf_cv_type_of_bool=int  ;;
+       esac
+       AC_MSG_RESULT($cf_cv_type_of_bool)
 fi
 AC_SUBST(CXXLIBS)
 
@@ -756,6 +836,7 @@ CF_HELP_MESSAGE(Ada95 Binding Options:)
 
 dnl Check for availability of GNU Ada Translator (GNAT).
 dnl At the moment we support no other Ada95 compiler.
+if test "$cf_with_ada" != "no" ; then
 cf_ada_make=gnatmake
 AC_CHECK_PROG(gnat_exists, $cf_ada_make, yes, no)
 if test "$ac_cv_prog_gnat_exists" = no; then
@@ -764,13 +845,31 @@ else
    CF_GNAT_VERSION
    AC_CHECK_PROG(m4_exists, m4, yes, no)
    if test "$ac_cv_prog_m4_exists" = no; then
-      ac_cv_prog_gnat_correct=no
+      cf_cv_prog_gnat_correct=no
       echo Ada95 binding required program m4 not found. Ada95 binding disabled.
    fi
+   if test "$cf_cv_prog_gnat_correct" = yes; then
+      AC_MSG_CHECKING(if GNAT works)
+      CF_GNAT_TRY_RUN([procedure conftest;],
+[with Text_IO;
+with GNAT.OS_Lib;
+procedure conftest is
+begin
+   Text_IO.Put ("Hello World");
+   Text_IO.New_Line;
+   GNAT.OS_Lib.OS_Exit (0);
+end conftest;],[cf_cv_prog_gnat_correct=yes],[cf_cv_prog_gnat_correct=no])
+      AC_MSG_RESULT($cf_cv_prog_gnat_correct)
+   fi
 fi
-if test        "$ac_cv_prog_gnat_correct" = yes; then
-   ADAFLAGS="-O3 $ADAFLAGS"
-   cf_ada_compiler=gcc
+if test        "$cf_cv_prog_gnat_correct" = yes; then
+   ADAFLAGS="-O3 -gnatpn $ADAFLAGS"
+
+   AC_ARG_WITH(ada-compiler,
+       [  --with-ada-compiler=CMD Specify Ada95 compiler command (default gnatmake)],
+       [cf_ada_compiler=$withval],
+       [cf_ada_compiler=gnatmake])
+
    cf_ada_package=terminal_interface
 
    AC_SUBST(cf_ada_make)
@@ -778,21 +877,27 @@ if test   "$ac_cv_prog_gnat_correct" = yes; then
    AC_SUBST(cf_ada_package)
    AC_SUBST(ADAFLAGS)
    AC_SUBST(cf_compile_generics)
+   AC_SUBST(cf_generic_objects)
 
    CF_WITH_PATH(ada-include,
        [  --with-ada-include=DIR  Ada includes are in DIR],
        ADA_INCLUDE,
-       EPREFIX/ada_include,
-       [$]exec_prefix/ada_include)
+       PREFIX/lib/gnu-Ada/adainclude,
+       [$]prefix/lib/gnu-Ada/adainclude)
    AC_SUBST(ADA_INCLUDE)
 
    CF_WITH_PATH(ada-objects,
        [  --with-ada-objects=DIR  Ada objects are in DIR],
        ADA_OBJECTS,
-       EPREFIX/ada_objects,
-       [$]exec_prefix/ada_objects)
+       PREFIX/lib/gnu-Ada/adalib,
+       [$]prefix/lib/gnu-Ada/adalib)
    AC_SUBST(ADA_OBJECTS)
 
+   if test $with_shared = no
+   then
+      AC_MSG_WARN(Ada95 applications will not link properly with static libraries)
+   fi
+fi
 fi
 
 ### It's not possible to appease gcc 2.6.3's conversion-warnings if we're
@@ -802,7 +907,7 @@ if test -n "$with_warnings"; then
        if test -n "$GCC"; then
                case "`$CC --version`" in
                2.6.3)
-                       if test "$cf_cv_sizeof_bool" != "char"; then
+                       if test "$cf_cv_type_of_bool" != "char"; then
                                EXTRA_CFLAGS="$EXTRA_CFLAGS -Wconversion"
                        fi
                        ;;
@@ -875,7 +980,7 @@ cf_cv_do_symlinks="$cf_cv_do_symlinks"
 cf_cv_rel_version="$cf_cv_rel_version"
 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
 cf_cv_system_name="$cf_cv_system_name"
-cf_cxx_library="$cf_cxx_library"
+cf_with_cxx_binding="$cf_with_cxx_binding"
 target="$target"
 
 ],sort)dnl
diff --git a/convert_configure.pl b/convert_configure.pl
new file mode 100644 (file)
index 0000000..9d1026d
--- /dev/null
@@ -0,0 +1,54 @@
+extproc perl -S -w
+
+# The converted script is written to stdout, so run this script as
+#    convert_configure configure > configure.cmd
+#
+# When the converted script runs, it expects that /tmp dir is
+# available (so we create it).
+#
+# run the result like this:
+#    .\configure
+;
+
+mkdir '/tmp', 0777 unless -d '/tmp';
+
+print <<EOF;
+extproc sh
+
+# Make sensible defaults:
+CC="gcc -Zexe"
+export CC
+#GCCOPT="$GCCOPT -Zexe"
+#export GCCOPT
+CONFIG_SHELL=sh
+
+EOF
+
+$checking_path = 0;
+
+while (<>) {
+  if (/for\s+(\w+)\s+in\s*\$PATH\s*;/) {
+    $checking_path = 1;
+    $varname = $1;
+    $subst= <<EOS
+$varname="`echo -E \\"\$$varname\\" | tr \\\\\\\\\\\\\\\\ / `"
+EOS
+  } 
+  $checking_path = 0 if /^\s*done\s*$/;
+  # We want to create an extra line like this one:
+#   ac_dir="`echo -E \"$ac_dir\" | tr \\\\\\\\ / `"
+  s{^((\s*)if\s+test)\s*-f\s*(\$$varname/\S+)\s*;}
+    {$2$subst$1 -f $3 -o -f $3.exe ;}
+      if $checking_path;       # Checking for executables
+  s/^host=NONE$/host=os2/;     # Make default host
+  s/"\$\{IFS}:"$/"\${IFS};"/;  # Fix IFS line
+  s/\btest\s+-s\s+conftest\b/test -f conftest/g; # Fix exe test
+  # This one is needed for curses:
+  s/host=`\$ac_config_sub \$host_alias`/$&\nif test -z "$host"; then host=\$host_alias; fi/;
+  s,/bin/sh(?![/\w]),sh,g;
+  print;
+}
+
+__END__
+
+Changes: 98/11 : support check for executables in ncurses.
diff --git a/dist.mk b/dist.mk
index d6a4efc257df0562d576239bea55a04c4d4bfcd4..090d2f33f5d6f711b266986c1e78f7906b2c76bc 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -1,4 +1,4 @@
-# $Id: dist.mk,v 1.82 1998/02/28 23:10:59 tom Exp $
+# $Id: dist.mk,v 1.172 1999/10/23 12:29:39 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -8,9 +8,9 @@
 SHELL = /bin/sh
 
 # These define the major/minor/patch versions of ncurses.
-NCURSES_MAJOR = 4
-NCURSES_MINOR = 2
-NCURSES_PATCH = 980228
+NCURSES_MAJOR = 5
+NCURSES_MINOR = 0
+NCURSES_PATCH = 19991023
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index f6a1184144f8c231a01772e18e4c6b8cf8659d68..798053058a0f86d88739fb8c53574683deb893ad 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.24 1998/02/11 12:13:44 tom Exp $
+# $Id: Makefile.in,v 1.25 1998/04/04 00:49:55 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -81,8 +81,11 @@ CFLAGS_DEFAULT       = $(CFLAGS_@DFT_UPR_MODEL@)
 LINK           = $(CC)
 LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
 
-SHLIB_LIST     = -lncurses @SHLIB_LIST@
+SHLIB_DIRS     = -L../lib -L$(libdir)
+SHLIB_LIST     = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+
 MK_SHARED_LIB  = @MK_SHARED_LIB@
+
 REL_VERSION    = @cf_cv_rel_version@
 ABI_VERSION    = @cf_cv_abi_version@
 
index 12a540ea615304c43b26c12d9f725e8e5a6f4652..dd91693f6b36fb0884d6b93a9dc143d0961007e5 100644 (file)
@@ -11,5 +11,5 @@ directory.
 
 Juergen Pfeifer
 
-eMail: Juergen.Pfeifer@T-Online.de
+eMail: juergen.pfeifer@gmx.net
 
index d2d57a34ee33caa1bc5b2f893280174a235aff60..bc816e9efd0f241c96098511b521d7798aa5f5ca 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_arg.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_arg.c,v 1.4 1999/05/16 17:16:04 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index ce01b65d867eeee6b4b6a74acb26a57e16bad685..3c7d8e353c0ed6176b1bb893bd4200e5804dd109 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_attr.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_attr.c,v 1.4 1999/05/16 17:16:30 juergen Exp $")
 
 /*----------------------------------------------------------------------------
   Field-Attribute manipulation routines
index 72534a9e36a3196cd02df6d5398a8624f54d8f4e..2bf8163a43f7fea455e64776be0c4061f2e88cee 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_current.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_current.c,v 1.4 1999/05/16 17:16:46 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 3b8ddbc6cab9c551d37dcb3aa35bc071a02218fc..dd3de804688b49b3dd11da79635ed506a653e84a 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_def.c,v 1.10 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: fld_def.c,v 1.12 1999/05/16 17:37:48 juergen Exp $")
 
 /* this can't be readonly */
 static FIELD default_field = {
index 1f235bf17001071035d46c03c65411606667c722..d265f958f218b0a341558bda9cab0f6768c03fd4 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_dup.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_dup.c,v 1.4 1999/05/16 17:17:08 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 45f609e2c1e0e3c9e7e9831d9915bbc56c74ba03..8e7d2a9683f1ef081ffc4aa96c00a7d53436b367 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_ftchoice.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_ftchoice.c,v 1.4 1999/05/16 17:17:21 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index ecb1c97e5fe3cef532ce7a5de4a8e1d4ebe7b24c..1c30cab244a4afa176c3520304ae11304d4ed1c0 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_ftlink.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_ftlink.c,v 1.4 1999/05/16 17:17:33 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 069c0adb9bc7f154fc558b34358f1045ed7a51e8..98100a4f40a2acd1e2b1153740721e55cbbaed83 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_info.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_info.c,v 1.4 1999/05/16 17:17:52 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index c621c1634457073d8c57d14cdd49fe638ca0344e..2a6dd38ec3909ebad233dcf421a75978dd571bea 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_just.c,v 1.3 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_just.c,v 1.5 1999/05/16 17:18:06 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index b3c6a7f01295e64416675e731afebf83085211bd..4352d6abf083a580ac45c363d5eb865abc7edc70 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_link.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_link.c,v 1.4 1999/05/16 17:18:18 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 1ad925c4b870af4a1a53c905f852a6fc31bbb85b..f17bcec5a47876b0cbaba031681b556f111d39e0 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_max.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_max.c,v 1.4 1999/05/16 17:18:34 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 9115335b01cc31e83b9d10018b369d0e888a39ca..7965d5afbea8787e3c3b0a4d8a833d546e256641 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_move.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_move.c,v 1.4 1999/05/16 17:38:51 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 12487c90372232fda721064615e16b14f9ea6c68..68b1692a2ab83b578962853aa3102a9f1da54325 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_newftyp.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_newftyp.c,v 1.5 1999/05/16 17:18:54 juergen Exp $")
 
 static FIELDTYPE const default_fieldtype = {
   0,                   /* status                                      */
@@ -71,7 +71,7 @@ FIELDTYPE *new_fieldtype(
 {
   FIELDTYPE *nftyp = (FIELDTYPE *)0;
   
-  if ( (field_check) && (char_check) )
+  if ( (field_check) || (char_check) )
     {
       nftyp = (FIELDTYPE *)malloc(sizeof(FIELDTYPE));
       if (nftyp)
index 98af32f57099c41c8f668a3756887884656119ea..e5cd996d06b52463c1aa28d5ffdc7f39dcb8eeeb 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_opts.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_opts.c,v 1.6 1999/05/16 17:19:06 juergen Exp $")
 
 /*----------------------------------------------------------------------------
   Field-Options manipulation routines
@@ -52,6 +52,7 @@ MODULE_ID("$Id: fld_opts.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
 int set_field_opts(FIELD * field, Field_Options opts)
 {
   int res = E_BAD_ARGUMENT;
+  opts &= ALL_FIELD_OPTS;
   if (!(opts & ~ALL_FIELD_OPTS))
     res = _nc_Synchronize_Options( Normalize_Field(field), opts );
   RETURN(res);
@@ -86,6 +87,7 @@ int field_opts_on(FIELD * field, Field_Options opts)
 {
   int res = E_BAD_ARGUMENT;
 
+  opts &= ALL_FIELD_OPTS;
   if (!(opts & ~ALL_FIELD_OPTS))
     {
       Normalize_Field( field );
@@ -110,6 +112,7 @@ int field_opts_off(FIELD  * field, Field_Options opts)
 {
   int res = E_BAD_ARGUMENT;
 
+  opts &= ALL_FIELD_OPTS;
   if (!(opts & ~ALL_FIELD_OPTS))
     {
       Normalize_Field( field );
index c7ac9086084d6958e088f9e2ff908187ed7752de..527e151198b7e6ecd7d5f7d6b99d4ba3e4e629df 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_pad.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_pad.c,v 1.4 1999/05/16 17:38:58 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index be9b915af7a93aaad6f54ac340ea92aeddb2177b..452a507cca78cc647c8068a5276767db9102e46d 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_page.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: fld_page.c,v 1.4 1999/05/16 17:19:37 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index b237811a84f93831b43a7a163444eb8953082813..98144bf2f1c48376c9f94dea09b715e1a1e23064 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_stat.c,v 1.4 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: fld_stat.c,v 1.6 1999/05/16 17:19:48 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index fd314f73364bcf71f8232084609b08a7aa7914bc..238b5474780946698b8132ea51e955a03af6160a 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_type.c,v 1.7 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: fld_type.c,v 1.9 1999/05/16 17:19:59 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index db950ec00881b41a3cc8b75c2b2121c0f116a559..cf5b4c2910480f21d1b4ceeb441cff18eb04c1d2 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_user.c,v 1.6 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: fld_user.c,v 1.8 1999/05/16 17:20:09 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 77fd9506caf0462fc794997a6133d05cd56a1dbb..40ae0a35f02f58e165918ca3c4fa7b89402fa0e6 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #ifndef FORM_H
index 91b08151f8eec4f2b80e239f815b9bd21a5836f2..886121c94cd8bd0f1a86ceb53ef56f464d22add2 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "mf_common.h"
index d5c93a281620ec191c21a02b68142e2f68736490..96ad2d60693e909859aaebf1fa7e8c5ffe5dca86 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_cursor.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: frm_cursor.c,v 1.4 1999/05/16 17:20:19 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 8df5c465ec2b6f23d14273b048a23bd4ac55fb75..e90f5a17ec4d54d929739040e8db52cba97b5d2f 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_data.c,v 1.4 1998/02/11 12:13:42 tom Exp $")
+MODULE_ID("$Id: frm_data.c,v 1.6 1999/05/16 17:20:29 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 5a93a24d6c8357e96c5ed39204583e3fcc8c0a09..34be5fe7ca9c6df53ef26b4c3a804968f0103c6a 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_def.c,v 1.7 1998/02/11 12:13:42 tom Exp $")
+MODULE_ID("$Id: frm_def.c,v 1.9 1999/05/16 17:20:43 juergen Exp $")
 
 /* this can't be readonly */
 static FORM default_form = {
index 7fad2a74048707f487976c9c9a7efce1c8579159..e609e191de2adfd4b09ba1df36b79e4fe3c3eee7 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_driver.c,v 1.31 1998/02/11 12:13:45 tom Exp $")
+MODULE_ID("$Id: frm_driver.c,v 1.35 1999/05/16 17:20:52 juergen Exp $")
 
 /*----------------------------------------------------------------------------
   This is the core module of the form library. It contains the majority
@@ -844,7 +844,7 @@ static int Display_Or_Erase_Field(FIELD * field, bool bEraseFlag)
       if (field->opts & O_VISIBLE)
        Set_Field_Window_Attributes(field,win);
       else
-       wattr_set(win,wattr_get(fwin));
+       wattrset(win,getattrs(fwin));
       werase(win);
     }
 
index e7cfa607b1e44d0e5797abb8000b4215a0e269f3..5a5ec29376b2385a4326f1ed75975ed261526bdf 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_hook.c,v 1.6 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: frm_hook.c,v 1.8 1999/05/16 17:21:04 juergen Exp $")
 
 /* "Template" macro to generate function to set application specific hook */
 #define GEN_HOOK_SET_FUNCTION( typ, name ) \
index f534d4d5d78da7aaeac2c4ad7084021a343a9468..009c189741ba0e3a0761d02088930ec30b0009d9 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_opts.c,v 1.4 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: frm_opts.c,v 1.8 1999/05/16 17:38:05 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -46,6 +46,7 @@ MODULE_ID("$Id: frm_opts.c,v 1.4 1998/02/11 12:13:43 tom Exp $")
 +--------------------------------------------------------------------------*/
 int set_form_opts(FORM * form, Form_Options  opts)
 {
+  opts &= ALL_FORM_OPTS;
   if (opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
@@ -80,6 +81,7 @@ Form_Options form_opts(const FORM * form)
 +--------------------------------------------------------------------------*/
 int form_opts_on(FORM * form, Form_Options opts)
 {
+  opts &= ALL_FORM_OPTS;
   if (opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
@@ -101,6 +103,7 @@ int form_opts_on(FORM * form, Form_Options opts)
 +--------------------------------------------------------------------------*/
 int form_opts_off(FORM * form, Form_Options opts)
 {
+  opts &= ALL_FORM_OPTS;
   if (opts & ~ALL_FORM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
index a91460c06c6340a89d663d0c46a38c65e1c67478..5136542e8459e9eb90f9ce02ed157fcff981e73a 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_page.c,v 1.3 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: frm_page.c,v 1.5 1999/05/16 17:21:26 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 5f07ebb84c31abda56692f85ba30642528db6b4f..3fdb57a09b8f4d99cdf1d20f1c77014b3a72cb56 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_post.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: frm_post.c,v 1.4 1999/05/16 17:21:39 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index ffd722ccca10a5018439dfdedeecd93205cfe424..63006517ee855507b55b52565d77cf50525a4b84 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_req_name.c,v 1.5 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: frm_req_name.c,v 1.7 1999/05/16 17:21:53 juergen Exp $")
 
 static const char *request_names[ MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1 ] = {
   "NEXT_PAGE"   ,
index 3a52bfe58514821a6752ef75c78e186a6bacb8a5..bb197177098776826b895860d411a5a1b8435076 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_scale.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: frm_scale.c,v 1.4 1999/05/16 17:22:02 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index a5912ac35115c04fcce2ed72da87ebf19cd425e3..849f9cb0c3b24dcaddbdba71ebb2b32be589ade5 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_sub.c,v 1.2 1998/02/11 12:13:44 tom Exp $")
+MODULE_ID("$Id: frm_sub.c,v 1.4 1999/05/16 17:22:11 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 46989663540f95a084d90dfab3406558c4ccf7d7..853904f054138eaab3e15f5de88cac6889a4a0fe 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_user.c,v 1.6 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: frm_user.c,v 1.8 1999/05/16 17:22:21 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 879c6367f8e18d57197456d2e3267899e88145d0..b705d03314ba4bb8b27a8c746ad4284e25a74ac0 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_win.c,v 1.6 1998/02/11 12:13:43 tom Exp $")
+MODULE_ID("$Id: frm_win.c,v 1.8 1999/05/16 17:22:32 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
index 0128c150b363828861dec1150a7720218319a1a5..cb3909d7b1c70c563ae2534c8cfde77f72bd1fa2 100644 (file)
@@ -7,13 +7,13 @@
  */
 /***************************************************************************
 *                                                                          *
-*  Author : Juergen Pfeifer, Juergen.Pfeifer@T-Online.de                   *
+*  Author : Juergen Pfeifer, juergen.pfeifer@gmx.net                       *
 *                                                                          *
 ***************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_alnum.c,v 1.7 1997/10/18 19:33:55 tom Exp $")
+MODULE_ID("$Id: fty_alnum.c,v 1.9 1999/05/16 17:22:49 juergen Exp $")
 
 typedef struct {
   int width;
index 74af2a9ab6fd4c107a1b51ba6e82ca63cc73674a..3dd8f2cb142e62dbed3fe60cb8b3408e9fd90ef6 100644 (file)
@@ -7,13 +7,13 @@
  */
 /***************************************************************************
 *                                                                          *
-*  Author : Juergen Pfeifer, Juergen.Pfeifer@T-Online.de                   *
+*  Author : Juergen Pfeifer, juergen.pfeifer@gmx.net                       *
 *                                                                          *
 ***************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_alpha.c,v 1.7 1997/10/18 19:33:38 tom Exp $")
+MODULE_ID("$Id: fty_alpha.c,v 1.9 1999/05/16 17:22:58 juergen Exp $")
 
 typedef struct {
   int width;
index 16695cd29915fd09b24ddc387b1d35aa21f97e03..9716159b384fe8ba77b5a459ba476770b675f569 100644 (file)
@@ -7,13 +7,13 @@
  */
 /***************************************************************************
 *                                                                          *
-*  Author : Juergen Pfeifer, Juergen.Pfeifer@T-Online.de                   *
+*  Author : Juergen Pfeifer, juergen.pfeifer@gmx.net                       *
 *                                                                          *
 ***************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_enum.c,v 1.8 1997/10/18 19:33:20 tom Exp $")
+MODULE_ID("$Id: fty_enum.c,v 1.10 1999/05/16 17:23:14 juergen Exp $")
 
 typedef struct {
   char **kwds;
index dc2eab3e636b7026c6ba9cfc94237e9360df45dc..cb690bdaf03d5c4492bb87f76f3c05b52a6acf2a 100644 (file)
@@ -7,13 +7,13 @@
  */
 /***************************************************************************
 *                                                                          *
-*  Author : Juergen Pfeifer, Juergen.Pfeifer@T-Online.de                   *
+*  Author : Juergen Pfeifer, juergen.pfeifer@gmx.net                       *
 *                                                                          *
 ***************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_int.c,v 1.8 1997/10/18 19:32:50 tom Exp $")
+MODULE_ID("$Id: fty_int.c,v 1.10 1999/05/16 17:23:22 juergen Exp $")
 
 typedef struct {
   int precision;
index 0508e3c47555bd5d84597c4bc5c27aa13595e077..ca0fbe01e00f7637cec808aff32b136a7b82d57a 100644 (file)
@@ -7,13 +7,13 @@
  */
 /***************************************************************************
 *                                                                          *
-*  Author : Juergen Pfeifer, Juergen.Pfeifer@T-Online.de                   *
+*  Author : Juergen Pfeifer, juergen.pfeifer@gmx.net                       *
 *                                                                          *
 ***************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_num.c,v 1.11 1997/10/18 19:32:58 tom Exp $")
+MODULE_ID("$Id: fty_num.c,v 1.13 1999/05/16 17:23:30 juergen Exp $")
 
 #if HAVE_LOCALE_H
 #include <locale.h>
index d563d47e97779fb58ba259b189a390d19e5f80cf..7a928125d4adf594992d810d47e3761e9839c96f 100644 (file)
@@ -7,13 +7,13 @@
  */
 /***************************************************************************
 *                                                                          *
-*  Author : Juergen Pfeifer, Juergen.Pfeifer@T-Online.de                   *
+*  Author : Juergen Pfeifer, juergen.pfeifer@gmx.net                       *
 *                                                                          *
 ***************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_regex.c,v 1.11 1997/10/18 19:32:35 tom Exp $")
+MODULE_ID("$Id: fty_regex.c,v 1.14 1999/05/16 17:23:38 juergen Exp $")
 
 #if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */
 #include <regex.h>
@@ -66,9 +66,9 @@ typedef struct
 #endif
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  static void *Make_RegularExpression_Type(va_list * ap)
-|   
+|
 |   Description   :  Allocate structure for regex type argument.
 |
 |   Return Values :  Pointer to argument structure or NULL on error
@@ -103,7 +103,7 @@ static void *Make_RegularExpression_Type(va_list * ap)
   RegExp_Arg *pArg;
 
   pArg = (RegExp_Arg *)malloc(sizeof(RegExp_Arg));
-  
+
   if (pArg)
     {
       int blen = RX_INCREMENT;
@@ -117,8 +117,8 @@ static void *Make_RegularExpression_Type(va_list * ap)
          {
 #if HAVE_REGEXP_H_FUNCS
            char *last_pos = compile (rx, buf, &buf[blen], '\0');
-#else
-           char *last_pos = compile (rx, buf, &buf[blen], '\0');
+#else /* HAVE_REGEXPR_H_FUNCS */
+           char *last_pos = compile (rx, buf, &buf[blen]);
 #endif
            if (reg_errno)
              {
@@ -126,7 +126,7 @@ static void *Make_RegularExpression_Type(va_list * ap)
                if (reg_errno==50)
                  blen += RX_INCREMENT;
                else
-                 {                
+                 {
                    free(pArg);
                    pArg = NULL;
                    break;
@@ -152,11 +152,11 @@ static void *Make_RegularExpression_Type(va_list * ap)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  static void *Copy_RegularExpression_Type(
 |                                      const void * argp)
-|   
-|   Description   :  Copy structure for regex type argument.  
+|
+|   Description   :  Copy structure for regex type argument.
 |
 |   Return Values :  Pointer to argument structure or NULL on error.
 +--------------------------------------------------------------------------*/
@@ -164,8 +164,8 @@ static void *Copy_RegularExpression_Type(const void * argp)
 {
 #if (HAVE_REGEX_H_FUNCS | HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS)
   const RegExp_Arg *ap = (const RegExp_Arg *)argp;
-  const RegExp_Arg *result = (const RegExp_Arg *)0; 
-  
+  const RegExp_Arg *result = (const RegExp_Arg *)0;
+
   if (ap)
     {
       *(ap->refCount) += 1;
@@ -178,9 +178,9 @@ static void *Copy_RegularExpression_Type(const void * argp)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  static void Free_RegularExpression_Type(void * argp)
-|   
+|
 |   Description   :  Free structure for regex type argument.
 |
 |   Return Values :  -
@@ -213,11 +213,11 @@ static void Free_RegularExpression_Type(void * argp)
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnform  
+|   Facility      :  libnform
 |   Function      :  static bool Check_RegularExpression_Field(
 |                                      FIELD * field,
 |                                      const void  * argp)
-|   
+|
 |   Description   :  Validate buffer content to be a valid regular expression
 |
 |   Return Values :  TRUE  - field is valid
index 4fda154519c5b46be00e353c4d3214172acf5d29..ac2ba436d66699ea9cea20ab6977ed859e602335 100644 (file)
@@ -345,29 +345,6 @@ void       *field_userptr(
                const FIELD *field)
                { return(*(void **)0); }
 
-/* ./frm_adabind.c */
-
-#undef _nc_ada_normalize_field_opts
-void   _nc_ada_normalize_field_opts(
-               int     *opt)
-               { /* void */ }
-
-#undef _nc_ada_normalize_form_opts
-void   _nc_ada_normalize_form_opts(
-               int     *opt)
-               { /* void */ }
-
-#undef _nc_ada_getvarg
-void   *_nc_ada_getvarg(
-               va_list *ap)
-               { return(*(void **)0); }
-
-#undef _nc_get_field
-FIELD  *_nc_get_field(
-               const FORM *frm, 
-               int     idx)
-               { return(*(FIELD **)0); }
-
 /* ./frm_cursor.c */
 
 #undef pos_form_cursor
index 2beecb243ed2b0822dd12e860bb9514c472ec4fb..4125e93e5a33f19a6854a01a7a73c9f8583e3e84 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: modules,v 1.12 1998/02/11 12:13:44 tom Exp $
+# $Id: modules,v 1.13 1999/02/19 00:27:47 juergen Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -51,7 +51,6 @@ fld_page      lib             $(srcdir)       $(FORM_PRIV_H)
 fld_stat       lib             $(srcdir)       $(FORM_PRIV_H)
 fld_type       lib             $(srcdir)       $(FORM_PRIV_H)
 fld_user       lib             $(srcdir)       $(FORM_PRIV_H)
-frm_adabind    lib             $(srcdir)       $(FORM_PRIV_H)
 frm_cursor     lib             $(srcdir)       $(FORM_PRIV_H)
 frm_data       lib             $(srcdir)       $(FORM_PRIV_H)
 frm_def                lib             $(srcdir)       $(FORM_PRIV_H)
index 350219b6955ecc6fd7a007a11a5a86101ec5b1b4..7c10212827cbdb668d9dadf0bd14499a6051cbad 100644 (file)
@@ -29,7 +29,7 @@
 # Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995
 #    and: Eric S. Raymond <esr@snark.thyrsus.com>
 #
-# $Id: Caps,v 1.16 1998/02/11 12:13:45 tom Exp $
+# $Id: Caps,v 1.24 1999/01/17 02:01:44 tom Exp $
 #
 # This is the master termcap/terminfo capability table.
 #
@@ -215,7 +215,7 @@ eat_newline_glitch  xenl    bool    xn      YBCGE   newline ignored after 80 cols (concept)
 erase_overstrike       eo      bool    eo      YBCG-   can erase overstrikes with a blank
 generic_type           gn      bool    gn      YB-G-   generic line type
 hard_copy              hc      bool    hc      YBCG-   hardcopy terminal
-has_meta_key           km      bool    km      YB-GE   Has a meta key, sets msb high
+has_meta_key           km      bool    km      YB-GE   Has a meta key (shift, sets parity bit)
 has_status_line        hs      bool    hs      YB-G-   has extra status line
 insert_null_glitch     in      bool    in      YBCGE   insert mode distinguishes nulls
 memory_above           da      bool    da      YBCG-   display may be retained above the screen
@@ -236,7 +236,7 @@ no_pad_char         npc     bool    NP      -----   pad character does not exist
 non_dest_scroll_region ndscr   bool    ND      -----   scrolling region is non-destructive
 can_change             ccc     bool    cc      -----   terminal can re-define existing colors
 back_color_erase       bce     bool    ut      -----   screen erased with background color
-hue_lightness_saturation       hls     bool    hl      -----   terminal uses only HLS color notation (tektronix)
+hue_lightness_saturation       hls     bool    hl      -----   terminal uses only HLS color notation (Tektronix)
 col_addr_glitch        xhpa    bool    YA      -----   only positive motion for hpa/mhpa caps
 cr_cancels_micro_mode  crxm    bool    YB      -----   using cr turns off micro mode
 has_print_wheel        daisy   bool    YC      -----   printer needs operator to change character set
@@ -257,21 +257,21 @@ lpi_changes_res   lpix    bool    YG      -----   changing line pitch changes resolution
 #%lw25 lw6 lw2 lw20.
 #%\fBVariable  Cap-    TCap    Description\fR
 #%\fBNumeric   name    Code\fR
-columns                cols    num     co      YBCGE   number of columns in aline
+columns                cols    num     co      YBCGE   number of columns in a line
 init_tabs              it      num     it      YB-G-   tabs initially every # spaces
 lines                  lines   num     li      YBCGE   number of lines on screen or page
-lines_of_memory        lm      num     lm      YB-G-   lines of memory if > line. 0 => varies
-magic_cookie_glitch    xmc     num     sg      YBCGE   number of blank chars left by smso or rmso
+lines_of_memory        lm      num     lm      YB-G-   lines of memory if > line. 0 means varies
+magic_cookie_glitch    xmc     num     sg      YBCGE   number of blank characters left by smso or rmso
 padding_baud_rate      pb      num     pb      YB-GE   lowest baud rate where padding needed
 virtual_terminal       vt      num     vt      YB---   virtual terminal number (CB/unix)
-width_status_line      wsl     num     ws      YB-G-   columns in status line
+width_status_line      wsl     num     ws      YB-G-   number of columns in status line
 num_labels             nlab    num     Nl      -----   number of labels on screen
 label_height           lh      num     lh      -----   rows in each label
 label_width            lw      num     lw      -----   columns in each label
 max_attributes         ma      num     ma      YBC--   maximum combined attributes terminal can handle
-maximum_windows        wnum    num     MW      -----   maxumum number of defineable windows
+maximum_windows        wnum    num     MW      -----   maximum number of defineable windows
 # These came in with SVr4's color support
-max_colors             colors  num     Co      -----   maximum numbers of colors on screen
+max_colors             colors  num     Co      -----   maximum number of colors on screen
 max_pairs              pairs   num     pa      -----   maximum number of color-pairs on the screen
 no_color_video         ncv     num     NC      -----   video attributes that can't be used with colors
 #%.TE
@@ -294,17 +294,17 @@ dot_vert_spacing  spinv   num     Yb      -----   spacing of pins vertically in pins per inch
 dot_horz_spacing       spinh   num     Yc      -----   spacing of dots horizontally in dots per inch
 max_micro_address      maddr   num     Yd      -----   maximum value in micro_..._address
 max_micro_jump         mjump   num     Ye      -----   maximum value in parm_..._micro
-micro_char_size        mcs     num     Yf      -----   character size when in micro mode
-micro_line_size        mls     num     Yg      -----   line size when in micro mode
+micro_col_size         mcs     num     Yf      -----   character step size when in micro mode
+micro_line_size        mls     num     Yg      -----   line step size when in micro mode
 number_of_pins         npins   num     Yh      -----   numbers of pins in print-head
 output_res_char        orc     num     Yi      -----   horizontal resolution in units per line
 output_res_line        orl     num     Yj      -----   vertical resolution in units per line
 output_res_horz_inch   orhi    num     Yk      -----   horizontal resolution in units per inch
 output_res_vert_inch   orvi    num     Yl      -----   vertical resolution in units per inch
-print_rate             cps     num     Ym      -----   print rate in chars per second
+print_rate             cps     num     Ym      -----   print rate in characters per second
 wide_char_size         widcs   num     Yn      -----   character step size when in double wide mode
 buttons                btns    num     BT      -----   number of buttons on mouse
-bit_image_entwining    bitwin  num     Yo      -----   number of passed for each bit-image row
+bit_image_entwining    bitwin  num     Yo      -----   number of passes for each bit-image row
 bit_image_type         bitype  num     Yp      -----   type of bit-image device
 #%.TE
 #%.ad
@@ -322,7 +322,7 @@ bit_image_type      bitype  num     Yp      -----   type of bit-image device
 back_tab               cbt     str     bt      YBCGE   back tab (P)
 bell                   bel     str     bl      YB-GE   audible signal (bell) (P)
 carriage_return        cr      str     cr      YBCGE   carriage return (P*) (P*)
-change_scroll_region   csr     str     cs      YBCGE   change region to line #1 to line #2 (P) (P)
+change_scroll_region   csr     str     cs      YBCGE   change region to line #1 to line #2 (P)
 clear_all_tabs         tbc     str     ct      YB-G-   clear all tab stops (P)
 clear_screen           clear   str     cl      YBCGE   clear screen and home cursor (P*)
 clr_eol                el      str     ce      YBCGE   clear to end of line (P)
@@ -336,7 +336,7 @@ cursor_invisible    civis   str     vi      YB-G-   make cursor invisible
 cursor_left            cub1    str     le      YBCGE   move left one space
 cursor_mem_address     mrcup   str     CM      YB-G-   memory relative cursor addressing
 cursor_normal          cnorm   str     ve      YBCGE   make cursor appear normal (undo civis/cvvis)
-cursor_right           cuf1    str     nd      YBCGE   move right one space
+cursor_right           cuf1    str     nd      YBCGE   non-destructive space (move right one space)
 cursor_to_ll           ll      str     ll      YBCGE   last line, first column (if no cup)
 cursor_up              cuu1    str     up      YBCGE   up one line
 cursor_visible         cvvis   str     vs      YBCGE   make cursor very visible
@@ -393,15 +393,15 @@ key_f4            kf4     str     k4      YBCGE   F4 function key
 key_f5                 kf5     str     k5      YBCGE   F5 function key
 key_f6                 kf6     str     k6      YBCGE   F6 function key
 key_f7                 kf7     str     k7      YBCGE   F7 function key
-key_f8                 kf8     str     k8      YBCGE   F8 fucntion key
+key_f8                 kf8     str     k8      YBCGE   F8 function key
 key_f9                 kf9     str     k9      YBCGE   F9 function key
 key_home               khome   str     kh      YBCGE   home key
 key_ic                 kich1   str     kI      YB-GE   insert-character key
 key_il                 kil1    str     kA      -B-G-*  insert-line key
 key_left               kcub1   str     kl      YBCGE   left-arrow key
-key_ll                 kll     str     kH      YB-G-   last-line key
+key_ll                 kll     str     kH      YB-G-   lower-left key (home down)
 key_npage              knp     str     kN      YB-GE   next-page key
-key_ppage              kpp     str     kP      YB-GE   prev-page key
+key_ppage              kpp     str     kP      YB-GE   previous-page key
 key_right              kcuf1   str     kr      YBCGE   right-arrow key
 key_sf                 kind    str     kF      -B-G-*  scroll-forward key
 key_sr                 kri     str     kR      -B-G-*  scroll-backward key
@@ -415,7 +415,7 @@ lab_f10             lf10    str     la      -----   label on function key f10 if not f10
 lab_f2                 lf2     str     l2      -B-G-*  label on function key f2 if not f2
 lab_f3                 lf3     str     l3      -B-G-*  label on function key f3 if not f3
 lab_f4                 lf4     str     l4      -B-G-*  label on function key f4 if not f4
-lab_f5                 lf5     str     l5      -B-G-*  lable on function key f5 if not f5
+lab_f5                 lf5     str     l5      -B-G-*  label on function key f5 if not f5
 lab_f6                 lf6     str     l6      -B-G-*  label on function key f6 if not f6
 lab_f7                 lf7     str     l7      -B-G-*  label on function key f7 if not f7
 lab_f8                 lf8     str     l8      -B-G-*  label on function key f8 if not f8
@@ -424,14 +424,14 @@ meta_off                  rmm     str     mo      YB-G-*  turn off meta mode
 meta_on                smm     str     mm      YB-G-*  turn on meta mode (8th-bit on)
 newline                nel     str     nw      YB-G-*  newline (behave like cr followed by lf)
 pad_char               pad     str     pc      YBCGE   padding char (instead of null)
-parm_dch               dch     str     DC      YB-GE   delete #1 chars (P*)
+parm_dch               dch     str     DC      YB-GE   delete #1 characters (P*)
 parm_delete_line       dl      str     DL      YBCGE   delete #1 lines (P*)
 parm_down_cursor       cud     str     DO      YBCGE   down #1 lines (P*)
-parm_ich               ich     str     IC      YB-GE   insert #1 chars (P*)
+parm_ich               ich     str     IC      YB-GE   insert #1 characters (P*)
 parm_index             indn    str     SF      YBCG-   scroll forward #1 lines (P)
 parm_insert_line       il      str     AL      YBCGE   insert #1 lines (P*)
-parm_left_cursor       cub     str     LE      YBCGE   move #1 chars to the left (P)
-parm_right_cursor      cuf     str     RI      YBCGE   move #1 chars to the right (P*)
+parm_left_cursor       cub     str     LE      YBCGE   move #1 characters to the left (P)
+parm_right_cursor      cuf     str     RI      YBCGE   move #1 characters to the right (P*)
 parm_rindex            rin     str     SR      YBCG-   scroll back #1 lines (P)
 parm_up_cursor         cuu     str     UP      YBCGE   up #1 lines (P*)
 pkey_key               pfkey   str     pk      -B---   program function key #1 to type string #2
@@ -445,7 +445,7 @@ reset_1string               rs1     str     r1      -B---   reset string
 reset_2string                  rs2     str     r2      -B---   reset string
 reset_3string                  rs3     str     r3      -B---   reset string
 reset_file             rf      str     rf      -B---   name of reset file
-restore_cursor         rc      str     rc      YBCG-   restore cursor to last position of sc
+restore_cursor         rc      str     rc      YBCG-   restore cursor to position of last save_cursor
 row_address            vpa     str     cv      -B-GE** vertical position #1 absolute (P)
 save_cursor            sc      str     sc      YBCG-   save current cursor position (P)
 scroll_forward         ind     str     sf      YBCGE   scroll text up (P)
@@ -469,7 +469,7 @@ prtr_non            mc5p    str     pO      -B-G-*  turn on printer for #1 bytes
 # SVr4 up to this point, but has a different set afterwards.
 #
 char_padding           rmp     str     rP      -----   like ip but when in insert mode
-acs_chars              acsc    str     ac      -----   graphics charset pairs - def=vt100
+acs_chars              acsc    str     ac      -----   graphics charset pairs, based on vt100
 plab_norm              pln     str     pn      -----   program label #1 to show string #2
 key_btab               kcbt    str     kB      -----   back-tab key
 enter_xon_mode         smxon   str     SX      -----   turn on xon/xoff handshaking
@@ -509,35 +509,35 @@ key_resume                kres    str     &5      -----   resume key
 key_save               ksav    str     &6      -----   save key
 key_suspend            kspd    str     &7      -----   suspend key
 key_undo               kund    str     &8      -----   undo key
-key_sbeg               kBEG    str     &9      -----   shifted key
-key_scancel            kCAN    str     &0      -----   shifted key
-key_scommand           kCMD    str     *1      -----   shifted key
-key_scopy              kCPY    str     *2      -----   shifted key
-key_screate            kCRT    str     *3      -----   shifted key
-key_sdc                kDC     str     *4      -----   shifted key
-key_sdl                kDL     str     *5      -----   shifted key
+key_sbeg               kBEG    str     &9      -----   shifted begin key
+key_scancel            kCAN    str     &0      -----   shifted cancel key
+key_scommand           kCMD    str     *1      -----   shifted command key
+key_scopy              kCPY    str     *2      -----   shifted copy key
+key_screate            kCRT    str     *3      -----   shifted create key
+key_sdc                kDC     str     *4      -----   shifted delete-character key
+key_sdl                kDL     str     *5      -----   shifted delete-line key
 key_select             kslt    str     *6      -----   select key
-key_send               kEND    str     *7      -----   shifted key
-key_seol               kEOL    str     *8      -----   shifted key
-key_sexit              kEXT    str     *9      -----   shifted key
-key_sfind              kFND    str     *0      -----   shifted key
-key_shelp              kHLP    str     #1      -----   shifted key
-key_shome              kHOM    str     #2      -----   shifted key
-key_sic                kIC     str     #3      -----   shifted key
-key_sleft              kLFT    str     #4      -----   shifted key
-key_smessage           kMSG    str     %a      -----   shifted key
-key_smove              kMOV    str     %b      -----   shifted key
-key_snext              kNXT    str     %c      -----   shifted key
-key_soptions           kOPT    str     %d      -----   shifted key
-key_sprevious                  kPRV    str     %e      -----   shifted key
-key_sprint             kPRT    str     %f      -----   shifted key
-key_sredo              kRDO    str     %g      -----   shifted key
-key_sreplace           kRPL    str     %h      -----   shifted key
-key_sright             kRIT    str     %i      -----   shifted key
-key_srsume             kRES    str     %j      -----   shifted key
-key_ssave              kSAV    str     !1      -----   shifted key
-key_ssuspend           kSPD    str     !2      -----   shifted key
-key_sundo              kUND    str     !3      -----   shifted key
+key_send               kEND    str     *7      -----   shifted end key
+key_seol               kEOL    str     *8      -----   shifted clear-to-end-of-line key
+key_sexit              kEXT    str     *9      -----   shifted exit key
+key_sfind              kFND    str     *0      -----   shifted find key
+key_shelp              kHLP    str     #1      -----   shifted help key
+key_shome              kHOM    str     #2      -----   shifted home key
+key_sic                kIC     str     #3      -----   shifted insert-character key
+key_sleft              kLFT    str     #4      -----   shifted left-arrow key
+key_smessage           kMSG    str     %a      -----   shifted message key
+key_smove              kMOV    str     %b      -----   shifted move key
+key_snext              kNXT    str     %c      -----   shifted next key
+key_soptions           kOPT    str     %d      -----   shifted options key
+key_sprevious                  kPRV    str     %e      -----   shifted previous key
+key_sprint             kPRT    str     %f      -----   shifted print key
+key_sredo              kRDO    str     %g      -----   shifted redo key
+key_sreplace           kRPL    str     %h      -----   shifted replace key
+key_sright             kRIT    str     %i      -----   shifted right-arrow key
+key_srsume             kRES    str     %j      -----   shifted resume key
+key_ssave              kSAV    str     !1      -----   shifted save key
+key_ssuspend           kSPD    str     !2      -----   shifted suspend key
+key_sundo              kUND    str     !3      -----   shifted undo key
 req_for_input          rfi     str     RF      -----   send next input char (for ptys)
 key_f11                kf11    str     F1      ----E   F11 function key
 key_f12                kf12    str     F2      ----E   F12 function key
@@ -594,19 +594,19 @@ key_f62           kf62    str     Fq      ----E   F62 function key
 key_f63                kf63    str     Fr      ----E   F63 function key
 clr_bol                el1     str     cb      -----   Clear to beginning of line
 clear_margins          mgc     str     MC      -----   clear right and left soft margins
-set_left_margin        smgl    str     ML      -----   set left soft margin
-set_right_margin       smgr    str     MR      -----   set right soft margin
+set_left_margin        smgl    str     ML      -----   set left soft margin at current column
+set_right_margin       smgr    str     MR      -----   set right soft margin at current column
 label_format           fln     str     Lf      -----   label format
 set_clock              sclk    str     SC      -----   set clock, #1 hrs #2 mins #3 secs
 display_clock          dclk    str     DK      -----   display clock at (#1,#2)
 remove_clock           rmclk   str     RC      -----   remove clock
-create_window          cwin    str     CW      -----   define a window #1 from #2, #3 to #4, #5
+create_window          cwin    str     CW      -----   define a window #1 from #2,#3 to #4,#5
 goto_window            wingo   str     WG      -----   go to window #1
 hangup                 hup     str     HU      -----   hang-up phone
 dial_phone             dial    str     DI      -----   dial number #1
 quick_dial             qdial   str     QD      -----   dial number #1 without checking
 tone                   tone    str     TO      -----   select touch tone dialing
-pulse                  pulse   str     PU      -----   select pulse dialling
+pulse                  pulse   str     PU      -----   select pulse dialing
 flash_hook             hook    str     fh      -----   flash switch hook
 fixed_pause            pause   str     PA      -----   pause for 2-3 seconds
 wait_tone              wait    str     WA      -----   wait for dial-tone
@@ -644,7 +644,7 @@ enter_italics_mode  sitm    str     ZH      -----   Enter italic mode
 enter_leftward_mode    slm     str     ZI      -----   Start leftward carriage motion
 enter_micro_mode       smicm   str     ZJ      -----   Start micro-motion mode
 enter_near_letter_quality      snlq    str     ZK      -----   Enter NLQ mode
-enter_normal_quality   snrmq   str     ZL      -----   Wnter normal-quality mode
+enter_normal_quality   snrmq   str     ZL      -----   Enter normal-quality mode
 enter_shadow_mode      sshm    str     ZM      -----   Enter shadow-print mode
 enter_subscript_mode   ssubm   str     ZN      -----   Enter subscript mode
 enter_superscript_mode ssupm   str     ZO      -----   Enter superscript mode
@@ -675,19 +675,19 @@ set_left_margin_parm      smglp   str     Zm      -----   Set left (right) margin at column #1 (#2
 set_right_margin_parm  smgrp   str     Zn      -----   Set right margin at column #1
 set_top_margin         smgt    str     Zo      -----   Set top margin at current line
 set_top_margin_parm    smgtp   str     Zp      -----   Set top (bottom) margin at row #1 (#2)
-start_bit_image        sbim    str     Zq      -----   Start printing bit image braphics
+start_bit_image        sbim    str     Zq      -----   Start printing bit image graphics
 start_char_set_def     scsd    str     Zr      -----   Start character set definition
 stop_bit_image         rbim    str     Zs      -----   Stop printing bit image graphics
-stop_char_set_def      rcsd    str     Zt      -----   End definition of character aet
+stop_char_set_def      rcsd    str     Zt      -----   End definition of character set
 subscript_characters   subcs   str     Zu      -----   List of subscriptable characters
 superscript_characters supcs   str     Zv      -----   List of superscriptable characters
-these_cause_cr         docr    str     Zw      -----   Printing any of these chars causes CR
+these_cause_cr         docr    str     Zw      -----   Printing any of these characters causes CR
 zero_motion            zerom   str     Zx      -----   No motion for subsequent character
 #%.TE
 #%.ad
 #%
 #%The following string capabilities are present in the SVr4.0 term structure,
-#%but are not documented in the man page.
+#%but were originally not documented in the man page.
 #%
 #%.na
 #%.TS H
@@ -702,8 +702,8 @@ key_mouse           kmous   str     Km      -----   Mouse event has occurred
 mouse_info             minfo   str     Mi      -----   Mouse status information
 req_mouse_pos          reqmp   str     RQ      -----   Request mouse position
 get_mouse              getm    str     Gm      -----   Curses should get button events
-set_a_foreground       setaf   str     AF      -----   Set ANSI foreground color
-set_a_background       setab   str     AB      -----   Set ANSI background color
+set_a_foreground       setaf   str     AF      -----   Set foreground color using ANSI escape
+set_a_background       setab   str     AB      -----   Set background color using ANSI escape
 pkey_plab              pfxl    str     xl      -----   Program function key #1 to type string #2 and show string #3
 device_type            devt    str     dv      -----   Indicate language/codeset support
 code_set_init          csin    str     ci      -----   Init sequence for multiple codesets
@@ -736,9 +736,8 @@ alt_scancode_esc    scesa   str     S8      -----   Alternate escape for scancode emulation
 #%.ad
 #%
 #%.in .8i
-#%The XSI Curses standard added these.  They are probably in some post-4.1 
-#%version of System V curses as well, but because XSI Curses lists them in
-#%strict alphabetical order we don't know if this is the right binary order.
+#%The XSI Curses standard added these.  They are some post-4.1 
+#%versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x.
 #%The \fBncurses\fR termcap names for them are invented; according to the
 #%XSI Curses standard, they have no termcap names.  If your compiled terminfo
 #%entries use these, they may not be binary-compatible with System V terminfo
@@ -758,6 +757,8 @@ enter_low_hl_mode   elohlm  str     Xo      -----   Enter low highlight mode
 enter_right_hl_mode    erhlm   str     Xr      -----   Enter right highlight mode
 enter_top_hl_mode      ethlm   str     Xt      -----   Enter top highlight mode
 enter_vertical_hl_mode evhlm   str     Xv      -----   Enter vertical highlight mode
+set_a_attributes       sgr1    str     sA      -----   Define second set of video attributes #1-#6
+set_pglen_inch         slength str     sL      -----   YI Set page length to #1 hundredth of an inch
 #%.TE
 #%.ad
 #
@@ -789,7 +790,7 @@ enter_vertical_hl_mode      evhlm   str     Xv      -----   Enter vertical highlight mode
 #
 # This group of codes is not marked obsolete in 4.4BSD, but have no direct
 # terminfo equivalents.  The rs capability is specially translated to terminfo
-# r1, and vice versa, if an entry does not already have an r1.  Similarly,
+# r2, and vice versa, if an entry does not already have an r2.  Similarly,
 # i2 is translated to r3 if there is no r3 (because SV terminfo maps is to i2).
 # The ug capability is thrown away, but assumed to be whatever sg is if the
 # latter is nonzero and we're dumping in termcap format.
@@ -882,7 +883,7 @@ return_does_clr_eol OTxr    bool    xr      YB---   return clears the line
 # University of Waterloo termcap extensions (as described in mytinfo).
 # The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
 # be resolved by a type check.  The descriptions are guesses from what was
-# in the nytinfo tables. 
+# in the mytinfo tables. 
 #
 # key_interrupt_char    OTki   str     ki      -----   string set by interrupt key (?)
 # key_kill_char         OTkk   str     kk      -----   string set by kill key (?)
@@ -896,8 +897,8 @@ return_does_clr_eol OTxr    bool    xr      YB---   return clears the line
 #
 # scroll_left                  OTsl1   str     Sl      -----   scroll screen leftward
 # scroll_right                 OTsr1   str     Sr      -----   scroll screen rightward
-# parm_scroll_left             OTsl    str     SL      -----   scroll screen leftward #1 chars
-# parm_scroll_right            OTsr    str     SR      -----   scroll screen rightward #1 chars
+# parm_scroll_left             OTsl    str     SL      -----   scroll screen leftward #1 characters
+# parm_scroll_right            OTsr    str     SR      -----   scroll screen rightward #1 characters
 #
 # The mytinfo capabilities end here.
 #
@@ -1028,7 +1029,7 @@ memory_unlock     memu    str     mu      ----K   memory unlock
 # These extensions follow ptr_non (replacing everything after it) in IBM
 # terminfo files.
 #
-# The places in the box[12] capabilities correspond to acsc chars, here is
+# The places in the box[12] capabilities correspond to acsc characters, here is
 # the mapping:
 #
 #      box1[0]  = ACS_ULCORNER
@@ -1045,8 +1046,8 @@ memory_unlock     memu    str     mu      ----K   memory unlock
 #
 # The box2 characters are the double-line versions of these forms graphics.
 #
-box_chars_1            box1    str     bx      ----K   box chars primary set
-#box_chars_2           box2    str     by      ----K   box chars secondary set
+box_chars_1            box1    str     bx      ----K   box characters primary set
+#box_chars_2           box2    str     by      ----K   box characters secondary set
 #box_attr_1            batt1   str     Bx      ----K   attributes for box1
 #box_attr_2            batt2   str     By      ----K   attributes for box2
 #color_bg_0            colb0   str     d0      ----K   background color 0
@@ -1288,7 +1289,7 @@ capalias  FC      Sf      Tek     set_foreground
 #      WL      key_word_left
 #      WR      key_word_right
 #
-# If you know what any of the questionmarked ones mean, please tell us.
+# If you know what any of the question-marked ones mean, please tell us.
 #
 #--------------------------------- Terminfo aliases ------------------------
 #
index eb7afe706c88158a0e28842f648172a4b3549e8f..6f66b21a2883b6e92a810ef0c46140426979a0c4 100644 (file)
 
 BEGIN          {
-                   print "/****************************************************************************"
-                   print " * Copyright (c) 1998 Free Software Foundation, Inc.                        *"
-                   print " *                                                                          *"
-                   print " * Permission is hereby granted, free of charge, to any person obtaining a  *"
-                   print " * copy of this software and associated documentation files (the            *"
-                   print " * "Software"), to deal in the Software without restriction, including      *"
-                   print " * without limitation the rights to use, copy, modify, merge, publish,      *"
-                   print " * distribute, distribute with modifications, sublicense, and/or sell       *"
-                   print " * copies of the Software, and to permit persons to whom the Software is    *"
-                   print " * furnished to do so, subject to the following conditions:                 *"
-                   print " *                                                                          *"
-                   print " * The above copyright notice and this permission notice shall be included  *"
-                   print " * in all copies or substantial portions of the Software.                   *"
-                   print " *                                                                          *"
-                   print " * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *"
-                   print " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *"
-                   print " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *"
-                   print " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *"
-                   print " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *"
-                   print " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *"
-                   print " * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *"
-                   print " *                                                                          *"
-                   print " * Except as contained in this notice, the name(s) of the above copyright   *"
-                   print " * holders shall not be used in advertising or otherwise to promote the     *"
-                   print " * sale, use or other dealings in this Software without prior written       *"
-                   print " * authorization.                                                           *"
-                   print " ****************************************************************************/"
-                   print ""
-                   print "/****************************************************************************/"
-                   print "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995                */"
-                   print "/*    and: Eric S. Raymond <esr@snark.thyrsus.com>                          */"
-                   print "/****************************************************************************/"
-                   print ""
-                   print "/* $Id: MKterm.h.awk.in,v 1.23 1998/02/11 12:13:46 tom Exp $ */"
-                   print ""
-                   print "/*"
-                   print "**   term.h -- Definition of struct term"
-                   print "*/"
-                   print ""
-                   print "#ifndef _TERM_H"
-                   print "#define _TERM_H"
-                   print ""
-                   print "#undef  NCURSES_VERSION"
-                   print "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\""
-                   print ""
-                   print "#ifdef __cplusplus"
-                   print "extern \"C\" {"
-                   print "#endif"
-                   print ""
-                   print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H"
-                   print " * and BROKEN_LINKER definition (based on the system for which this was configured)."
-                   print " */"
-                   print ""
-                   print "#ifndef HAVE_TERMIOS_H"
-                   print "#define HAVE_TERMIOS_H 1/*default*/"
-                   print "#endif"
-                   print ""
-                   print "#ifndef HAVE_TERMIO_H"
-                   print "#define HAVE_TERMIO_H 0/*default*/"
-                   print "#endif"
-                   print ""
-                   print "#ifndef HAVE_TCGETATTR"
-                   print "#define HAVE_TCGETATTR 1/*default*/"
-                   print "#endif"
-                   print ""
-                   print "#ifndef BROKEN_LINKER"
-                   print "#define BROKEN_LINKER 0/*default*/"
-                   print "#endif"
-                   print ""
-                   print "#ifndef NCURSES_CONST"
-                   print "#define NCURSES_CONST /* nothing */"
-                   print "#endif"
-                   print ""
-                   print "/* Assume Posix termio if we have the header and function */"
-                   print "#if HAVE_TERMIOS_H && HAVE_TCGETATTR"
-                   print "#ifndef TERMIOS"
-                   print "#define TERMIOS 1"
-                   print "#endif"
-                   print "#include <termios.h>"
-                   print "#define TTY struct termios"
-                   print ""
-                   print "#else /* !HAVE_TERMIOS_H */"
-                   print ""
-                   print "#if HAVE_TERMIO_H"
-                   print "#ifndef TERMIOS"
-                   print "#define TERMIOS 1"
-                   print "#endif"
-                   print "#include <termio.h>"
-                   print "#define TTY struct termio"
-                   print "#define TCSANOW TCSETA"
-                   print "#define TCSADRAIN TCSETAW"
-                   print "#define TCSAFLUSH TCSETAF"
-                   print "#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)"
-                   print "#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)"
-                   print "#define cfgetospeed(t) ((t)->c_cflag & CBAUD)"
-                   print "#define TCIFLUSH 0"
-                   print "#define TCOFLUSH 1"
-                   print "#define TCIOFLUSH 2"
-                   print "#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)"
-                   print ""
-                   print "#else /* !HAVE_TERMIO_H */"
-                   print ""
-                   print "#undef TERMIOS"
-                   print "#include <sgtty.h>"
-                   print "#include <sys/ioctl.h>"
-                   print "#define TTY struct sgttyb"
-                   print ""
-                   print "#endif /* HAVE_TERMIO_H */"
-                   print ""
-                   print "#endif /* HAVE_TERMIOS_H */"
-                   print ""
-                   print "#ifdef TERMIOS"
-                   print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
-                   print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
-                   print "#else"
-                   print "#define GET_TTY(fd, buf) gtty(fd, buf)"
-                   print "#define SET_TTY(fd, buf) stty(fd, buf)"
-                   print "#endif"
-                   print ""
-                   print "extern char ttytype[];"
-                   print "#define NAMESIZE 256"
-                   print ""
-                   print "#define CUR cur_term->type."
-                   print ""
+                   print  "/****************************************************************************"
+                   print  " * Copyright (c) 1998 Free Software Foundation, Inc.                        *"
+                   print  " *                                                                          *"
+                   print  " * Permission is hereby granted, free of charge, to any person obtaining a  *"
+                   print  " * copy of this software and associated documentation files (the            *"
+                   print  " * \"Software\"), to deal in the Software without restriction, including      *"
+                   print  " * without limitation the rights to use, copy, modify, merge, publish,      *"
+                   print  " * distribute, distribute with modifications, sublicense, and/or sell       *"
+                   print  " * copies of the Software, and to permit persons to whom the Software is    *"
+                   print  " * furnished to do so, subject to the following conditions:                 *"
+                   print  " *                                                                          *"
+                   print  " * The above copyright notice and this permission notice shall be included  *"
+                   print  " * in all copies or substantial portions of the Software.                   *"
+                   print  " *                                                                          *"
+                   print  " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *"
+                   print  " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *"
+                   print  " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *"
+                   print  " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *"
+                   print  " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *"
+                   print  " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *"
+                   print  " * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *"
+                   print  " *                                                                          *"
+                   print  " * Except as contained in this notice, the name(s) of the above copyright   *"
+                   print  " * holders shall not be used in advertising or otherwise to promote the     *"
+                   print  " * sale, use or other dealings in this Software without prior written       *"
+                   print  " * authorization.                                                           *"
+                   print  " ****************************************************************************/"
+                   print  ""
+                   print  "/****************************************************************************/"
+                   print  "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995                */"
+                   print  "/*    and: Eric S. Raymond <esr@snark.thyrsus.com>                          */"
+                   print  "/****************************************************************************/"
+                   print  ""
+                   print  "/* $Id: MKterm.h.awk.in,v 1.36 1999/09/01 22:36:52 Peter.Wemm Exp $ */"
+                   print  ""
+                   print  "/*"
+                   print  "**  term.h -- Definition of struct term"
+                   print  "*/"
+                   print  ""
+                   print  "#ifndef _NCU_TERM_H"
+                   print  "#define _NCU_TERM_H 1"
+                   print  ""
+                   print  "#undef  NCURSES_VERSION"
+                   print  "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\""
+                   print  ""
+                   print  "#ifdef __cplusplus"
+                   print  "extern \"C\" {"
+                   print  "#endif"
+                   print  ""
+                   print  "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H"
+                   print  " * and BROKEN_LINKER definition (based on the system for which this was"
+                   print  " * configured)."
+                   print  " */"
+                   print  ""
+                   print  "#undef  HAVE_TERMIOS_H"
+                   print  "#define HAVE_TERMIOS_H 1/*default*/"
+                   print  ""
+                   print  "#undef  HAVE_TERMIO_H"
+                   print  "#define HAVE_TERMIO_H 0/*default*/"
+                   print  ""
+                   print  "#undef  HAVE_TCGETATTR"
+                   print  "#define HAVE_TCGETATTR 1/*default*/"
+                   print  ""
+                   print  "#undef  BROKEN_LINKER"
+                   print  "#define BROKEN_LINKER 0/*default*/"
+                   print  ""
+                   print  "#undef  NCURSES_CONST"
+                   print  "#define NCURSES_CONST @NCURSES_CONST@"
+                   print  ""
+                   print  "#undef  NCURSES_XNAMES"
+                   print  "#define NCURSES_XNAMES @NCURSES_XNAMES@"
+                   print  ""
+                   print  "/* We will use these symbols to hide differences between"
+                   print  " * termios/termio/sgttyb interfaces."
+                   print  " */"
+                   print  "#undef  TTY"
+                   print  "#undef  SET_TTY"
+                   print  "#undef  GET_TTY"
+                   print  ""
+                   print  "/* Assume Posix termio if we have the header and function */"
+                   print  "#if HAVE_TERMIOS_H && HAVE_TCGETATTR"
+                   print  ""
+                   print  "#undef  TERMIOS"
+                   print  "#define TERMIOS 1"
+                   print  ""
+                   print  "#include <termios.h>"
+                   print  "#define TTY struct termios"
+                   print  ""
+                   print  "#else /* !HAVE_TERMIOS_H */"
+                   print  ""
+                   print  "#if HAVE_TERMIO_H"
+                   print  ""
+                   print  "#undef  TERMIOS"
+                   print  "#define TERMIOS 1"
+                   print  ""
+                   print  "#include <termio.h>"
+                   print  "#define TTY struct termio"
+                   print  ""
+                   print  "/* Add definitions to make termio look like termios."
+                   print  " * But ifdef it, since there are some implementations"
+                   print  " * that try to do this for us in a fake <termio.h>."
+                   print  " */"
+                   print  "#ifndef TCSANOW"
+                   print  "#define TCSANOW TCSETA"
+                   print  "#endif"
+                   print  "#ifndef TCSADRAIN"
+                   print  "#define TCSADRAIN TCSETAW"
+                   print  "#endif"
+                   print  "#ifndef TCSAFLUSH"
+                   print  "#define TCSAFLUSH TCSETAF"
+                   print  "#endif"
+                   print  "#ifndef tcsetattr"
+                   print  "#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)"
+                   print  "#endif"
+                   print  "#ifndef tcgetattr"
+                   print  "#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)"
+                   print  "#endif"
+                   print  "#ifndef cfgetospeed"
+                   print  "#define cfgetospeed(t) ((t)->c_cflag & CBAUD)"
+                   print  "#endif"
+                   print  "#ifndef TCIFLUSH "
+                   print  "#define TCIFLUSH 0"
+                   print  "#endif"
+                   print  "#ifndef TCOFLUSH "
+                   print  "#define TCOFLUSH 1"
+                   print  "#endif"
+                   print  "#ifndef TCIOFLUSH "
+                   print  "#define TCIOFLUSH 2"
+                   print  "#endif"
+                   print  "#ifndef tcflush"
+                   print  "#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)"
+                   print  "#endif"
+                   print  ""
+                   print  "#else /* !HAVE_TERMIO_H */"
+                   print  ""
+                   print  "#undef TERMIOS"
+                   print  "#include <sgtty.h>"
+                   print  "#include <sys/ioctl.h>"
+                   print  "#define TTY struct sgttyb"
+                   print  ""
+                   print  "#endif /* HAVE_TERMIO_H */"
+                   print  ""
+                   print  "#endif /* HAVE_TERMIOS_H */"
+                   print  ""
+                   print  "#ifdef TERMIOS"
+                   print  "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
+                   print  "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
+                   print  "#else"
+                   print  "#define GET_TTY(fd, buf) gtty(fd, buf)"
+                   print  "#define SET_TTY(fd, buf) stty(fd, buf)"
+                   print  "#endif"
+                   print  ""
+                   print  "#define NAMESIZE 256"
+                   print  ""
+                   print  "#define CUR cur_term->type."
+                   print  ""
                }
 
 $2 == "%%-STOP-HERE-%%"        {
@@ -135,9 +167,7 @@ $2 == "%%-STOP-HERE-%%"     {
                        print  "/* older synonyms for some capabilities */"
                        print  "#define beehive_glitch  no_esc_ctlc"
                        print  "#define teleray_glitch  dest_tabs_magic_smso"
-                       print  ""
-                       print  "/* XSI synonyms */"
-                       print  "#define micro_col_size  micro_char_size"
+                       print  "#define micro_char_size micro_col_size"
                        print  ""
                        print  "#ifdef __INTERNAL_CAPS_VISIBLE"
                }
@@ -160,100 +190,121 @@ END             {
                        print  "#endif /* __INTERNAL_CAPS_VISIBLE */"
                        print  ""
                        print  ""
+                       print  "/*"
+                       print  " * Predefined terminfo array sizes"
+                       print  " */"
                        printf "#define BOOLCOUNT %d\n", BoolCount
                        printf "#define NUMCOUNT  %d\n", NumberCount
                        printf "#define STRCOUNT  %d\n", StringCount
                        print  ""
-                       print "typedef struct termtype {        /* in-core form of terminfo data */"
-                       print "    char  *term_names;           /* str_table offset of term names */"
-                       print "    char  *str_table;            /* pointer to string table */"
-                       print "    char  Booleans[BOOLCOUNT];   /* array of values */"
-                       print "    short Numbers[NUMCOUNT];     /* array of values */"
-                       print "    char  *Strings[STRCOUNT];    /* array of string offsets */"
-                       print "} TERMTYPE;"
-                       print ""
-                       print "typedef struct term {            /* describe an actual terminal */"
-                       print "    TERMTYPE     type;           /* terminal type description */"
-                       print "    short        Filedes;        /* file description being written to */"
-                       print "    TTY          Ottyb,          /* original state of the terminal */"
-                       print "                 Nttyb;          /* current state of the terminal */"
-                       print "    int          _baudrate;      /* used to compute padding */"
-                       print "} TERMINAL;"
-                       print ""
-                       print "extern TERMINAL  *cur_term;"
-                       print ""
-                       print ""
-                       print "#if BROKEN_LINKER"
-                       print "#define boolnames  _nc_boolnames()"
-                       print "#define boolcodes  _nc_boolcodes()"
-                       print "#define boolfnames _nc_boolfnames()"
-                       print "#define numnames   _nc_numnames()"
-                       print "#define numcodes   _nc_numcodes()"
-                       print "#define numfnames  _nc_numfnames()"
-                       print "#define strnames   _nc_strnames()"
-                       print "#define strcodes   _nc_strcodes()"
-                       print "#define strfnames  _nc_strfnames()"
-                       print ""
-                       print "extern NCURSES_CONST char * const *_nc_boolnames(void);"
-                       print "extern NCURSES_CONST char * const *_nc_boolcodes(void);"
-                       print "extern NCURSES_CONST char * const *_nc_boolfnames(void);"
-                       print "extern NCURSES_CONST char * const *_nc_numnames(void);"
-                       print "extern NCURSES_CONST char * const *_nc_numcodes(void);"
-                       print "extern NCURSES_CONST char * const *_nc_numfnames(void);"
-                       print "extern NCURSES_CONST char * const *_nc_strnames(void);"
-                       print "extern NCURSES_CONST char * const *_nc_strcodes(void);"
-                       print "extern NCURSES_CONST char * const *_nc_strfnames(void);"
-                       print ""
-                       print "#else"
-                       print ""
-                       print "extern NCURSES_CONST char *const boolnames[];"
-                       print "extern NCURSES_CONST char *const boolcodes[];"
-                       print "extern NCURSES_CONST char *const boolfnames[];"
-                       print "extern NCURSES_CONST char *const numnames[];"
-                       print "extern NCURSES_CONST char *const numcodes[];"
-                       print "extern NCURSES_CONST char *const numfnames[];"
-                       print "extern NCURSES_CONST char *const strnames[];"
-                       print "extern NCURSES_CONST char *const strcodes[];"
-                       print "extern NCURSES_CONST char *const strfnames[];"
-                       print ""
-                       print "#endif"
-                       print ""
-                       print "/* internals */"
-                       print "extern int _nc_set_curterm(TTY *buf);"
-                       print "extern int _nc_get_curterm(TTY *buf);"
-                       print "extern int _nc_read_entry(const char * const, char * const, TERMTYPE *const);"
-                       print "extern int _nc_read_file_entry(const char *const, TERMTYPE *);"
-                       print "extern char *_nc_first_name(const char *const);"
-                       print "extern int _nc_name_match(const char *const, const char *const, const char *const);"
-                       print "extern int _nc_read_termcap_entry(const char *const, TERMTYPE *const);"
-                       print "extern const TERMTYPE *_nc_fallback(const char *);"
+                       print  "typedef struct termtype {       /* in-core form of terminfo data */"
+                       print  "    char  *term_names;          /* str_table offset of term names */"
+                       print  "    char  *str_table;           /* pointer to string table */"
+                       print  "    char  *Booleans;            /* array of boolean values */"
+                       print  "    short *Numbers;             /* array of integer values */"
+                       print  "    char  **Strings;            /* array of string offsets */"
+                       print  ""
+                       print  "#if NCURSES_XNAMES"
+                       print  "    char  *ext_str_table;       /* pointer to extended string table */"
+                       print  "    char  **ext_Names;          /* corresponding names */"
+                       print  ""
+                       print  "    unsigned short num_Booleans;/* count total Booleans */"
+                       print  "    unsigned short num_Numbers; /* count total Numbers */"
+                       print  "    unsigned short num_Strings; /* count total Strings */"
+                       print  ""
+                       print  "    unsigned short ext_Booleans;/* count extensions to Booleans */"
+                       print  "    unsigned short ext_Numbers; /* count extensions to Numbers */"
+                       print  "    unsigned short ext_Strings; /* count extensions to Strings */"
+                       print  "#endif /* NCURSES_XNAMES */"
+                       print  ""
+                       print  "} TERMTYPE;"
+                       print  ""
+                       print  "typedef struct term {           /* describe an actual terminal */"
+                       print  "    TERMTYPE    type;           /* terminal type description */"
+                       print  "    short       Filedes;        /* file description being written to */"
+                       print  "    TTY         Ottyb,          /* original state of the terminal */"
+                       print  "                Nttyb;          /* current state of the terminal */"
+                       print  "    int         _baudrate;      /* used to compute padding */"
+                       print  "} TERMINAL;"
+                       print  ""
+                       print  "extern TERMINAL *cur_term;"
+                       print  ""
+                       print  "#if BROKEN_LINKER"
+                       print  "#define boolnames  _nc_boolnames()"
+                       print  "#define boolcodes  _nc_boolcodes()"
+                       print  "#define boolfnames _nc_boolfnames()"
+                       print  "#define numnames   _nc_numnames()"
+                       print  "#define numcodes   _nc_numcodes()"
+                       print  "#define numfnames  _nc_numfnames()"
+                       print  "#define strnames   _nc_strnames()"
+                       print  "#define strcodes   _nc_strcodes()"
+                       print  "#define strfnames  _nc_strfnames()"
+                       print  ""
+                       print  "extern NCURSES_CONST char * const *_nc_boolnames(void);"
+                       print  "extern NCURSES_CONST char * const *_nc_boolcodes(void);"
+                       print  "extern NCURSES_CONST char * const *_nc_boolfnames(void);"
+                       print  "extern NCURSES_CONST char * const *_nc_numnames(void);"
+                       print  "extern NCURSES_CONST char * const *_nc_numcodes(void);"
+                       print  "extern NCURSES_CONST char * const *_nc_numfnames(void);"
+                       print  "extern NCURSES_CONST char * const *_nc_strnames(void);"
+                       print  "extern NCURSES_CONST char * const *_nc_strcodes(void);"
+                       print  "extern NCURSES_CONST char * const *_nc_strfnames(void);"
+                       print  ""
+                       print  "#else"
+                       print  ""
+                       print  "extern NCURSES_CONST char *const boolnames[];"
+                       print  "extern NCURSES_CONST char *const boolcodes[];"
+                       print  "extern NCURSES_CONST char *const boolfnames[];"
+                       print  "extern NCURSES_CONST char *const numnames[];"
+                       print  "extern NCURSES_CONST char *const numcodes[];"
+                       print  "extern NCURSES_CONST char *const numfnames[];"
+                       print  "extern NCURSES_CONST char *const strnames[];"
+                       print  "extern NCURSES_CONST char *const strcodes[];"
+                       print  "extern NCURSES_CONST char *const strfnames[];"
+                       print  ""
+                       print  "#endif"
+                       print  ""
+                       print  "/* internals */"
+                       print  "extern int _nc_set_tty_mode(TTY *buf);"
+                       print  "extern int _nc_get_tty_mode(TTY *buf);"
+                       print  "extern int _nc_read_entry(const char * const, char * const, TERMTYPE *const);"
+                       print  "extern int _nc_read_file_entry(const char *const, TERMTYPE *);"
+                       print  "extern char *_nc_first_name(const char *const);"
+                       print  "extern int _nc_name_match(const char *const, const char *const, const char *const);"
+                       print  "extern int _nc_read_termcap_entry(const char *const, TERMTYPE *const);"
+                       print  "extern const TERMTYPE *_nc_fallback(const char *);"
+                       print  ""
+                       print  "/* entry points */"
+                       print  "extern TERMINAL *set_curterm(TERMINAL *);"
+                       print  "extern int del_curterm(TERMINAL *);"
+                       print  ""
+                       print  "/* miscellaneous entry points */"
+                       print  "extern int restartterm(NCURSES_CONST char *, int, int *);"
+                       print  "extern int setupterm(NCURSES_CONST char *,int,int *);"
+                       print  ""
+                       print  "/* terminfo entry points, also declared in curses.h */"
+                       print  "#if !defined(__NCURSES_H)"
+                       print  "extern char *tigetstr(NCURSES_CONST char *);"
+                       print  "extern char *tparm(NCURSES_CONST char *, ...);"
+                       print  "extern char ttytype[];"
+                       print  "extern int putp(const char *);"
+                       print  "extern int tigetflag(NCURSES_CONST char *);"
+                       print  "extern int tigetnum(NCURSES_CONST char *);"
+                       print  "#endif /* __NCURSES_H */"
                        print  ""
-                       print "/* entry points */"
-                       print "extern TERMINAL *set_curterm(TERMINAL *);"
-                       print "extern int del_curterm(TERMINAL *);"
+                       print  "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
+                       print  "#if !defined(_NCU_TERMCAP_H)"
+                       print  "extern char *tgetstr(NCURSES_CONST char *, char **);"
+                       print  "extern char *tgoto(const char *, int, int);"
+                       print  "extern int tgetent(char *, const char *);"
+                       print  "extern int tgetflag(NCURSES_CONST char *);"
+                       print  "extern int tgetnum(NCURSES_CONST char *);"
+                       print  "extern int tputs(const char *, int, int (*)(int));"
+                       print  "#endif /* _NCU_TERMCAP_H */"
                        print  ""
-                       print "/* miscellaneous entry points */"
-                       print "extern int putp(const char *);"
-                       print "extern int restartterm(const char *, int, int *);"
-                       print "extern int setupterm(const char *,int,int *);"
-                       print "extern int tputs(const char *, int, int (*)(int));"
+                       print  "#ifdef __cplusplus"
+                       print  "}"
+                       print  "#endif"
                        print  ""
-                       print "/* terminfo entry points */"
-                       print "extern int tigetflag(const char *);"
-                       print "extern int tigetnum(const char *);"
-                       print "extern char *tigetstr(const char *);"
-                       print "extern char *tparm(const char *, ...);"
-                       print ""
-                       print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
-                       print "extern int tgetent(char *, const char *);"
-                       print "extern int tgetflag(const char *);"
-                       print "extern int tgetnum(const char *);"
-                       print "extern char *tgetstr(const char *, char **);"
-                       print "extern char *tgoto(const char *, int, int);"
-                       print ""
-                       print "#ifdef __cplusplus"
-                       print "}"
-                       print "#endif"
-                       print ""
-                       print "#endif /* TERM_H */"
+                       print  "#endif /* _NCU_TERM_H */"
                }
index 1e2261576adf1303dc579952cdd17eff6e68ee8f..af1193cc4981c16284563a52e7307312b361b255 100644 (file)
@@ -31,7 +31,7 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-/* $Id: capdefaults.c,v 1.7 1998/02/11 12:13:45 tom Exp $ */
+/* $Id: capdefaults.c,v 1.8 1998/07/04 22:31:04 tom Exp $ */
 
        /*
         * Compute obsolete capabilities.  The reason this is an include file
                if (!VALID_STRING(termcap_init2) && VALID_STRING(init_3string))
                {
                        termcap_init2 = init_3string;
-                       init_3string = (char *)NULL;
+                       init_3string = (char *)0;
                }
                if (VALID_STRING(reset_1string)
                        && !VALID_STRING(reset_2string)
                        && VALID_STRING(reset_3string))
                {
-                       termcap_reset = reset_1string;
-                       reset_1string = (char *)NULL;
+                       termcap_reset = reset_2string;
+                       reset_2string = (char *)0;
                }
 #if USE_XMC_SUPPORT
                if (magic_cookie_glitch_ul < 0 && magic_cookie_glitch && VALID_STRING(enter_underline_mode))
index 2562f728b3bae23c6f4bf81781a1e2e32576735a..4f300b0b9aeddfe18487c59d1d39adea887eaf9d 100644 (file)
@@ -31,7 +31,7 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-/* $Id: curses.h.in,v 1.60 1998/02/11 12:13:46 tom Exp $ */
+/* $Id: curses.h.in,v 1.85 1999/10/23 12:33:54 tom Exp $ */
 
 #ifndef __NCURSES_H
 #define __NCURSES_H
@@ -62,9 +62,8 @@
 #define NCURSES_ATTR_T int
 #endif
 
-#ifndef NCURSES_CONST
-#define NCURSES_CONST /* nothing */
-#endif
+#undef  NCURSES_CONST
+#define NCURSES_CONST @NCURSES_CONST@
 
 typedef unsigned @cf_cv_typeof_chtype@ chtype;
 
@@ -78,24 +77,17 @@ typedef unsigned @cf_cv_typeof_chtype@ chtype;
 /* XSI and SVr4 specify that curses implements 'bool'.  However, C++ may also
  * implement it.  If so, we must use the C++ compiler's type to avoid conflict
  * with other interfaces.
- *
- * To simplify use with/without the configuration script, we define the symbols
- * CXX_BUILTIN_BOOL and CXX_TYPE_OF_BOOL; they're edited by the configure
- * script.
  */
 
 #undef TRUE
+#define TRUE    1
+
 #undef FALSE
-#define CXX_BUILTIN_BOOL @cf_cv_builtin_bool@
-#define CXX_TYPE_OF_BOOL @cf_cv_type_of_bool@
+#define FALSE   0
 
-#if defined(__cplusplus) && CXX_BUILTIN_BOOL
-#define TRUE    ((CXX_TYPE_OF_BOOL)true)
-#define FALSE   ((CXX_TYPE_OF_BOOL)false)
-#else
-typedef CXX_TYPE_OF_BOOL bool;
-#define TRUE    ((bool)1)
-#define FALSE   ((bool)0)
+#if (!defined(__cplusplus) || !@cf_cv_builtin_bool@) && (!@cf_cv_cc_bool_type@)
+#undef bool
+typedef @cf_cv_type_of_bool@ bool;
 #endif
 
 #ifdef __cplusplus
@@ -319,11 +311,13 @@ extern int        TABSIZE;
  */
 extern int ESCDELAY;   /* ESC expire time in milliseconds */
 
-/* non-XSI extensions (dickey@clark.net) */
+extern char *keybound (int, int);
+extern const char *curses_version (void);
 extern int define_key (char *, int);
 extern int keyok (int, bool);
 extern int resizeterm (int, int);
 extern int use_default_colors (void);
+extern int use_extended_names (bool);
 extern int wresize (WINDOW *, int, int);
 
 extern char ttytype[];         /* needed for backward compatibility */
@@ -334,10 +328,21 @@ extern char ttytype[];            /* needed for backward compatibility */
  * function calls.  Just in case '__attribute__' isn't defined, make a dummy.
  * G++ doesn't accept it anyway.
  */
-#if defined(__cplusplus) || (!defined(__GNUC__) && !defined(__attribute__))
+#if !defined(__GNUC__) && !defined(__attribute__)
 #define __attribute__(p) /* nothing */
 #endif
 
+/*
+ * For g++, turn off our macros that use __attribute__ (g++ recognizes some
+ * of them, but not at the same version levels as gcc).
+ */
+#ifdef __cplusplus
+#undef GCC_NORETURN
+#undef GCC_PRINTF
+#undef GCC_SCANF
+#undef GCC_UNUSED
+#endif
+
 /*
  * We cannot define these in ncurses_cfg.h, since they require parameters to be
  * passed (that's non-portable).
@@ -384,25 +389,25 @@ extern int add_wchstr(const cchar_t *);                   /* missing */
 extern int attroff(NCURSES_ATTR_T);                    /* generated */
 extern int attron(NCURSES_ATTR_T);                     /* generated */
 extern int attrset(NCURSES_ATTR_T);                    /* generated */
-extern int attr_get(void);                             /* generated */
-extern int attr_off(NCURSES_ATTR_T);                   /* generated */
-extern int attr_on(NCURSES_ATTR_T);                    /* generated */
-extern int attr_set(NCURSES_ATTR_T);                   /* generated */
+extern int attr_get(attr_t *, short *, void *);                /* generated */
+extern int attr_off(attr_t, void *);                   /* generated */
+extern int attr_on(attr_t, void *);                    /* generated */
+extern int attr_set(attr_t, short, void *);            /* generated */
 extern int baudrate(void);                             /* implemented */
 extern int beep(void);                                 /* implemented */
 extern int bkgd(chtype);                               /* generated */
 extern void bkgdset(chtype);                           /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int bkgrndset(const cchar_t *);                 /* missing */
+extern void bkgrndset(const cchar_t *);                        /* missing */
 extern int bkgrnd(const cchar_t *);                    /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int border(chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);    /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int border_set(cchar_t,cchar_t,cchar_t,cchar_t,cchar_t,cchar_t,cchar_t,cchar_t);        /* missing */
+extern int border_set(const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*);        /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int box(WINDOW *, chtype, chtype);              /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int box_set(WINDOW *, cchar_t, cchar_t);                /* missing */
+extern int box_set(WINDOW *, const cchar_t *, const cchar_t *);        /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern bool can_change_color(void);                    /* implemented */
 extern int cbreak(void);                               /* implemented */
@@ -412,7 +417,7 @@ extern int clearok(WINDOW *,bool);                  /* implemented */
 extern int clrtobot(void);                             /* generated */
 extern int clrtoeol(void);                             /* generated */
 extern int color_content(short,short*,short*,short*);  /* implemented */
-extern int color_set(short,void*);                     /* missing */
+extern int color_set(short,void*);                     /* generated */
 extern int COLOR_PAIR(int);                            /* generated */
 extern int copywin(const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */
 extern int curs_set(int);                              /* implemented */
@@ -434,9 +439,6 @@ extern int erasewchar(wchar_t*);                    /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int endwin(void);                               /* implemented */
 extern char erasechar(void);                           /* implemented */
-#ifdef _XOPEN_SOURCE_EXTENDED
-extern int erase_wchar(wchar_t *);                     /* missing */
-#endif /* _XOPEN_SOURCE_EXTENDED */
 extern void filter(void);                              /* implemented */
 extern int flash(void);                                        /* implemented */
 extern int flushinp(void);                             /* implemented */
@@ -460,8 +462,8 @@ extern int get_wstr(wint_t *);                              /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int halfdelay(int);                             /* implemented */
 extern bool has_colors(void);                          /* implemented */
-extern int has_ic(void);                               /* implemented */
-extern int has_il(void);                               /* implemented */
+extern bool has_ic(void);                              /* implemented */
+extern bool has_il(void);                              /* implemented */
 extern int hline(chtype, int);                         /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
 extern int hline_set(const cchar_t *, int);            /* missing */
@@ -493,16 +495,16 @@ extern int ins_wstr(const wchar_t *);                     /* missing */
 extern int intrflush(WINDOW *,bool);                   /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
 extern int inwstr(wchar_t *);                          /* missing */
-extern int in_wch(const cchar_t *);                    /* missing */
-extern int in_wchstr(const cchar_t *);                 /* missing */
-extern int in_wchntr(const cchar_t *, int);            /* missing */
+extern int in_wch(NCURSES_CONST cchar_t *);            /* missing */
+extern int in_wchstr(NCURSES_CONST cchar_t *);         /* missing */
+extern int in_wchnstr(NCURSES_CONST cchar_t *, int);   /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
-extern int isendwin(void);                             /* implemented */
-extern int is_linetouched(WINDOW *,int);               /* implemented */
-extern int is_wintouched(WINDOW *);                    /* implemented */
-extern const char *keyname(int);                       /* implemented */
+extern bool isendwin(void);                            /* implemented */
+extern bool is_linetouched(WINDOW *,int);              /* implemented */
+extern bool is_wintouched(WINDOW *);                   /* implemented */
+extern NCURSES_CONST char *keyname(int);               /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int key_name(wchar_t *);                                /* missing */
+extern char *key_name(wchar_t);                                /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int keypad(WINDOW *,bool);                      /* implemented */
 extern char killchar(void);                            /* implemented */
@@ -561,13 +563,13 @@ extern int mvins_nwstr(int, int, const wchar_t *, int);   /* missing */
 extern int mvins_wch(int, int, const cchar_t *);       /* missing */
 extern int mvins_wstr(int, int, const wchar_t *);      /* missing */
 extern int mvinwstr(int, int, wchar_t *);              /* missing */
-extern int mvin_wch(int, int, const cchar_t *);                /* missing */
-extern int mvin_wchstr(int, int, const cchar_t *);     /* missing */
-extern int mvin_wchntr(int, int, const cchar_t *, int);        /* missing */
+extern int mvin_wch(int, int, NCURSES_CONST cchar_t *);        /* missing */
+extern int mvin_wchstr(int, int, NCURSES_CONST cchar_t *);     /* missing */
+extern int mvin_wchnstr(int, int, NCURSES_CONST cchar_t *, int);       /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
-extern int mvprintw(int,int,const char *,...)          /* implemented */
+extern int mvprintw(int,int, NCURSES_CONST char *,...) /* implemented */
                GCC_PRINTFLIKE(3,4);
-extern int mvscanw(int,int,const char *,...)           /* implemented */
+extern int mvscanw(int,int, NCURSES_CONST char *,...)  /* implemented */
                GCC_SCANFLIKE(3,4);
 extern int mvvline(int, int, chtype, int);             /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
@@ -620,13 +622,13 @@ extern int mvwins_nwstr(WINDOW *, int,int, const wchar_t *,int); /* missing */
 extern int mvwins_wch(WINDOW *, int, int, const cchar_t *);    /* missing */
 extern int mvwins_wstr(WINDOW *, int, int, const wchar_t *);   /* missing */
 extern int mvwinwstr(WINDOW *, int, int, wchar_t *);           /* missing */
-extern int mvwin_wch(WINDOW *, int, int, const cchar_t *);     /* missing */
-extern int mvwin_wchnstr(WINDOW *, int,int,const cchar_t *,int); /* missing */
-extern int mvwin_wchstr(WINDOW *, int, int, const cchar_t *);  /* missing */
+extern int mvwin_wch(WINDOW *, int, int, NCURSES_CONST cchar_t *);     /* missing */
+extern int mvwin_wchnstr(WINDOW *, int,int, NCURSES_CONST cchar_t *,int); /* missing */
+extern int mvwin_wchstr(WINDOW *, int, int, NCURSES_CONST cchar_t *);  /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
-extern int mvwprintw(WINDOW*,int,int,const char *,...) /* implemented */
+extern int mvwprintw(WINDOW*,int,int, NCURSES_CONST char *,...)        /* implemented */
                GCC_PRINTFLIKE(4,5);
-extern int mvwscanw(WINDOW *,int,int,const char *,...) /* implemented */
+extern int mvwscanw(WINDOW *,int,int, NCURSES_CONST char *,...)        /* implemented */
                GCC_SCANFLIKE(4,5);
 extern int mvwvline(WINDOW *,int, int, chtype, int);   /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
@@ -634,14 +636,14 @@ extern int mvwvline_set(WINDOW *, int,int, const cchar_t *,int); /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int napms(int);                                 /* implemented */
 extern WINDOW *newpad(int,int);                                /* implemented */
-extern SCREEN *newterm(const char *,FILE *,FILE *);    /* implemented */
+extern SCREEN *newterm(NCURSES_CONST char *,FILE *,FILE *);    /* implemented */
 extern WINDOW *newwin(int,int,int,int);                        /* implemented */
 extern int nl(void);                                   /* implemented */
 extern int nocbreak(void);                             /* implemented */
 extern int nodelay(WINDOW *,bool);                     /* implemented */
 extern int noecho(void);                               /* implemented */
 extern int nonl(void);                                 /* implemented */
-extern int noqiflush(void);                            /* implemented */
+extern void noqiflush(void);                           /* implemented */
 extern int noraw(void);                                        /* implemented */
 extern int notimeout(WINDOW *,bool);                   /* implemented */
 extern int overlay(const WINDOW*,WINDOW *);            /* implemented */
@@ -654,11 +656,11 @@ extern int pecho_wchar(WINDOW *, const cchar_t *);        /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int pnoutrefresh(WINDOW*,int,int,int,int,int,int);/* implemented */
 extern int prefresh(WINDOW *,int,int,int,int,int,int); /* implemented */
-extern int printw(const char *,...)                    /* implemented */
+extern int printw(NCURSES_CONST char *,...)            /* implemented */
                GCC_PRINTFLIKE(1,2);
 extern int putp(const char *);                         /* implemented */
 extern int putwin(WINDOW *, FILE *);                   /* implemented */
-extern int qiflush(void);                              /* implemented */
+extern void qiflush(void);                             /* implemented */
 extern int raw(void);                                  /* implemented */
 extern int redrawwin(WINDOW *);                                /* generated */
 extern int refresh(void);                              /* generated */
@@ -667,7 +669,7 @@ extern int reset_prog_mode(void);                   /* implemented */
 extern int reset_shell_mode(void);                     /* implemented */
 extern int ripoffline(int, int (*init)(WINDOW *, int));        /* implemented */
 extern int savetty(void);                              /* implemented */
-extern int scanw(const char *,...)                     /* implemented */
+extern int scanw(NCURSES_CONST char *,...)             /* implemented */
                GCC_SCANFLIKE(1,2);
 extern int scr_dump(const char *);                     /* implemented */
 extern int scr_init(const char *);                     /* implemented */
@@ -677,18 +679,19 @@ extern int scrollok(WINDOW *,bool);                       /* implemented */
 extern int scr_restore(const char *);                  /* implemented */
 extern int scr_set(const char *);                      /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int setcchar(cchar_t *, wchar_t *, attr_t, short, const void *);        /* missing */
+extern int setcchar(cchar_t *, const wchar_t *, const attr_t, short, const void *);    /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int setscrreg(int,int);                         /* generated */
 extern SCREEN *set_term(SCREEN *);                     /* implemented */
-extern int slk_attroff(const attr_t);                  /* implemented */
-extern int slk_attr_off(attr_t);                       /* generated:WIDEC */
-extern int slk_attron(const attr_t);                   /* implemented */
-extern int slk_attr_on(attr_t);                                /* generated:WIDEC */
-extern int slk_attrset(const attr_t);                  /* implemented */
-extern attr_t slk_attr(void);                           /* implemented */
-extern int slk_attr_set(attr_t);                       /* generated:WIDEC */
+extern int slk_attroff(const chtype);                  /* implemented */
+extern int slk_attr_off(const attr_t, void *);         /* generated:WIDEC */
+extern int slk_attron(const chtype);                   /* implemented */
+extern int slk_attr_on(attr_t,void*);                  /* generated:WIDEC */
+extern int slk_attrset(const chtype);                  /* implemented */
+extern attr_t slk_attr(void);                          /* implemented */
+extern int slk_attr_set(const attr_t,short,void*);     /* implemented */
 extern int slk_clear(void);                            /* implemented */
+extern int slk_color(short);                           /* implemented */
 extern int slk_init(int);                              /* implemented */
 extern char *slk_label(int);                           /* implemented */
 extern int slk_noutrefresh(void);                      /* implemented */
@@ -697,7 +700,7 @@ extern int slk_restore(void);                               /* implemented */
 extern int slk_set(int,const char *,int);              /* implemented */
 extern int slk_touch(void);                            /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int slk_wset(int, wchar_t *, int);              /* missing */
+extern int slk_wset(int, const wchar_t *, int);                /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int standout(void);                             /* generated */
 extern int standend(void);                             /* generated */
@@ -708,31 +711,32 @@ extern int syncok(WINDOW *, bool);                        /* implemented */
 extern chtype termattrs(void);                         /* implemented */
 extern attr_t term_attrs(void);                                /* missing */
 extern char *termname(void);                           /* implemented */
-extern int tigetflag(const char *);                    /* implemented */
-extern int tigetnum(const char *);                     /* implemented */
-extern char *tigetstr(const char *);                   /* implemented */
-extern int timeout(int);                               /* generated */
+extern int tigetflag(NCURSES_CONST char *);            /* implemented */
+extern int tigetnum(NCURSES_CONST char *);             /* implemented */
+extern char *tigetstr(NCURSES_CONST char *);           /* implemented */
+extern void timeout(int);                              /* generated */
+extern char *tparm(NCURSES_CONST char *, ...);         /* implemented */
 extern int typeahead(int);                             /* implemented */
 extern int ungetch(int);                               /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int unget_wch(const wchar_t *);                 /* missing */
+extern int unget_wch(const wchar_t);                   /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int untouchwin(WINDOW *);                       /* generated */
 extern void use_env(bool);                             /* implemented */
 extern int vidattr(chtype);                            /* implemented */
-extern int vid_attr(attr_t);                           /* generated:WIDEC */
+extern int vid_attr(attr_t, short, void *);            /* generated:WIDEC */
 extern int vidputs(chtype, int (*)(int));              /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int vid_puts(attr_t, int (*)(int));             /* missing */
+extern int vid_puts(attr_t, short, void *, int (*)(int)); /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int vline(chtype, int);                         /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
 extern int vline_set(const cchar_t *, int);            /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
-extern int vwprintw(WINDOW *,const char *,va_list);    /* implemented */
-extern int vw_printw(WINDOW *,const char *,va_list);   /* generated */
-extern int vwscanw(WINDOW *,const char *,va_list);     /* implemented */
-extern int vw_scanw(WINDOW *,const char *,va_list);    /* generated */
+extern int vwprintw(WINDOW *, NCURSES_CONST char *,va_list);   /* implemented */
+extern int vw_printw(WINDOW *, NCURSES_CONST char *,va_list);  /* generated */
+extern int vwscanw(WINDOW *, NCURSES_CONST char *,va_list);    /* implemented */
+extern int vw_scanw(WINDOW *, NCURSES_CONST char *,va_list);   /* generated */
 extern int waddch(WINDOW *, const chtype);             /* implemented */
 extern int waddchnstr(WINDOW *,const chtype *const,int); /* implemented */
 extern int waddchstr(WINDOW *,const chtype *);         /* generated */
@@ -740,6 +744,7 @@ extern int waddnstr(WINDOW *,const char *const,int);        /* implemented */
 extern int waddstr(WINDOW *,const char *);             /* generated */
 #ifdef _XOPEN_SOURCE_EXTENDED
 extern int waddwstr(WINDOW *,const wchar_t *);         /* missing */
+extern int waddnwstr(WINDOW *,const wchar_t *,int);    /* missing */
 extern int wadd_wch(WINDOW *,const cchar_t *);         /* missing */
 extern int wadd_wchnstr(WINDOW *,const cchar_t *,int); /* missing */
 extern int wadd_wchstr(WINDOW *,const cchar_t *);      /* missing */
@@ -747,25 +752,25 @@ extern int wadd_wchstr(WINDOW *,const cchar_t *); /* missing */
 extern int wattron(WINDOW *, int);                     /* generated */
 extern int wattroff(WINDOW *, int);                    /* generated */
 extern int wattrset(WINDOW *, int);                    /* generated */
-extern attr_t wattr_get(WINDOW *);                     /* generated */
-extern int wattr_on(WINDOW *, const attr_t);           /* implemented */
-extern int wattr_off(WINDOW *, const attr_t);          /* implemented */
-extern int wattr_set(WINDOW *, attr_t);                        /* generated */
+extern int wattr_get(WINDOW *, attr_t *, short *, void *);     /* generated */
+extern int wattr_on(WINDOW *, NCURSES_CONST attr_t, void *);   /* implemented */
+extern int wattr_off(WINDOW *, NCURSES_CONST attr_t, void *);  /* implemented */
+extern int wattr_set(WINDOW *, attr_t, short, void *);         /* generated */
 extern int wbkgd(WINDOW *,const chtype);               /* implemented */
 extern void wbkgdset(WINDOW *,chtype);                 /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int wbkgrndset(WINDOW *,const cchar_t *);       /* missing */
+extern void wbkgrndset(WINDOW *,const cchar_t *);      /* missing */
 extern int wbkgrnd(WINDOW *,const cchar_t *);          /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int wborder(WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);  /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern int wborder_set(WINDOW *,cchar_t,cchar_t,cchar_t,cchar_t,cchar_t,cchar_t,cchar_t,cchar_t);      /* missing */
+extern int wborder_set(WINDOW *,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*);      /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int wchgat(WINDOW *, int, attr_t, short, const void *);/* implemented */
 extern int wclear(WINDOW *);                           /* implemented */
 extern int wclrtobot(WINDOW *);                                /* implemented */
 extern int wclrtoeol(WINDOW *);                                /* implemented */
-extern int wcolor_set(WINDOW*,short,void*);            /* missing */
+extern int wcolor_set(WINDOW*,short,void*);            /* implemented */
 extern void wcursyncup(WINDOW *);                      /* implemented */
 extern int wdelch(WINDOW *);                           /* implemented */
 extern int wdeleteln(WINDOW *);                                /* generated */
@@ -791,7 +796,7 @@ extern int whline(WINDOW *, chtype, int);           /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
 extern int whline_set(WINDOW *, const cchar_t *, int); /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
-extern chtype winch(WINDOW *);                         /* generated */
+extern chtype winch(WINDOW *);                         /* implemented */
 extern int winchnstr(WINDOW *, chtype *, int);         /* implemented */
 extern int winchstr(WINDOW *, chtype *);               /* generated */
 extern int winnstr(WINDOW *, char *, int);             /* implemented */
@@ -809,17 +814,17 @@ extern int wins_nwstr(WINDOW *, const wchar_t *, int);    /* missing */
 extern int wins_wch(WINDOW *, const cchar_t *);                /* missing */
 extern int wins_wstr(WINDOW *, const wchar_t *);       /* missing */
 extern int winwstr(WINDOW *, wchar_t *);               /* missing */
-extern int win_wch(WINDOW *, const cchar_t *);         /* missing */
-extern int win_wchnstr(WINDOW *, const cchar_t *, int);        /* missing */
-extern int win_wchstr(WINDOW *, const cchar_t *);      /* missing */
+extern int win_wch(WINDOW *, NCURSES_CONST cchar_t *); /* missing */
+extern int win_wchnstr(WINDOW *, NCURSES_CONST cchar_t *, int);        /* missing */
+extern int win_wchstr(WINDOW *, NCURSES_CONST cchar_t *);      /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int wmove(WINDOW *,int,int);                    /* implemented */
 extern int wnoutrefresh(WINDOW *);                     /* implemented */
-extern int wprintw(WINDOW *,const char *,...)          /* implemented */
+extern int wprintw(WINDOW *, NCURSES_CONST char *,...) /* implemented */
                GCC_PRINTFLIKE(2,3);
 extern int wredrawln(WINDOW *,int,int);                        /* implemented */
 extern int wrefresh(WINDOW *);                         /* implemented */
-extern int wscanw(WINDOW *,const char *,...)           /* implemented */
+extern int wscanw(WINDOW *, NCURSES_CONST char *,...)  /* implemented */
                GCC_SCANFLIKE(2,3);
 extern int wscrl(WINDOW *,int);                                /* implemented */
 extern int wsetscrreg(WINDOW *,int,int);               /* implemented */
@@ -827,16 +832,18 @@ extern int wstandout(WINDOW *);                           /* generated */
 extern int wstandend(WINDOW *);                                /* generated */
 extern void wsyncdown(WINDOW *);                       /* implemented */
 extern void wsyncup(WINDOW *);                         /* implemented */
-extern int wtimeout(WINDOW *,int);                     /* implemented */
+extern void wtimeout(WINDOW *,int);                    /* implemented */
 extern int wtouchln(WINDOW *,int,int,int);             /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
-extern wchar_t wunctrl(cchar_t *);                     /* missing */
+extern wchar_t *wunctrl(cchar_t *);                    /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 extern int wvline(WINDOW *,chtype,int);                        /* implemented */
 #ifdef _XOPEN_SOURCE_EXTENDED
 extern int wvline_set(WINDOW *, const cchar_t *, int); /* missing */
 #endif /* _XOPEN_SOURCE_EXTENDED */
 
+extern bool mouse_trafo(int*, int*, bool);              /* generated */
+
 /* attributes */
 
 #define NCURSES_BITS(mask,shift) ((mask) << ((shift) + @cf_cv_widec_shift@))
@@ -897,8 +904,12 @@ extern int wvline_set(WINDOW *, const cchar_t *, int);     /* missing */
 #define getbegyx(win,y,x)      (y = (win)?(win)->_begy:ERR, x = (win)?(win)->_begx:ERR)
 #define getmaxyx(win,y,x)      (y = (win)?((win)->_maxy + 1):ERR, x = (win)?((win)->_maxx + 1):ERR)
 #define getparyx(win,y,x)      (y = (win)?(win)->_pary:ERR, x = (win)?(win)->_parx:ERR)
-#define getsyx(y,x)            getyx(stdscr, y, x)
-#define setsyx(y,x)            (stdscr->_cury = y, stdscr->_curx = x)
+#define getsyx(y,x) do { if(newscr->_leaveok) (y)=(x)=-1; \
+                        else getyx(newscr,(y),(x)); \
+                   } while(0)
+#define setsyx(y,x) do { if((y)==-1 && (x)==-1) newscr->_leaveok=TRUE; \
+                        else {newscr->_leaveok=FALSE;wmove(newscr,(y),(x));} \
+                   } while(0)
 
 /* It seems older SYSV curses versions define these */
 #define getattrs(win)          ((win)?(win)->_attrs:A_NORMAL)
@@ -911,14 +922,13 @@ extern int wvline_set(WINDOW *, const cchar_t *, int);    /* missing */
 #define getparx(win)           ((win)?(win)->_parx:ERR)
 #define getpary(win)           ((win)?(win)->_pary:ERR)
 
-#define winch(win)             ((win)?(win)->_line[(win)->_cury].text[(win)->_curx]:0)
-#define wstandout(win)         (wattr_set(win,A_STANDOUT))
-#define wstandend(win)         (wattr_set(win,A_NORMAL))
-#define wattr_set(win,at)      ((win)?((win)->_attrs = (at)):0)
+#define wstandout(win)         (wattrset(win,A_STANDOUT))
+#define wstandend(win)         (wattrset(win,A_NORMAL))
+#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
 
-#define wattron(win,at)                wattr_on(win, at)
-#define wattroff(win,at)       wattr_off(win, at)
-#define wattrset(win,at)       wattr_set(win, at)
+#define wattron(win,at)                wattr_on(win, at, (void *)0)
+#define wattroff(win,at)       wattr_off(win, at, (void *)0)
+#define wattrset(win,at)       ((win)->_attrs = (at))
 
 #define scroll(win)            wscrl(win,1)
 
@@ -956,6 +966,7 @@ extern int wvline_set(WINDOW *, const cchar_t *, int);      /* missing */
 #define clear()                        wclear(stdscr)
 #define clrtobot()                     wclrtobot(stdscr)
 #define clrtoeol()                     wclrtoeol(stdscr)
+#define color_set(c,o)         wcolor_set(stdscr,c,o)
 #define delch()                        wdelch(stdscr)
 #define deleteln()                     winsdelln(stdscr,-1)
 #define echochar(c)            wechochar(stdscr,c)
@@ -1034,14 +1045,14 @@ extern int wvline_set(WINDOW *, const cchar_t *, int);  /* missing */
  * winnwstr(), wins_nwstr(), wins_wch(), win_wch(), win_wchnstr().
  * Except for wchgat(), these are not yet implemented.  They will be someday.
  */
-#define add_wch(c)                     wadd_wch(stsdscr,c)
+#define add_wch(c)                     wadd_wch(stdscr,c)
 #define addnwstr(wstr,n)               waddnwstr(stdscr,wstr,n)
 #define addwstr(wstr,n)                        waddnwstr(stdscr,wstr,-1)
-#define attr_get()                     wattr_get(stdscr)
-#define attr_off(a)                    wattr_off(stdscr,a)
-#define attr_on(a)                     wattr_on(stdscr,a)
-#define attr_set(a)                    wattr_set(stdscr,a)
-#define box_set(w,v,h)                 wborder_set(w,v,v,h,h,0,0,0,9)
+#define attr_get(a,pair,opts)          wattr_get(stdscr,a,pair,opts)
+#define attr_off(a,opts)               wattr_off(stdscr,a,opts)
+#define attr_on(a,opts)                        wattr_on(stdscr,a,opts)
+#define attr_set(a,pair,opts)          wattr_set(stdscr,a,pair,opts)
+#define box_set(w,v,h)                 wborder_set(w,v,v,h,h,0,0,0,0)
 #define chgat(n,a,c,o)                 wchgat(stdscr,n,a,c,o)
 #define echo_wchar(c)                  wecho_wchar(stdscr,c)
 #define getbkgd(win)                   ((win)->_bkgd)
@@ -1076,11 +1087,11 @@ extern int wvline_set(WINDOW *, const cchar_t *, int);  /* missing */
 #define mvinwstr(y,x,c)                        mvwinnwstr(stdscr,y,x,c,-1)
 #define mvvline_set(y,x,c,n)           mvwvline_set(stdscr,y,x,c,n)
 
-#define mvwadd_wch(y,x,win,c)          (wmove(win,y,x) == ERR ? ERR : wadd_wch(stsdscr,c))
-#define mvwaddnwstr(y,x,win,wstr,n)    (wmove(win,y,x) == ERR ? ERR : waddnwstr(stdscr,wstr,n))
-#define mvwaddwstr(y,x,win,wstr,n)     (wmove(win,y,x) == ERR ? ERR : waddnwstr(stdscr,wstr,-1))
+#define mvwadd_wch(win,y,x,c)          (wmove(win,y,x) == ERR ? ERR : wadd_wch(stdscr,c))
+#define mvwaddnwstr(win,y,x,wstr,n)    (wmove(win,y,x) == ERR ? ERR : waddnwstr(stdscr,wstr,n))
+#define mvwaddwstr(win,y,x,wstr,n)     (wmove(win,y,x) == ERR ? ERR : waddnwstr(stdscr,wstr,-1))
 #define mvwchgat(win,y,x,n,a,c,o)      (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o))
-#define mvwget_wch(win,y,x,c)          (wmove(win,y,x) == ERR ? ERR : wget_wch(win,n))
+#define mvwget_wch(win,y,x,c)          (wmove(win,y,x) == ERR ? ERR : wget_wch(win,c))
 #define mvwget_wstr(win,y,x,t)         (wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,-1))
 #define mvwgetn_wstr(win,y,x,t,n)      (wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,n))
 #define mvwhline_set(win,y,x,c,n)      (wmove(win,y,x) == ERR ? ERR : whline_set(win,c,n))
@@ -1089,18 +1100,20 @@ extern int wvline_set(WINDOW *, const cchar_t *, int);  /* missing */
 #define mvwin_wchstr(win,y,x,c)                (wmove(win,y,x) == ERR ? ERR : win_wchnstr(stdscr,c,-1))
 #define mvwinnwstr(win,y,x,c,n)                (wmove(win,y,x) == ERR ? ERR : winnwstr(stdscr,c,n))
 #define mvwins_nwstr(win,y,x,t,n)      (wmove(win,y,x) == ERR ? ERR : wins_nwstr(stdscr,t,n))
-#define mvwins_wch(win,y,x,c)          (wmove(win,y,x) == ERR ? ERR : wins_wch(c))
+#define mvwins_wch(win,y,x,c)          (wmove(win,y,x) == ERR ? ERR : wins_wch(stdscr,c))
 #define mvwins_wstr(win,y,x,t)         (wmove(win,y,x) == ERR ? ERR : wins_nwstr(stdscr,t,-1))
 #define mvwinwstr(win,y,x,c)           (wmove(win,y,x) == ERR ? ERR : winnwstr(stdscr,c,-1))
 #define mvwvline_set(win,y,x,c,n)      (wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n))
 
-#define slk_attr_off(a)                        slk_attroff(a)
-#define slk_attr_on(a)                 slk_attron(a)
-#define slk_attr_set(a)                        slk_attrset(a)
-#define vid_attr(a)                    vidattr(a)
-#define vline_set(c,n)                 vhline_set(stdscr,c,n)
+#define slk_attr_off(a,v)              ((v) ? ERR : slk_attroff(a))
+#define slk_attr_on(a,v)               ((v) ? ERR : slk_attron(a))
+
+#define vid_attr(a,pair,opts)          vidattr(a)
+#define vline_set(c,n)                 wvline_set(stdscr,c,n)
 #define waddwstr(win,wstr,n)           waddnwstr(win,wstr,-1)
-#define wattr_get(win)                 ((win)->_attrs)
+#define wattr_get(win,a,p,opts)                ((void)((a) != 0 && (*(a) = (win)->_attrs)), \
+                                        (void)((p) != 0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \
+                                        OK)
 #define wget_wstr(w,t)                 wgetn_wstr(w,t,-1)
 #define win_wchstr(w,c)                        win_wchnstr(w,c,-1)
 #define wins_wstr(w,t)                 wins_nwstr(w,t,-1)
@@ -1280,6 +1293,9 @@ extern int ungetmouse(MEVENT *);
 extern mmask_t mousemask(mmask_t, mmask_t *);
 extern bool wenclose(const WINDOW *, int, int);
 extern int mouseinterval(int);
+extern bool wmouse_trafo(const WINDOW* win,int* y, int* x, bool to_screen);
+
+#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
 
 /* other non-XSI functions */
 
@@ -1292,7 +1308,7 @@ extern void _tracef(const char *, ...) GCC_PRINTFLIKE(1,2);
 extern void _tracedump(const char *, WINDOW *);
 extern char *_traceattr(attr_t);
 extern char *_traceattr2(int, chtype);
-extern char *_tracebits(void);
+extern char *_nc_tracebits(void);
 extern char *_tracechar(const unsigned char);
 extern char *_tracechtype(chtype);
 extern char *_tracechtype2(int, chtype);
index 54a706e142852ccd468be036f9f3dbc26be19017..1e23a97720e03cf454a37d7ce57484331b7e9a68 100644 (file)
@@ -29,7 +29,7 @@
 /****************************************************************************
  *  Author: Thomas E. Dickey <dickey@clark.net> 1996,1997                   *
  ****************************************************************************/
-/* $Id: nc_alloc.h,v 1.5 1998/02/11 12:13:45 tom Exp $ */
+/* $Id: nc_alloc.h,v 1.7 1999/04/03 23:15:13 tom Exp $ */
 
 #ifndef NC_ALLOC_included
 #define NC_ALLOC_included 1
 #define NO_LEAKS 0
 #endif
 
-#ifndef HAVE_NC_FREEALL
-#define HAVE_NC_FREEALL 0
-#endif
-
-#if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS || HAVE_NC_FREEALL
+#if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS
+#define HAVE_NC_FREEALL 1
 struct termtype;
 extern void _nc_free_and_exit(int) GCC_NORETURN;
 extern void _nc_free_tparm(void);
 extern void _nc_leaks_dump_entry(void);
-extern void _nc_free_termtype(struct termtype *, int);
 #define ExitProgram(code) _nc_free_and_exit(code)
 #endif
 
+#ifndef HAVE_NC_FREEALL
+#define HAVE_NC_FREEALL 0
+#endif
+
 #ifndef ExitProgram
 #define ExitProgram(code) return code
 #endif
index ada2791b830a540810f8148e470df9d01cde552a..a19b6010af767de1e941587fe4e7b550fd68bfe7 100644 (file)
 #ifndef _TERM_ENTRY_H
 #define _TERM_ENTRY_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <term.h>
+
 #define MAX_USES       32
 
 typedef struct entry {
@@ -57,6 +63,28 @@ typedef struct entry {
 }
 ENTRY;
 
+#if NCURSES_XNAMES
+#define NUM_BOOLEANS(tp) (tp)->num_Booleans
+#define NUM_NUMBERS(tp)  (tp)->num_Numbers
+#define NUM_STRINGS(tp)  (tp)->num_Strings
+#define EXT_NAMES(tp,i,limit,index,table) (i >= limit) ? tp->ext_Names[index] : table[i]
+#else
+#define NUM_BOOLEANS(tp) BOOLCOUNT
+#define NUM_NUMBERS(tp)  NUMCOUNT
+#define NUM_STRINGS(tp)  STRCOUNT
+#define EXT_NAMES(tp,i,limit,index,table) table[i]
+#endif
+
+#define NUM_EXT_NAMES(tp) ((tp)->ext_Booleans + (tp)->ext_Numbers + (tp)->ext_Strings)
+
+#define for_each_boolean(n,tp) for(n = 0; n < NUM_BOOLEANS(tp); n++)
+#define for_each_number(n,tp)  for(n = 0; n < NUM_NUMBERS(tp);  n++)
+#define for_each_string(n,tp)  for(n = 0; n < NUM_STRINGS(tp);  n++)
+
+#define ExtBoolname(tp,i,names) EXT_NAMES(tp, i, BOOLCOUNT, (i - (tp->num_Booleans - tp->ext_Booleans)), names)
+#define ExtNumname(tp,i,names)  EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names)
+#define ExtStrname(tp,i,names)  EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names)
+
 extern ENTRY   *_nc_head, *_nc_tail;
 #define for_entry_list(qp)     for (qp = _nc_head; qp; qp = qp->next)
 
@@ -64,13 +92,45 @@ extern ENTRY        *_nc_head, *_nc_tail;
 
 #define NULLHOOK        (bool(*)(ENTRY *))0
 
+/*
+ * Note that WANTED and PRESENT are not simple inverses!  If a capability
+ * has been explicitly cancelled, it's not considered WANTED.
+ */
+#define WANTED(s)      ((s) == ABSENT_STRING)
+#define PRESENT(s)     (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING))
+
+#define ANDMISSING(p,q) \
+               {if (PRESENT(p) && !PRESENT(q)) _nc_warning(#p " but no " #q);}
+
+#define PAIRED(p,q) \
+               { \
+               if (PRESENT(q) && !PRESENT(p)) \
+                       _nc_warning(#q " but no " #p); \
+               if (PRESENT(p) && !PRESENT(q)) \
+                       _nc_warning(#p " but no " #q); \
+               }
+
 /* alloc_entry.c: elementary allocation code */
-extern void _nc_init_entry(TERMTYPE *const);
+extern ENTRY *_nc_copy_entry(ENTRY *oldp);
 extern char *_nc_save_str(const char *const);
+extern void _nc_init_entry(TERMTYPE *const);
 extern void _nc_merge_entry(TERMTYPE *const, TERMTYPE *const);
 extern void _nc_wrap_entry(ENTRY *const);
 
+/* alloc_ttype.c: elementary allocation code */
+extern void _nc_align_termtype(TERMTYPE *, TERMTYPE *);
+extern void _nc_copy_termtype(TERMTYPE *, TERMTYPE *);
+
+/* free_ttype.c: elementary allocation code */
+extern void _nc_free_termtype(TERMTYPE *);
+
+/* lib_acs.c */
+extern void _nc_init_acs(void);        /* corresponds to traditional 'init_acs()' */
+
 /* parse_entry.c: entry-parsing code */
+#if NCURSES_XNAMES
+extern bool _nc_user_definable;
+#endif
 extern int _nc_parse_entry(ENTRY *, int, bool);
 extern int _nc_capcmp(const char *, const char *);
 
@@ -83,7 +143,13 @@ extern void _nc_read_entry_source(FILE*, char*, int, bool, bool (*)(ENTRY*));
 extern bool _nc_entry_match(char *, char *);
 extern int _nc_resolve_uses(void);
 extern void _nc_free_entries(ENTRY *);
+extern void (*_nc_check_termtype)(TERMTYPE *);
 
-#endif /* _TERM_ENTRY_H */
+/* trace_xnames.c */
+extern void _nc_trace_xnames(TERMTYPE *);
 
-/* term_entry.h ends here */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TERM_ENTRY_H */
index 618b0a9b8f1c2b2b285515332b2a4b2df49cb198..5c6c07a8e8d055a01117d1bc325e3628f209e401 100644 (file)
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-/* $Id: termcap.h.in,v 1.5 1998/02/11 12:13:45 tom Exp $ */
+/* $Id: termcap.h.in,v 1.10 1999/01/09 22:38:04 Uchiyama.Yasushi Exp $ */
 
-#ifndef _TERMCAP_H
-#define _TERMCAP_H     1
+#ifndef _NCU_TERMCAP_H
+#define _NCU_TERMCAP_H 1
 
 #undef  NCURSES_VERSION
 #define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@"
@@ -45,23 +45,27 @@ extern "C"
 #endif /* __cplusplus */
 
 #include <sys/types.h>
+@OSPEED_INCLUDES@ 
+
+#undef  NCURSES_CONST 
+#define NCURSES_CONST @NCURSES_CONST@ 
 
 extern char PC;
 extern char *UP;
 extern char *BC;
-extern short ospeed;
+extern @OSPEED_TYPE@ ospeed; 
 
+#if !defined(_NCU_TERM_H)
+extern char *tgetstr(NCURSES_CONST char *, char **);
+extern char *tgoto(const char *, int, int);
 extern int tgetent(char *, const char *);
-extern int tgetflag(const char *);
-extern int tgetnum(const char *);
-extern char *tgetstr(const char *, char **);
-
+extern int tgetflag(NCURSES_CONST char *);
+extern int tgetnum(NCURSES_CONST char *);
 extern int tputs(const char *, int, int (*)(int));
-
-extern char *tgoto(const char *, int, int);
+#endif
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* _TERMCAP_H */
+#endif /* _NCU_TERMCAP_H */
index e8660958dc0b14a792c9bb60c310701eb27f9ab8..0a850540b943d257752804d836fe502460635836 100644 (file)
@@ -97,7 +97,12 @@ extern "C" {
 /* location of user's personal info directory */
 #define PRIVATE_INFO   "%s/.terminfo"  /* plug getenv("HOME") into %s */
 
-#define DEBUG(n, a)    if (_nc_tracing & (1 << (n - 1))) _tracef a 
+#ifdef TRACE
+#define DEBUG(n, a)    if (_nc_tracing & (1 << (n - 1))) _tracef a
+#else
+#define DEBUG(n, a)    /*nothing*/
+#endif
+
 extern unsigned _nc_tracing;
 extern void _nc_tracef(char *, ...) GCC_PRINTFLIKE(1,2);
 extern const char *_nc_visbuf(const char *);
@@ -133,6 +138,36 @@ struct token
 
 extern struct token    _nc_curr_token;
 
+       /*
+        * List of keynames with their corresponding code.
+        */
+struct kn {
+       const char *name;
+       int code;
+};
+
+extern const struct kn _nc_key_names[];
+
+       /*
+        * Offsets to string capabilities, with the corresponding functionkey
+        * codes.
+        */
+struct tinfo_fkeys {
+       unsigned offset;
+       chtype code;
+       };
+
+#ifdef BROKEN_LINKER
+
+#define        _nc_tinfo_fkeys _nc_tinfo_fkeysf()
+extern struct tinfo_fkeys *_nc_tinfo_fkeysf(void);
+
+#else
+
+extern struct tinfo_fkeys _nc_tinfo_fkeys[];
+
+#endif
+
        /*
         * The file comp_captab.c contains an array of these structures, one
         * per possible capability.  These are indexed by a hash table array of
@@ -161,6 +196,7 @@ extern const struct alias _nc_capalias_table[];
 extern const struct alias _nc_infoalias_table[];
 
 extern const struct name_table_entry   *_nc_get_table(bool);
+extern const struct name_table_entry   * const *_nc_get_hash_table(bool);
 
 #define NOTFOUND       ((struct name_table_entry *) 0)
 
@@ -174,6 +210,8 @@ extern const struct name_table_entry        *_nc_get_table(bool);
 #define CANCELLED_NUMERIC      -2
 #define CANCELLED_STRING       (char *)-1
 
+#define VALID_BOOLEAN(s) ((s) >= 0)
+#define VALID_NUMERIC(s) ((s) >= 0)
 #define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING)
 
 /* termcap entries longer than this may break old binaries */
@@ -217,7 +255,7 @@ extern void _nc_warning(const char *const,...) GCC_PRINTFLIKE(1,2);
 extern bool _nc_suppress_warnings;
 
 /* comp_expand.c: expand string into readable form */
-extern char *_nc_tic_expand(const char *, bool);
+extern char *_nc_tic_expand(const char *, bool, int);
 
 /* comp_scan.c: decode string from readable form */
 extern char _nc_trans_string(char *);
index 66b58615c022c7817883734594915be06041b7b6..a6f765a4f00cdbe1747e9e157fae09a0e0a59906 100755 (executable)
@@ -1,9 +1,38 @@
 #!/bin/sh
+#***************************************************************************
+# Copyright (c) 1998 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.                                                           *
+#***************************************************************************
+#
+# $Id: MKterminfo.sh,v 1.5 1998/09/06 00:20:01 tom Exp $
 #
 # MKterminfo.sh -- generate terminfo.5 from Caps tabular data
 #
 # This script takes terminfo.head and terminfo.tail and splices in between
-# them a table derived from the Caps master file.  Besides avoiding having
+# them a table derived from the Caps data file.  Besides avoiding having
 # the docs fall out of sync with the table, this also lets us set up tbl
 # commands for better formatting of the table.
 #
@@ -23,6 +52,12 @@ cat <<'EOF'
 .\" The magic cookie on the first line triggers this under some man programs.
 EOF
 cat $head
+
+temp=temp$$
+sorted=sorted$$
+unsorted=unsorted$$
+trap "rm -f $sorted $temp $unsorted; exit 99" 1 2 5 15
+
 sed -n <$caps "\
 /%%-STOP-HERE-%%/q
 /^#%/s///p
@@ -32,5 +67,33 @@ s/   [Y\-][B\-][C\-][G\-][E\-]\**    /       T{\ 5/
 s/     bool    /       /p
 s/     num     /       /p
 s/     str     /       /p
-" | tr "\ 5" "\012"
+" |sed -e 's/^$/../' | tr "\134" "\006" >$unsorted
+
+rm -f $sorted
+rm -f $temp
+saved=no
+while true
+do
+       read data
+       test -z "$data" && break
+       case "$data" in #(vi
+       *\ 5*) #(vi
+               echo "$data" >>$temp
+               saved=yes
+               ;;
+       *)
+               if test $saved = yes ; then
+                       saved=no
+                       sort $temp >>$sorted
+                       rm -f $temp
+               fi
+               echo "$data" >>$sorted
+               ;;
+       esac
+done <$unsorted
+test $saved = yes && sort $temp >>$sorted
+
+sed -e 's/^\.\.$//' $sorted | tr "\005\006" "\012\134"
 cat $tail
+
+rm -f $sorted $temp $unsorted
index ee031f73ac1a7ed9d8151b84bff0cb9599c01b51..70e278cbf6f3f08fdb80ec959b3b8ca9e7f0f51a 100644 (file)
@@ -1,11 +1,40 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: captoinfo.1m,v 1.13 1998/12/26 19:57:11 tom Exp $
 .TH captoinfo 1M ""
 .ds n 5
 .ds d @DATADIR@/terminfo
 .SH NAME
 \fBcaptoinfo\fR - convert a \fItermcap\fR description into a \fIterminfo\fR description
 .SH SYNOPSIS
-\fBcaptoinfo\fR [\fB-v\fIn\fR \fIwidth\fR]  [\fB-V\fR] [\fB-1\fR] [\fB-w\fR \fIwidth\fR] \fIfile\fR . . .
+\fBcaptoinfo\fR [\fB-v\fR\fIn\fR \fIwidth\fR]  [\fB-V\fR] [\fB-1\fR] [\fB-w\fR \fIwidth\fR] \fIfile\fR . . .
 .SH DESCRIPTION
 \fBcaptoinfo\fR looks in \fIfile\fR for \fBtermcap\fR descriptions.  For each
 one found, an equivalent \fBterminfo\fR description is written to standard
@@ -18,7 +47,7 @@ the terminal whose name is specified in the environment variable \fBTERM\fR is
 extracted from that file.  If the environment variable \fBTERMCAP\fR is not
 set, then the file \fB\*d\fR is read.
 .TP 5
-\fB-v\fR 
+\fB-v\fR
 print out tracing information on standard error as the program runs.
 .TP 5
 \fB-V\fR
@@ -55,7 +84,7 @@ BO    mr      AT&T    enter_reverse_mode
 CI     vi      AT&T    cursor_invisible
 CV     ve      AT&T    cursor_normal
 DS     mh      AT&T    enter_dim_mode
-EE     me      AT&T    exit_attribute_mode     
+EE     me      AT&T    exit_attribute_mode
 FE     LF      AT&T    label_on
 FL     LO      AT&T    label_off
 XS     mk      AT&T    enter_secure_mode
@@ -139,7 +168,7 @@ font3       s3ds
 Additionally, the AIX \fBbox1\fR capability will be automatically translated to
 an \fBacsc\fR string.
 .PP
-Hewlett-Packard's terminfo library supports two nonstandard terminfo 
+Hewlett-Packard's terminfo library supports two nonstandard terminfo
 capabilities \fBmeml\fR (memory lock) and \fBmemu\fR (memory unlock).
 These will be discarded with a warning message.
 .SH NOTES
index 28317e242d661fc6cce3aea3422eb018dca38a2d..71d2883b747e49190f30e8742e51924e6af0c00f 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: clear.1,v 1.2 1998/03/11 21:12:53 juergen Exp $
 .TH clear 1 ""
 .ds n 5
 .SH NAME
index 9d3ac6f4d3329ef6ae9563f448e2761e0917ae71..7cdfd7835355b0616af470dbd514a9f58d737188 100644 (file)
@@ -1,5 +1,33 @@
 '\" t
-.\" $Id: curs_addch.3x,v 1.10 1997/12/13 22:37:23 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_addch.3x,v 1.16 1999/02/07 03:47:42 tom Exp $
 .TH curs_addch 3X ""
 .SH NAME
 \fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR,
@@ -37,8 +65,7 @@ on the last line).  Tabs are considered to be at every eighth column.
 If \fIch\fR is any control character other than tab, newline, or backspace, it
 is drawn in \fB^\fR\fIX\fR notation.  Calling \fBwinch\fR after adding a
 control character does not return the character itself, but instead returns
-the ^-representation of the control character.  (To emit control characters
-literally, use \fBechochar\fR.)
+the ^-representation of the control character.
 
 Video attributes can be combined with a character argument passed to
 \fBaddch\fR or related functions by logical-ORing them into the character.
@@ -65,38 +92,38 @@ l l l
 _ _ _
 l l l.
 \fIName\fR     \fIDefault\fR   \fIDescription\fR
-ACS_ULCORNER   +       upper left-hand corner
-ACS_LLCORNER   +       lower left-hand corner
-ACS_URCORNER   +       upper right-hand corner
-ACS_LRCORNER   +       lower right-hand corner
-ACS_RTEE       +       right tee
-ACS_LTEE       +       left tee
+ACS_BLOCK      #       solid square block
+ACS_BOARD      #       board of squares
 ACS_BTEE       +       bottom tee
-ACS_TTEE       +       top tee
-ACS_HLINE      -       horizontal line
-ACS_VLINE      |       vertical line
-ACS_PLUS       +       plus
-ACS_S1 -       scan line 1
-ACS_S9 \&_     scan line 9
-ACS_DIAMOND    +       diamond
+ACS_BULLET     o       bullet
 ACS_CKBOARD    :       checker board (stipple)
+ACS_DARROW     v       arrow pointing down
 ACS_DEGREE     '       degree symbol
-ACS_PLMINUS    #       plus/minus
-ACS_BULLET     o       bullet
+ACS_DIAMOND    +       diamond
+ACS_GEQUAL     >       greater-than-or-equal-to
+ACS_HLINE      -       horizontal line
+ACS_LANTERN    #       lantern symbol
 ACS_LARROW     <       arrow pointing left
+ACS_LEQUAL     <       less-than-or-equal-to
+ACS_LLCORNER   +       lower left-hand corner
+ACS_LRCORNER   +       lower right-hand corner
+ACS_LTEE       +       left tee
+ACS_NEQUAL     !       not-equal
+ACS_PI *       greek pi
+ACS_PLMINUS    #       plus/minus
+ACS_PLUS       +       plus
 ACS_RARROW     >       arrow pointing right
-ACS_DARROW     v       arrow pointing down
-ACS_UARROW     ^       arrow pointing up
-ACS_BOARD      #       board of squares
-ACS_LANTERN    #       lantern symbol
-ACS_BLOCK      #       solid square block
+ACS_RTEE       +       right tee
+ACS_S1 -       scan line 1
 ACS_S3 -       scan line 3
 ACS_S7 -       scan line 7
-ACS_LEQUAL     <       less-than-or-equal-to
-ACS_GEQUAL     >       greater-than-or-equal-to
-ACS_PI *       greek pi
-ACS_NEQUAL     !       not-equal
+ACS_S9 \&_     scan line 9
 ACS_STERLING   f       pound-sterling symbol
+ACS_TTEE       +       top tee
+ACS_UARROW     ^       arrow pointing up
+ACS_ULCORNER   +       upper left-hand corner
+ACS_URCORNER   +       upper right-hand corner
+ACS_VLINE      |       vertical line
 .TE
 
 .SH RETURN VALUE
@@ -107,32 +134,21 @@ descriptions.
 .SH NOTES
 Note that \fBaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR, and
 \fBechochar\fR may be macros.
-.SH EXTENSIONS
-The following extended \fBcurses\fR features are available only on PC-clone
-consoles and compatible terminals obeying the ANSI.SYS de-facto standard for
-terminal control sequences.  They are not part of XSI curses.
-
-The attribute A_ALTCHARSET actually forces literal display of PC ROM characters
-including the high-half graphics.  Your console driver may still capture or
-translate a few (such as ESC) but this feature should give you access to the
-card-suit characters, up and down-arrow, and most others in the range 0-32.
-(In a terminfo entry designed for use with \fBncurses\fR, the high-half 
-characters are obtained using this attribute with an \fBacsc\fR string in
-which the second of each pair is a high-half character.)
-
-Giving \fBwechochar\fR an argument with its high bit set will produce the
-corresponding high-half ASCII graphic (SVr4 curses also has this feature but
-does not document it).  A control-character argument, however, will not
-typically produce the corresponding graphic; characters such as CR, NL, FF and
-TAB are typically interpreted by the console driver itself, and ESC will be
-interpreted as the leader of a control sequence.
 .SH PORTABILITY
 All these functions are described in the XSI Curses standard, Issue 4.
 The defaults specified for forms-drawing characters apply in the POSIX locale.
 
-The seven ACS symbols starting with \fBACS_S3\fR were not documented in
+Some ACS symbols
+(ACS_S3,
+ACS_S7,
+ACS_LEQUAL,
+ACS_GEQUAL,
+ACS_PI,
+ACS_NEQUAL,
+ACS_STERLING)
+were not documented in
 any publicly released System V.  However, many publicly available terminfos
-include \fBacsc\fR strings in which their key characters (pryz{|}) are 
+include \fBacsc\fR strings in which their key characters (pryz{|}) are
 embedded, and a second-hand list of their character descriptions has come
 to light.  The ACS-prefixed names for them were invented for \fBncurses\fR(3X).
 .SH SEE ALSO
index fd5600dd2e1eabb22c78162bfb43e050aad88258..f552a3b0f5e8ae88b88dcec3af5e29bdd0ad0d95 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_addchstr.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
 .TH curs_addchstr 3X ""
 .SH NAME
 \fBaddchstr\fR, \fBaddchnstr\fR, \fBwaddchstr\fR,
index 3859a34b8b429dd6a13dd48e31ca564495e0da2e..fee3f8145e353199ace2ad058cf0a4687e44c5ce 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_addstr.3x,v 1.8 1998/03/11 21:12:53 juergen Exp $
 .TH curs_addstr 3X ""
 .SH NAME
 \fBaddstr\fR, \fBaddnstr\fR, \fBwaddstr\fR, \fBwaddnstr\fR,
index ed062093716aa1fd367377a0ae1eb63a1a0bc7f2..d6ad62471acf13b59a21f4cb7b89d0fe81e0ecb7 100644 (file)
@@ -1,9 +1,38 @@
 '\" t
-.\" $Id: curs_attr.3x,v 1.14 1997/12/13 22:38:46 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_attr.3x,v 1.19 1998/12/26 19:25:35 tom Exp $
 .TH curs_attr 3X ""
 .SH NAME
 \fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\fR,
-\fBattrset\fR, \fBwattrset\fR, \fBstandend\fR, \fBwstandend\fR, \fBstandout\fR,
+\fBattrset\fR, \fBwattrset\fR, \fBcolor_set\fR, \fBwcolor_set\fR,
+\fBstandend\fR, \fBwstandend\fR, \fBstandout\fR,
 \fBwstandout\fR - \fBcurses\fR character and window attribute control routines
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
 \fBint wattrset(WINDOW *win, int attrs);\fR
 .br
+\fBint color_set(short color_pair_number, void* opts);\fR
+.br
+\fBint wcolor_set(WINDOW *win, short color_pair_number,\fR
+      \fBvoid* opts);\fR
+.br
 \fBint standend(void);\fR
 .br
 \fBint wstandend(WINDOW *win);\fR
 .br
 \fBint wstandout(WINDOW *win);\fR
 .br
-\fBattr_t attr_get(void);\fR
+\fBint attr_get(attr_t *attrs, short *pair, void *opts);\fR
 .br
-\fBattr_t wattr_get(WINDOW *);\fR
+\fBint wattr_get(WINDOW *win, attr_t *attrs, short *pair,\fR
+       \fBvoid *opts);\fR
 .br
-\fBint attr_off(attr_t attrs);\fR
+\fBint attr_off(attr_t attrs, void *opts);\fR
 .br
-\fBint wattr_off(WINDOW *, attr_t attrs);\fR
+\fBint wattr_off(WINDOW *win, attr_t attrs, void *opts);\fR
 .br
-\fBint attr_on(attr_t attrs);\fR
+\fBint attr_on(attr_t attrs, void *opts);\fR
 .br
-\fBint wattr_on(WINDOW *, attr_t attrs);\fR
+\fBint wattr_on(WINDOW *win, attr_t attrs, void *opts);\fR
 .br
-\fBint attr_set(attr_t attrs);\fR
+\fBint attr_set(attr_t attrs, void *opts);\fR
 .br
-\fBint wattr_set(WINDOW *, attr_t attrs);\fR
+\fBint wattr_set(WINDOW *win, attr_t attrs, void *opts);\fR
 .br
-\fBint chgat(int n, attr_t attr, short color, const void *opts)\fR
+\fBint chgat(int n, attr_t attr, short color,\fR
+      \fBconst void *opts)\fR
 .br
-\fBint wchgat(WINDOW *, int n, attr_t attr,
-      short color, const void *opts)\fR
+\fBint wchgat(WINDOW *win, int n, attr_t attr,\fR
+      \fBshort color, const void *opts)\fR
 .br
-\fBint mvchgat(int y, int x, int n, attr_t attr,
-      short color, const void *opts)\fR
+\fBint mvchgat(int y, int x, int n, attr_t attr,\fR
+      \fBshort color, const void *opts)\fR
 .br
-\fBint mvwchgat(WINDOW *, int y, int x, int n, attr_t attr,
-      short color, const void *opts)\fR
+\fBint mvwchgat(WINDOW *win, int y, int x, int n,\fR
+      \fBattr_t attr, short color, const void *opts)\fR
 .br
 .SH DESCRIPTION
 These routines manipulate the current attributes of the named window.  The
@@ -72,8 +108,14 @@ the same as \fBattron(A_STANDOUT)\fR.  The routine \fBstandend\fR is the same
 as \fBattrset(A_NORMAL)\fR or \fBattrset(0)\fR, that is, it turns off all
 attributes.
 
-The routine \fBwattr_get\fR returns the current attribute for the given
-window; \fBattr_get\fR returns the current attribute for \fBstdscr\fR.
+The routine \fBcolor_set\fR sets the current color of the given window to the
+foreground/background combination described by the color_pair_number. The
+parameter opts is reserved for future use, applications must supply a null
+pointer.
+
+The routine \fBwattr_get\fR returns the current attribute and color pair for
+the given window; \fBattr_get\fR returns the current attribute and color pair
+for \fBstdscr\fR.
 The remaining \fBattr_\fR* functions operate exactly like the corresponding
 \fBattr\fR* functions, except that they take arguments of type \fBattr_t\fR
 rather than \fBint\fR.
@@ -112,7 +154,7 @@ l l .
 The following macro is the reverse of \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR:
 
 .DS C
-\fBPAIR_NUMBER(\fIattrs\fR) Returns the pair number associated
+\fBPAIR_NUMBER(\fR\fIattrs\fR) Returns the pair number associated
                    with the \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR attribute.
 .DE
 
index 140f255c762700e6e021ded48117a0ad06f66009..b9caaa804f764853593a7c9aa6db05515479ee4f 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_beep.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
 .TH curs_beep 3X ""
 .SH NAME
 \fBbeep\fR, \fBflash\fR - \fBcurses\fR bell and screen flash routines
index 97b4094fce4c177dafb635c582ced6c650e056ee..a256999765611ad3425118ee3b021b3833d4e4c9 100644 (file)
@@ -1,10 +1,37 @@
-.\" $Id: curs_bkgd.3x,v 1.10 1996/07/20 23:48:30 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_bkgd.3x,v 1.12 1998/03/14 23:43:31 tom Exp $
 .TH curs_bkgd 3X ""
-.
 .SH NAME
 \fBbkgdset\fR, \fBwbkgdset\fR, \fBbkgd\fR,
 \fBwbkgd\fR - \fBcurses\fR window background manipulation routines
-.
+..
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
@@ -18,7 +45,7 @@
 .br
 \fBchtype getbkgd(WINDOW *win);\fR
 .br
-.
+..
 .SH DESCRIPTION
 The \fBbkgdset\fR and \fBwbkgdset\fR routines manipulate the
 background of the named window.
@@ -49,21 +76,21 @@ appears, it is changed to the new background character.
 
 The \fBgetbkgd\fR function returns the given window's current background
 character/attribute pair.
-.
+..
 .SH RETURN VALUE
 The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR.
 The SVr4.0 manual says "or a non-negative integer if \fBimmedok\fR is set",
 but this appears to be an error.
-.
+..
 .SH NOTES
 Note that \fBbkgdset\fR and \fBbkgd\fR may be macros.
-.
+..
 .SH PORTABILITY
 These functions are described in the XSI Curses standard, Issue 4.  The draft
 does not include \fBconst\fR qualifiers on the arguments.  The standard
 specifies that \fBbkgd\fR and \fBwbkgd\fR return \fBERR\fR, on failure. but
 gives no failure conditions.
-.
+..
 .SH SEE ALSO
 \fBcurses\fR(3X), \fBcurs_addch\fR(3X), \fBcurs_outopts\fR(3X)
 .\"#
index a9e491510528e06000df688d7f3344292e8525ec..45200eb15cb885614ad804fadfbf409582991726 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: curs_border.3x,v 1.8 1996/08/04 00:29:11 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_border.3x,v 1.11 1999/01/30 23:11:47 tom Exp $
 .TH curs_border 3X ""
 .SH NAME
 \fBborder\fR, \fBwborder\fR, \fBbox\fR,
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
-\fBint border(chtype ls, chtype rs, chtype ts, chtype bs,
-   chtype tl, chtype tr, chtype bl, chtype br);\fR
+\fBint border(chtype ls, chtype rs, chtype ts, chtype bs,\fR
+   \fBchtype tl, chtype tr, chtype bl, chtype br);\fR
 .br
-\fBint wborder(WINDOW *win, chtype ls, chtype rs,
-   chtype ts, chtype bs, chtype tl, chtype tr,
-   chtype bl, chtype br);\fR
+\fBint wborder(WINDOW *win, chtype ls, chtype rs,\fR
+   \fBchtype ts, chtype bs, chtype tl, chtype tr,\fR
+   \fBchtype bl, chtype br);\fR
 .br
 \fBint box(WINDOW *win, chtype verch, chtype horch);\fR
 .br
@@ -41,7 +69,7 @@ right-hand corner, \fIbl\fR - bottom left-hand corner, and \fIbr\fR - bottom
 right-hand corner.  If any of these arguments is zero, then the following
 default values (defined in \fBcurses.h\fR) are used instead: \fBACS_VLINE\fR,
 \fBACS_VLINE\fR, \fBACS_HLINE\fR, \fBACS_HLINE\fR, \fB\fBACS_ULCORNER\fR,
-\fBACS_URCORNER\fR, \fBACS_BLCORNER\fR, \fBACS_BRCORNER\fR.
+\fBACS_URCORNER\fR, \fBACS_LLCORNER\fR, \fBACS_LRCORNER\fR.
 
 \fBbox(\fR\fIwin\fR\fB, \fR\fIverch\fR\fB, \fR\fIhorch\fR\fB)\fR is a shorthand
 for the following call: \fBwborder(\fR\fIwin\fR\fB,\fR \fIverch\fR\fB,\fR
index 1a9efb7ce153b825af30fef805d1312ae9c7188e..d08e852a27b19a2ed37cec587ffd31e189224d65 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_clear.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
 .TH curs_clear 3X ""
 .SH NAME
 \fBerase\fR, \fBwerase\fR, \fBclear\fR,
index 271c5dcd53b26bf34ea8261ca5c518597bbf346a..03cbba6349e64d9a8c4372308d09a48145c3e85a 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: curs_color.3x,v 1.9 1997/12/06 22:06:00 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_color.3x,v 1.10 1998/03/11 21:12:53 juergen Exp $
 .TH curs_color 3X ""
 .SH NAME
 \fBstart_color\fR, \fBinit_pair\fR,
index d7973a98962026df076ee0df9bd3606caadd9903..d63d6020e3a9318b681eb347aa4468043fcf55d2 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_delch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
 .TH curs_delch 3X ""
 .SH NAME
 \fBdelch\fR, \fBwdelch\fR, \fBmvdelch\fR, \fBmvwdelch\fR -
index 2b4710990aab527f4b1f1e6d2034f8f3e40d28f6..54bf331ba59e95e5ed7c97a1488f3150da555e51 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_deleteln.3x,v 1.5 1999/02/07 03:58:20 tom Exp $
 .TH curs_deleteln 3X ""
 .SH NAME
 \fBdeleteln\fR, \fBwdeleteln\fR, \fBinsdelln\fR,
@@ -40,7 +69,7 @@ These functions are described in the XSI Curses standard, Issue 4.  The
 standard specifies that they return \fBERR\fR on failure, but specifies no
 error conditions.
 .SH NOTES
-Note that all but \fBwinsdelln\fR may be macros.
+Note that all but \fBwinsdelln\fR may be macros.
 
 These routines do not require a hardware line delete or insert feature in the
 terminal.  In fact, they won't use hardware line delete/insert unless
index c621338a951ec372e3c196e9189121542c791124..0e4424618bcd9cd1504efa911fbf9108fe05606a 100644 (file)
@@ -1,5 +1,33 @@
 '\" t
-.\" $Id: curs_getch.3x,v 1.12 1997/12/13 22:39:05 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_getch.3x,v 1.15 1998/11/29 01:04:26 Rick.Ohnemus Exp $
 .TH curs_getch 3X ""
 .SH NAME
 \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR,
index cd3abf4d6da3056ce2dcdd9b1e7527477bb992ac..b3678e0a2b5af719809f3a4a70e8a5448217547e 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_getstr.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
 .TH curs_getstr 3X ""
 .SH NAME
 \fBgetstr\fR, \fBwgetstr\fR, \fBmvgetstr\fR,
index 58a3a52e8eb879c3c626698112ed1d31a501a6cc..820bf99c5327890f69a945a94dc47f9e098346a0 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_getyx.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
 .TH curs_getyx 3X ""
 .SH NAME
 \fBgetyx\fR, \fBgetparyx\fR, \fBgetbegyx\fR,
index adea2b59d7169b6b5f3ffe25ac978e55a627ea9a..bcc8d6f85c60937dbb8ddbda71ba4e2efa7dab78 100644 (file)
@@ -1,5 +1,33 @@
 '\" t
-.\" $Id: curs_inch.3x,v 1.8 1997/12/13 22:36:42 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_inch.3x,v 1.11 1998/11/29 01:04:34 Rick.Ohnemus Exp $
 .TH curs_inch 3X ""
 .SH NAME
 \fBinch\fR, \fBwinch\fR, \fBmvinch\fR, \fBmvwinch\fR
index 27aa4569429a32a46b0a47182d0c6ced59ebdaa2..dfe7bf48191a00a005bb9e33479dec93e3014dfb 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_inchstr.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
 .TH curs_inchstr 3X ""
 .SH NAME
 \fBinchstr\fR, \fBinchnstr\fR, \fBwinchstr\fR,
index 0ede098dc19c0743a8a6ad7c1f6a6bccfb34b00c..66aae13cab1d72aff6432d19dc5efef9d041fc99 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_initscr.3x,v 1.8 1999/09/18 23:52:30 tom Exp $
 .TH curs_initscr 3X ""
 .SH NAME
 \fBinitscr\fR, \fBnewterm\fR, \fBendwin\fR,
@@ -76,6 +105,11 @@ Note that \fBinitscr\fR and \fBnewterm\fR may be macros.
 These functions are described in the XSI Curses standard, Issue 4.  It
 specifies that portable applications must not call \fBinitscr\fR more than
 once.
+
+Old versions of curses, e.g., BSD 4.4, may have returned a null pointer
+from \fBinitscr\fR when an error is detected, rather than exiting.
+It is safe but redundant to check the return value of \fBinitscr\fR 
+in XSI Curses.
 .SH SEE ALSO
 \fBcurses\fR(3X), \fBcurs_kernel\fR(3X), \fBcurs_refresh\fR(3X),
 \fBcurs_slk\fR(3X), \fBcurs_util\fR(3X)
index 4c8ce18de3c23c117a3a4069054c6f9f0e75cd6a..1fc6a820a603d007b82c3ead854439cf794f8f8d 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: curs_inopts.3x,v 1.7 1997/12/14 01:12:04 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_inopts.3x,v 1.8 1998/03/11 21:12:53 juergen Exp $
 .TH curs_inopts 3X ""
 .SH NAME
 \fBcbreak\fR, \fBnocbreak\fR, \fBecho\fR,
index 11f49053095b2ff6a689b1f70af05a0268e418ef..5c3c3410465eb0ec1dda13ab3ebe1aec40b4b6bb 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_insch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
 .TH curs_insch 3X ""
 .SH NAME
 \fBinsch\fR, \fBwinsch\fR, \fBmvinsch\fR, \fBmvwinsch\fR -
index efbb6d644026696c07f4ac3b44d895d00addf3d0..955ac8df639761e67da4b21b7821a64a46082161 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_insstr.3x,v 1.10 1998/07/25 20:32:57 Todd.Miller Exp $
 .TH curs_insstr 3X ""
 .SH NAME
 \fBinsstr\fR, \fBinsnstr\fR, \fBwinsstr\fR, \fBwinsnstr\fR,
@@ -38,7 +67,7 @@ to be at every eighth column.  If a character in \fIstr\fR is another
 control character, it is drawn in the \fB^\fR\fIX\fR notation.
 Calling \fBwinch\fR after adding a control character (and moving to
 it, if necessary) does not return the control character, but instead
-returns a character in the the ^-representation of the control character.
+returns a character in the ^-representation of the control character.
 .SH RETURN VALUE
 All routines that return an integer return \fBERR\fR upon failure and OK (SVr4
 specifies only "an integer value other than \fBERR\fR") upon successful
index dcc5f023085bf3281bb3dc1d9cd35f205c6f7049..d3a7e6f7d085b8ffe9c8a06975a68980cc6efe5a 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: curs_instr.3x,v 1.7 1997/03/15 23:25:24 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_instr.3x,v 1.8 1998/03/11 21:12:53 juergen Exp $
 .TH curs_instr 3X ""
 .SH NAME
 \fBinstr\fR, \fBinnstr\fR, \fBwinstr\fR, \fBwinnstr\fR,
index 7ea34b7c0fed313e3d82d41a853e7b287447ae79..62a775e7cbed85e0a17857c0a3639a110f287988 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_kernel.3x,v 1.11 1998/06/27 21:56:38 tom Exp $
 .TH curs_kernel 3X ""
 .SH NAME
 \fBdef_prog_mode\fR, \fBdef_shell_mode\fR,
@@ -102,7 +131,7 @@ requested \fIvisibility\fR is not supported.
 Note that \fBgetsyx\fR is a macro, so \fB&\fR is not necessary before
 the variables \fIy\fR and \fIx\fR.
 
-The SVr4 man pages warn that the return value of \fBcurs_set\fR "is currently
+Older SVr4 man pages warn that the return value of \fBcurs_set\fR "is currently
 incorrect".  This implementation gets it right, but it may be unwise to count
 on the correctness of the return value anywhere else.
 .SH PORTABILITY
index 1bc30870dd718a0e7796665ab14ea70d5771362b..45fdd2a38f7954d885365ec692555dcc4c62cdd7 100644 (file)
@@ -1,9 +1,38 @@
 '\" t
-.'" $Id: curs_mouse.3x,v 0.7 1997/12/13 22:36:24 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998,1999 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.                                                           *
+.\"***************************************************************************
+.\"
+.'" $Id: curs_mouse.3x,v 1.13 1999/09/11 17:28:28 tom Exp $
 .TH curs_mouse 3X ""
 .SH NAME
-\fBgetmouse\fR, \fBungetmouse\fR, 
-\fBmousemask\fR - mouse interface through curses
+\fBgetmouse\fR, \fBungetmouse\fR,
+\fBmousemask\fR, \fBwenclose\fR,
+\fBwmouse_trafo\fR, \fBmouseinterval\fR - mouse interface through curses
 .SH SYNOPSIS
 .nf
 \fB#include <curses.h>\fR
@@ -25,9 +54,11 @@ MEVENT;\fR
 .br
 \fBmmask_t mousemask(mmask_t newmask, mmask_t *oldmask);\fR
 .br
-\fBbool wenclose(WINDOW *win, int y, int x)\fR
+\fBbool wenclose(WINDOW *win, int y, int x);\fR
 .br
-\fBint mouseinterval(int erval)\fR
+\fBbool wmouse_trafo(const WINDOW* win, int* pY, int* pX, bool to_screen);\fR
+.br
+\fBint mouseinterval(int erval);\fR
 .br
 .SH DESCRIPTION
 These functions provide an interface to mouse events from
@@ -52,23 +83,23 @@ l l
 _ _
 l l.
 \fIName\fR     \fIDescription\fR
-BUTTON1_PRESSED        mouse button 1 down 
-BUTTON1_RELEASED       mouse button 1 up 
+BUTTON1_PRESSED        mouse button 1 down
+BUTTON1_RELEASED       mouse button 1 up
 BUTTON1_CLICKED        mouse button 1 clicked
 BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked
 BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked
-BUTTON2_PRESSED        mouse button 2 down 
-BUTTON2_RELEASED       mouse button 2 up 
+BUTTON2_PRESSED        mouse button 2 down
+BUTTON2_RELEASED       mouse button 2 up
 BUTTON2_CLICKED        mouse button 2 clicked
 BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked
 BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked
-BUTTON3_PRESSED        mouse button 3 down 
-BUTTON3_RELEASED       mouse button 3 up 
+BUTTON3_PRESSED        mouse button 3 down
+BUTTON3_RELEASED       mouse button 3 up
 BUTTON3_CLICKED        mouse button 3 clicked
 BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked
 BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked
-BUTTON4_PRESSED        mouse button 4 down 
-BUTTON4_RELEASED       mouse button 4 up 
+BUTTON4_PRESSED        mouse button 4 down
+BUTTON4_RELEASED       mouse button 4 up
 BUTTON4_CLICKED        mouse button 4 clicked
 BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked
 BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked
@@ -99,6 +130,25 @@ character-cell coordinates is enclosed by a given window, returning TRUE
 if it is and FALSE otherwise.  It is useful for determining what subset of
 the screen windows enclose the location of a mouse event.
 
+The \fBwmouse_trafo\fR function transforms a given pair of coordinates from
+stdscr-relative coordinates to screen-relative coordinates or vice versa.
+Please remember, that stdscr-relative coordinates are not always identical
+to screen-relative coordinates due to the mechanism to reserve lines on top
+or bottom of the screen for other purposes (ripoff() call, see also slk_...
+functions). If the parameter \fBto_screen\fR is \fBTRUE\fR, the pointers 
+\fBpY, pX\fR must reference the coordinates of a location inside the window 
+\fBwin\fR. They are converted to screen-relative coordinates and returned
+through the pointers. If the conversion was successful, the function
+returns \fBTRUE\fR. If one of the parameters was NULL or the location is
+not inside the window, \fBFALSE\fR is returned. If \fBto_screen\fR is
+\fBFALSE\fR, the pointers \fBpY, pX\fR must reference screen-relative
+coordinates. They are converted to stdscr-relative coordinates if the
+window \fBwin\fR encloses this point. In this case the function returns
+\fBTRUE\fR. If one of the parameters is NULL or the point is not inside the
+window, \fBFALSE\fR is returned. Please notice, that the referenced coordinates
+are only replaced by the converted coordinates if the transformation was
+successful.
 The \fBmouseinterval\fR function sets the maximum time (in thousands of a
 second) that can elapse between press and release events in order for them to
 be recognized as a click.  This function returns the previous interval value.
@@ -110,24 +160,27 @@ function such as \fBgetstr\fR that expects a linefeed for input-loop
 termination.
 
 .SH RETURN VALUE
-All routines return the integer \fBERR\fR upon failure or \fBOK\fR
-upon successful completion.
+\fBgetmouse\fR, \fBungetmouse\fR and \fBmouseinterval\fR
+return the integer \fBERR\fR upon failure or \fBOK\fR
+upon successful completion. \fBmousemask\fR returns the
+mask of reportable events. \fBwenclose\fR and \fBwmouse_trafo\fR
+are boolean functions returning \fBTRUE\fR or \fBFALSE\fR depending
+on their test result.
 .SH PORTABILITY
 These calls were designed for \fBncurses\fR(3X), and are not found in SVr4
 curses, 4.4BSD curses, or any other previous version of curses.
 
 The feature macro \fBNCURSES_MOUSE_VERSION\fR is provided so the preprocessor
-can be used to test whether these features are present (its value is 1).  NOTE:
-THIS INTERFACE IS EXPERIMENTAL AND IS SUBJECT TO CHANGE WITHOUT NOTICE!  If the
-interface is changed, the value of \fBNCURSES_MOUSE_VERSION\fR will be
+can be used to test whether these features are present (its value is 1).
+If the interface is changed, the value of \fBNCURSES_MOUSE_VERSION\fR will be
 incremented.
 
-The order of the \fBMEVENT\fR structure members is not guaranteed.  
+The order of the \fBMEVENT\fR structure members is not guaranteed.
 Additional fields may be added to the structure in the future.
 
 Under \fBncurses\fR(3X), these calls are implemented using either
 xterm's built-in mouse-tracking API or Alessandro Rubini's gpm server.
-If you are using something other than xterm there is no gpm daemon
+If you are using something other than xterm and there is no gpm daemon
 running on your machine, mouse events will not be visible to
 \fBncurses\fR(3X) (and the \fBwmousemask\fR function will always
 return \fB0\fR).
@@ -141,7 +194,14 @@ if they have been enabled by \fBwmousemask\fR.  Instead, the xterm mouse
 report sequence will appear in the string read.
 
 Mouse events under xterm will not be detected correctly in a window with
-its keypad bit off.
+its keypad bit off, since they are interpreted as a variety of function key.
+Your terminfo description must have \fBkmous\fR set to "\\E[M" (the beginning
+of the response from xterm for mouse clicks).
+
+Because there are no standard terminal responses that would serve to identify
+terminals which support the xterm mouse protocol, \fBncurses\fR assumes that
+if your $DISPLAY environment variable is set, and \fBkmous\fR is defined in
+the terminal description, then the terminal may send mouse events.
 .SH SEE ALSO
 \fBcurses\fR(3X).
 .\"#
index 7d915ed284342099ab7f5fd9a37e74737a80d252..25c47feb482b1455c2e6fbe93ae8e701d7af5cb0 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_move.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
 .TH curs_move 3X ""
 .SH NAME
 \fBmove\fR, \fBwmove\fR - move \fBcurses\fR window cursor
index 30906151abc3f0e874e77ece3a19a628544b1578..2946562d4e06cfdd22b093089ade777ac007fe4f 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: curs_outopts.3x,v 1.10 1998/02/07 21:56:39 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_outopts.3x,v 1.13 1998/12/26 20:02:04 tom Exp $
 .TH curs_outopts 3X ""
 .SH NAME
 \fBclearok\fR, \fBidlok\fR, \fBidcok immedok\fR,
@@ -90,7 +118,7 @@ also necessary to call \fBidlok\fR).
 The \fBnl\fR and \fBnonl\fR routines control whether the underlying display
 device translates the return key into newline on input, and whether it
 translates newline into return and line-feed on output (in either case, the
-call \fBaddch('\n')\fR does the equivalent of return and line feed on the
+call \fBaddch('\\n')\fR does the equivalent of return and line feed on the
 virtual screen).  Initially, these translations do occur.  If you disable them
 using \fBnonl\fR, \fBcurses\fR will be able to make better use of the line-feed
 capability, resulting in faster cursor motion.  Also, \fBcurses\fR will then be
@@ -122,7 +150,7 @@ time.
 
 The XSI Curses standard does not mention that the cursor should be
 made invisible as a side-effect of \fBleaveok\fR.
-SVr4 curses does this.
+SVr4 curses documentation does this, but the code does not.
 .SH NOTES
 Note that \fBclearok\fR, \fBleaveok\fR, \fBscrollok\fR, \fBidcok\fR, \fBnl\fR,
 \fBnonl\fR and \fBsetscrreg\fR may be macros.
index 0c7b93df37fca01013bac424910f90fd7ee47088..b6a026059d44a2ae995a8cb60f33d0403ac299f1 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_overlay.3x,v 1.8 1998/12/26 20:08:30 tom Exp $
 .TH curs_overlay 3X ""
 .SH NAME
 \fBoverlay\fR, \fBoverwrite\fR, \fBcopywin\fR - overlay and
@@ -9,9 +38,9 @@ manipulate overlapped \fBcurses\fR windows
 .br
 \fBint overwrite(const WINDOW *srcwin, WINDOW *dstwin);\fR
 .br
-\fBint copywin(WINDOW *srcwin, WINDOW *dstwin, int sminrow,
-      int smincol, int dminrow, int dmincol, int dmaxrow,
-      int dmaxcol, int overlay);\fR
+\fBint copywin(WINDOW *srcwin, WINDOW *dstwin, int sminrow,\fR
+      \fBint smincol, int dminrow, int dmincol, int dmaxrow,\fR
+      \fBint dmaxcol, int overlay);\fR
 .SH DESCRIPTION
 The \fBoverlay\fR and \fBoverwrite\fR routines overlay \fIsrcwin\fR on
 top of \fIdstwin\fR.  \fIscrwin\fR and \fIdstwin\fR are not required
index 18969c94e3e51108d2d72c17369a72bd64995c88..35138f120336b1b53cda8c5ff83d576d48252e19 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_pad.3x,v 1.8 1998/12/26 20:09:03 tom Exp $
 .TH curs_pad 3X ""
 .SH NAME
 \fBnewpad\fR, \fBsubpad\fR, \fBprefresh\fR,
@@ -8,14 +37,14 @@ pads
 
 \fBWINDOW *newpad(int nlines, int ncols);\fR
 .br
-\fBWINDOW *subpad(WINDOW *orig, int nlines, int ncols,
-      int begin_y, int begin_x);\fR
+\fBWINDOW *subpad(WINDOW *orig, int nlines, int ncols,\fR
+      \fBint begin_y, int begin_x);\fR
 .br
-\fBint prefresh(WINDOW *pad, int pminrow, int pmincol,
-      int sminrow, int smincol, int smaxrow, int smaxcol);\fR
+\fBint prefresh(WINDOW *pad, int pminrow, int pmincol,\fR
+      \fBint sminrow, int smincol, int smaxrow, int smaxcol);\fR
 .br
-\fBint pnoutrefresh(WINDOW *pad, int pminrow, int pmincol,
-      int sminrow, int smincol, int smaxrow, int smaxcol);\fR
+\fBint pnoutrefresh(WINDOW *pad, int pminrow, int pmincol,\fR
+      \fBint sminrow, int smincol, int smaxrow, int smaxcol);\fR
 .br
 \fBint pechochar(WINDOW *pad, chtype ch);\fR
 .SH DESCRIPTION
index 20e9ce5354e5b04e38e390691b43c35cc6213c02..7b781988fddbb905f3b75522b9e2ac97440a21b8 100644 (file)
@@ -1,4 +1,32 @@
-.'" $Id: curs_print.3x,v 1.2 1997/12/06 22:07:19 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.'" $Id: curs_print.3x,v 1.3 1998/03/11 21:12:53 juergen Exp $
 .TH curs_print 3X ""
 .SH NAME
 \fBmcprint\fR - ship binary data to printer
index e3ac2e8d5ededbdd6180707c7c815a44d0a689ff..2f0152f3a77b027dd47a5f004904f6b45c1234ba 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_printw.3x,v 1.8 1998/12/26 20:09:36 tom Exp $
 .TH curs_printw 3X ""
 .SH NAME
 \fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR,
@@ -12,7 +41,7 @@
 .br
 \fBint mvprintw(int y, int x, char *fmt\fR [\fB, arg\fR] \fB...);\fR
 .br
-\fBint mvwprintw(WINDOW *win, int y, int x,
+\fBint mvwprintw(WINDOW *win, int y, int x,\fR
       \fBchar *fmt\fR [\fB, arg]\fR ...);
 
 \fB#include <varargs.h>\fR
index e00fc92e018c79edbcdaf348d003fd09acda3903..4572b4c9f0eee8f6507436448769b809d0e1200e 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: curs_refresh.3x,v 1.6 1997/11/29 20:11:26 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_refresh.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
 .TH curs_refresh 3X ""
 .SH NAME
 \fBrefresh\fR, \fBwrefresh\fR, \fBwnoutrefresh\fR,
index 48144ac3bcc33ce9789de60f909d2dc9567bb2fa..f0c64f1fcf2cdd6eb43891b5952caaaaee995c73 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: curs_scanw.3x,v 1.6 1997/12/14 01:04:36 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_scanw.3x,v 1.8 1998/12/26 20:10:12 tom Exp $
 .TH curs_scanw 3X ""
 .SH NAME
 \fBscanw\fR, \fBwscanw\fR, \fBmvscanw\fR,
@@ -13,8 +41,8 @@
 .br
 \fBint mvscanw(int y, int x, char *fmt\fR [\fB, arg\fR] \fB...);\fR
 .br
-\fBint mvwscanw(WINDOW *win, int y, int x,
-      char *fmt\fR [\fB, arg]\fR \fB...);\fR
+\fBint mvwscanw(WINDOW *win, int y, int x,\fR
+      \fBchar *fmt\fR [\fB, arg]\fR \fB...);\fR
 .br
 \fBint vwscanw(WINDOW *win, char *fmt, va_list varglist);\fR
 .SH DESCRIPTION
similarity index 53%
rename from man/curs_scr_dmp.3x
rename to man/curs_scr_dump.3x
index c1b89f12059a4da11c95c31ba49cd7cb7a0c0ae2..67a224899b2d0d81c383a8a340a7cc06771ea734 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_scr_dump.3x,v 1.1 1998/03/11 21:12:53 tom Exp $
 .TH curs_scr_dump 3X ""
 .SH NAME
 \fBscr_dump\fR, \fBscr_restore\fR,
index 0ac518d5b25e8625340543bdf102e4a39842538b..5429685fab2e19e8b45679d3fd21c37e105eba61 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_scroll.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
 .TH curs_scroll 3X ""
 .SH NAME
 \fBscroll\fR, \fBsrcl\fR, \fBwscrl\fR - scroll a \fBcurses\fR window
index ac25bf3cd0780b80809face8bdcf7f79859319ae..86209d7964c1be6b8c24954594040460dca01c4f 100644 (file)
@@ -1,8 +1,37 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_slk.3x,v 1.9 1998/03/11 21:12:53 juergen Exp $
 .TH curs_slk 3X ""
 .SH NAME
 \fBslk_init\fR, \fBslk_set\fR, \fBslk_refresh\fR,
 \fBslk_noutrefresh\fR, \fBslk_label\fR, \fBslk_clear\fR, \fBslk_restore\fR,
-\fBslk_touch\fR, \fBslk_attron\fR, \fBslk_attrset\fR, \fBslk_attroff\fR -
+\fBslk_touch\fR, \fBslk_attron\fR, \fBslk_attrset\fR, \fBslk_attroff\fR, \fBslk_color\fR -
 \fBcurses\fR soft label routines
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 .br
 \fBint slk_touch(void);\fR
 .br
-\fBint slk_attron(attr_t attrs);\fR
+\fBint slk_attron(const chtype attrs);\fR
 .br
-\fBint slk_attrset(attr_t attrs);\fR
+\fBint slk_attrset(const chtype attrs);\fR
 .br
 \fBattr_t slk_attr(void);\fR
 .br
-\fBint slk_attroff(attr_t attrs);\fR
+\fBint slk_attroff(const chtype attrs);\fR
+.br
+\fBint slk_color(short color_pair_number);\fR
 .br
 .SH DESCRIPTION
 The slk* functions manipulate the set of soft function-key labels that exist on
@@ -79,6 +110,10 @@ routines correspond to \fBattron\fR, \fBattrset\fR, \fBattroff\fR and \fBattr_ge
 They have an effect only if soft labels are simulated on the bottom line of
 the screen.  The default highlight for soft keys is A_STANDOUT (as in 
 System V curses, which does not document this fact).
+
+The \fBslk_color\fR routine corresponds to \fBcolor_set\fR. It has an effect only
+if soft labels are simulated on the bottom line of the screen.
+
 .SH RETURN VALUE
 These routines return \fBERR\fR upon failure and OK (SVr4 specifies only "an
 integer value other than \fBERR\fR") upon successful completion. \fBslk_attr\fR
index 5c65d3c573eabd51889e084f3b5251dbfd88fd8b..2ece5a3587dfd49c3cdc18313f74605cd94184cb 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_termattrs.3x,v 1.4 1998/03/11 21:12:53 juergen Exp $
 .TH curs_termattrs 3X ""
 .SH NAME
 \fBbaudrate\fR, \fBerasechar\fR, \fBhas_ic\fR,
index 77e340e22eaab041763285b979ccef36e3312540..c3a0cf30212412398346dd3798d1c1fb5eb5b9cf 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_termcap.3x,v 1.12 1999/09/05 01:02:07 tom Exp $
 .TH curs_termcap 3X ""
 .ds n 5
 .SH NAME
@@ -33,12 +62,18 @@ It returns 1 on success, 0 if there is no such entry, and -1 if the
 terminfo database could not be found.
 The emulation ignores the buffer pointer \fIbp\fR.
 
-The \fBtgetflag\fR routine gets the boolean entry for \fIid\fR.
+The \fBtgetflag\fR routine gets the boolean entry for \fIid\fR,
+or zero if it is not available.
 
-The \fBtgetnum\fR routine gets the numeric entry for \fIid\fR.
+The \fBtgetnum\fR routine gets the numeric entry for \fIid\fR,
+or -1 if it is not available.
 
-The \fBtgetstr\fR routine returns the string entry for \fIid\fR.  Use
-\fBtputs\fR to output the returned string.
+The \fBtgetstr\fR routine returns the string entry for \fIid\fR,
+or zero if it is not available.
+Use \fBtputs\fR to output the returned string.
+The return value will also be copied to the buffer pointed to by \fIarea\fR,
+and the \fIarea\fR value will be updated to point past the null ending
+this value.
 
 The \fBtgoto\fR routine instantiates the parameters into the given capability.
 The output from this routine is to be passed to \fBtputs\fR.
index fa3fd0d8593c6cfd063e7f1f0c736846e6237d82..098a094383050376491d28ee665525e693fb7742 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: curs_terminfo.3x,v 1.7 1997/08/30 12:48:49 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1999 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_terminfo.3x,v 1.12 1999/10/17 01:11:59 tom Exp $
 .TH curs_terminfo 3X ""
 .ds n 5
 .SH NAME
@@ -79,13 +107,30 @@ The \fBsetupterm\fR routine reads in the \fBterminfo\fR database,
 initializing the \fBterminfo\fR structures, but does not set up the
 output virtualization structures used by \fBcurses\fR.  The terminal
 type is the character string \fIterm\fR; if \fIterm\fR is null, the
-environment variable \fBTERM\fR is used.  All output is to file
-descriptor \fBfildes\fR which is initialized for output.  If
-\fIerrret\fR is not null, then \fBsetupterm\fR returns \fBOK\fR or
+environment variable \fBTERM\fR is used.
+All output is to file descriptor \fBfildes\fR which is initialized for output.
+If \fIerrret\fR is not null,
+then \fBsetupterm\fR returns \fBOK\fR or
 \fBERR\fR and stores a status value in the integer pointed to by
-\fIerrret\fR.  A status of \fB1\fR in \fIerrret\fR is normal, \fB0\fR
-means that the terminal could not be found, and \fB-1\fR means that
-the \fBterminfo\fR database could not be found.  If \fIerrret\fR is
+\fIerrret\fR.
+A return value of \fBOK\fR combined with status of \fB1\fR in \fIerrret\fR
+is normal.
+If \fBERR\fR is returned, examine \fIerrret\fR:
+.RS
+.TP 5
+.B 1
+means that the terminal is hardcopy, cannot be used for curses applications.
+.TP 5
+.B 0
+means that the terminal could not be found,
+or that it is a generic type,
+having too little information for curses applications to run.
+.TP 5
+.B -1
+means that the \fBterminfo\fR database could not be found.
+.RE
+.PP
+If \fIerrret\fR is
 null, \fBsetupterm\fR prints an error message upon finding an error
 and exits.  Thus, the simplest call is:
 
@@ -150,13 +195,16 @@ the value of the capability corresponding to the \fBterminfo\fR
 \fIcapname\fR passed to them, such as \fBxenl\fR.
 
 The \fBtigetflag\fR routine returns the value \fB-1\fR if
-\fIcapname\fR is not a boolean capability.
+\fIcapname\fR is not a boolean capability,
+or \fB0\fR if it is canceled or absent from the terminal description.
 
 The \fBtigetnum\fR routine returns the value \fB-2\fR if
-\fIcapname\fR is not a numeric capability.
+\fIcapname\fR is not a numeric capability,
+or \fB-1\fR if it is canceled or absent from the terminal description.
 
 The \fBtigetstr\fR routine returns the value \fB(char *)-1\fR
-if \fIcapname\fR is not a string capability.
+if \fIcapname\fR is not a string capability,
+or \fB0\fR if it is canceled or absent from the terminal description.
 
 The \fIcapname\fR for each capability is given in the table column entitled
 \fIcapname\fR code in the capabilities section of \fBterminfo\fR(\*n).
@@ -196,6 +244,14 @@ In System V Release 4, the third argument of \fBtputs\fR has the type
 
 The XSI Curses standard prototypes \fBtparm\fR with a fixed number of parameters,
 rather than a variable argument list.
+
+XSI notes that after calling \fBmvcur\fR, the curses state may not match the
+actual terminal state, and that an application should touch and refresh
+the window before resuming normal curses calls.
+Both ncurses and System V Release 4 curses implement \fBmvcur\fR using
+the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR. 
+So though it is documented as a terminfo function,
+\fBmvcur\fR is really a curses function which is not well specified.
 .SH SEE ALSO
 \fBcurses\fR(3X), \fBcurs_initscr\fR(3X), \fBcurs_kernel\fR(3X), \fBcurs_termcap\fR(3X),
 \fBputc\fR(3S), \fBterminfo\fR(\*n)
index 5b67d3f8bf8df30ff56e4e10d4926a56428176a8..e1d130d30368b49c6cf208b890884d49f479dcdc 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_touch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
 .TH curs_touch 3X ""
 .SH NAME
 \fBtouchwin\fR, \fBtouchline\fR, \fBuntouchwin\fR,
index 0d2e0b88b743f1213890282f5528b232a9ccbb45..8f85cf4ef66c12aa588ede55b18fff975603014a 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_util.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
 .TH curs_util 3X ""
 .SH NAME
 \fBunctrl\fR, \fBkeyname\fR, \fBfilter\fR,
index 9bd3facd818ae74fd987d9cf89a48f4684e9cbad..623514e908ca26399f5b3fcf55be23be2fa13796 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_window.3x,v 1.8 1999/03/20 22:38:46 tom Exp $
 .TH curs_window 3X ""
 .SH NAME
 \fBnewwin\fR, \fBdelwin\fR, \fBmvwin\fR,
@@ -8,17 +37,17 @@ create \fBcurses\fR windows
 \fB#include <curses.h>\fR
 
 \fBWINDOW *newwin(int nlines, int ncols, int begin_y,\fR
-      \fBintbegin_x);\fR
+      \fBint begin_x);\fR
 .br
 \fBint delwin(WINDOW *win);\fR
 .br
 \fBint mvwin(WINDOW *win, int y, int x);\fR
 .br
-\fBWINDOW *subwin(WINDOW *orig, int nlines, int ncols,
-      int begin_y, int begin_x);\fR
+\fBWINDOW *subwin(WINDOW *orig, int nlines, int ncols,\fR
+      \fBint begin_y, int begin_x);\fR
 .br
-\fBWINDOW *derwin(WINDOW *orig, int nlines, int ncols,
-      int begin_y, int begin_x);\fR
+\fBWINDOW *derwin(WINDOW *orig, int nlines, int ncols,\fR
+      \fBint begin_y, int begin_x);\fR
 .br
 \fBint mvderwin(WINDOW *win, int par_y, int par_x);\fR
 .br
index 79a82052e3bf2b158569448099c92ee18d786a7d..047d78f8b82a129cdbc2c891b638224c94609acd 100644 (file)
 .\"
 .\" Author: Thomas E. Dickey <dickey@clark.net> 1997
 .\"
-.\" $Id: define_key.3x,v 1.4 1998/02/11 12:13:48 tom Exp $
+.\" $Id: define_key.3x,v 1.6 1999/02/19 11:43:17 tom Exp $
 .TH define_key 3X ""
-.
 .SH NAME
 \fBdefine_key\fP \- define a keycode
-.
+..
 .SH SYNOPSIS
 \fB#include <curses.h>\fP
 
 \fBint define_key(char *definition, int keycode);\fP
-.
+..
 .SH DESCRIPTION
 This is an extension to the curses library.
 It permits an application to define keycodes with their corresponding control
@@ -47,18 +46,20 @@ the predefined codes in the terminfo database.
 .PP
 If the given string is null, any existing definition for the keycode is
 removed.
-.
+Similarly, if the given keycode is negative or zero, any existing string
+for the given definition is removed.
+..
 .SH RETURN VALUE
 The keycode must be greater than zero, else ERR is returned.
-.
+..
 .SH PORTABILITY
 These routines are specific to ncurses.  They were not supported on
 Version 7, BSD or System V implementations.  It is recommended that
 any code depending on them be conditioned using NCURSES_VERSION.
-.
+..
 .SH SEE ALSO
 \fBkeyok\fR(3X).
-.
+..
 .SH AUTHOR
 Thomas Dickey.
 .\"#
index a3bf14b4364db8bc005d6e7fc039e802e0b25fbd..2461256857b818ed270e39961e743b2c09d68a8b 100644 (file)
 .\"
 .\" Author: Thomas E. Dickey <dickey@clark.net> 1997
 .\"
-.\" $Id: dft_fgbg.3x,v 1.5 1998/02/11 12:13:48 tom Exp $
+.\" $Id: dft_fgbg.3x,v 1.6 1998/03/14 23:43:15 tom Exp $
 .TH use_default_colors 3X ""
-.
 .SH NAME
 \fBdft_fgbg\fR \- use terminal's default colors
-.
+..
 .SH SYNOPSIS
 \fB#include <curses.h>\fP
 
 \fBint use_default_colors(void);\fP
-.
+..
 .SH DESCRIPTION
 This is an extension to the curses library.
 It is used with terminals that support ISO 6429 color, or equivalent.
@@ -52,28 +51,28 @@ Applications that paint a colored background over the whole screen
 are not adversely impacted by this type of terminal design.
 However, there are applications that are designed to work with
 the default background.
-.
+..
 .SH RETURN VALUE
 The function returns the integer \fBERR\fP upon failure and \fBOK\fP on success.
 It will fail if either the terminal does not support
 the \fIorig_pair\fP or \fIorig_colors\fP capability.
 If the \fIinitialize_pair\fP capability is found, this causes an
 error as well.
-.
+..
 .SH NOTES
 Associated with this extension, the \fBinit_pair\fR(3X) function accepts
 negative arguments to specify default foreground or background
 colors.
-.
+..
 .SH PORTABILITY
 These routines are specific to ncurses.  They were not supported on
 Version 7, BSD or System V implementations.  It is recommended that
 any code depending on them be conditioned using NCURSES_VERSION.
-.
+..
 .SH SEE ALSO
 \fBcurs_color\fR(3X),
 \fBded\fP(1).
-.
+..
 .SH AUTHOR
 Thomas Dickey (from an analysis of the requirements for color xterm
 for XFree86 3.1.2C, February 1996).
index c7c751cb7260dd6e4b6ad308e90f9104c751ac47..51c1e8c15d5afb58b18522e9c82df2890a2baa66 100644 (file)
@@ -1,5 +1,33 @@
 '\" t
-.\" $Id: form.3x,v 0.8 1997/12/14 01:44:04 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form.3x,v 1.13 1999/07/10 21:53:03 tom Exp $
 .TH form 3X ""
 .SH NAME
 \fBform\fR - curses extension for programming forms
@@ -21,7 +49,8 @@ these functions.  To use the \fBform\fR library, link with the options
 .SS Current Default Values for Field Attributes
 
 The \fBform\fR library maintains a default value for field attributes.  You
-can get or set this default by calling the appropriate \fBget_\fR or \fBset_\fR
+can get or set this default by calling the appropriate \fBset_\fR
+or retrieval
 routine with a \fBNULL\fR field pointer.  Changing this default with a
 \fBset_\fR function affects future field creations, but does not change the
 rendering of fields already created.
@@ -31,7 +60,7 @@ rendering of fields already created.
 The following table lists each \fBform\fR routine and the name of
 the manual page on which it is described.
 
-.TS 
+.TS
 l l
 l l .
 \fBcurses\fR Routine Name      Manual Page Name
index 1e9a1d90e2bbb16c2ed252390a2ad12f745751e9..ab37c99e7fae212f30552a74d692eac5285c156e 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_cursor.3x,v 1.4 1998/11/29 01:05:43 Rick.Ohnemus Exp $
 .TH form_cursor 3X ""
 .SH NAME
 \fBform_cursor\fR - position a form window cursor
index bf8a240467d1f32df4431c99b8ecaf3951f8942c..3767e954590ce3aaaac142f3904b5d8f5f221045 100644 (file)
@@ -1,7 +1,36 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_data.3x,v 1.7 1998/11/29 01:13:22 Rick.Ohnemus Exp $
 .TH form_data 3X ""
 .SH NAME
-\fBform_data\fR - 
+\fBform_data\fR - test for off-screen data in given forms
 .SH SYNOPSIS
 \fB#include <form.h>\fR
 .br
index b5f269b5e781bf2f3653b7d514ad13cf57d6824a..408aecd9ea42c10af3dc9c4075ce2902e1fc77c2 100644 (file)
@@ -1,4 +1,32 @@
-.'" $Id: form_driver.3x,v 0.5 1997/12/14 01:26:33 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.'" $Id: form_driver.3x,v 1.7 1999/07/10 23:13:18 tom Exp $
 .TH form_driver 3X ""
 .SH NAME
 \fBform_driver\fR - command-processing loop of the form system
@@ -195,7 +223,7 @@ in the current position in the current field.  If it is one of the forms
 requests listed above, that request is executed.
 .PP
 If the second argument is neither printable ASCII nor one of the above
-pre-defined form requests, the drive assumes it is an application-specific
+pre-defined form requests, the driver assumes it is an application-specific
 command and returns \fBE_UNKNOWN_COMMAND\fR.  Application-defined commands
 should be defined relative to \fBMAX_COMMAND\fR, the maximum value of these
 pre-defined requests.
index 3e651a5a5d3efaec2af374e0297386eef36485e7..f452036baeab0ea6722c4d6e49eeb5a417afe3cd 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_field.3x,v 1.5 1998/11/29 01:05:52 Rick.Ohnemus Exp $
 .TH form_field 3X ""
 .SH NAME
 \fBform_field\fR - make and break connections between fields and forms
index 610bef2d6f43476603557c96c2ea2c7180239014..7f6293dcef734864a86a45ddd44e166dfeeeddfc 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_field_attributes.3x,v 1.5 1998/11/29 01:06:02 Rick.Ohnemus Exp $
 .TH form_field_attributes 3X ""
 .SH NAME
 \fBform_field_attributes\fR - color and attribute control for form fields
index b1cbe60f6823fae72df5b916d8f638e12ee47fe3..202d4e7e0da5db2bc16328b19ba30a7de0d84ad8 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_field_buffer.3x,v 1.8 1999/06/16 00:37:09 juergen Exp $
 .TH form_field_buffer 3X ""
 .SH NAME
 \fBform_field_buffer\fR - field buffer control
@@ -20,10 +49,17 @@ The function \fBset_field_buffer\fR sets the numbered buffer of the given field
 to contain a given string.  Buffer 0 is the displayed value of the field; other
 numbered buffers may be allocated by applications through the \fBnbuf\fR
 argument of (see \fBform_field_new\fR(3X)) but are not manipulated by the forms
-library.  The function \fBfield_buffer\fR returns the foreground attribute.
+library.  The function \fBfield_buffer\fR returns the address of the buffer.
+Please note that this buffer has always the length of the buffer, that means 
+that it may typically contain trailing spaces. If you entered leading spaces
+the buffer may also contain them. If you want the raw data, you must write your
+own routine that copies the value out of the buffer and removes the leading
+and trailing spaces. Please note also, that subsequent operations on the form
+will probably change the content of the buffer. So don't use it for long term
+storage of the entered form data.
 
-The function \fBset_field_status\fR sets the associated status flag of 
-\fIfield\fR; \fBfield_status\fR gets the current value.  The status flag 
+The function \fBset_field_status\fR sets the associated status flag of
+\fIfield\fR; \fBfield_status\fR gets the current value.  The status flag
 is set to a nonzero value whenever the field changes.
 
 The function \fBset_max_field\fR sets the maximum size for a dynamic field.
index aca06fb786251eb6d5eb423d604fdfd754c6bad2..f64c662e6059d259295de70a27e47f423ce765e4 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_field_info.3x,v 1.5 1998/11/29 01:06:24 Rick.Ohnemus Exp $
 .TH form_field_info 3X ""
 .SH NAME
 \fBform_field_info\fR - retrieve field characteristics
index cbe2102b22377845811b11cea0516d6e3207f0a7..dcb46768d96c46a324c77980690670f0d2fca1a3 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_field_just.3x,v 1.5 1998/11/29 01:06:32 Rick.Ohnemus Exp $
 .TH form_field_just 3X ""
 .SH NAME
 \fBform_field_just\fR - retrieve field characteristics
index 601a1d5ed9d6f3795d331d98e95d09d01458db56..b798b5bb3e95bc8d83548bb46d616c9cdde07ee1 100644 (file)
@@ -1,13 +1,41 @@
-.'" $Id: form_field_new.3x,v 0.6 1997/12/06 22:07:19 tom Exp $
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.'" $Id: form_field_new.3x,v 1.9 1998/11/29 01:06:44 Rick.Ohnemus Exp $
 .TH form_field_new 3X ""
 .SH NAME
 \fBform_field_new\fR - create and destroy form fields
 .SH SYNOPSIS
 \fB#include <form.h>\fR
 .br
-FIELD *new_field(int height, int width, 
-                 int toprow, int leftcol, 
+FIELD *new_field(int height, int width,
+                 int toprow, int leftcol,
                  int offscreen, int nbuffers);
 .br
 FIELD *dup_field(FIELD *field, int toprow, int leftcol);
index 189ad0008a5d4bbf9eb247123af6e076120971dd..8f5e2def4315aa01d92c2c35f40bbc22600f7e02 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_field_opts.3x,v 1.7 1998/11/29 01:06:54 Rick.Ohnemus Exp $
 .TH form_field_opts 3X ""
 .SH NAME
 \fBform_field_opts\fR - set and get field options
@@ -23,13 +52,13 @@ others alone.
 The function \fBfield_opts_off\fR turns off the given option bits, and leaves
 others alone.
 
-The function \fBfield_opts\fR returns the field's current option bits.  
+The function \fBfield_opts\fR returns the field's current option bits.
 
 The following options are defined (all are on by default):
 .TP 5
 O_VISIBLE
 The field is displayed.  If this option is off, display of the field is
-suppressed, 
+suppressed,
 .TP 5
 O_ACTIVE
 The field is visited during processing.  If this option is off, the field will
index e6becce697c91f33daaed4ace5aa2fd813db3f21..2aba2083bc01951ecffbd4208a83bf55dfdd024a 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_field_userptr.3x,v 1.6 1998/11/29 01:07:05 Rick.Ohnemus Exp $
 .TH form_field_userptr 3X ""
 .SH NAME
 \fBform_field_userptr\fR - associate application data with a form field
@@ -14,7 +43,7 @@ Every form field has a field that can be used to hold application-specific data
 (that is, the form-driver code leaves it alone).  These functions get and set
 that field.
 .SH RETURN VALUE
-The function \fBfield_userptr\fR returns \fBNULL\fR on error. The function 
+The function \fBfield_userptr\fR returns \fBNULL\fR on error. The function
 \fBset_field_userptr\fR returns one of the following:
 .TP 5
 \fBE_OK\fR
index e67c41359e681bad07ed0c0f7710b289a0c2ba31..c3f90ba5cb4e987615198881b7c919e488ccc107 100644 (file)
@@ -1,4 +1,32 @@
-.'" $Id: form_field_validation.3x,v 0.9 1997/12/06 22:08:27 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.'" $Id: form_field_validation.3x,v 1.10 1998/03/11 21:12:53 juergen Exp $
 .TH form_field_validation 3X ""
 .SH NAME
 \fBform_field_validation\fR - data type validation for fields 
index 217efa68bf03ec904474a8609cb697ef24799a1b..4c5dcb6616f8d5e7e1443d6cb1d95e27893aaae9 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_fieldtype.3x,v 1.7 1998/11/29 01:07:16 Rick.Ohnemus Exp $
 .TH form_field 3X ""
 .SH NAME
 \fBform_fieldtype\fR - define validation-field types
@@ -22,9 +51,9 @@ int set_fieldtype_choice(
     bool (* const next_choice)(FIELD *, const void *),
     bool (* const prev_choice)(FIELD *, const void *));
 .br
-FIELDTYPE *link_fieldtype(FIELDTYPE *type1, 
+FIELDTYPE *link_fieldtype(FIELDTYPE *type1,
                           FIELDTYPE *type2);
-.br 
+.br
 .SH DESCRIPTION
 The function \fBnew_fieldtype\fR creates a new field type usable for data
 validation.  You supply it with \fIfield_check\fR, a predicate to check the
@@ -40,10 +69,10 @@ the character to be checked and a pointer to an argument-block structure.
 The function \fBfree_fieldtype\fR frees the space allocated for a given
 validation type.
 
-The function \fBset_fieldtype\fR associates three storage-management functions 
+The function \fBset_fieldtype\fR associates three storage-management functions
 with a field type.  The \fImak_arg\fR function is automatically applied to the
 list of arguments you give \fBset_field_type\fR when attaching validation
-to a field; its job is to bundle these into an allocated argument-block 
+to a field; its job is to bundle these into an allocated argument-block
 object which can later be passed to validation predicated.  The other two
 hook arguments should copy and free argument-block structures.  They will
 be used by the forms-driver code. You must supply the \fImak_arg\fR function,
index 3ed7d8c38cac84fcb433af966ba0618d23021e6f..19c1b9fbd7a06d0393ddac555cdef77d9e4abf17 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_hook.3x,v 1.6 1999/03/20 22:37:15 Todd.Miller Exp $
 .TH form_hook 3X ""
 .SH NAME
 \fBform_hook\fR - set hooks for automatic invocation by applications
@@ -40,7 +69,7 @@ just after a page change once it is posted.  \fBform_init\fR returns the
 current form init hook, if any (\fBNULL\fR if there is no such hook).
 
 The function \fBset_form_term\fR sets a hook to be called at form-unpost time
-and just before a page change change once it is posted.  \fBform_init\fR
+and just before a page change once it is posted.  \fBform_init\fR
 returns the current form term hook, if any (\fBNULL\fR if there is no such
 hook).
 .SH RETURN VALUE
index af85586d2a059395e9fadd94d80a539473040bf5..0f4c5015d11b5640518924725479f3e734ca014c 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_new.3x,v 1.5 1998/11/29 01:07:37 Rick.Ohnemus Exp $
 .TH form_new 3X ""
 .SH NAME
 \fBform_new\fR - create and destroy forms
index c3d4a1809e1139687d1ddf3539e010857d6a05b5..b93b48c18c88c7151036bfffc484ce642ed662a8 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_new_page.3x,v 1.5 1998/11/29 01:07:45 Rick.Ohnemus Exp $
 .TH form_new_page 3X ""
 .SH NAME
 \fBform_new_page\fR - form pagination functions
@@ -10,7 +39,7 @@ int set_new_page(FIELD *field, bool new_page_flag);
 bool new_page(const FIELD *field);
 .br
 .SH DESCRIPTION
-The function \fBset_new_page\fR sets or resets a flag marking the given field 
+The function \fBset_new_page\fR sets or resets a flag marking the given field
 as the beginning of a new page on its form.
 
 The function \fBnew_page\fR is a predicate which tests if a given field marks
index dc0e0c45de75bb017b96bd2a6b94bb09a5308b00..7921b3772563a47ad2d4707090e08a2505a1b663 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_opts.3x,v 1.6 1998/11/29 01:07:53 Rick.Ohnemus Exp $
 .TH form_opts 3X ""
 .SH NAME
 \fBform_opts\fR - set and get form options
@@ -23,17 +52,17 @@ others alone.
 The function \fBform_opts_off\fR turns off the given option bits, and leaves
 others alone.
 
-The function \fBform_opts\fR returns the form's current option bits.  
+The function \fBform_opts\fR returns the form's current option bits.
 
 The following options are defined (all are on by default):
 .TP 5
 O_NL_OVERLOAD
 Overload the \fBREQ_NEW_LINE\fR forms driver request so that calling it at the
-end of a field goes to the next field. 
+end of a field goes to the next field.
 .TP 5
 O_BS_OVERLOAD
 Overload the \fBREQ_DEL_PREV\fR forms driver request so that calling it at the
-beginning of a field goes to the previous field. 
+beginning of a field goes to the previous field.
 .SH RETURN VALUE
 Except for \fBform_opts\fR, each routine returns one of the following:
 .TP 5
index 27beb3d180158b1fc06afca256552ce648d4a71b..4b5d15aec18e45f42349fd8b85926956ec3da301 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_page.3x,v 1.8 1998/11/29 01:08:02 Rick.Ohnemus Exp $
 .TH form_page 3X ""
 .SH NAME
 \fBform_page\fR - set and get form page number
index 42de332c15200ef0810ecfa02e5af752e90d6700..56e86ab946923790940132bdacb29a1f737b9cca 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_post.3x,v 1.4 1998/11/29 01:08:10 Rick.Ohnemus Exp $
 .TH form_post 3X ""
 .SH NAME
 \fBform_post\fR - write or erase forms from associated subwindows
index 10824d3a704928dc116488125f25080e16f25ab7..df1f701b382e690fa1215b167ebd632b8f8e75f0 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_requestname.3x,v 1.6 1998/11/29 01:08:18 Rick.Ohnemus Exp $
 .TH form_requestname 3X ""
 .SH NAME
 \fBform_requestname\fR - handle printable form request names
index b5c16bd6e4605f9504c6237bba021c12c3e704fa..00e3d71aa40e8be660e7b01b3642cbd49bcbfa26 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_userptr.3x,v 1.9 1998/11/29 01:08:39 Rick.Ohnemus Exp $
 .TH form_userptr 3X ""
 .SH NAME
 \fBform_userptr\fR - associate application data with a form item
index a43f9c087397757546641fe28f2f8669457d031c..e56597028868e340fce1cf7b9316e6f6c4dbc9ce 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: form_win.3x,v 1.8 1999/04/10 23:36:08 tom Exp $
 .TH form_win 3X ""
 .SH NAME
 \fBform_win\fR - make and break form window and subwindow associations
@@ -27,8 +56,8 @@ In the \fBset_\fR functions, window argument of \fBNULL\fR is treated as though
 it were \fBstsdcr\fR.  A form argument of \fBNULL\fR is treated as a request
 to change the system default form window or subwindow.
 
-The function \fBscale_window\fR returns the minimum size required for the
-subwindow of \fIform\fR. 
+The function \fBscale_form\fR returns the minimum size required for the
+subwindow of \fIform\fR.
 .SH RETURN VALUE
 Routines that return pointers return \fBNULL\fR on error.  Routines that return
 an integer return one of the following error codes:
index 563f5971e0e8ce0dbb8918a3ce0e4e7ecb6805a1..11fa217243fec73261f8172e23d54daa964a02c6 100644 (file)
@@ -1,14 +1,44 @@
 '\" t
-.\" $Id: infocmp.1m,v 1.13 1997/12/06 22:14:28 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: infocmp.1m,v 1.21 1999/06/15 23:12:25 tom Exp $
 .TH infocmp 1M ""
 .ds n 5
 .ds d @DATADIR@/terminfo
 .SH NAME
 \fBinfocmp\fR - compare or print out \fIterminfo\fR descriptions
 .SH SYNOPSIS
-\fBinfocmp\fR [\fB-dcnpILCuV1\fR] [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR]
+\fBinfocmp\fR [\fB-dceEGgnpILCuV1\fR] [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR]
 .br
-      [\fB-w\fR \fIwidth\fR] [\fB-A\fR \fIdirectory\fR] [\fB-B\fR \fIdirectory\fR] [\fItermname\fR...]
+      [\fB-w\fR\ \fIwidth\fR] [\fB-A\fR\ \fIdirectory\fR] [\fB-B\fR\ \fIdirectory\fR]
+.br
+      [\fItermname\fR...]
 .SH DESCRIPTION
 \fBinfocmp\fR can be used to compare a binary \fBterminfo\fR entry with other
 terminfo entries, rewrite a \fBterminfo\fR description to take advantage of the
@@ -16,12 +46,12 @@ terminfo entries, rewrite a \fBterminfo\fR description to take advantage of the
 binary file (\fBterm\fR) in a variety of formats.  In all cases, the boolean
 fields will be printed first, followed by the numeric fields, followed by the
 string fields.
-
+..
 .SS Default Options
 If no options are specified and zero or one \fItermnames\fR are specified, the
 \fB-I\fR option will be assumed.  If more than one \fItermname\fR is specified,
 the \fB-d\fR option will be assumed.
-
+..
 .SS Comparison Options [-d] [-c] [-n]
 \fBinfocmp\fR compares the \fBterminfo\fR description of the first terminal
 \fItermname\fR with each of the descriptions given by the entries for the other
@@ -42,7 +72,7 @@ The \fB-n\fR option produces a list of each capability that is in neither
 entry.  If no \fItermnames\fR are given, the environment variable \fBTERM\fR
 will be used for both of the \fItermnames\fR.  This can be used as a quick
 check to see if anything was left out of a description.
-
+..
 .SS Source Listing Options [-I] [-L] [-C] [-r]
 The \fB-I\fR, \fB-L\fR, and \fB-C\fR options will produce a source listing for
 each terminal named.
@@ -136,11 +166,23 @@ Another error that does not cause incorrect compiled files, but will slow down
 the compilation time, is specifying extra \fBuse=\fR fields that are
 superfluous.  \fBinfocmp\fR will flag any other \fItermname use=\fR fields that
 were not needed.
-
-.SS Other Options [-s d|i|l|c] [-v] [-V] [-1] [-T] [-w \fIwidth\fR]
+..
+.SS Changing Databases [-A \fIdirectory\fR] [-B \fIdirectory\fR]
+The location of the compiled \fBterminfo\fR database is taken from the
+environment variable \fBTERMINFO\fR .  If the variable is not defined, or the
+terminal is not found in that location, the system \fBterminfo\fR database,
+in \fB@DATADIR@/terminfo\fR, will be used.  The options \fB-A\fR
+and \fB-B\fR may be used to override this location.  The \fB-A\fR option will
+set \fBTERMINFO\fR for the first \fItermname\fR and the \fB-B\fR option will
+set \fBTERMINFO\fR for the other \fItermnames\fR.  With this, it is possible to
+compare descriptions for a terminal with the same name located in two different
+databases.  This is useful for comparing descriptions for the same terminal
+created by different people.
+..
+.SS Other Options [-s d|i|l|c] [-1FTVefip] [-Rsubset] [-v \fIn\fR] [-w \fIwidth\fR]
 The \fB-s\fR option sorts the fields within each type according to the argument
 below:
-
+..
 .TP 5
 \fBd\fR
 leave fields in the order that they are stored in the \fIterminfo\fR database.
@@ -159,7 +201,11 @@ sorted alphabetically by the \fBterminfo\fR name within each type,
 except in the case of the \fB-C\fR or the \fB-L\fR options, which cause the
 sorting to be done by the \fBtermcap\fR name or the long C variable
 name, respectively.
-
+.TP 5
+\fB-1\fR
+causes the fields to be printed out one to a line.  Otherwise,
+the fields will be printed several to a line to a maximum width
+of 60 characters.
 .TP 5
 \fB-F\fR
 compare terminfo files.  This assumes that two following arguments are
@@ -168,29 +214,10 @@ entries, with two entries considered to match if any of their names do.
 The report printed to standard output lists entries with no matches in
 the other file, and entries with more than one match.  For entries
 with exactly one match it includes a difference report.
-.TP 5
-\fB-p\fR
-Ignore padding specifications when comparing strings.
-.TP 5
-\fB-v\fR \fIn\fR
-prints out tracing information on standard error as the program runs.
-Higher values of n induce greater verbosity.
-.TP 5
-\fB-V\fR
-prints out the version of the program in use on standard error and exits.
-.TP 5
-\fB-1\fR
-causes the fields to be printed out one to a line.  Otherwise,
-the fields will be printed several to a line to a maximum width
-of 60 characters.
-.TP 5
-\fB-T\fR
-eliminates size-restrictions on the generated text.
-This is mainly useful for testing and analysis, since the compiled
-descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
-.TP 5
-\fB-w\fR
-changes the output to \fIwidth\fR characters.
+.TP
+\fB-G\fR
+Display constant literals in decimal form
+rather than their character equivalents.
 .TP 5
 \fB-R\fR\fIsubset\fR
 Restrict output to a given subset.  This option is for use with archaic
@@ -201,22 +228,40 @@ subsets are "SVr1", "Ultrix", "HP", and "AIX"; see \fBterminfo\fR(\*n) for
 details.  You can also choose the subset "BSD" which selects only capabilities
 with termcap equivalents recognized by 4.4BSD.
 .TP 5
+\fB-T\fR
+eliminates size-restrictions on the generated text.
+This is mainly useful for testing and analysis, since the compiled
+descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
+.TP 5
+\fB-V\fR
+prints out the version of the program in use on standard error and exits.
+.TP 5
 \fB-e\fR
 Dump the capabilities of the given terminal as a C initializer for a
 TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fR).
 This option is useful for preparing versions of the curses library hardwired
 for a given terminal type.
-.SS Changing Databases [-A \fIdirectory\fR] [-B \fIdirectory\fR]
-The location of the compiled \fBterminfo\fR database is taken from the
-environment variable \fBTERMINFO\fR .  If the variable is not defined, or the
-terminal is not found in that location, the system \fBterminfo\fR database,
-in \fB@DATADIR@/terminfo\fR, will be used.  The options \fB-A\fR
-and \fB-B\fR may be used to override this location.  The \fB-A\fR option will
-set \fBTERMINFO\fR for the first \fItermname\fR and the \fB-B\fR option will
-set \fBTERMINFO\fR for the other \fItermnames\fR.  With this, it is possible to
-compare descriptions for a terminal with the same name located in two different
-databases.  This is useful for comparing descriptions for the same terminal
-created by different people.
+.TP 5
+\fB-E\fR
+Dump the capabilities of the given terminal as tables, needed in
+the C initializer for a
+TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fR).
+This option is useful for preparing versions of the curses library hardwired
+for a given terminal type.
+The tables are all declared static, and are named according to the type
+and the name of the corresponding terminal entry.
+.sp
+Before ncurses 5.0, the split between the \fB\-e\fP and \fB\-E\fP 
+options was not needed; but support for extended names required making
+the arrays of terminal capabilities separate from the TERMTYPE structure.
+.TP
+\fB-f\fR
+Display complex terminfo strings which contain if/then/else/endif expressions
+indented for readability.
+.TP
+\fB-g\fR
+Display constant character literals in quoted form
+rather than their decimal equivalents.
 .TP 5
 \fB-i\fR
 Analyze the initialization (\fBis1\fR, \fBis2\fR, \fBis3\fR), and reset
@@ -266,18 +311,37 @@ DEC[+-]ARM/auto-repeat mode
 It also recognizes a SGR action corresponding to ANSI/ISO 6429/ECMA Set
 Graphics Rendition, with the values NORMAL, BOLD, UNDERLINE, BLINK, and
 REVERSE.  All but NORMAL may be prefixed with `+' (turn on) or `-' (turn off).
+
 An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}).
+.TP 5
+\fB-p\fR
+Ignore padding specifications when comparing strings.
+.TP 5
+\fB-v\fR \fIn\fR
+prints out tracing information on standard error as the program runs.
+Higher values of n induce greater verbosity.
+.TP 5
+\fB-w\fR \fIwidth\fR
+changes the output to \fIwidth\fR characters.
+..
 .SH FILES
 .TP 20
 \*d
 Compiled terminal description database.
+..
 .SH EXTENSIONS
-The \fB-F\fR option is not supported in SVr4 curses.  (It is primarily intended
-to help infocmp's author, while wearing his terminfo/termcap maintainer hat,
-merge termcap/terminfo files from various sources into the master.)
-
-The \fB-R\fR, \fB-p\fR, \fB-e\fR, \fB-T\fR and \fB-i\fR options are not
-supported in SVr4 curses.
+The
+\fB-E\fR,
+\fB-F\fR,
+\fB-G\fR,
+\fB-R\fR,
+\fB-T\fR,
+\fB-e\fR,
+\fB-f\fR,
+\fB-g\fR,
+\fB-i\fR, and
+\fB-p\fR
+options are not supported in SVr4 curses.
 
 The \fB-r\fR option's notion of `termcap' capabilities is System V Release 4's.
 Actual BSD curses versions will have a more restricted set.  To see only the
@@ -285,11 +349,13 @@ Actual BSD curses versions will have a more restricted set.  To see only the
 .SH BUGS
 The -F option of \fBinfocmp\fR(1M) should be a \fBtoe\fR(1M) mode.
 .SH SEE ALSO
-\fBinfocmp\fR(1M), \fBcaptoinfo\fR(1M), \fBinfotocap\fR(1M), 
+\fBinfocmp\fR(1M), \fBcaptoinfo\fR(1M), \fBinfotocap\fR(1M),
 \fBtic\fR(1M), \fBtoe\fR(1M),
 \fBcurses\fR(3X), \fBterminfo\fR(\*n).
 .SH AUTHOR
 Eric S. Raymond <esr@snark.thyrsus.com>
+and
+Thomas E. Dickey <dickey@clark.net>
 .\"#
 .\"# The following sets edit modes for GNU EMACS
 .\"# Local Variables:
diff --git a/man/keybound.3x b/man/keybound.3x
new file mode 100644 (file)
index 0000000..e6bf5e4
--- /dev/null
@@ -0,0 +1,67 @@
+.\"***************************************************************************
+.\" Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999
+.\"
+.\" $Id: keybound.3x,v 1.1 1999/02/19 11:59:24 tom Exp $
+.TH keyok 3X ""
+.SH NAME
+\fBkeybound\fP \- return definition of keycode
+..
+.SH SYNOPSIS
+\fB#include <curses.h>\fP
+
+\fBint keybound(int keycode, int count);\fP
+..
+.SH DESCRIPTION
+This is an extension to the curses library.
+It permits an application to determine the string which is defined
+in the terminfo for specific keycodes.
+..
+.SH RETURN VALUE
+The keycode must be greater than zero, else NULL is returned.
+If it does not correspond to a defined key, then NULL is returned.
+Otherwise, the function returns a string, which must be freed by the caller.
+..
+.SH PORTABILITY
+These routines are specific to ncurses.  They were not supported on
+Version 7, BSD or System V implementations.  It is recommended that
+any code depending on them be conditioned using NCURSES_VERSION.
+..
+.SH SEE ALSO
+\fBdefine_key\fR(3X),
+\fBkeyok\fR(3X).
+..
+.SH AUTHOR
+Thomas Dickey.
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
index 370af42b1c4ca3b690ade953a3d4ff9cd839ae66..21befe83ca4bbbf46c73edfd8b96852be1ae7e91 100644 (file)
 .\"
 .\" Author: Thomas E. Dickey <dickey@clark.net> 1997
 .\"
-.\" $Id: keyok.3x,v 1.4 1998/02/11 12:13:47 tom Exp $
+.\" $Id: keyok.3x,v 1.5 1998/03/14 23:43:07 tom Exp $
 .TH keyok 3X ""
-.
 .SH NAME
 \fBkeyok\fP \- enable or disable a keycode
-.
+..
 .SH SYNOPSIS
 \fB#include <curses.h>\fP
 
 \fBint keyok(int keycode, bool enable);\fP
-.
+..
 .SH DESCRIPTION
 This is an extension to the curses library.
 It permits an application to disable specific keycodes, rather than
 use the \fIkeypad\fP function to disable all keycodes.
 Keys that have been disabled can be reenabled.
-.
+..
 .SH RETURN VALUE
 The keycode must be greater than zero, else ERR is returned.
 If it does not correspond to a defined key, then ERR is returned.
 If the \fIenable\fP parameter is true, then the key must have been disabled,
 and vice versa.
 Otherwise, the function returns OK.
-.
+..
 .SH PORTABILITY
 These routines are specific to ncurses.  They were not supported on
 Version 7, BSD or System V implementations.  It is recommended that
 any code depending on them be conditioned using NCURSES_VERSION.
-.
+..
 .SH SEE ALSO
 \fBdefine_key\fR(3X).
-.
+..
 .SH AUTHOR
 Thomas Dickey.
 .\"#
index b7cb95deda4ddf4b0d756fb05fa32d4a13905710..ba116a0b670e7fadb9ed90504308a1b1da39856f 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: man_db.renames,v 0.10 1997/12/14 00:25:28 tom Exp $
+# $Id: man_db.renames,v 0.15 1999/10/02 23:28:13 tom Exp $
 # Manual-page renamings for the man_db program
 #
 captoinfo.1m                   captoinfo.1
@@ -34,7 +34,6 @@ curs_print.3x                 print.3ncurses
 curs_printw.3x                 printw.3ncurses
 curs_refresh.3x                        refresh.3ncurses
 curs_scanw.3x                  scanw.3ncurses
-curs_scr_dmp.3x                        scr_dump.3ncurses
 curs_scr_dump.3x               scr_dump.3ncurses
 curs_scroll.3x                 scroll.3ncurses
 curs_slk.3x                    slk.3ncurses
@@ -46,7 +45,7 @@ curs_util.3x                  util.3ncurses
 curs_window.3x                 window.3ncurses
 curses.3x                      ncurses.3ncurses
 define_key.3x                  define_key.3ncurses
-dft_fgbg.3x                    dft_fgbg.3ncurses
+dft_fgbg.3x                    use_default_colors.3ncurses
 form.3x                                form.3form
 form_cursor.3x                 cursor.3form
 form_data.3x                   data.3form
@@ -71,6 +70,7 @@ form_requestname.3x           requestname.3form
 form_userptr.3x                        userptr.3form
 form_win.3x                    win.3form
 infocmp.1m                     infocmp.1
+keybound.3x                    keybound.3ncurses
 keyok.3x                       keyok.3ncurses
 menu.3x                                menu.3menu
 menu_attribs.3x                        attribs.3menu
@@ -97,7 +97,11 @@ mitem_value.3x                       menu_value.3menu
 mitem_visible.3x               menu_visible.3menu
 ncurses.3x                     ncurses.3ncurses
 panel.3x                       panel.3curses
+printf.3s                      printf.3
+putc.3s                        putc.3
 resizeterm.3x                  resizeterm.3ncurses
+scanf.3s                       scanf.3
+system.3s                      system.3
 term.5                         term.5
 term.7                         term.7
 terminfo.5                     terminfo.5
@@ -105,4 +109,5 @@ tic.1m                              tic.1
 toe.1m                         toe.1
 tput.1                         tput.1
 tset.1                         tset.1
+vprintf.3s                     vprintf.3
 wresize.3x                     wresize.3ncurses
index 3403ba3057c4c2eb9d635aed30cc371831cf9192..adbfffd92c7447e8835736047070d3ef5fa908a8 100644 (file)
@@ -1,5 +1,33 @@
 '\" t
-.\" $Id: menu.3x,v 1.10 1997/12/14 01:45:52 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu.3x,v 1.13 1998/11/29 01:09:07 Rick.Ohnemus Exp $
 .TH menu 3X ""
 .SH NAME
 \fBmenu\fR - curses extension for programming menus
@@ -14,7 +42,7 @@ menus, display menus on the screen, and handle interaction with the user.
 
 The \fBmenu\fR library uses the \fBcurses\fR libraries, and a curses
 initialization routine such as \fBinitscr\fR must be called before using any of
-these functions.  To use the \fBmenu\fR library, link with the options 
+these functions.  To use the \fBmenu\fR library, link with the options
 \fB-lmenu -lcurses\fR.
 
 .SS Current Default Values for Item Attributes
@@ -30,7 +58,7 @@ rendering of items already created.
 The following table lists each \fBmenu\fR routine and the name of
 the manual page on which it is described.
 
-.TS 
+.TS
 l l .
 \fBcurses\fR Routine Name      Manual Page Name
 =
index 39850c1e2a652e7c87144883c5c9c2371cedf1a4..3577db53d6aae9ce50072fc2b44893e14d3b6811 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_attribs.3x,v 1.6 1998/11/29 01:09:20 Rick.Ohnemus Exp $
 .TH menu_attributes 3X ""
 .SH NAME
 \fBmenu_attributes\fR - color and attribute control for menus
index d2e5e2a3e8ba9f3aeeb74bc5ee2cb44f5d438fba..2cc58507de6679fb551dcedbbbdd572037103ee7 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_cursor.3x,v 1.5 1998/11/29 01:09:30 Rick.Ohnemus Exp $
 .TH menu_cursor 3X ""
 .SH NAME
 \fBmenu_cursor\fR - position a menu's cursor
index 3643703f8ffc02e04bbf84e299a4d8ac286e075e..cffd08d850eee01f435739d74f17c76652ebda10 100644 (file)
@@ -1,4 +1,32 @@
-.'" $Id: menu_driver.3x,v 1.5 1997/12/14 01:28:42 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.'" $Id: menu_driver.3x,v 1.8 1999/01/09 22:55:18 tom Exp $
 .TH menu_driver 3X ""
 .SH NAME
 \fBmenu_driver\fR - command-processing loop of the menu system
@@ -9,8 +37,9 @@ int menu_driver(MENU *menu, int c);
 .br
 .SH DESCRIPTION
 Once a menu has been posted (displayed), you should funnel input events to it
-through \fBmenu_driver\fR.  This routine has two major input cases; either
-the input is a menu navigation request or it's a printable ASCII character.
+through \fBmenu_driver\fR.  This routine has three major input cases; either
+the input is a menu navigation request, it's a printable ASCII character or it
+is the KEY_MOUSE special key associated with an mouse event.
 The menu driver requests are as follows:
 .TP 5
 REQ_LEFT_ITEM
@@ -72,8 +101,27 @@ the new pattern.  If there is no such match, \fBmenu_driver\fR returns
 If the second argument is one of the above pre-defined requests, the
 corresponding action is performed.
 .PP
+If the second argument is the KEY_MOUSE special key, the associated
+mouse event is translated into one of the above pre-defined requests.
+Currently only clicks in the user window (e.g. inside the menu display
+area or the decoration window) are handled. If you click above the
+display region of the menu, a REQ_SCR_ULINE is generated, if you
+doubleclick a REQ_SCR_UPAGE is generated and if you tripleclick a
+REQ_FIRST_ITEM is generated. If you click below the display region of
+the menu, a REQ_SCR_DLINE is generated, if you doubleclick a REQ_SCR_DPAGE
+is generated and if you tripleclick a REQ_LAST_ITEM is generated. If you
+click at an item inside the display area of the menu, the menu cursor
+is positioned to that item. If you double-click at an item a REQ_TOGGLE_ITEM
+is generated and \fBE_UNKNOWN_COMMAND\fR is returned. This return value makes
+sense, because a double click usually means that an item-specific action should
+be returned. It's exactly the purpose of this return value to signal that an
+application specific command should be executed. If a translation 
+into a request was done, \fBmenu_driver\fR returns the result of this request.
+If you clicked outside the user window or the mouse event couldn't be translated
+into a menu request an \fBE_REQUEST_DENIED\fR is returned. 
+.PP
 If the second argument is neither printable ASCII nor one of the above
-pre-defined menu requests, the drive assumes it is an application-specific
+pre-defined menu requests or KEY_MOUSE, the drive assumes it is an application-specific
 command and returns \fBE_UNKNOWN_COMMAND\fR.  Application-defined commands
 should be defined relative to \fBMAX_COMMAND\fR, the maximum value of these
 pre-defined requests.
@@ -110,7 +158,7 @@ The header file \fB<menu.h>\fR automatically includes the header files
 \fB<curses.h>\fR.
 .SH PORTABILITY
 These routines emulate the System V menu library.  They were not supported on
-Version 7 or BSD versions.
+Version 7 or BSD versions. The support for mouse events is ncurses specific.
 .SH AUTHORS
 Juergen Pfeifer.  Manual pages and adaptation for new curses by Eric
 S. Raymond.
index 1931f79811d6dcd164934ba13158371d1d375f20..57c77a390ede3989404e728d77e7e8ed9aeae814 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_format.3x,v 1.7 1998/11/29 01:09:39 Rick.Ohnemus Exp $
 .TH menu_format 3X ""
 .SH NAME
 \fBmenu_format\fR - set and get menu sizes
@@ -19,7 +48,7 @@ The default format is 16 rows, 1 column.  Calling \fBset_menu_format\fR with a
 null menu pointer will change this default.  A zero row or column argument to
 \fBset_menu_format\fR is interpreted as a request not to change the current
 value.
+
 The function \fBmenu_format\fR returns the maximum-size constraints for the
 given menu into the storage addressed by \fBrows\fR and \fBcols\fR.
 .SH RETURN VALUE
index 36adef9f7aa7d20952139e41b09603130403559f..531528a607834418caac20a4f6d9dfb621c73197 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_hook.3x,v 1.6 1998/11/29 01:09:47 Rick.Ohnemus Exp $
 .TH menu_hook 3X ""
 .SH NAME
 \fBmenu_hook\fR - set hooks for automatic invocation by applications
@@ -23,7 +52,7 @@ void (*)(MENU *) menu_term(const MENU *menu);
 .br
 .SH DESCRIPTION
 These functions make it possible to set hook functions to be called at various
-points in the automatic processing of input event codes by \fBmenu_driver\fR.  
+points in the automatic processing of input event codes by \fBmenu_driver\fR.
 
 The function \fBset_item_init\fR sets a hook to be called at menu-post time and
 each time the selected item changes (after the change).  \fBitem_init\fR
index 888ae81931193b2f5ebe1e545678050f1b463a53..7ec7db5604baf1020a4e44b7bba33ad79b5ac2e2 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_items.3x,v 1.5 1998/11/29 01:09:56 Rick.Ohnemus Exp $
 .TH menu_items 3X ""
 .SH NAME
 \fBmenu_items\fR - make and break connections between items and menus
index 62f6d39c45c574abd41abeefab68be069b9ad058..72ea000335e4ba22f3d6cbdb624583f4cd8f48e4 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_mark.3x,v 1.6 1998/11/29 01:10:03 Rick.Ohnemus Exp $
 .TH menu_mark 3X ""
 .SH NAME
 \fBmenu_mark\fR - get and set the menu mark string
@@ -12,7 +41,7 @@ const char *menu_mark(const MENU *menu);
 .SH DESCRIPTION
 In order to make menu selections visible on older terminals without
 highlighting or color capability, the menu library marks selected items
-in a menu with a prefix string. 
+in a menu with a prefix string.
 
 The function \fBset_menu_mark\fR sets the mark string for the given menu.
 Calling \fBset_menu_mark\fR with a null menu item will abolish the mark string.
index 9053fdd5579d8fc1d6d40dab23a1cb6454ec903f..c53bd9b8cb6554d8385b09f545276eeaddc14205 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_new.3x,v 1.7 1998/11/29 01:10:13 Rick.Ohnemus Exp $
 .TH menu_new 3X ""
 .SH NAME
 \fBmenu_new\fR - create and destroy menus
index f5b67b19d90a1575caee2c61fa36be603fd5f71d..30cad58d495760be85d57cab4e6fff0b3b626c0b 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_opts.3x,v 1.7 1998/11/29 01:10:21 Rick.Ohnemus Exp $
 .TH menu_opts 3X ""
 .SH NAME
 \fBmenu_opts\fR - set and get menu options
@@ -23,7 +52,7 @@ others alone.
 The function \fBmenu_opts_off\fR turns off the given option bits, and leaves
 others alone.
 
-The function \fBmenu_opts\fR returns the menu's current option bits.  
+The function \fBmenu_opts\fR returns the menu's current option bits.
 
 The following options are defined (all are on by default):
 .TP 5
@@ -42,7 +71,7 @@ Ignore the case when pattern-matching.
 O_SHOWMATCH
 Move the cursor to within the item name while pattern-matching.
 .TP 5
-O_NONCYCLIC 
+O_NONCYCLIC
 Don't wrap around next-item and previous-item,
 requests to the other end of the menu.
 .SH RETURN VALUE
index 417fd1d4f1ddf5a0daf76214ccbf74d98171b565..693ebe35729a25f3b0ecfd57e323ae2198f69fa2 100644 (file)
@@ -1,4 +1,32 @@
-.'" $Id: menu_pattern.3x,v 1.4 1997/12/06 22:10:02 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.'" $Id: menu_pattern.3x,v 1.5 1998/03/11 21:12:53 juergen Exp $
 .TH menu_pattern 3X ""
 .SH NAME
 \fBmenu_pattern\fR - get and set a menu's pattern buffer
index cfe45b29db8350fb89012604286f3e5e8e33b06e..a4182d649520135725b593596d961133e7369f06 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_post.3x,v 1.7 1998/11/29 01:10:33 Rick.Ohnemus Exp $
 .TH menu_post 3X ""
 .SH NAME
 \fBmenu_post\fR - write or erase menus from associated subwindows
index 9ae823e32c6a68cc5975b17776cd7b013b230203..f4b646a455fcb63417896050af4efdf377e33085 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_requestname.3x,v 1.6 1998/11/29 01:10:40 Rick.Ohnemus Exp $
 .TH menu_requestname 3X ""
 .SH NAME
 \fBmenu_requestname\fR - handle printable menu request names
index ece226321c1c7d1c57d7d9aa0c3c445c977137ec..0480b3c02d4b063f46893eb69a5745f1d93eff82 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_spacing.3x,v 1.5 1998/11/29 01:10:51 Rick.Ohnemus Exp $
 .TH menu_spacing 3X ""
 .SH NAME
 \fBmenu_spacing\fR - Control spacing between menu items.
index 48040e3d643a8eb6294b96778b4f1566c4f8f51e..1fe354183d839be70801e9d5ef2c9548cbe273ac 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_userptr.3x,v 1.6 1998/11/29 01:11:02 Rick.Ohnemus Exp $
 .TH menu_userptr 3X ""
 .SH NAME
 \fBmenu_userptr\fR - associate application data with a menu item
index 9ed9b4eb2ea9595b1533c0b2032cac568366c3cf..336da44b0c5b9db1d807495b0c036c4d918ea37d 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: menu_win.3x,v 1.6 1998/11/29 01:11:11 Rick.Ohnemus Exp $
 .TH menu_win 3X ""
 .SH NAME
 \fBmenu_win\fR - make and break menu window and subwindow associations
@@ -28,7 +57,7 @@ it were \fBstsdcr\fR.  A menu argument of \fBNULL\fR is treated as a request
 to change the system default menu window or subwindow.
 
 The function \fBscale_menu\fR returns the minimum size required for the
-subwindow of \fImenu\fR. 
+subwindow of \fImenu\fR.
 .SH RETURN VALUE
 Routines that return pointers return \fBNULL\fR on error.  Routines that return
 an integer return one of the following error codes:
index 52812b1606459bb601a6f5c712bdac7eb6670b8a..179a23be3b2e91e8a1e6aa3bfba90629dd6853c3 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: mitem_current.3x,v 1.9 1998/12/26 19:52:34 tom Exp $
 .TH mitem_current 3X ""
 .SH NAME
 \fBmitem_current\fR - set and get current_menu_item
@@ -31,7 +60,7 @@ the menu's item pointer list.
 .SH RETURN VALUE
 \fBcurrent_item\fR returns \fBNULL\fR on error.
 
-\fBtop_row\fR and \fBitem_index\fR return \fBERR\fR (the general \fBcurses\f
+\fBtop_row\fR and \fBitem_index\fR return \fBERR\fR (the general \fBcurses\fR
 error value) on error.
 
 \fBset_current_item\fR and \fBset_top_row\fR return one of the following:
index dcce6990aab265f9104883d2dd2fb9f5de065db2..007752e0bbe40ba0f6a9ce4986ac24b74cc69db9 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: mitem_name.3x,v 1.5 1998/11/29 01:11:29 Rick.Ohnemus Exp $
 .TH mitem_name 3X ""
 .SH NAME
 \fBmitem_name\fR - get menu item name and description fields
index c08d05ed6119e352cabfe38525ec23eaaae2b363..0653840167bd5fba44d505d2db57951a8fb3602f 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: mitem_new.3x,v 1.7 1998/11/29 01:11:38 Rick.Ohnemus Exp $
 .TH mitem_new 3X ""
 .SH NAME
 \fBmitem_new\fR - create and destroy menu items
index c430d9b783f8b4641fae85278099a66a5a12361e..99e4e5ea7e99eae2dab7be80d769d0891fc230d8 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: mitem_opts.3x,v 1.6 1998/11/29 01:12:37 Rick.Ohnemus Exp $
 .TH mitem_opts 3X ""
 .SH NAME
 \fBmitem_opts\fR - set and get menu item options
@@ -23,7 +52,7 @@ others alone.
 The function \fBitem_opts_off\fR turns off the given option bits, and leaves
 others alone.
 
-The function \fBitem_opts\fR returns the item's current option bits.  
+The function \fBitem_opts\fR returns the item's current option bits.
 
 There is only one defined option bit mask, \fBO_SELECTABLE\fR.  When this is
 on, the item may be selected during menu processing.  This option defaults
index f3a4007c558c0eec4d40ccad09651756d9425e1f..2dd564fd61e8a814db4be65a8bbf927b1e23a3eb 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: mitem_userptr.3x,v 1.6 1998/11/29 01:12:47 Rick.Ohnemus Exp $
 .TH mitem_userptr 3X ""
 .SH NAME
 \fBmitem_userptr\fR - associate application data with a menu item
index a18a014cc3228d5646abdb77ab49eb6f7c712805..680fda8869c325d336529431f2cdbe80000c6e87 100644 (file)
@@ -1,4 +1,32 @@
-.'" $Id: mitem_value.3x,v 1.3 1997/12/06 22:07:49 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.'" $Id: mitem_value.3x,v 1.4 1998/03/11 21:12:53 juergen Exp $
 .TH mitem_value 3X ""
 .SH NAME
 \fBmitem_value\fR - set and get menu item values
index 1fe868464283bc7873002cb691ed987d522837b5..8f9039c2f6db07fbce58d0c26a10da5d5157f03d 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: mitem_visible.3x,v 1.5 1998/11/29 01:12:55 Rick.Ohnemus Exp $
 .TH mitem_visible 3X ""
 .SH NAME
 \fBmitem_visible\fR - check visibility of a menu item
index 4330fc80328d82c208cb27f6f7eed7eb96ff9202..92f30934f58dfea8bc78f8875221e12adf31914c 100644 (file)
@@ -1,5 +1,34 @@
 '\" t
-.\" $Id: ncurses.3x,v 1.23 1998/02/15 02:05:44 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998,1999 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: ncurses.3x,v 1.35 1999/10/23 19:50:07 tom Exp $
+.hy 0
 .TH ncurses 3X ""
 .ds n 5
 .ds d @DATADIR@/terminfo
@@ -9,7 +38,7 @@
 \fB#include <curses.h>\fR
 .br
 .SH DESCRIPTION
-The \fBcurses\fR library routines give the user a terminal-independent method
+The \fBncurses\fR library routines give the user a terminal-independent method
 of updating character screens with reasonable optimization.  This
 implementation is ``new curses'' (ncurses) and is the approved replacement for
 4.4BSD classic curses, which has been discontinued.
@@ -22,7 +51,7 @@ described in detail in the EXTENSIONS and BUGS sections of individual man
 pages.
 
 A program using these routines must be linked with the \fB-lncurses\fR option,
-or (if it has been generated) with the debugging library \fB-lncurses_g\fR. 
+or (if it has been generated) with the debugging library \fB-lncurses_g\fR.
 (Your system integrator may also have installed these libraries under
 the names \fB-lcurses\fR and \fB-lcurses_g\fR.)
 The ncurses_g library generates trace logs (in a file called 'trace' in the
@@ -56,7 +85,7 @@ after the shell environment variable \fBTERM\fR has been exported.
 \fBtset(1)\fR is usually responsible for doing this.
 [See \fBterminfo\fR(\*n) for further details.]
 
-The \fBcurses\fR library permits manipulation of data structures,
+The \fBncurses\fR library permits manipulation of data structures,
 called \fIwindows\fR, which can be thought of as two-dimensional
 arrays of characters representing all or part of a CRT screen.  A
 default window called \fBstdscr\fR, which is the size of the terminal
@@ -99,7 +128,7 @@ If the environment variables \fBLINES\fR and \fBCOLUMNS\fR are set, or if the
 program is executing in a window environment, line and column information in
 the environment will override information read by \fIterminfo\fR.  This would
 effect a program running in an AT&T 630 layer, for example, where the size of a
-screen is changeable.
+screen is changeable (see \fBENVIRONMENT\fR).
 
 If the environment variable \fBTERMINFO\fR is defined, any program using
 \fBcurses\fR checks for a local terminal definition before checking in the
@@ -174,6 +203,10 @@ addchnstr/\fBcurs_addchstr\fR(3X)
 addchstr/\fBcurs_addchstr\fR(3X)
 addnstr/\fBcurs_addstr\fR(3X)
 addstr/\fBcurs_addstr\fR(3X)
+attr_get/\fBcurs_attr\fR(3X)
+attr_off/\fBcurs_attr\fR(3X)
+attr_on/\fBcurs_attr\fR(3X)
+attr_set/\fBcurs_attr\fR(3X)
 attroff/\fBcurs_attr\fR(3X)
 attron/\fBcurs_attr\fR(3X)
 attrset/\fBcurs_attr\fR(3X)
@@ -185,11 +218,13 @@ border/\fBcurs_border\fR(3X)
 box/\fBcurs_border\fR(3X)
 can_change_color/\fBcurs_color\fR(3X)
 cbreak/\fBcurs_inopts\fR(3X)
+chgat/\fBcurs_attr\fR(3X)
 clear/\fBcurs_clear\fR(3X)
 clearok/\fBcurs_outopts\fR(3X)
 clrtobot/\fBcurs_clear\fR(3X)
 clrtoeol/\fBcurs_clear\fR(3X)
 color_content/\fBcurs_color\fR(3X)
+color_set/\fBcurs_attr\fR(3X)
 copywin/\fBcurs_overlay\fR(3X)
 curs_set/\fBcurs_kernel\fR(3X)
 def_prog_mode/\fBcurs_kernel\fR(3X)
@@ -213,9 +248,11 @@ filter/\fBcurs_util\fR(3X)
 flash/\fBcurs_beep\fR(3X)
 flushinp/\fBcurs_util\fR(3X)
 getbegyx/\fBcurs_getyx\fR(3X)
+getbkgd/\fBcurs_bkgd\fR(3X)
 getch/\fBcurs_getch\fR(3X)
 getmaxyx/\fBcurs_getyx\fR(3X)
 getmouse/\fBcurs_mouse\fR(3X)*
+getnstr/\fBcurs_getstr\fR(3X)
 getparyx/\fBcurs_getyx\fR(3X)
 getstr/\fBcurs_getstr\fR(3X)
 getsyx/\fBcurs_kernel\fR(3X)
@@ -263,11 +300,14 @@ mvaddchnstr/\fBcurs_addchstr\fR(3X)
 mvaddchstr/\fBcurs_addchstr\fR(3X)
 mvaddnstr/\fBcurs_addstr\fR(3X)
 mvaddstr/\fBcurs_addstr\fR(3X)
+mvchgat/\fBcurs_attr\fR(3X)
 mvcur/\fBcurs_terminfo\fR(3X)
 mvdelch/\fBcurs_delch\fR(3X)
 mvderwin/\fBcurs_window\fR(3X)
 mvgetch/\fBcurs_getch\fR(3X)
+mvgetnstr/\fBcurs_getstr\fR(3X)
 mvgetstr/\fBcurs_getstr\fR(3X)
+mvhline/\fBcurs_border\fR(3X)
 mvinch/\fBcurs_inch\fR(3X)
 mvinchnstr/\fBcurs_inchstr\fR(3X)
 mvinchstr/\fBcurs_inchstr\fR(3X)
@@ -283,9 +323,12 @@ mvwaddchnstr/\fBcurs_addchstr\fR(3X)
 mvwaddchstr/\fBcurs_addchstr\fR(3X)
 mvwaddnstr/\fBcurs_addstr\fR(3X)
 mvwaddstr/\fBcurs_addstr\fR(3X)
+mvwchgat/\fBcurs_attr\fR(3X)
 mvwdelch/\fBcurs_delch\fR(3X)
 mvwgetch/\fBcurs_getch\fR(3X)
+mvwgetnstr/\fBcurs_getstr\fR(3X)
 mvwgetstr/\fBcurs_getstr\fR(3X)
+mvwhline/\fBcurs_border\fR(3X)
 mvwin/\fBcurs_window\fR(3X)
 mvwinch/\fBcurs_inch\fR(3X)
 mvwinchnstr/\fBcurs_inchstr\fR(3X)
@@ -297,6 +340,7 @@ mvwinsstr/\fBcurs_insstr\fR(3X)
 mvwinstr/\fBcurs_instr\fR(3X)
 mvwprintw/\fBcurs_printw\fR(3X)
 mvwscanw/\fBcurs_scanw\fR(3X)
+mvwvline/\fBcurs_border\fR(3X)
 napms/\fBcurs_kernel\fR(3X)
 newpad/\fBcurs_pad\fR(3X)
 newterm/\fBcurs_initscr\fR(3X)
@@ -344,10 +388,14 @@ setsyx/\fBcurs_kernel\fR(3X)
 setterm/\fBcurs_terminfo\fR(3X)
 setupterm/\fBcurs_terminfo\fR(3X)
 slk_attr/\fBcurs_slk\fR(3X)*
+slk_attr_off/\fBcurs_slk\fR(3X)
+slk_attr_on/\fBcurs_slk\fR(3X)
+slk_attr_set/\fBcurs_slk\fR(3X)
 slk_attroff/\fBcurs_slk\fR(3X)
 slk_attron/\fBcurs_slk\fR(3X)
 slk_attrset/\fBcurs_slk\fR(3X)
 slk_clear/\fBcurs_slk\fR(3X)
+slk_color/\fBcurs_slk\fR(3X)
 slk_init/\fBcurs_slk\fR(3X)
 slk_label/\fBcurs_slk\fR(3X)
 slk_noutrefresh/\fBcurs_slk\fR(3X)
@@ -387,6 +435,8 @@ use_env/\fBcurs_util\fR(3X)
 vidattr/\fBcurs_terminfo\fR(3X)
 vidputs/\fBcurs_terminfo\fR(3X)
 vline/\fBcurs_border\fR(3X)
+vw_printw/\fBcurs_printw\fR(3X)
+vw_scanw/\fBcurs_scanw\fR(3X)
 vwprintw/\fBcurs_printw\fR(3X)
 vwscanw/\fBcurs_scanw\fR(3X)
 waddch/\fBcurs_addch\fR(3X)
@@ -394,15 +444,21 @@ waddchnstr/\fBcurs_addchstr\fR(3X)
 waddchstr/\fBcurs_addchstr\fR(3X)
 waddnstr/\fBcurs_addstr\fR(3X)
 waddstr/\fBcurs_addstr\fR(3X)
+wattr_get/\fBcurs_attr\fR(3X)
+wattr_off/\fBcurs_attr\fR(3X)
+wattr_on/\fBcurs_attr\fR(3X)
+wattr_set/\fBcurs_attr\fR(3X)
 wattroff/\fBcurs_attr\fR(3X)
 wattron/\fBcurs_attr\fR(3X)
 wattrset/\fBcurs_attr\fR(3X)
 wbkgd/\fBcurs_bkgd\fR(3X)
 wbkgdset/\fBcurs_bkgd\fR(3X)
 wborder/\fBcurs_border\fR(3X)
+wchgat/\fBcurs_attr\fR(3X)
 wclear/\fBcurs_clear\fR(3X)
 wclrtobot/\fBcurs_clear\fR(3X)
 wclrtoeol/\fBcurs_clear\fR(3X)
+wcolor_set/\fBcurs_attr\fR(3X)
 wcursyncup/\fBcurs_window\fR(3X)
 wdelch/\fBcurs_delch\fR(3X)
 wdeleteln/\fBcurs_deleteln\fR(3X)
@@ -423,6 +479,7 @@ winsertln/\fBcurs_deleteln\fR(3X)
 winsnstr/\fBcurs_insstr\fR(3X)
 winsstr/\fBcurs_insstr\fR(3X)
 winstr/\fBcurs_instr\fR(3X)
+wmouse_trafo/\fBcurs_mouse\fR(3X)
 wmove/\fBcurs_move\fR(3X)
 wnoutrefresh/\fBcurs_refresh\fR(3X)
 wprintw/\fBcurs_printw\fR(3X)
@@ -452,135 +509,354 @@ values of \fBsetscrreg\fR, \fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and
 right-hand side of assignment statements).
 
 Routines that return pointers return \fBNULL\fR on error.
+.SH ENVIRONMENT
+The following environment symbols are useful for customizing the
+runtime behavior of the \fBncurses\fR library.  The most important
+ones have been already discussed in detail.
+.TP 5
+BAUDRATE
+The debugging library checks this environment symbol when the application
+has redirected output to a file.
+The symbol's numeric value is used for the baudrate.
+If no value is found \fBncurses\fR uses 9600.
+This allows testers to construct repeatable test-cases
+that take into account costs that depend on baudrate.
+.TP 5
+CC
+When set, change occurrences of the command_character
+(i.e., the \fBcmdch\fP capability)
+of the loaded terminfo entries to the value of this symbol.
+Very few terminfo entries provide this feature.
+.TP 5
+COLUMNS
+Specify the width of the screen in characters.
+Applications running in a windowing environment usually are able to
+obtain the width of the window in which they are executing.
+If neither the $COLUMNS value nor the terminal's screen size is available,
+\fBncurses\fR uses the size which may be specified in the terminfo database
+(i.e., the \fBcols\fR capability).
+
+It is important that your application use a correct size for the screen.
+However, this is not always possible because your application may be
+running on a host which does not honor NAWS (Negotiations About Window
+Size), or because you are temporarily running as another user.
+
+Either COLUMNS or LINES symbols may be specified independently.
+This is mainly useful to circumvent legacy misfeatures of terminal descriptions,
+e.g., xterm which commonly specifies a 65 line screen.
+For best results, \fBlines\fR and \fBcols\fR should not be specified in
+a terminal description for terminals which are run as emulations.
+
+Use the \fBuse_env\fR function to disable this feature.
+.TP 5
+DISPLAY
+Provides a hint to ncurses that your terminal is an X terminal
+emulator such as \fBxterm\fP.
+If the \fBkmous\fP capability is set to the beginning of the xterm
+mouse response, e.g., "kmous=\E[M", then ncurses will send the terminal
+xterm's mouse initialization strings and allow appropriate replies.
+See the \fBcurs_mouse\fR(3X) manual page for programming information.
+.TP 5
+ESCDELAY
+Specifies the total time, in milliseconds, for which ncurses will
+await a character sequence, e.g., a function key.
+The default value, 1000 milliseconds, is enough for most uses.
+However, it is made a variable to accommodate unusual applications.
+
+The most common instance where you may wish to change this value
+is to work with slow hosts, e.g., running on a network.
+If the host cannot read characters rapidly enough, it will have the same
+effect as if the terminal did not send characters rapidly enough.
+The library will still see a timeout.
+
+Note that xterm mouse events are built up from character sequences
+received from the xterm.
+If your application makes heavy use of multiple-clicking, you may
+wish to lengthen this default value because the timeout applies
+to the composed multi-click event as well as the individual clicks.
+.TP 5
+HOME
+Tells \fBncurses\fR where your home directory is.
+That is where it may read and write auxiliary terminal descriptions:
+
+$HOME/.termcap
+.br
+$HOME/.terminfo
+.TP 5
+LINES
+Like COLUMNS, specify the height of the screen in characters.
+See COLUMNS for a detailed description.
+.TP 5
+MOUSE_BUTTONS_123
+This applies only to the OS/2 EMX port.
+It specifies the order of buttons on the mouse.
+OS/2 numbers a 3-button mouse inconsistently from other
+platforms:
+
+1 = left
+.br
+2 = right
+.br
+3 = middle.
+
+This symbol lets you customize the mouse.
+The symbol must be three numeric digits 1-3 in any order, e.g., 123 or 321.
+If it is not specified, \fBncurses\fR uses 132.
+.TP 5
+NCURSES_NO_PADDING
+Most of the terminal descriptions in the terminfo database are written
+for real "hardware" terminals.
+Many people use terminal emulators
+which run in a windowing environment and use curses-based applications.
+Terminal emulators can duplicate
+all of the important aspects of a hardware terminal, but they do not
+have the same limitations.
+The chief limitation of a hardware terminal from the standpoint
+of your application is the management of dataflow, i.e., timing.
+Unless a hardware terminal is interfaced into a terminal concentrator
+(which does flow control),
+it (or your application) must manage dataflow, preventing overruns.
+The cheapest solution (no hardware cost)
+is for your program to do this by pausing after
+operations that the terminal does slowly, such as clearing the display.
+
+As a result, many terminal descriptions (including the vt100)
+have delay times embedded.  You may wish to use these descriptions,
+but not want to pay the performance penalty.
+
+Set the NCURSES_NO_PADDING symbol to disable all but mandatory
+padding.  Mandatory padding is used as a part of special control
+sequences such as \fIflash\fR.
+.TP 5
+NCURSES_NO_SETBUF
+Normally \fBncurses\fR enables buffered output during terminal initialization.
+This is done (as in SVr4 curses) for performance reasons.
+For testing purposes, both of \fBncurses\fR and certain applications,
+this feature is made optional.  Setting the NCURSES_NO_SETBUF variable
+disables output buffering, leaving the output in the original (usually
+line buffered) mode.
+.TP 5
+NCURSES_TRACE
+During initialization, the \fBncurses\fR debugging library
+checks the NCURSES_TRACE symbol.
+If it is defined, to a numeric value, \fBncurses\fR calls the \fBtrace\fR
+function, using that value as the argument.
+
+The argument values, which are defined in \fBcurses.h\fR, provide several
+types of information.
+When running with traces enabled, your application will write the
+file \fBtrace\fR to the current directory.
+.TP 5
+TERM
+Denotes your terminal type.
+Each terminal type is distinct, though many are similar.
+.TP 5
+TERMCAP
+If the \fBncurses\fR library has been configured with \fItermcap\fR
+support, \fBncurses\fR will check for a terminal's description in
+termcap form if it is not available in the terminfo database.
+
+The TERMCAP symbol contains either a terminal description (with
+newlines stripped out),
+or a file name telling where the information denoted by the TERM symbol exists.
+In either case, setting it directs \fBncurses\fR to ignore
+the usual place for this information, e.g., /etc/termcap.
+.TP 5
+TERMINFO
+Overrides the directory in which \fBncurses\fR searches for your terminal
+description.
+This is the simplest, but not the only way to change the list of directories.
+The complete list of directories in order follows:
+.RS
+.TP 3
+-
+the last directory to which \fBncurses\fR wrote, if any, is searched first.
+.TP 3
+-
+the directory specified by the TERMINFO symbol
+.TP 3
+-
+$HOME/.terminfo
+.TP 3
+-
+directories listed in the TERMINFO_DIRS symbol
+.TP 3
+-
+one or more directories whose names are configured and compiled into the
+ncurses library, e.g.,
+@DATADIR@/terminfo
+.RE
+.TP 5
+TERMINFO_DIRS
+Specifies a list of directories to search for terminal descriptions.
+The list is separated by colons (i.e., ":").
+All of the terminal descriptions are in terminfo form, which makes
+a subdirectory named for the first letter of the terminal names therein.
+.TP 5
+TERMPATH
+If TERMCAP does not hold a file name then \fBncurses\fR checks
+the TERMPATH symbol.
+This is a list of filenames separated by colons (i.e., ":").
+If the TERMPATH symbol is not set, \fBncurses\fR looks in the files
+/etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, in that order.
+.SH FILES
+.TP 5
+@DATADIR@/tabset
+directory containing initialization files for the terminal capability database
+@DATADIR@/terminfo
+terminal capability database
 .SH SEE ALSO
 \fBterminfo\fR(\*n) and 3X pages whose names begin "curs_" for detailed routine
 descriptions.
 .SH EXTENSIONS
-The \fBcurses\fR library can be compiled with an option (\fB-DTERMCAP_FILE\fR)
+The \fBncurses\fR library can be compiled with an option (\fB-DUSE_GETCAP\fR)
 that falls back to the old-style /etc/termcap file if the terminal setup code
 cannot find a terminfo entry corresponding to \fBTERM\fR.  Use of this feature
 is not recommended, as it essentially includes an entire termcap compiler in
-the \fBcurses\fR startup code, at significant cost in core and startup cycles.
-
-Compiling with \fB-DTERMCAP_FILE\fR changes the library's initialization
-sequence in a way intended to mimic the behavior of 4.4BSD curses.  If there is
-no local or system terminfo entry matching \fBTERM\fR, then the library looks
-for termcap entries in the following places: (1) if \fBTERMINFO\fR is
-undefined, in the file named by \fBTERMCAP_FILE\fR; (2) if \fBTERMINFO\fR is
-defined and begins with a slash, it is interpreted as the name of a termcap
-file to search for \fBTERM\fR; (3) otherwise, if \fBTERMINFO\fR has a leading
-string that looks like a terminal entry name list, and it matches \fBTERM\fR,
-the contents of \fBTERMINFO\fR is interpreted as a termcap; (4) if
-\fBTERMINFO\fR looks like a termcap but doesn't match \fBTERM\fR, the termcap
-file is searched for among the colon-separated paths in the environment
-variable \fBTERMPATHS\fR if that is defined, and in ~/.termcap and the file
-value of \fBTERMCAP_FILE\fR otherwise.
-
-Versions of \fBcurses\fR compiled on PC clones support display of the PC ROM
-characters (including ROM characters 0-31, which stock SVr4 curses cannot
-display). See the EXTENSIONS sections of \fBcurs_addch\fR(3X) and
-\fBcurs_attr\fR(3X).
-
-The \fBcurses\fR library includes facilities for capturing mouse events on
+the \fBncurses\fR startup code, at significant cost in core and startup cycles.
+
+The \fBncurses\fR library includes facilities for capturing mouse events on
 certain terminals (including xterm). See the \fBcurs_mouse\fR(3X)
 manual page for details.
 
-The \fBcurses\fR library includes a function for directing application output
+The \fBncurses\fR library includes facilities for responding to window
+resizing events, e.g., when running in an xterm.
+See the \fBresizeterm\fR(3X)
+and \fBwresize\fR(3X) manual pages for details.
+In addition, the library may be configured with a SIGWINCH handler.
+
+The \fBncurses\fR library extends the fixed set of function key capabilities
+of terminals by allowing the application designer to define additional
+key sequences at runtime.
+See the \fBdefine_key\fR(3X)
+and \fBkeyok\fR(3X) manual pages for details.
+
+The \fBncurses\fR library can exploit the capabilities of terminals which
+implement the ISO-6429 SGR 39 and SGR 49 controls, which allow an application
+to reset the terminal to its original foreground and background colors.
+From the users' perspective, the application is able to draw colored
+text on a background whose color is set independently, providing better
+control over color contrasts.
+See the \fBuse_default_colors\fR(3X) manual page for details.
+
+The \fBncurses\fR library includes a function for directing application output
 to a printer attached to the terminal device.  See the \fBcurs_print\fR(3X)
 manual page for details.
 .SH PORTABILITY
-The \fBcurses\fR library is intended to be BASE-level conformant with the XSI
+The \fBncurses\fR library is intended to be BASE-level conformant with the XSI
 Curses standard.  Certain portions of the EXTENDED XSI Curses functionality
 (including color support) are supported.  The following EXTENDED XSI Curses
 calls in support of wide (multibyte) characters are not yet implemented:
-\fBaddnwstr\fB,
-\fBaddwstr\fB,
-\fBmvaddnwstr\fB,
-\fBmvwaddnwstr\fB,
-\fBmvaddwstr\fB,
-\fBwaddnwstr\fB,
-\fBwaddwstr\fB,
-\fBadd_wch\fB,
-\fBwadd_wch\fB,
-\fBmvadd_wch\fB,
-\fBmvwadd_wch\fB,
-\fBadd_wchnstr\fB,
-\fBadd_wchstr\fB,
-\fBwadd_wchnstr\fB,
-\fBwadd_wchstr\fB,
-\fBmvadd_wchnstr\fB,
-\fBmvadd_wchstr\fB,
-\fBmvwadd_wchnstr\fB,
-\fBmvwadd_wchstr\fB,
-\fBbkgrndset\fB,
-\fBbkgrnd\fB,
-\fBgetbkgrnd\fB,
-\fBwbkgrnd\fB,
-\fBwbkgrndset\fB,
-\fBwgetbkgrnd\fB,
-\fBborder_set\fB,
-\fBwborder_set\fB,
-\fBbox_set\fB,
-\fBhline_set\fB,
-\fBmvhline_set\fB,
-\fBmvvline_set\fB,
-\fBmvwhline_set\fB,
-\fBmvwvline_set\fB,
-\fBwhline_set\fB,
-\fBvhline_set\fB,
-\fBwvline_set\fB,
-\fBecho_wchar\fB,
-\fBwecho_wchar\fB,
-\fBerasewchar\fB,
-\fBkillwchar\fB,
-\fBget_wch\fB,
-\fBmvget_wch\fB,
-\fBmvwget_ch\fB,
-\fBwget_wch\fB,
-\fBgetwchtype\fB,
-\fBget_wstr\fB,
-\fBgetn_wstr\fB,
-\fBwget_wstr\fB,
-\fBwgetn_wstr\fB,
-\fBmvget_wstr\fB,
-\fBmvgetn_wstr\fB,
-\fBmvwget_wstr\fB,
-\fBmvwgetn_wstr\fB,
-\fBinnwstr\fB,
-\fBinwstr\fB,
-\fBwinnwstr\fB,
-\fBwinwstr\fB,
-\fBmvinnwstr\fB,
-\fBmvinwstr\fB,
-\fBmvwinnwstr\fB,
-\fBmvwinwstr\fB,
-\fBins_nwstr\fB,
-\fBins_wstr\fB,
-\fBmvins_nwstr\fB,
-\fBmvins_wstr\fB,
-\fBmvwins_nwstr\fB,
-\fBmvwins_wstr\fB,
-\fBwins_nwstr\fB,
-\fBwins_wstr\fB,
-\fBins_wch\fB,
-\fBwins_wch\fB,
-\fBmvins_wch\fB,
-\fBmvwins_wch\fB,
-\fBin_wch\fB,
-\fBwin_wch\fB,
-\fBmvin_wch\fB,
-\fBmvwin_wch\fB,
-\fBinwchstr\fB,
-\fBinwchnstr\fB,
-\fBwinwchstr\fB,
-\fBwinwchnstr\fB,
-\fBmvinwchstr\fB,
-\fBmvinwchnstr\fB,
-\fBmvinwchstr\fB,
-\fBmvwinwchnstr\fB.
+\fBadd_wch\fP,
+\fBadd_wchnstr\fP,
+\fBadd_wchstr\fP,
+\fBaddnwstr\fP,
+\fBaddwstr\fP,
+\fBbkgrnd\fP,
+\fBbkgrndset\fP,
+\fBborder_set\fP,
+\fBbox_set\fP,
+\fBecho_wchar\fP,
+\fBerasewchar\fP,
+\fBget_wch\fP,
+\fBget_wstr\fP,
+\fBgetbkgrnd\fP,
+\fBgetcchar\fP,
+\fBgetn_wstr\fP,
+\fBgetwchtype\fP,
+\fBhline_set\fP,
+\fBin_wch\fP,
+\fBin_wchnstr\fP,
+\fBin_wchstr\fP,
+\fBinnwstr\fP,
+\fBins_nwstr\fP,
+\fBins_wch\fP,
+\fBins_wstr\fP,
+\fBinwchnstr\fP,
+\fBinwchstr\fP,
+\fBinwstr\fP,
+\fBkey_name\fP,
+\fBkillwchar\fP,
+\fBmvadd_wch\fP,
+\fBmvadd_wchnstr\fP,
+\fBmvadd_wchstr\fP,
+\fBmvaddnwstr\fP,
+\fBmvaddwstr\fP,
+\fBmvget_wch\fP,
+\fBmvget_wstr\fP,
+\fBmvgetn_wstr\fP,
+\fBmvhline_set\fP,
+\fBmvin_wch\fP,
+\fBmvinnwstr\fP,
+\fBmvins_nwstr\fP,
+\fBmvins_wch\fP,
+\fBmvins_wstr\fP,
+\fBmvinwchnstr\fP,
+\fBmvinwchstr\fP,
+\fBmvinwchstr\fP,
+\fBmvinwstr\fP,
+\fBmvvline_set\fP,
+\fBmvwadd_wch\fP,
+\fBmvwadd_wchnstr\fP,
+\fBmvwadd_wchstr\fP,
+\fBmvwaddnwstr\fP,
+\fBmvwaddwstr\fP,
+\fBmvwget_ch\fP,
+\fBmvwget_wch\fP,
+\fBmvwget_wstr\fP,
+\fBmvwgetn_wstr\fP,
+\fBmvwhline_set\fP,
+\fBmvwin_wch\fP,
+\fBmvwin_wchnstr\fP,
+\fBmvwin_wchstr\fP,
+\fBmvwinnwstr\fP,
+\fBmvwins_nwstr\fP,
+\fBmvwins_wch\fP,
+\fBmvwins_wstr\fP,
+\fBmvwinwchnstr\fP.
+\fBmvwinwstr\fP,
+\fBmvwvline_set\fP,
+\fBpecho_wchar\fP,
+\fBsetcchar\fP,
+\fBslk_wset\fP,
+\fBterm_attrs\fP,
+\fBunget_wch\fP,
+\fBvhline_set\fP,
+\fBvid_attr\fP,
+\fBvid_puts\fP,
+\fBvline_set\fP,
+\fBwadd_wch\fP,
+\fBwadd_wchnstr\fP,
+\fBwadd_wchstr\fP,
+\fBwaddnwstr\fP,
+\fBwaddwstr\fP,
+\fBwaddwstr\fP,
+\fBwbkgrnd\fP,
+\fBwbkgrndset\fP,
+\fBwbkgrndset\fP,
+\fBwborder_set\fP,
+\fBwecho_wchar\fP,
+\fBwecho_wchar\fP,
+\fBwget_wch\fP,
+\fBwget_wstr\fP,
+\fBwgetbkgrnd\fP,
+\fBwgetn_wstr\fP,
+\fBwhline_set\fP,
+\fBwin_wch\fP,
+\fBwin_wchnstr\fP,
+\fBwin_wchstr\fP,
+\fBwinnwstr\fP,
+\fBwins_nwstr\fP,
+\fBwins_wch\fP,
+\fBwins_wstr\fP,
+\fBwinwchnstr\fP,
+\fBwinwchstr\fP,
+\fBwinwstr\fP,
+\fBwunctrl\fP,
+\fBwvline_set\fP,
 .PP
 A small number of local differences (that is, individual differences between
-the XSI Curses and \fBcurses\fR calls) are described in \fBPORTABILITY\fR
+the XSI Curses and \fBncurses\fR calls) are described in \fBPORTABILITY\fR
 sections of the library man pages.
 .PP
 The routine \fBhas_key\fR is not part of XPG4, nor is it present in SVr4.  See
@@ -608,11 +884,12 @@ to the UNIX kernel significantly and increases the package's portability
 correspondingly.
 .PP
 In the XSI standard and SVr4 manual pages, many entry points have prototype
-arguments of the for \fBchar *const\fR (or \fBcchar_t *const\fR, or \fBwchar_t
-*const\fR, or \fBvoid *const\fR).  Depending on one's interpretation of the
+arguments of the for \fBchar *const\fR (or \fBcchar_t *const\fR, or
+\fBwchar_t *const\fR, or \fBvoid *const\fR).  Depending on one's interpretation of the
 ANSI C standard (see section 3.5.4.1), these declarations are either (a)
-meaningless, or (b) meaningless and illegal.  The declaration \fBconst char
-*x\fR is a modifiable pointer to unmodifiable data, but \fBchar *const x\fR' is
+meaningless, or (b) meaningless and illegal.  The declaration
+\fBconst char *x\fR is a modifiable pointer to unmodifiable data, but
+\fBchar *const x\fR' is
 an unmodifiable pointer to modifiable data.  Given that C passes arguments by
 value, \fB<type> *const\fR as a formal type is at best dubious.  Some compilers
 choke on the prototypes.  Therefore, in this implementation, they have been
@@ -621,12 +898,12 @@ changed to \fBconst <type> *\fR globally.
 The header file \fB<curses.h>\fR automatically includes the header files
 \fB<stdio.h>\fR and \fB<unctrl.h>\fR.
 
-If standard output from a \fBcurses\fR program is re-directed to something
+If standard output from a \fBncurses\fR program is re-directed to something
 which is not a tty, screen updates will be directed to standard error.  This
 was an undocumented feature of AT&T System V Release 3 curses.
 .SH AUTHORS
-Zeyd M. Ben-Halim, Eric S. Raymond.  Descends from the original pcurses
-by Pavel Curtis.
+Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
+Based on pcurses by Pavel Curtis.
 .\"#
 .\"# The following sets edit modes for GNU EMACS
 .\"# Local Variables:
index b82162b202ed361ea5ab14d133c466d18f8f8882..046778a8cf9682b958df2c919d955c189bcf1be6 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: panel.3x,v 1.8 1997/12/14 01:49:25 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: panel.3x,v 1.9 1998/03/11 21:12:53 juergen Exp $
 .TH panel 3X ""
 .ds n 5
 .ds d @DATADIR@/terminfo
index ba5ac9836e098b865013bd3fca33602f37bcd127..9c7cc8fd3873f011538371453d40bdb152600024 100644 (file)
 .\"
 .\" Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
 .\"
-.\" $Id: resizeterm.3x,v 1.6 1998/02/11 12:13:48 tom Exp $
+.\" $Id: resizeterm.3x,v 1.7 1998/03/14 23:42:52 tom Exp $
 .TH resizeterm 3X ""
-.
 .SH NAME
 \fBresizeterm\fR - change the curses terminal size
-.
+..
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
 \fBint resizeterm(int lines, int columns);\fR
-.
+..
 .SH DESCRIPTION
 This is an extension to the curses library.
 It provides callers with a hook into the \fBncurses\fR data to resize windows,
@@ -55,18 +54,18 @@ The function attempts to resize all windows.
 However, due to the calling convention of pads,
 it is not possible to resize these
 without additional interaction with the application.
-.
+..
 .SH RETURN VALUE
 The function returns the integer \fBERR\fR upon failure and \fBOK\fR on success.
 It will fail if either of the dimensions less than or equal to zero,
 or if an error occurs while (re)allocating memory for the windows. 
-.
+..
 .SH NOTES
 While this function is intended to be used to support a signal handler
 (i.e., for SIGWINCH), care should be taken to avoid invoking it in a
 context where \fBmalloc\fR or \fBrealloc\fR may have been interrupted,
 since it uses those functions.
-.
+..
 .PP
 If ncurses is configured to supply its own SIGWINCH handler,
 the \fBresizeterm\fR function ungetch's a \fBKEY_RESIZE\fR which
@@ -74,10 +73,10 @@ will be read on the next call to \fBgetch\fR.
 This is used to alert an application that the screen size has changed,
 and that it should repaint special features such as pads that cannot
 be done automatically.
-.
+..
 .SH SEE ALSO
 \fBwresize\fR(3X).
-.
+..
 .SH AUTHOR
 Thomas Dickey (from an equivalent function written in 1988 for BSD curses).
 .\"#
index ae0e260c5c9ea75c0e494330bc830ecf39557199..f79679db608d2bd473f178500f02ba3c4189e748 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: term.5,v 1.9 1998/03/11 21:12:53 juergen Exp $
 .TH TERM 5
 .ds n 5
 .ds d @DATADIR@/terminfo
index f73ba2c60a60d9db4522d56273e12e1a8dbbcb1d..e8f81bb6f0d734ee6f431d050651251a130e4ff9 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: term.7,v 1.7 1997/12/14 01:50:43 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: term.7,v 1.11 1999/01/24 02:35:14 Todd.Miller Exp $
 .TH TERM 7
 .ds n 5
 .ds d @DATADIR@/terminfo
@@ -27,7 +55,7 @@ can almost always be avoided by explicitly exporting `vt100' (assuming you
 are in fact using a VT100-superset console, terminal, or terminal emulator.)
 .PP
 In any case, you are free to override the system \fBTERM\fR setting to your
-taste in your shell profile.  The \fBtset\fB(1) utility may be of assistance;
+taste in your shell profile.  The \fBtset\fP(1) utility may be of assistance;
 you can give it a set of rules for deducing or requesting a terminal type based
 on the tty device and baud rate.
 .PP
@@ -36,7 +64,7 @@ custom entry incorporating options (such as visual bell or reverse-video)
 which you wish to override the system default type for your line.
 .PP
 Terminal type descriptions are stored as files of capability data underneath
-\*d.  To browse a list of all terminal names recognized by the system, do 
+\*d.  To browse a list of all terminal names recognized by the system, do
 
        toe | more
 
@@ -50,7 +78,7 @@ follows:
 where \fIentry-name\fR is the name of the type you wish to examine (and the
 name of its capability file the subdirectory of \*d named for its first
 letter).  This command dumps a capability file in the text format described by
-\fBterminfo\fR(\*n).  
+\fBterminfo\fR(\*n).
 .PP
 The first line of a \fBterminfo\fR(\*n) description gives the names by which
 terminfo knows a terminal, separated by `|' (pipe-bar) characters with the last
@@ -86,7 +114,7 @@ The root name prefix should be followed when appropriate by a model number;
 thus \fBvt100\fR, \fBhp2621\fR, \fBwy50\fR.
 .PP
 The root name for a PC-Unix console type should be the OS name,
-i.e. \fBlinux\fR, \fBbsdos\fR, \fBfreebsd\fB, \fBnetbsd\fR.  It should
+i.e. \fBlinux\fR, \fBbsdos\fR, \fBfreebsd\fR, \fBnetbsd\fR.  It should
 \fInot\fR be \fBconsole\fR or any other generic that might cause confusion in a
 multi-platform environment!  If a model number follows, it should indicate
 either the OS release level or the console driver release level.
@@ -141,13 +169,13 @@ Use visible bell (flash) rather than beep.
 -w
 Wide; terminal is in 132 column mode.
 .PP
-Conventionally, if your terminal type is a variant intended to specify a 
+Conventionally, if your terminal type is a variant intended to specify a
 line height, that suffix should go first.  So, for a hypothetical FuBarCo
 model 2317 terminal in 30-line mode with reverse video, best form would be
 \fBfubar-30-rv\fR (rather than, say, `fubar-rv-30').
 .PP
 Terminal types that are written not as standalone entries, but rather as
-components to be plugged into other entries via \fBuse\fB capabilities,
+components to be plugged into other entries via \fBuse\fP capabilities,
 are distinguished by using embedded plus signs rather than dashes.
 .PP
 Commands which use a terminal type to control display often accept a -T
@@ -167,7 +195,7 @@ tty line initialization (AT&T-like UNIXes).
 /etc/ttys
 tty line initialization (BSD-like UNIXes).
 .SH "SEE ALSO"
-\fBcurses\fR(3X), \fBterminfo\fR(\*n), \fBterm\fR(\*d).
+\fBcurses\fR(3X), \fBterminfo\fR(\*n), \fBterm\fR(\*n).
 .\"#
 .\"# The following sets edit modes for GNU EMACS
 .\"# Local Variables:
index 00a85106c80177342f089fa88a4f0ece7b83a4a8..3118c1577fcfb97ead81bb93d4f267340c2886c5 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: terminfo.head,v 1.7 1997/12/14 01:49:17 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: terminfo.head,v 1.8 1998/03/11 21:12:53 juergen Exp $
 .TH TERMINFO 5 "" "" "File Formats"
 .ds n 5
 .ds d @DATADIR@/terminfo
index 5a0e0e4ae529991951a1d415daece1cdbfc81fbc..7b019db348563da5656a721f96a48af862ab9b22 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: terminfo.tail,v 1.15 1997/12/14 01:50:06 tom Exp $
+.\" $Id: terminfo.tail,v 1.29 1999/03/07 02:09:07 tom Exp $
 .\" Beginning of terminfo.tail file
 .ps +1
 .PP
@@ -11,25 +11,25 @@ of what a \fBterminfo\fR entry for a modern terminal typically looks like.
 .in -2
 .ta .3i
 .ft CW
-\s-2ansi|ansi/pc-term compatible with color, 
-        mc5i, 
-        colors#8, ncv#3, pairs#64, 
-        cub=\\E[%p1%dD, cud=\\E[%p1%dB, cuf=\\E[%p1%dC, 
-        cuu=\\E[%p1%dA, dch=\\E[%p1%dP, dl=\\E[%p1%dM, 
-        ech=\\E[%p1%dX, el1=\\E[1K, hpa=\\E[%p1%dG, ht=\\E[I, 
-        ich=\\E[%p1%d@, il=\\E[%p1%dL, indn=\\E[%p1%dS, 
-        kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, kcud1=\\E[B, 
-        kcuf1=\\E[C, kcuu1=\\E[A, kf1=\\E[M, kf10=\\E[V, 
-        kf11=\\E[W, kf12=\\E[X, kf2=\\E[N, kf3=\\E[O, kf4=\\E[P, 
-        kf5=\\E[Q, kf6=\\E[R, kf7=\\E[S, kf8=\\E[T, kf9=\\E[U, 
-        kich1=\\E[L, mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, 
-        op=\\E[37;40m, rep=%p1%c\\E[%p2%{1}%-%db, 
-        rin=\\E[%p1%dT, s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, 
-        s3ds=\\E+B, setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm, 
-        setb=\\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, 
-        setf=\\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, 
-        sgr=\\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m, 
-        sgr0=\\E[0;10m, tbc=\\E[2g, u6=\\E[%d;%dR, u7=\\E[6n, 
+\s-2ansi|ansi/pc-term compatible with color,
+        mc5i,
+        colors#8, ncv#3, pairs#64,
+        cub=\\E[%p1%dD, cud=\\E[%p1%dB, cuf=\\E[%p1%dC,
+        cuu=\\E[%p1%dA, dch=\\E[%p1%dP, dl=\\E[%p1%dM,
+        ech=\\E[%p1%dX, el1=\\E[1K, hpa=\\E[%p1%dG, ht=\\E[I,
+        ich=\\E[%p1%d@, il=\\E[%p1%dL, indn=\\E[%p1%dS, .indn=\\E[%p1%dT,
+        kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, kcud1=\\E[B,
+        kcuf1=\\E[C, kcuu1=\\E[A, kf1=\\E[M, kf10=\\E[V,
+        kf11=\\E[W, kf12=\\E[X, kf2=\\E[N, kf3=\\E[O, kf4=\\E[P,
+        kf5=\\E[Q, kf6=\\E[R, kf7=\\E[S, kf8=\\E[T, kf9=\\E[U,
+        kich1=\\E[L, mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S,
+        op=\\E[37;40m, rep=%p1%c\\E[%p2%{1}%-%db,
+        rin=\\E[%p1%dT, s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B,
+        s3ds=\\E+B, setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm,
+        setb=\\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+        setf=\\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+        sgr=\\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m,
+        sgr0=\\E[0;10m, tbc=\\E[2g, u6=\\E[%d;%dR, u7=\\E[6n,
         u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%p1%dd,\s+2
 .in +2
 .fi
@@ -55,9 +55,11 @@ ANSI-standard terminals have
 (i.e., an automatic return and line-feed
 when the end of a line is reached) is indicated by the capability \fBam\fR.
 Hence the description of ansi includes \fBam\fR.
-Numeric capabilities are followed by the character `#' and then the value.
+Numeric capabilities are followed by the character `#' and then a positive value.
 Thus \fBcols\fR, which indicates the number of columns the terminal has,
 gives the value `80' for ansi.
+Values for numeric capabilities may be specified in decimal, octal or hexadecimal,
+using the C programming language conventions (e.g., 255, 0377 and 0xff or 0xFF).
 .PP
 Finally, string valued capabilities, such as \fBel\fR (clear to end of line
 sequence) are given by the two-character code, an `=', and then a string
@@ -75,7 +77,7 @@ Other escapes include \fB\e^\fR for \fB^\fR,
 \fB\e:\fR for \fB:\fR,
 and \fB\e0\fR for null.
 (\fB\e0\fR will produce \e200, which does not terminate a string but behaves
-as a null character on most terminals.)
+as a null character on most terminals, providing CS7 is specified.  See stty(1).)
 Finally, characters may be given as three octal digits after a \fB\e\fR.
 .PP
 A delay in milliseconds may appear anywhere in a string capability, enclosed in
@@ -140,7 +142,7 @@ file to describe it
 or bugs in the screen-handling code of the test program.
 .PP
 To get the padding for insert line right (if the terminal manufacturer
-did not document it) a severe test is to edit /etc/passwd at 9600 baud,
+did not document it) a severe test is to edit a large file at 9600 baud,
 delete 16 or so lines from the middle of the screen, then hit the `u'
 key several times quickly.
 If the terminal messes up, more padding is usually needed.
@@ -282,7 +284,7 @@ while the Lear Siegler \s-1ADM\-3\s0 is described as
 .PP
 Cursor addressing and other strings requiring parameters
 in the terminal are described by a
-parameterized string capability, with 
+parameterized string capability, with
 .IR printf (3S)
 like escapes \fB%x\fR in it.
 For example, to address the cursor, the
@@ -306,24 +308,18 @@ The \fB%\fR encodings have the following meanings:
 .nf
 .ta .5i 1.5i
        \s-1%%  outputs `%'
-       %d      print pop() as in printf
-       %2d     print pop() like %2d
-       %3d     print pop() like %3d
-       %02d
-       %03d    as in printf
-       %x      print pop() as in printf
-       %2x     print pop() like %2x
-       %3x     print pop() like %3x
-       %02x
-       %03x    as in printf
+       %\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
+               as in \fBprintf\fP, flags are [-+#] and space
        %c      print pop() gives %c
-       %s      print pop() gives %s
 
-       %p[1-9] push i'th parm
-       %P[a-z] set variable [a-z] to pop()
-       %g[a-z] get variable [a-z] and push it
-       %'c'    char constant c
-       %{nn}   integer constant nn
+       %p[1-9] push \fIi\fP'th parm
+       %P[a-z] set dynamic variable [a-z] to pop()
+       %g[a-z] get dynamic variable [a-z] and push it
+       %P[A-Z] set static variable [a-z] to pop()
+       %g[A-Z] get static variable [a-z] and push it
+       %'\fIc\fP'      char constant \fIc\fP
+       %{\fInn\fP}     integer constant \fInn\fP
+       %l      push strlen(pop)
 
        %+ %- %* %/ %m
                arithmetic (%m is mod): push(pop() op pop())
@@ -370,6 +366,20 @@ in place of the two previous values) and outputs that value as a character.
 Then the same is done for the second parameter.
 More complex arithmetic is possible using the stack.
 .PP
+.SS Cursor Motions
+.PP
+If the terminal has a fast way to home the cursor
+(to very upper left corner of screen) then this can be given as
+\fBhome\fR; similarly a fast way of getting to the lower left-hand corner
+can be given as \fBll\fR; this may involve going up with \fBcuu1\fR
+from the home position,
+but a program should never do this itself (unless \fBll\fR does) because it
+can make no assumption about the effect of moving up from the home position.
+Note that the home position is the same as addressing to (0,0):
+to the top left corner of the screen, not of memory.
+(Thus, the \eEH sequence on HP terminals cannot be used for
+.BR home .)
+.PP
 If the terminal has row or column absolute cursor addressing,
 these can be given as single parameter capabilities
 .B hpa
@@ -379,7 +389,7 @@ and
 (vertical position absolute).
 Sometimes these are shorter than the more general two parameter
 sequence (as with the hp2645) and can be used in preference to
-.B cup .
+.BR cup .
 If there are parameterized local motions (e.g., move
 .I n
 spaces to the right) these can be given as
@@ -393,24 +403,29 @@ These are primarily useful if the terminal does not have
 .BR cup ,
 such as the \s-1TEKTRONIX\s+1 4025.
 .PP
-.SS Cursor Motions
-.PP
-If the terminal has a fast way to home the cursor
-(to very upper left corner of screen) then this can be given as
-\fBhome\fR; similarly a fast way of getting to the lower left-hand corner
-can be given as \fBll\fR; this may involve going up with \fBcuu1\fR
-from the home position,
-but a program should never do this itself (unless \fBll\fR does) because it
-can make no assumption about the effect of moving up from the home position.
-Note that the home position is the same as addressing to (0,0):
-to the top left corner of the screen, not of memory.
-(Thus, the \eEH sequence on HP terminals cannot be used for
-.BR home .)
+If the terminal needs to be in a special mode when running
+a program that uses these capabilities,
+the codes to enter and exit this mode can be given as \fBsmcup\fR and \fBrmcup\fR.
+This arises, for example, from terminals like the Concept with more than
+one page of memory.
+If the terminal has only memory relative cursor addressing and not screen
+relative cursor addressing, a one screen-sized window must be fixed into
+the terminal for cursor addressing to work properly.
+This is also used for the \s-1TEKTRONIX\s+1 4025,
+where
+.B smcup
+sets the command character to be the one used by terminfo.
+If the \fBsmcup\fP sequence will not restore the screen after an
+\fBrmcup\fP sequence is output (to the state prior to outputting
+\fBrmcup\fP), specify \fBnrrmc\fP.
 .PP
 .SS Area Clears
 .PP
 If the terminal can clear from the current position to the end of the
 line, leaving the cursor where it is, this should be given as \fBel\fR.
+If the terminal can clear from the beginning of the line to the current
+position inclusive, leaving
+the cursor where it is, this should be given as \fBel1\fP.
 If the terminal can clear from the current position to the end of the
 display, then this should be given as \fBed\fR.
 \fBEd\fR is only defined from the first column of a line.
@@ -436,6 +451,7 @@ be given as
 .B il
 and
 .BR dl .
+.PP
 If the terminal has a settable scrolling region (like the vt100)
 the command to set this can be described with the
 .B csr
@@ -449,7 +465,7 @@ on a properly chosen region; the
 .B sc
 and
 .B rc
-(save and restore cursor) commands may be useful for ensuring that 
+(save and restore cursor) commands may be useful for ensuring that
 your synthesized insert/delete string does not move the cursor.
 (Note that the \fBncurses\fR(3X) library does this synthesis
 automatically, so you need not compose insert/delete strings for
@@ -469,7 +485,7 @@ and is often faster even on terminals with those features.
 .PP
 The boolean \fBnon_dest_scroll_region\fR should be set if each scrolling
 window is effectively a view port on a screen-sized canvas.  To test for
-this capability, create a scrolling region in the middle of the screen, 
+this capability, create a scrolling region in the middle of the screen,
 write something to the bottom line, move the cursor to the top of the region,
 and do \fBri\fR followed by \fBdl1\fR or \fBind\fR.  If the data scrolled
 off the bottom of the region by the \fBri\fR re-appears, then scrolling
@@ -557,6 +573,9 @@ will repeat the effects of
 .I n
 times.
 .PP
+If padding is necessary between characters typed while not
+in insert mode, give this as a number of milliseconds padding in \fBrmp\fP.
+.PP
 It is occasionally necessary to move around while in insert mode
 to delete characters on the same line (e.g., if there is a tab after
 the insertion position).  If your terminal allows motion while in
@@ -608,7 +627,7 @@ then \fBxmc\fR should be given to tell how many spaces are left.
 Codes to begin underlining and end underlining can be given as \fBsmul\fR
 and \fBrmul\fR respectively.
 If the terminal has a code to underline the current character and move
-the cursor one space to the right, 
+the cursor one space to the right,
 such as the Microterm Mime,
 this can be given as \fBuc\fR.
 .PP
@@ -641,7 +660,7 @@ this should be given as
 .B sgr
 (set attributes),
 taking 9 parameters.
-Each parameter is either 0 or 1, as the corresponding attribute is on or off.
+Each parameter is either 0 or nonzero, as the corresponding attribute is on or off.
 The 9 parameters are, in order:
 standout, underline, reverse, blink, dim, bold, blank, protect, alternate
 character set.
@@ -649,6 +668,69 @@ Not all modes need be supported by
 .BR sgr ,
 only those for which corresponding separate attribute commands exist.
 .PP
+For example, the DEC vt220 supports most of the modes:
+.PP
+.TS
+center;
+l c c
+l c c
+lw28 lw6 lw2 lw20.
+\fBtparm parameter     attribute       escape sequence\fP
+
+none   none    \\E[0m
+p1     standout        \\E[0;1;7m
+p2     underline       \\E[0;4m
+p3     reverse \\E[0;7m
+p4     blink   \\E[0;5m
+p5     dim     not available
+p6     bold    \\E[0;1m
+p7     invis   \\E[0;8m
+p8     protect not used
+p9     altcharset      ^O (off) ^N (on)
+.TE
+.PP
+We begin each escape sequence by turning off any existing modes, since
+there is no quick way to determine whether they are active.
+Standout is set up to be the combination of reverse and bold.
+The vt220 terminal has a protect mode,
+though it is not commonly used in sgr
+because it protects characters on the screen from the host's erasures.
+The altcharset mode also is different in that it is either ^O or ^N,
+depending on whether it is off or on.
+If all modes are turned on, the resulting sequence is \\E[0;1;4;5;7;8m^N.
+.PP
+Some sequences are common to different modes.
+For example, ;7 is output when either p1 or p3 is true, that is, if
+either standout or reverse modes are turned on.
+.PP
+Writing out the above sequences, along with their dependencies yields
+.PP
+.TS
+center;
+l c c
+l c c
+lw28 lw6 lw2 lw20.
+\fBsequence    when to output  terminfo translation\fP
+
+\\E[0  always  \\E[0
+;1     if p1 or p6     %?%p1%p6%|%t;1%;
+;4     if p2   %?%p2%|%t;4%;
+;5     if p4   %?%p4%|%t;5%;
+;7     if p1 or p3     %?%p1%p3%|%t;7%;
+;8     if p7   %?%p7%|%t;8%;
+m      always  m
+^N or ^O       if p9 ^N, else ^O       %?%p9%t^N%e^O%;
+.TE
+.PP
+Putting this all together into the sgr sequence gives:
+.PP
+.nf
+    sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;
+        %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;,
+.fi
+.PP
+Remember that if you specify sgr, you must also specify sgr0.
+.PP
 Terminals with the ``magic cookie'' glitch
 .RB ( xmc )
 deposit special ``cookies'' when they receive mode-setting sequences,
@@ -677,27 +759,16 @@ The capability
 .BR cnorm
 should be given which undoes the effects of both of these modes.
 .PP
-If the terminal needs to be in a special mode when running
-a program that uses these capabilities,
-the codes to enter and exit this mode can be given as \fBsmcup\fR and \fBrmcup\fR.
-This arises, for example, from terminals like the Concept with more than
-one page of memory.
-If the terminal has only memory relative cursor addressing and not screen
-relative cursor addressing, a one screen-sized window must be fixed into
-the terminal for cursor addressing to work properly.
-This is also used for the \s-1TEKTRONIX\s+1 4025,
-where
-.B smcup
-sets the command character to be the one used by terminfo.
-.PP
 If your terminal correctly generates underlined characters
 (with no special codes needed)
 even though it does not overstrike,
 then you should give the capability \fBul\fR.
+If a character overstriking another leaves both characters on the screen,
+specify the capability \fBos\fP.
 If overstrikes are erasable with a blank,
 then this should be indicated by giving \fBeo\fR.
 .PP
-.SS Keypad Handling
+.SS Keypad and Function Keys
 .PP
 If the terminal has a keypad that transmits codes when the keys are pressed,
 this information can be given. Note that it is not possible to handle
@@ -707,8 +778,8 @@ If the keypad can be set to transmit or not transmit,
 give these codes as \fBsmkx\fR and \fBrmkx\fR.
 Otherwise the keypad is assumed to always transmit.
 The codes sent by the left arrow, right arrow, up arrow, down arrow,
-and home keys can be given as \fBkcub1, kcuf1, kcuu1, kcud1,
-\fRand\fB khome\fR respectively.
+and home keys can be given as
+\fBkcub1, kcuf1, kcuu1, kcud1, \fRand\fB khome\fR respectively.
 If there are function keys such as f0, f1, ..., f10, the codes they send
 can be given as \fBkf0, kf1, ..., kf10\fR.
 If these keys have labels other than the default f0 through f10, the labels
@@ -758,13 +829,40 @@ and
 .BR kc3 .
 These keys are useful when the effects of a 3 by 3 directional pad are needed.
 .PP
+Strings to program function keys can be given as
+.BR pfkey ,
+.BR pfloc ,
+and
+.BR pfx .
+A string to program screen labels should be specified as \fBpln\fP.
+Each of these strings takes two parameters: the function key number to
+program (from 0 to 10) and the string to program it with.
+Function key numbers out of this range may program undefined keys in
+a terminal dependent manner.
+The difference between the capabilities is that
+.B pfkey
+causes pressing the given key to be the same as the user typing the
+given string;
+.B pfloc
+causes the string to be executed by the terminal in local; and
+.B pfx
+causes the string to be transmitted to the computer.
+.PP
+The capabilities \fBnlab\fP, \fBlw\fP and \fBlh\fP
+define the number of programmable
+screen labels and their width and height.
+If there are commands to turn the labels on and off,
+give them in \fBsmln\fP and \fBrmln\fP.
+\fBsmln\fP is normally output after one or more pln
+sequences to make sure that the change becomes visible.
+.PP
 .SS Tabs and Initialization
 .PP
 If the terminal has hardware tabs, the command to advance to the next
 tab stop can be given as
 .B ht
 (usually control I).
-A ``back-tab'' command which moves leftward to the next tab stop can
+A ``back-tab'' command which moves leftward to the preceding tab stop can
 be given as
 .BR cbt .
 By convention, if the teletype modes indicate that tabs are being
@@ -801,20 +899,30 @@ and \fBif\fR, the name of a file containing long initialization strings.
 These strings are expected to set the terminal into modes consistent
 with the rest of the terminfo description.
 They are normally sent to the terminal, by the
-.IR tset
+.I init
+option of the
+.IR tput
 program, each time the user logs in.
 They will be printed in the following order:
+run the program
+.BR iprog ;
+output
 .BR is1 ;
 .BR is2 ;
-setting tabs using
+set the margins using
+.BR mgc ,
+.BR smgl and
+.BR smgr ;
+set tabs using
 .B tbc
 and
 .BR hts ;
+print the file
 .BR if ;
-running the program
-.BR iprog ;
 and finally
+output
 .BR is3 .
+.PP
 Most initialization is done with
 .BR is2 .
 Special terminal modes can be set up without duplicating strings
@@ -839,7 +947,9 @@ These strings are output by the
 .IR reset
 program, which is used when the terminal gets into a wedged state.
 Commands are normally placed in
-.B rs2
+.BR rs1 ,
+.BR rs2
+.B rs3
 and
 .B rf
 only if they produce annoying effects on the screen and are not
@@ -929,35 +1039,42 @@ This alternate character set may be specified by the \fBacsc\fR capability.
 center expand;
 c l l c
 c l l c
-lw25 lw6 lw2 lw20.
+lw28 lw6 lw2 lw20.
 .\".TH
-\fBGlyph       ACS     Ascii   VT100
-Name   Name    Default Name\fR
-upper left corner      ACS_ULCORNER    +       l
-lower left corner      ACS_LLCORNER    +       m
-upper right corner     ACS_URCORNER    +       k
-lower right corner     ACS_LRCORNER    +       j
-tee pointing right     ACS_LTEE        +       t
-tee pointing left      ACS_RTEE        +       u
-tee pointing up        ACS_BTEE        +       v
-tee pointing down      ACS_TTEE        +       w
-horizontal line        ACS_HLINE       -       q
-vertical line          ACS_VLINE       |       x
-large plus or crossover        ACS_PLUS        +       n
-scan line 1            ACS_S1          ~       o       
-scan line 9            ACS_S9          \&_     s       
-diamond                ACS_DIAMOND     +       `
-checker board (stipple)        ACS_CKBOARD     :       a
-degree symbol          ACS_DEGREE      \e      f
-plus/minus             ACS_PLMINUS     #       g
-bullet                 ACS_BULLET      o       ~
+\fBGlyph       ACS     Ascii   VT100\fR
+\fBName        Name    Default Name\fR
+UK pound sign          ACS_STERLING    f       }
+arrow pointing down    ACS_DARROW      v       .
 arrow pointing left    ACS_LARROW      <       ,
 arrow pointing right   ACS_RARROW      >       +
-arrow pointing down    ACS_DARROW      v       .
 arrow pointing up      ACS_UARROW      ^       -
 board of squares       ACS_BOARD       #       h
-lantern symbol         ACS_LANTERN     #       I
+bullet                 ACS_BULLET      o       ~
+checker board (stipple)        ACS_CKBOARD     :       a
+degree symbol          ACS_DEGREE      \e      f
+diamond                ACS_DIAMOND     +       `
+greater-than-or-equal-to       ACS_GEQUAL      >       z
+greek pi               ACS_PI  *       {
+horizontal line        ACS_HLINE       -       q
+lantern symbol         ACS_LANTERN     #       i
+large plus or crossover        ACS_PLUS        +       n
+less-than-or-equal-to  ACS_LEQUAL      <       y
+lower left corner      ACS_LLCORNER    +       m
+lower right corner     ACS_LRCORNER    +       j
+not-equal              ACS_NEQUAL      !       |
+plus/minus             ACS_PLMINUS     #       g
+scan line 1            ACS_S1          ~       o
+scan line 3            ACS_S3          -       p
+scan line 7            ACS_S7          -       r
+scan line 9            ACS_S9          \&_     s
 solid square block     ACS_BLOCK       #       0
+tee pointing down      ACS_TTEE        +       w
+tee pointing left      ACS_RTEE        +       u
+tee pointing right     ACS_LTEE        +       t
+tee pointing up        ACS_BTEE        +       v
+upper left corner      ACS_ULCORNER    +       l
+upper right corner     ACS_URCORNER    +       k
+vertical line          ACS_VLINE       |       x
 .TE
 .PP
 The best way to define a new device's graphics set is to add a column
@@ -989,7 +1106,7 @@ than the power-up default background; these should have the boolean capability
 To change the current foreground or background color on a Tektronix-type
 terminal, use \fBsetaf\fR (set ANSI foreground) and \fBsetab\fR (set ANSI
 background) or \fBsetf\fR (set foreground) and \fBsetb\fR (set background).
-These take one parameter, the color number.  The SVr4 documentation describes 
+These take one parameter, the color number.  The SVr4 documentation describes
 only \fBsetaf\fR/\fBsetab\fR; the XPG4 draft says that "If the terminal
 supports ANSI escape sequences to set background and foreground, they should
 be coded as \fBsetaf\fR and \fBsetab\fR, respectively.  If the terminal
@@ -1034,7 +1151,7 @@ terminal-dependent.
 On an HP-like terminal, \fBinitp\fR may give a capability for changing a
 color-pair value.  It will take seven parameters; a color-pair number (0 to
 \fBmax_pairs\fR - 1), and two triples describing first background and then
-foreground colors.  These parameters must be (Red, Green, Blue) or 
+foreground colors.  These parameters must be (Red, Green, Blue) or
 (Hue, Lightness, Saturation) depending on \fBhls\fR.
 .PP
 On some color terminals, colors collide with highlights.  You can register
@@ -1062,7 +1179,18 @@ For example, on many IBM PC consoles, the underline attribute collides with the
 foreground color blue and is not available in color mode.  These should have
 an \fBncv\fR capability of 2.
 .PP
+SVr4 curses does nothing with \fBncv\fR, ncurses recognizes it and optimizes
+the output in favor of colors.
+.PP
 .SS Miscellaneous
+If the terminal requires other than a null (zero) character as a pad, then this
+can be given as pad.
+Only the first character of the pad string is used.
+If the terminal does not have a pad character, specify npc.
+Note that ncurses implements the termcap-compatible \fBPC\fR variable;
+though the application may set this value to something other than
+a null, ncurses will test \fBnpc\fR first and use napms if the terminal
+has no pad character.
 .PP
 If the terminal can move up or down half a line,
 this can be indicated with
@@ -1161,24 +1289,6 @@ is transparently passed to the printer while an
 .B mc5p
 is in effect.
 .PP
-Strings to program function keys can be given as
-.BR pfkey ,
-.BR pfloc ,
-and
-.BR pfx .
-Each of these strings takes two parameters: the function key number to
-program (from 0 to 10) and the string to program it with.
-Function key numbers out of this range may program undefined keys in
-a terminal dependent manner.
-The difference between the capabilities is that
-.B pfkey
-causes pressing the given key to be the same as the user typing the
-given string;
-.B pfloc
-causes the string to be executed by the terminal in local; and
-.B pfx
-causes the string to be transmitted to the computer.
-.PP
 .SS Glitches and Braindamage
 .PP
 Hazeltine terminals, which do not allow `~' characters to be displayed should
@@ -1212,7 +1322,7 @@ Note that in older terminfo versions, this capability was called
 `beehive_glitch'; it is now `no_esc_ctl_c'.
 .PP
 Other specific terminal problems may be corrected by adding more
-capabilities of the form \fBx\fIx\fR.
+capabilities of the form \fBx\fR\fIx\fR.
 .PP
 .SS Similar Terminals
 .PP
@@ -1326,7 +1436,7 @@ SVr4/XPG4 do not specify whether \fBmsgr\fR licenses movement while in
 an alternate-character-set mode (such modes may, among other things, map
 CR and NL to characters that don't trigger local motions).
 The \fBncurses\fR implementation ignores \fBmsgr\fR in \fBALTCHARSET\fR
-mode.  This raises the possibility that an XPG4 
+mode.  This raises the possibility that an XPG4
 implementation making the opposite interpretation may need terminfo
 entries made for \fBncurses\fR to have \fBmsgr\fR turned off.
 .PP
@@ -1355,7 +1465,7 @@ capability (\fBset_pglen\fR).
 .PP
 \fBSVr1, Ultrix\fR --
 These support a restricted subset of terminfo capabilities.  The booleans
-end with \fBxon_xoff\fR; the numerics with \fBwidth_status_line\fR; and the 
+end with \fBxon_xoff\fR; the numerics with \fBwidth_status_line\fR; and the
 strings with \fBprtr_non\fR.
 .PP
 \fBHP/UX\fR --
@@ -1377,8 +1487,8 @@ files containing terminal descriptions
 .SH "SEE ALSO"
 \fBtic\fR(1M), \fBcurses\fR(3X), \fBprintf\fR(3S), \fBterm\fR(\*n).
 .SH AUTHORS
-Zeyd M. Ben-Halim, Eric S. Raymond.  Descends from the original pcurses
-by Pavel Curtis.
+Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
+Based on pcurses by Pavel Curtis.
 .\"#
 .\"# The following sets edit modes for GNU EMACS
 .\"# Local Variables:
index 95f806970829014961cef53cfe4d4df7c95e673f..7f8fe496593f1abe359f29bd87f0efeb1e32ea69 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: tic.1m,v 1.18 1998/01/17 21:11:30 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998,1999 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: tic.1m,v 1.25 1999/03/07 02:07:06 tom Exp $
 .TH tic 1M ""
 .ds n 5
 .ds d @DATADIR@/terminfo
 \fBtic\fR - the \fIterminfo\fR entry-description compiler
 .SH SYNOPSIS
 \fBtic\fR
+[\fB\-\
+1\
+C\
+I\
+N\
+R\
+T\
+c\
+f\
+r\
+s\
+x\
+\fR]
+[\fB-e\fR \fInames\fR]
+[\fB-o\fR \fIdir\fR]
 [\fB-v\fR[\fIn\fR]]
 [\fB-w\fR[\fIn\fR]]
-[\fB-1hcpICNRrsTu\fR]
-[\fB-e\fR \fInames\fR]
-[\fB-o\fR \fIdir\fR] \fIfile\fR
+\fIfile\fR
 .br
 .SH DESCRIPTION
 The command \fBtic\fR translates a \fBterminfo\fR file from source
@@ -31,9 +72,6 @@ Libraries that read terminfo entries are expected to check for a TERMINFO
 directory first, look at \fI$HOME/.terminfo\fR if TERMINFO is not set, and
 finally look in \fI\*d\fR.
 .TP
-\fB-h\fR
-Print help message and exit.
-.TP
 \fB-c\fR
 specifies to only check \fIfile\fR for errors, including syntax problems and
 bad use links.  If you specify \fB-C\fR (\fB-I\fR) with this option, the code
@@ -60,10 +98,16 @@ specifies the width of the output.
 \fB-1\fR
 restricts the output to a single column
 .TP
-\fB-T\fR
-eliminates size-restrictions on the generated text.
-This is mainly useful for testing and analysis, since the compiled
-descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
+\fB-C\fR
+Force source translation to termcap format.  Note: this differs from the -C
+option of \fIinfocmp\fR(1M) in that it does not merely translate capability
+names, but also translates terminfo strings to termcap format.  Capabilities
+that are not translatable are left in the entry under their terminfo names
+but commented out with two preceding dots.
+.TP
+\fB-G\fR
+Display constant literals in decimal form
+rather than their character equivalents.
 .TP
 \fB-I\fR
 Force source translation to terminfo format.
@@ -72,13 +116,6 @@ Force source translation to terminfo format.
 Force source translation to terminfo format
 using the long C variable names listed in <\fBterm.h\fR>
 .TP
-\fB-C\fR
-Force source translation to termcap format.  Note: this differs from the -C
-option of \fIinfocmp\fR(1M) in that it does not merely translate capability
-names, but also translates terminfo strings to termcap format.  Capabilities
-that are not translatable are left in the entry under their terminfo names
-but commented out with two preceding dots.
-.TP
 \fB-N\fR
 Disable smart defaults.  
 Normally, when translating from termcap to terminfo, the compiler makes 
@@ -94,22 +131,23 @@ obsolete capabilities.
 \fB-R\fR\fIsubset\fR
 Restrict output to a given subset.  This option is for use with archaic
 versions of terminfo like those on SVr1, Ultrix, or HP/UX that don't support
-the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX
+the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX 3.x
 that have their own extensions incompatible with SVr4/XSI.  Available subsets
 are "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see \fBterminfo\fR(\*n) for details.
 .TP
-\fI-r\fR
+\fB-T\fR
+eliminates size-restrictions on the generated text.
+This is mainly useful for testing and analysis, since the compiled
+descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
+.TP
+\fB-r\fR
 Force entry resolution (so there are no remaining tc capabilities) even
 when doing translation to termcap format.  This may be needed if you are
 preparing a termcap file for a termcap library (such as GNU termcap up
 to version 1.3 or BSD termcap up to 4.3BSD) that doesn't handle multiple
 tc capabilities per entry.
 .TP
-\fI-s\fR
-Summarize the compile by showing the directory into which entries
-are written, and the number of entries which are compiled.
-.TP
-\fI-e\fR
+\fB-e\fR
 Limit writes and translations to the following comma-separated list of
 terminals.
 If any name or alias of a terminal matches one of the names in
@@ -119,6 +157,21 @@ The option value is interpreted as a file containing the list if it
 contains a '/'.
 (Note: depending on how tic was compiled, this option may require -I or -C.)
 .TP
+\fB-f\fR
+Display complex terminfo strings which contain if/then/else/endif expressions
+indented for readability.
+.TP
+\fB-g\fR
+Display constant character literals in quoted form
+rather than their decimal equivalents.
+.TP
+\fB-s\fR
+Summarize the compile by showing the directory into which entries
+are written, and the number of entries which are compiled.
+.TP
+\fB-x\fR
+Treat unknown capabilities as user-defined.
+.TP
 \fIfile\fR
 contains one or more \fBterminfo\fR terminal descriptions in source
 format [see \fBterminfo\fR(\*n)].  Each description in the file
@@ -171,8 +224,9 @@ If the environment variable \fBTERMINFO\fR is set, the compiled
 results are placed there instead of \fB\*d\fR.
 
 Total compiled entries cannot exceed 4096 bytes.  The name field cannot
-exceed 128 bytes.  Terminal names exceeding 14 characters will be
-truncated to 14 characters and a warning message will be printed.
+exceed 512 bytes.  Terminal names exceeding the maximum alias length
+(32 characters on systems with long filenames, 14 characters otherwise)
+will be truncated to the maximum alias length and a warning message will be printed.
 .SH COMPATIBILITY
 There is some evidence that historic \fBtic\fR implementations treated
 description fields with no whitespace in them as additional aliases or
@@ -196,7 +250,21 @@ compiled entries.
 The error messages from this \fBtic\fR have the same format as GNU C
 error messages, and can be parsed by GNU Emacs's compile facility.
 
-The -o, -I, -C, -N, -R, -h, -e, -T, -r and -s options
+The
+\fB-o\fR,
+\fB-G\fR,
+\fB-I\fR,
+\fB-C\fR,
+\fB-N\fR,
+\fB-R\fR,
+\fB-e\fR,
+\fB-f\fR,
+\fB-g\fR,
+\fB-T\fR,
+\fB-r\fR,
+\fB-s\fR and
+\fB-x\fR
+options
 are not supported under SVr4.
 The SVr4 -c mode does not report bad use links.
 
index d5e61478f6e77f47e28ed13eb7cd6abd6f425aba..ea277266db1acf90383e2e6adb4af2069778ae48 100644 (file)
@@ -1,4 +1,32 @@
-.\" $Id: toe.1m,v 0.6 1997/12/06 22:14:57 tom Exp $
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: toe.1m,v 1.7 1998/03/11 21:12:53 juergen Exp $
 .TH toe 1M ""
 .ds n 5
 .ds d @DATADIR@/terminfo
index 3dcb46804db667ec80964a1b0596144b669280e4..84b64b2588a19c82091773e8742171361063d9a7 100644 (file)
@@ -1,4 +1,33 @@
 '\" t
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: tput.1,v 1.12 1999/01/24 02:44:26 Jeffrey.C.Honig Exp $
 .TH tput 1 ""
 .ds d @DATADIR@/terminfo
 .ds n 5
@@ -26,19 +55,22 @@ the attribute is of type boolean, \fBtput\fR simply sets the exit code
 (\fB0\fR for TRUE if the terminal has the capability, \fB1\fR for
 FALSE if it does not), and produces no output.  Before using a value
 returned on standard output, the user should test the exit code
-[\fB$?\fR, see \fBsh\fR(1)] to be sure it is \fB0\fR.  (See the \fBEXIT
-CODES\fR and \fBDIAGNOSTICS\fR sections.)  For a complete list of capabilities
+[\fB$?\fR, see \fBsh\fR(1)] to be sure it is \fB0\fR.
+(See the \fBEXIT CODES\fR and \fBDIAGNOSTICS\fR sections.)
+For a complete list of capabilities
 and the \fIcapname\fR associated with each, see \fBterminfo\fR(\*n).
 .TP
 \fB-T\fR\fItype\fR
 indicates the \fItype\fR of terminal.  Normally this option is
 unnecessary, because the default is taken from the environment
 variable \fBTERM\fR.  If \fB-T\fR is specified, then the shell
-variables \fBLINES\fR and \fBCOLUMNS\fR will be ignored,and the 
+variables \fBLINES\fR and \fBCOLUMNS\fR will be ignored,and the
 operating system will not be queried for the actual screen size.
 .TP
 \fIcapname\fR
-indicates the attribute from the \fBterminfo\fR database.
+indicates the attribute from the \fBterminfo\fR database.  When
+\fBtermcap\fR support is compiled in, the \fBtermcap\fR name for
+the attribute is also accepted.
 .TP
 \fIparms\fR
 If the attribute is a string that takes parameters, the arguments
index fe79d180568aeb98e690ac11206f0b04a4f8fc19..50d58e10957452a1cdab7131d71ec4925d4be68b 100644 (file)
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998 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.                                                           *
+.\"***************************************************************************
+.\"
+.\" $Id: tset.1,v 1.8 1998/12/26 01:44:41 tom Exp $
 .TH tset 1 ""
 .SH NAME
 \fBtset\fR - terminal initialization
@@ -166,7 +195,7 @@ can set \fBTERM\fR appropriately for each dial-up line; this obviates what was
 tset, with a few exceptions specified here.
 .PP
 The -S option of BSD tset no longer works; it prints an error message to stderr
-and dies.  The -s option only sets \fBTERM\fR, not \fBTERMCAP\fB.  Both these
+and dies.  The -s option only sets \fBTERM\fR, not \fBTERMCAP\fP.  Both these
 changes are because the \fBTERMCAP\fR variable is no longer supported under
 terminfo-based \fBncurses\fR, which makes \fBtset -S\fR useless (we made it die
 noisily rather than silently induce lossage).
index 70eb47acd54a9973ac8511788b3d93b4958c8c20..5988f1987b25ce29fddb648574a5d81599e5aa23 100644 (file)
 .\"
 .\" Author: Thomas E. Dickey <dickey@clark.net> 1996
 .\"
-.\" $Id: wresize.3x,v 1.4 1998/02/11 12:13:48 tom Exp $
+.\" $Id: wresize.3x,v 1.5 1998/03/14 23:42:44 tom Exp $
 .TH wresize 3X ""
-.
 .SH NAME
 \fBwresize\fR - resize a curses window
-.
+..
 .SH SYNOPSIS
 \fB#include <curses.h>\fR
 
 \fBint wresize(WINDOW *win, int lines, int columns);\fR
-.
+..
 .SH DESCRIPTION
 The \fBwresize\fR function reallocates storage for an \fBncurses\fR
 window to adjust its dimensions to the specified values.
 If either dimension is larger than the current values, the
 window's data is filled with blanks that have the current background rendition
 (as set by \fBwbkgndset\fR) merged into them.
-.
+..
 .SH RETURN VALUE
 The function returns the integer \fBERR\fR upon failure and \fBOK\fR on success.
 It will fail if either of the dimensions less than or equal to zero,
 or if an error occurs while (re)allocating memory for the window.
-.
+..
 .SH NOTES
 The only restriction placed on the dimensions is that they be greater than zero.
 The dimensions are not compared to \fBcurses\fR screen dimensions to
 simplify the logic of \fBresizeterm\fR.
 The caller must ensure that the window's dimensions fit within the
 actual screen dimensions.
-.
+..
 .SH SEE ALSO
 \fBresizeterm\fR(3X).
-.
+..
 .SH AUTHOR
 Thomas Dickey (from an equivalent function written in 1988 for BSD curses).
 .\"#
index 39800589427d3669954b3fd86aa5c424c10ef007..d334dab02ba169f2b7660e35821331fbf72ea426 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.23 1998/02/11 12:13:50 tom Exp $
+# $Id: Makefile.in,v 1.25 1998/11/10 19:08:30 juergen Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -74,18 +74,19 @@ CCFLAGS             = $(CPPFLAGS) $(CFLAGS)
 CFLAGS_NORMAL  = $(CCFLAGS)
 CFLAGS_DEBUG   = $(CCFLAGS) @CC_G_OPT@ -DTRACE
 CFLAGS_PROFILE = $(CCFLAGS) -pg
-# Juergen Pfeifer reports:
-# "Unfortunately -O crashes my linker on Linux and -O2 works"
-# If your linker coughs and dies, try uncommenting the -O2
-CFLAGS_SHARED  = $(CCFLAGS) @CC_SHARED_OPTS@ # -O2
+
+CFLAGS_SHARED  = $(CCFLAGS) @CC_SHARED_OPTS@
 
 CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
 
 LINK           = $(CC)
 LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
 
-SHLIB_LIST     = -lncurses @SHLIB_LIST@
+SHLIB_DIRS     = -L../lib -L$(libdir)
+SHLIB_LIST     = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+
 MK_SHARED_LIB  = @MK_SHARED_LIB@
+
 REL_VERSION    = @cf_cv_rel_version@
 ABI_VERSION    = @cf_cv_abi_version@
 
index 829cb45976e511c961f008e6eed7e5e8c04ce2e4..3fd5627445e7418f026df730f9382e6d5f66edc6 100644 (file)
@@ -11,4 +11,4 @@ directory.
 
 Juergen Pfeifer
 
-eMail: Juergen.Pfeifer@T-Online.de
+eMail: juergen.pfeifer@gmx.net
index a45d0b9cc1cf832d6f554abdcb46125f33645746..cc1c8308a948d5c4ea15b2a90ab40a0c7b886008 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #ifndef _ETI_ERRNO_H_
index 3623b85e3155c017b761ca52689eef97ae816731..3f421c1113b2c8e4046dc5a19e93f8d8196c030c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1999 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            *
  ****************************************************************************/
 
 /****************************************************************************
- *  Author: Thomas E. Dickey <dickey@clark.net> 1996,1997                   *
+ *  Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1999              *
  ****************************************************************************/
 /* LINTLIBRARY */
 
-/* ./m_adabind.c */
+/* ./m_attribs.c */
 
 #include "menu.priv.h"
 
-#undef _nc_ada_normalize_menu_opts
-void   _nc_ada_normalize_menu_opts(
-               int     *opt)
-               { /* void */ }
-
-#undef _nc_ada_normalize_item_opts
-void   _nc_ada_normalize_item_opts(
-               int     *opt)
-               { /* void */ }
-
-#undef _nc_get_item
-ITEM   *_nc_get_item(
-               const MENU *menu, 
-               int     idx)
-               { return(*(ITEM **)0); }
-
-/* ./m_attribs.c */
-
 #undef set_menu_fore
 int    set_menu_fore(
                MENU    *menu, 
@@ -88,6 +70,14 @@ chtype       menu_grey(
 
 /* ./m_cursor.c */
 
+#undef _nc_menu_cursor_pos
+int    _nc_menu_cursor_pos(
+               const MENU *menu, 
+               const ITEM *item, 
+               int     *pY, 
+               int     *pX)
+               { return(*(int *)0); }
+
 #undef pos_menu_cursor
 int    pos_menu_cursor(
                const MENU *menu)
index 93baee42d9a359e9d9e72ff84d2ca41f634c8c65..3cf2a1189bf356f868da0076124bd9e978bd8150 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_attribs.c,v 1.6 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_attribs.c,v 1.8 1999/05/16 17:24:24 juergen Exp $")
 
 /* Macro to redraw menu if it is posted and changed */
 #define Refresh_Menu(menu) \
index ca08f5e3331df91ac02ca6780f12d4c105d892fe..a46308954e967a643a28b4edf8ed6b65c45a533a 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_cursor.c,v 1.9 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_cursor.c,v 1.13 1999/05/16 17:24:43 juergen Exp $")
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnmenu  
-|   Function      :  pos_menu_cursor  
-|   
-|   Description   :  Position logical cursor to current item in menu
+|   Facility      :  libnmenu
+|   Function      :  _nc_menu_cursor_pos
+|
+|   Description   :  Return position of logical cursor to current item
 |
 |   Return Values :  E_OK            - success
 |                    E_BAD_ARGUMENT  - invalid menu
 |                    E_NOT_POSTED    - Menu is not posted
 +--------------------------------------------------------------------------*/
-int pos_menu_cursor(const MENU * menu)
+int _nc_menu_cursor_pos(const MENU* menu,
+                       const ITEM* item,
+                       int* pY, int* pX)
 {
-  if (!menu)
-    RETURN(E_BAD_ARGUMENT);
+  if (!menu || !pX || !pY)
+    return(E_BAD_ARGUMENT);
   else
     {
-      ITEM *item;
-      int x, y;
-      WINDOW *win, *sub;
-      
+      if ((ITEM*)0 == item)
+       item = menu->curitem;
+      assert(item!=(ITEM*)0);
+
       if ( !( menu->status & _POSTED ) )
-       RETURN(E_NOT_POSTED);
-      
-      item = menu->curitem;
-      assert(item);
-      
-      x = item->x * (menu->spc_cols + menu->itemlen);
-      y = (item->y - menu->toprow) * menu->spc_rows;
+       return(E_NOT_POSTED);
+
+      *pX = item->x * (menu->spc_cols + menu->itemlen);
+      *pY = (item->y - menu->toprow) * menu->spc_rows;
+    }
+  return(E_OK);
+}
+
+/*---------------------------------------------------------------------------
+|   Facility      :  libnmenu
+|   Function      :  pos_menu_cursor
+|
+|   Description   :  Position logical cursor to current item in menu
+|
+|   Return Values :  E_OK            - success
+|                    E_BAD_ARGUMENT  - invalid menu
+|                    E_NOT_POSTED    - Menu is not posted
++--------------------------------------------------------------------------*/
+int pos_menu_cursor(const MENU * menu)
+{
+  WINDOW *win, *sub;
+  int x, y;
+  int err = _nc_menu_cursor_pos(menu,(ITEM*)0,&y,&x);
+
+  if (E_OK==err)
+    {
       win = menu->userwin ? menu->userwin : stdscr;
       sub = menu->usersub ? menu->usersub : win;
       assert(win && sub);
-      
+
       if ((menu->opt & O_SHOWMATCH) && (menu->pindex > 0))
        x += ( menu->pindex + menu->marklen - 1);
-      
+
       wmove(sub,y,x);
-      
+
       if ( win != sub )
        {
          wcursyncup(sub);
          wsyncup(sub);
          untouchwin(sub);
-       } 
+       }
     }
-  RETURN(E_OK);
+  RETURN(err);
 }
 
 /* m_cursor.c ends here */
index 5e47beac1e08b519e11de7a6501378e46a26976a..fef3e8ea7147e69436f72854c28cb5081ca4e595 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_driver.c,v 1.10 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_driver.c,v 1.17 1999/05/16 17:24:55 juergen Exp $")
 
 /* Macros */
 
@@ -51,12 +51,12 @@ MODULE_ID("$Id: m_driver.c,v 1.10 1998/02/11 12:13:49 tom Exp $")
     (menu)->pattern[(menu)->pindex] = '\0'; }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnmenu  
-|   Function      :  static bool Is_Sub_String( 
+|   Facility      :  libnmenu
+|   Function      :  static bool Is_Sub_String(
 |                           bool IgnoreCaseFlag,
 |                           const char *part,
 |                           const char *string)
-|   
+|
 |   Description   :  Checks whether or not part is a substring of string.
 |
 |   Return Values :  TRUE   - if it is a substring
@@ -87,12 +87,12 @@ static bool Is_Sub_String(
 }
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnmenu  
+|   Facility      :  libnmenu
 |   Function      :  int _nc_Match_Next_Character_In_Item_Name(
 |                           MENU *menu,
 |                           int  ch,
 |                           ITEM **item)
-|   
+|
 |   Description   :  This internal routine is called for a menu positioned
 |                    at an item with three different classes of characters:
 |                       - a printable character; the character is added to
@@ -107,7 +107,7 @@ static bool Is_Sub_String(
 |                       the item where the search starts. On return - if
 |                       a match was found - it contains a pointer to the
 |                       matching item.
-|  
+|
 |   Return Values :  E_OK        - an item matching the pattern was found
 |                    E_NO_MATCH  - nothing found
 +--------------------------------------------------------------------------*/
@@ -115,38 +115,38 @@ int _nc_Match_Next_Character_In_Item_Name(MENU *menu, int ch, ITEM **item)
 {
   bool found = FALSE, passed = FALSE;
   int  idx, last;
-  
+
   assert( menu && item && *item);
   idx = (*item)->index;
-  
+
   if (ch && ch!=BS)
     {
       /* if we become to long, we need no further checking : there can't be
         a match ! */
-      if ((menu->pindex+1) > menu->namelen) 
+      if ((menu->pindex+1) > menu->namelen)
        RETURN(E_NO_MATCH);
-      
+
       Add_Character_To_Pattern(menu,ch);
       /* we artificially position one item back, because in the do...while
         loop we start with the next item. This means, that with a new
         pattern search we always start the scan with the actual item. If
         we do a NEXT_PATTERN oder PREV_PATTERN search, we start with the
         one after or before the actual item. */
-      if (--idx < 0) 
+      if (--idx < 0)
        idx = menu->nitems-1;
     }
-  
+
   last = idx;                  /* this closes the cycle */
-  
+
   do{
     if (ch==BS)
       {                        /* we have to go backward */
-       if (--idx < 0) 
+       if (--idx < 0)
          idx = menu->nitems-1;
       }
     else
       {                        /* otherwise we always go forward */
-       if (++idx >= menu->nitems) 
+       if (++idx >= menu->nitems)
          idx = 0;
       }
     if (Is_Sub_String((menu->opt & O_IGNORECASE) != 0,
@@ -155,9 +155,9 @@ int _nc_Match_Next_Character_In_Item_Name(MENU *menu, int ch, ITEM **item)
        )
       found = TRUE;
     else
-      passed = TRUE;    
+      passed = TRUE;
   } while (!found && (idx != last));
-  
+
   if (found)
     {
       if (!((idx==(*item)->index) && passed))
@@ -171,7 +171,7 @@ int _nc_Match_Next_Character_In_Item_Name(MENU *menu, int ch, ITEM **item)
         If we searched with an expanded new pattern, we should never reach
         this point, because if the expanded pattern matches also the actual
         item we will find it in the first attempt (passed==FALSE) and we
-        will never cycle through the whole item array.   
+        will never cycle through the whole item array.
         */
       assert( ch==0 || ch==BS );
     }
@@ -182,14 +182,14 @@ int _nc_Match_Next_Character_In_Item_Name(MENU *menu, int ch, ITEM **item)
          /* if we had no match with a new pattern, we have to restore it */
          Remove_Character_From_Pattern(menu);
        }
-    }          
+    }
   RETURN(E_NO_MATCH);
-}      
+}
 
 /*---------------------------------------------------------------------------
-|   Facility      :  libnmenu  
+|   Facility      :  libnmenu
 |   Function      :  int menu_driver(MENU *menu, int c)
-|   
+|
 |   Description   :  Central dispatcher for the menu. Translates the logical
 |                    request 'c' into a menu action.
 |
@@ -209,238 +209,331 @@ int menu_driver(MENU * menu, int   c)
   int result = E_OK;
   ITEM *item;
   int my_top_row, rdiff;
-  
+
   if (!menu)
     RETURN(E_BAD_ARGUMENT);
-  
+
   if ( menu->status & _IN_DRIVER )
     RETURN(E_BAD_STATE);
   if ( !( menu->status & _POSTED ) )
     RETURN(E_NOT_POSTED);
-  
-  my_top_row = menu->toprow;
-  item    = menu->curitem;
-  assert(item);
-  
-  if ((c > KEY_MAX) && (c<=MAX_MENU_COMMAND))
-    {  
-      if (!((c==REQ_BACK_PATTERN)
-           || (c==REQ_NEXT_MATCH) || (c==REQ_PREV_MATCH)))
-       {
-         assert( menu->pattern );
-         Reset_Pattern(menu);
-       }
-      
-      switch(c)
-       {
-       case REQ_LEFT_ITEM:
-         /*=================*/  
-         NAVIGATE(left);
-         break;
-         
-       case REQ_RIGHT_ITEM:
-         /*==================*/  
-         NAVIGATE(right);
-         break;
-         
-       case REQ_UP_ITEM:
-         /*===============*/  
-         NAVIGATE(up);
-         break;
-         
-       case REQ_DOWN_ITEM:
-         /*=================*/  
-         NAVIGATE(down);
-         break;
-         
-       case REQ_SCR_ULINE:
-         /*=================*/  
-         if (my_top_row == 0)
-           result = E_REQUEST_DENIED;
-         else
-           {
-             --my_top_row;
-             item = item->up;
-           }  
-         break;
-         
-       case REQ_SCR_DLINE:
-         /*=================*/  
-         my_top_row++;
-         if ((menu->rows - menu->arows)>0)
-           {
-             /* only if the menu has less items than rows, we can deny the
-                request. Otherwise the epilogue of this routine adjusts the
-                top row if necessary */
-             my_top_row--;
+
+  item = menu->curitem;
+
+    my_top_row = menu->toprow;
+    assert(item);
+
+    if ((c > KEY_MAX) && (c<=MAX_MENU_COMMAND))
+      {
+       if (!((c==REQ_BACK_PATTERN)
+             || (c==REQ_NEXT_MATCH) || (c==REQ_PREV_MATCH)))
+         {
+           assert( menu->pattern );
+           Reset_Pattern(menu);
+         }
+
+       switch(c)
+         {
+         case REQ_LEFT_ITEM:
+           /*=================*/
+           NAVIGATE(left);
+           break;
+
+         case REQ_RIGHT_ITEM:
+           /*==================*/
+           NAVIGATE(right);
+           break;
+
+         case REQ_UP_ITEM:
+           /*===============*/
+           NAVIGATE(up);
+           break;
+
+         case REQ_DOWN_ITEM:
+           /*=================*/
+           NAVIGATE(down);
+           break;
+
+         case REQ_SCR_ULINE:
+           /*=================*/
+         if (my_top_row == 0 || !(item->up))
              result = E_REQUEST_DENIED;
-           }
-         else
-           item = item->down;
-         break;
-         
-       case REQ_SCR_DPAGE:
-         /*=================*/  
-         rdiff = menu->rows - menu->arows - my_top_row;
-         if (rdiff > menu->arows) 
-           rdiff = menu->arows;
-         if (rdiff==0)
-           result = E_REQUEST_DENIED;
-         else
-           {
-             my_top_row += rdiff;
-             while(rdiff-- > 0)
-               item = item->down;
-           }
-         break;
-         
-       case REQ_SCR_UPAGE:
-         /*=================*/  
-         rdiff = (menu->arows < my_top_row) ?
-           menu->arows : my_top_row;
-         if (rdiff==0)
-           result = E_REQUEST_DENIED;
-         else
-           {
-             my_top_row -= rdiff;
-             while(rdiff--)
+           else
+             {
+               --my_top_row;
                item = item->up;
-           }
-         break;
-         
-       case REQ_FIRST_ITEM:
-         /*==================*/  
-         item = menu->items[0];
-         break;
-         
-       case REQ_LAST_ITEM:
-         /*=================*/  
-         item = menu->items[menu->nitems-1];
-         break;
-
-       case REQ_NEXT_ITEM:
-         /*=================*/  
-         if ((item->index+1)>=menu->nitems)
-           {
-             if (menu->opt & O_NONCYCLIC)
+             }
+           break;
+
+         case REQ_SCR_DLINE:
+           /*=================*/
+         if ((my_top_row + menu->arows >= menu->rows) || !(item->down))
+             {
+               /* only if the menu has less items than rows, we can deny the
+                  request. Otherwise the epilogue of this routine adjusts the
+                  top row if necessary */
                result = E_REQUEST_DENIED;
-             else
-               item = menu->items[0];
-           }
-         else
-           item = menu->items[item->index + 1];
-         break;
-         
-       case REQ_PREV_ITEM:
-         /*=================*/  
-         if (item->index<=0)
-           {
-             if (menu->opt & O_NONCYCLIC)
+             }
+         else {
+           my_top_row++;
+             item = item->down;
+         }
+           break;
+
+         case REQ_SCR_DPAGE:
+           /*=================*/
+         rdiff = menu->rows - (menu->arows + my_top_row);
+           if (rdiff > menu->arows)
+             rdiff = menu->arows;
+         if (rdiff<=0)
+             result = E_REQUEST_DENIED;
+           else
+             {
+               my_top_row += rdiff;
+             while(rdiff-- > 0 && item!=(ITEM*)0)
+                 item = item->down;
+             }
+           break;
+
+         case REQ_SCR_UPAGE:
+           /*=================*/
+         rdiff = (menu->arows < my_top_row) ? menu->arows : my_top_row;
+         if (rdiff<=0)
+             result = E_REQUEST_DENIED;
+           else
+             {
+               my_top_row -= rdiff;
+             while(rdiff-- && item!=(ITEM*)0)
+                 item = item->up;
+             }
+           break;
+
+         case REQ_FIRST_ITEM:
+           /*==================*/
+           item = menu->items[0];
+           break;
+
+         case REQ_LAST_ITEM:
+           /*=================*/
+           item = menu->items[menu->nitems-1];
+           break;
+
+         case REQ_NEXT_ITEM:
+           /*=================*/
+           if ((item->index+1)>=menu->nitems)
+             {
+               if (menu->opt & O_NONCYCLIC)
+                 result = E_REQUEST_DENIED;
+               else
+                 item = menu->items[0];
+             }
+           else
+             item = menu->items[item->index + 1];
+           break;
+
+         case REQ_PREV_ITEM:
+           /*=================*/
+           if (item->index<=0)
+             {
+               if (menu->opt & O_NONCYCLIC)
+                 result = E_REQUEST_DENIED;
+               else
+                 item = menu->items[menu->nitems-1];
+             }
+           else
+             item = menu->items[item->index - 1];
+           break;
+
+         case REQ_TOGGLE_ITEM:
+           /*===================*/
+           if (menu->opt & O_ONEVALUE)
+             {
                result = E_REQUEST_DENIED;
-             else
-               item = menu->items[menu->nitems-1];
-           }
-         else
-           item = menu->items[item->index - 1];
-         break;
-         
-       case REQ_TOGGLE_ITEM:
-         /*===================*/  
-         if (menu->opt & O_ONEVALUE)
-           {
+             }
+           else
+             {
+               if (menu->curitem->opt & O_SELECTABLE)
+                 {
+                   menu->curitem->value = !menu->curitem->value;
+                   Move_And_Post_Item(menu,menu->curitem);
+                   _nc_Show_Menu(menu);
+                 }
+               else
+                 result = E_NOT_SELECTABLE;
+             }
+           break;
+
+         case REQ_CLEAR_PATTERN:
+           /*=====================*/
+           /* already cleared in prologue */
+           break;
+
+         case REQ_BACK_PATTERN:
+           /*====================*/
+           if (menu->pindex>0)
+             {
+               assert(menu->pattern);
+               Remove_Character_From_Pattern(menu);
+               pos_menu_cursor( menu );
+             }
+           else
              result = E_REQUEST_DENIED;
-           }
-         else
-           {
-             if (menu->curitem->opt & O_SELECTABLE)
-               {
-                 menu->curitem->value = !menu->curitem->value;
-                 Move_And_Post_Item(menu,menu->curitem);
-                 _nc_Show_Menu(menu);
-               }
-             else
-               result = E_NOT_SELECTABLE;
-           }
-         break;
-         
-       case REQ_CLEAR_PATTERN:
-         /*=====================*/  
-         /* already cleared in prologue */
-         break;
-         
-       case REQ_BACK_PATTERN:
-         /*====================*/  
-         if (menu->pindex>0)
-           {
-             assert(menu->pattern);
-             Remove_Character_From_Pattern(menu);
-             pos_menu_cursor( menu );
-           }
-         else
-           result = E_REQUEST_DENIED;
-         break;
-         
-       case REQ_NEXT_MATCH:
-         /*==================*/  
-         assert(menu->pattern);
-         if (menu->pattern[0])
-           result = _nc_Match_Next_Character_In_Item_Name(menu,0,&item);
-         else
-           {
-             if ((item->index+1)<menu->nitems)
-               item=menu->items[item->index+1];
-             else
-               {
-                 if (menu->opt & O_NONCYCLIC)
-                   result = E_REQUEST_DENIED;
-                 else
-                   item = menu->items[0];
-               }
-           }
-         break;        
-         
-       case REQ_PREV_MATCH:
-         /*==================*/  
-         assert(menu->pattern);
-         if (menu->pattern[0])
-           result = _nc_Match_Next_Character_In_Item_Name(menu,BS,&item);
-         else
-           {
-             if (item->index)
-               item = menu->items[item->index-1];
-             else
-               {
-                 if (menu->opt & O_NONCYCLIC)
-                   result = E_REQUEST_DENIED;
-                 else
-                   item = menu->items[menu->nitems-1];
-               }
-           }
-         break;
-         
-       default:
-         /*======*/  
+           break;
+
+         case REQ_NEXT_MATCH:
+           /*==================*/
+           assert(menu->pattern);
+           if (menu->pattern[0])
+             result = _nc_Match_Next_Character_In_Item_Name(menu,0,&item);
+           else
+             {
+               if ((item->index+1)<menu->nitems)
+                 item=menu->items[item->index+1];
+               else
+                 {
+                   if (menu->opt & O_NONCYCLIC)
+                     result = E_REQUEST_DENIED;
+                   else
+                     item = menu->items[0];
+                 }
+             }
+           break;
+
+         case REQ_PREV_MATCH:
+           /*==================*/
+           assert(menu->pattern);
+           if (menu->pattern[0])
+             result = _nc_Match_Next_Character_In_Item_Name(menu,BS,&item);
+           else
+             {
+               if (item->index)
+                 item = menu->items[item->index-1];
+               else
+                 {
+                   if (menu->opt & O_NONCYCLIC)
+                     result = E_REQUEST_DENIED;
+                   else
+                     item = menu->items[menu->nitems-1];
+                 }
+             }
+           break;
+
+         default:
+           /*======*/
+           result = E_UNKNOWN_COMMAND;
+           break;
+         }
+      }
+    else
+      {                                /* not a command */
+       if ( !(c & ~((int)MAX_REGULAR_CHARACTER)) && isprint(c) )
+         result = _nc_Match_Next_Character_In_Item_Name( menu, c, &item );
+#ifdef NCURSES_MOUSE_VERSION
+        else if (KEY_MOUSE == c)
+         {
+           MEVENT      event;
+           WINDOW* uwin = Get_Menu_UserWin(menu);
+
+           getmouse(&event);
+           if ((event.bstate & (BUTTON1_CLICKED         |
+                                BUTTON1_DOUBLE_CLICKED  |
+                                BUTTON1_TRIPLE_CLICKED   ))
+            && wenclose(uwin,event.y, event.x))
+             { /* we react only if the click was in the userwin, that means
+                * inside the menu display area or at the decoration window.
+                */
+               WINDOW* sub = Get_Menu_Window(menu);
+               int ry = event.y, rx = event.x; /* screen coordinates */
+
+               result = E_REQUEST_DENIED;
+               if (mouse_trafo(&ry,&rx,FALSE))
+                 { /* rx, ry are now "curses" coordinates */
+                   if (ry < sub->_begy)
+                     { /* we clicked above the display region; this is
+                        * interpreted as "scroll up" request
+                        */
+                       if (event.bstate & BUTTON1_CLICKED)
+                         result = menu_driver(menu,REQ_SCR_ULINE);
+                       else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
+                         result = menu_driver(menu,REQ_SCR_UPAGE);
+                       else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
+                         result = menu_driver(menu,REQ_FIRST_ITEM);
+                       RETURN(result);
+                     }
+                   else if (ry >= sub->_begy + sub->_maxy)
+                     { /* we clicked below the display region; this is
+                        * interpreted as "scroll down" request
+                        */
+                       if (event.bstate & BUTTON1_CLICKED)
+                         result = menu_driver(menu,REQ_SCR_DLINE);
+                       else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
+                         result = menu_driver(menu,REQ_SCR_DPAGE);
+                       else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
+                         result = menu_driver(menu,REQ_LAST_ITEM);
+                       RETURN(result);
+                     }
+                   else if (wenclose(sub,event.y,event.x))
+                     { /* Inside the area we try to find the hit item */
+                       int i,x,y,err;
+                       ry = event.y; rx = event.x;
+                       if (wmouse_trafo(sub,&ry,&rx,FALSE))
+                         {
+                           for(i=0;i<menu->nitems;i++)
+                             {
+                               err = _nc_menu_cursor_pos(menu,menu->items[i],
+                                                         &y, &x);
+                               if (E_OK==err)
+                                 {
+                                   if ((ry==y)       &&
+                                       (rx>=x)       &&
+                                       (rx < x + menu->itemlen))
+                                     {
+                                       item = menu->items[i];
+                                       result = E_OK;
+                                       break;
+                                     }
+                                 }
+                             }
+                           if (E_OK==result)
+                             { /* We found an item, now we can handle the click.
+                                * A single click just positions the menu cursor
+                                * to the clicked item. A double click toggles
+                                * the item.
+                                */
+                               if (event.bstate & BUTTON1_DOUBLE_CLICKED)
+                                 {
+                                   _nc_New_TopRow_and_CurrentItem(menu,
+                                                                  my_top_row,
+                                                                  item);
+                                   menu_driver(menu,REQ_TOGGLE_ITEM);
+                                   result = E_UNKNOWN_COMMAND;
+                                 }
+                             }
+                         }
+                     }
+                 }
+             }
+           else
+               result = E_REQUEST_DENIED;
+         }
+#endif /* NCURSES_MOUSE_VERSION */
+       else
          result = E_UNKNOWN_COMMAND;
-         break;
-       }
-    }
-  else
-    {                          /* not a command */
-      if ( !(c & ~((int)MAX_REGULAR_CHARACTER)) && isprint(c) )
-       result = _nc_Match_Next_Character_In_Item_Name( menu, c, &item );
-      else
-       result = E_UNKNOWN_COMMAND;
+      }
+
+  if (E_OK==result)
+    {
+    /* Adjust the top row if it turns out that the current item unfortunately
+       doesn't appear in the menu window */
+    if ( item->y < my_top_row )
+      my_top_row = item->y;
+    else if ( item->y >= (my_top_row + menu->arows) )
+      my_top_row = item->y - menu->arows + 1;
+
+    _nc_New_TopRow_and_CurrentItem( menu, my_top_row, item );
+
     }
-  
-  /* Adjust the top row if it turns out that the current item unfortunately
-     doesn't appear in the menu window */
-  if ( item->y < my_top_row )
-    my_top_row = item->y;
-  else if ( item->y >= (my_top_row + menu->arows) )
-    my_top_row = item->y - menu->arows + 1;
-  
-  _nc_New_TopRow_and_CurrentItem( menu, my_top_row, item );
-  
+
   RETURN(result);
 }
 
index 35fdb116f1bc03629feeddf2f9d7280cf40c75f9..829fbe8caf6fe51d96e7c3b9611d01a7c49b5d9d 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_format.c,v 1.7 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_format.c,v 1.9 1999/05/16 17:25:04 juergen Exp $")
 
 #define minimum(a,b) ((a)<(b) ? (a): (b))
 
index 09b4572723056a788ccdd8fe5c4ac0ed4bf757dd..3633e55b9cc2992c8043dad60f6c72925040265c 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_global.c,v 1.9 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_global.c,v 1.11 1999/05/16 17:25:14 juergen Exp $")
 
 MENU _nc_Default_Menu = {
   16,                            /* Nr. of chars high */
index fc5ce4418fc15f68d1cc6ced5b976b8aba468ddd..e031d37e4fc3f52f91747919cad69f0e2bd471e1 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_hook.c,v 1.6 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_hook.c,v 1.8 1999/05/16 17:25:24 juergen Exp $")
 
 /* "Template" macro to generate function to set application specific hook */
 #define GEN_HOOK_SET_FUNCTION( typ, name ) \
index 36a7818e249685484f6de374679aab64b8af1517..7ac9f33daf10cb1de424641f0c5513f1958a2c96 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_cur.c,v 1.9 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_item_cur.c,v 1.11 1999/05/16 17:25:34 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 4bfab978caeb591b744b1b6faa8a89025be7d69f..1be8a6da86fbc45cb18d60f333d3c37d76715e9f 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_nam.c,v 1.7 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_item_nam.c,v 1.9 1999/05/16 17:25:43 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 21caaa14934fa729c5eda25a70942b83e982c38b..a7b50adaebb09395297f720fddc9e5f0d4331890 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_new.c,v 1.8 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_item_new.c,v 1.11 1999/05/16 17:28:49 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -178,7 +178,8 @@ int set_menu_mark(MENU * menu, const char * mark)
          if (menu->mark)
            {
              strcpy(menu->mark, mark);
-             menu->status |= _MARK_ALLOCATED;
+             if (menu != &_nc_Default_Menu)
+               menu->status |= _MARK_ALLOCATED;
            }
          else
            {
index 14a52b4438563ba2994212cd0297741bf12dd334..a37fadcbf901d076e576f4823117b0a15cd9233e 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_opt.c,v 1.6 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_item_opt.c,v 1.10 1999/05/16 17:25:52 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -52,6 +52,8 @@ MODULE_ID("$Id: m_item_opt.c,v 1.6 1998/02/11 12:13:49 tom Exp $")
 +--------------------------------------------------------------------------*/
 int set_item_opts(ITEM *item, Item_Options opts)
 { 
+  opts &= ALL_ITEM_OPTS;
+
   if (opts & ~ALL_ITEM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   
@@ -97,8 +99,8 @@ int item_opts_off(ITEM *item, Item_Options  opts)
     RETURN(E_BAD_ARGUMENT);
   else
     {
-      Normalize_Item(citem);
-      opts = citem->opt & ~opts;
+      Normalize_Item(citem);    
+      opts = citem->opt & ~(opts & ALL_ITEM_OPTS);
       return set_item_opts( item, opts );
     }
 }
@@ -117,6 +119,7 @@ int item_opts_on(ITEM *item, Item_Options opts)
   ITEM *citem = item; /* use a copy because set_item_opts must detect
                          NULL item itself to adjust its behaviour */
   
+  opts &= ALL_ITEM_OPTS;
   if (opts & ~ALL_ITEM_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
index 8825656054098dce1039cd14b23cde67737cd685..cbe092afbbc1870494ccbdc92104815da9fcbcc8 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_top.c,v 1.2 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_item_top.c,v 1.4 1999/05/16 17:26:01 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 4e36b21a9642da50521d97f2ce0631dad6805452..2659f4b3f38657eb8ed016c7adfaaa5b13c99fd7 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_use.c,v 1.8 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_item_use.c,v 1.10 1999/05/16 17:26:11 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 06e766d5812bf68419b4e55d9642edf174262fb3..cf52d1dd668ad632d1056521403b2bbd0b7b45c5 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_val.c,v 1.6 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_item_val.c,v 1.8 1999/05/16 17:26:20 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index b44060127952195d31dbe9d59e756f3914b84b07..dab5ecb38e3819fec895809780a74f00f09f25ba 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_item_vis.c,v 1.8 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_item_vis.c,v 1.10 1999/05/16 17:26:34 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 461fedf0d54ef0f08dd3877c308c79f318c737e0..1bda088a2f9ebcec7ea74f9c6ed30e3e76040eb2 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_items.c,v 1.6 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_items.c,v 1.8 1999/05/16 17:26:50 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 9707b12f1150901bdc58ea4cce2c0acbe5bbb146..ba2b90cffe193f5997baa4a6dc618b1daa4cf825 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_new.c,v 1.7 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_new.c,v 1.10 1999/05/16 17:26:59 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -57,6 +57,7 @@ MENU *new_menu(ITEM ** items)
   if (menu)
     {
       *menu = _nc_Default_Menu;
+      menu->status = 0;
       menu->rows = menu->frows;
       menu->cols = menu->fcols;
       if (items && *items)
index 2de719d20c20473e858b262c966ceeda06c78439..1875f418755b12aea940edd1c17e0eaf0c794042 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_opts.c,v 1.8 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_opts.c,v 1.12 1999/05/16 17:27:08 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu
@@ -54,6 +54,8 @@ MODULE_ID("$Id: m_opts.c,v 1.8 1998/02/11 12:13:49 tom Exp $")
 +--------------------------------------------------------------------------*/
 int set_menu_opts(MENU * menu, Menu_Options opts)
 {
+  opts &= ALL_MENU_OPTS;
+
   if (opts & ~ALL_MENU_OPTS)
     RETURN(E_BAD_ARGUMENT);
 
@@ -112,6 +114,7 @@ int menu_opts_off(MENU *menu, Menu_Options  opts)
   MENU *cmenu = menu; /* use a copy because set_menu_opts must detect
                          NULL menu itself to adjust its behaviour */
 
+  opts &= ALL_MENU_OPTS;
   if (opts & ~ALL_MENU_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
@@ -140,6 +143,7 @@ int menu_opts_on(MENU * menu, Menu_Options opts)
   MENU *cmenu = menu; /* use a copy because set_menu_opts must detect
                          NULL menu itself to adjust its behaviour */
 
+  opts &= ALL_MENU_OPTS;
   if (opts & ~ALL_MENU_OPTS)
     RETURN(E_BAD_ARGUMENT);
   else
index 2235a4842285988fc48d3a1cd4e3b9d6491fc270..180228329dd241a2dcaada95c2a15a5a1fc9138e 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_pad.c,v 1.2 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_pad.c,v 1.4 1999/05/16 17:27:17 juergen Exp $")
 
 /* Macro to redraw menu if it is posted and changed */
 #define Refresh_Menu(menu) \
index 54d72a550301d2b09493f64e54e4cd798a675571..7187c22458804cbef3024cd1bc4050640d08895c 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_pattern.c,v 1.2 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_pattern.c,v 1.4 1999/05/16 17:27:28 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 3838bb6aaf76efbd859e019040f3f56140f67145..8825f3e579182f447fefa1b75b0d4fc64506d22f 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_post.c,v 1.14 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_post.c,v 1.16 1999/05/16 17:27:38 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 1ce7889527333adb5ce010b44f559af5860c0ac6..d90d0afc4750b3d8fdb55bf413910f6efb1f157e 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_req_name.c,v 1.10 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_req_name.c,v 1.12 1999/05/16 17:27:47 juergen Exp $")
 
 static const char *request_names[ MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1 ] = {
   "LEFT_ITEM"    ,
index 608afe6acf3d1ccca2f79132ab0b960bbea72655..d6f964bff66238941f6c3b4da9afa78eeed3caf2 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_scale.c,v 1.2 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_scale.c,v 1.4 1999/05/16 17:28:00 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 0697dbb485aba1d437512585ecceb20e2ff22774..1d035ab052d9540d65123b3daa1b0db163fa8db6 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_spacing.c,v 1.9 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_spacing.c,v 1.11 1999/05/16 17:28:09 juergen Exp $")
 
 #define MAX_SPC_DESC ((TABSIZE) ? (TABSIZE) : 8)
 #define MAX_SPC_COLS ((TABSIZE) ? (TABSIZE) : 8)
index 353c733cca6a4dcd3202eab738e6820161e3f3b5..35a361e687e2a083d86f880bf4282ba4f3414fbe 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_sub.c,v 1.2 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_sub.c,v 1.4 1999/05/16 17:28:20 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index fdfeccae021ad86de983d3f0a1b773a3c9007ff3..45818a3e78fb1b9848af299bd216617baa1e54bc 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_userptr.c,v 1.8 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: m_userptr.c,v 1.10 1999/05/16 17:28:29 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 2bcba55cddb84891691e5b2dba6b46ab86af476b..73f34b5cc629cfa3adf0f6f6b3cc49860becad06 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_win.c,v 1.7 1998/02/11 12:13:49 tom Exp $")
+MODULE_ID("$Id: m_win.c,v 1.9 1999/05/16 17:28:37 juergen Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
index 03c3cbc8da54718749232d92e3fc7f5cde685c4f..4b4a286a63a21314d4d383c9a87e143c84da6e04 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 #ifndef ETI_MENU
index fb39c77975fd55d3e040a24ccf3089b352d13c56..4c2a22d1ff8e0443939ce36acbf4b094b3620c27 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /***************************************************************************
@@ -50,10 +50,12 @@ extern MENU _nc_Default_Menu;
 /* Normalize menu to default if none was given */
 #define Normalize_Menu( menu ) ((menu)=(menu)?(menu):&_nc_Default_Menu)
 
+/* Get the user defined (framing) window of the menu */
+#define Get_Menu_UserWin(menu) ((menu)->userwin ? (menu)->userwin : stdscr)
+
 /* Normalize menu window */
 #define Get_Menu_Window(  menu ) \
-   ( (menu)->usersub  ? (menu)->usersub  : (\
-     (menu)->userwin  ? (menu)->userwin  : stdscr ))
+   ((menu)->usersub  ? (menu)->usersub  : Get_Menu_UserWin(menu))
 
 /* menu specific status flags */
 #define _LINK_NEEDED    (0x04)
@@ -83,7 +85,7 @@ extern MENU _nc_Default_Menu;
 
 /* This macro ensures, that the item becomes visible, if possible with the
    specified row as the top row of the window. If this is not possible,
-   the top row will be adjusted and the value is stored in the row argument. 
+   the top row will be adjusted and the value is stored in the row argument.
 */
 #define Adjust_Current_Item(menu,row,item) \
   { if ((item)->y < row) \
@@ -98,7 +100,7 @@ extern MENU _nc_Default_Menu;
   { (menu)->pindex = 0; \
     (menu)->pattern[0] = '\0'; }
 
-/* Internal functions. */                                              
+/* Internal functions. */
 extern void _nc_Draw_Menu(const MENU *);
 extern void _nc_Show_Menu(const MENU *);
 extern void _nc_Calculate_Item_Length_and_Width(MENU *);
@@ -108,3 +110,5 @@ extern void _nc_Disconnect_Items(MENU *);
 extern void _nc_New_TopRow_and_CurrentItem(MENU *,int, ITEM *);
 extern void _nc_Link_Items(MENU *);
 extern int  _nc_Match_Next_Character_In_Item_Name(MENU*,int,ITEM**);
+extern int  _nc_menu_cursor_pos(const MENU* menu, const ITEM* item,
+                               int* pY, int* pX);
index a98bee58d795b5b567f8928b0c7371ab3f36ef02..c13f6c893a04a70559524e07eb744b4ccba8968d 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
  ****************************************************************************/
 
 /* Common internal header for menu and form library */
index b97165b81ab0e292e09a534626a5670a4fd9f375..5d6cc823abc18f2c8736ac6bf33dd4b617b8c1aa 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: modules,v 1.13 1998/02/11 12:13:50 tom Exp $
+# $Id: modules,v 1.14 1999/02/18 22:39:04 juergen Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -32,7 +32,6 @@
 
 @ base
 # Library objects
-m_adabind      lib             $(srcdir)       $(MENU_PRIV_H)
 m_attribs      lib             $(srcdir)       $(MENU_PRIV_H)
 m_cursor       lib             $(srcdir)       $(MENU_PRIV_H)
 m_driver       lib             $(srcdir)       $(MENU_PRIV_H)
diff --git a/misc/chkdef.cmd b/misc/chkdef.cmd
new file mode 100644 (file)
index 0000000..c8d7433
--- /dev/null
@@ -0,0 +1,86 @@
+/*\r
+ * $Id: chkdef.cmd,v 1.2 1998/08/29 21:45:58 tom Exp $\r
+ *\r
+ * Author:  Juan Jose Garcia Ripoll <worm@arrakis.es>.\r
+ * Webpage: http://www.arrakis.es/~worm/\r
+ *\r
+ * chkdef.cmd - checks that a .def file has no conflicts and is properly\r
+ *             formatted.\r
+ *\r
+ * returns nonzero if two symbols have the same code or a line has a wrong\r
+ * format.\r
+ *\r
+ * returns 0 otherwise\r
+ *\r
+ * the standard output shows conflicts.\r
+ */\r
+parse arg def_file\r
+\r
+def_file = translate(def_file,'\','/')\r
+\r
+call CleanQueue\r
+\r
+/*\r
+ * `cmp' is zero when the file is valid\r
+ * `codes' associates a name to a code\r
+ * `names' associates a code to a name\r
+ */\r
+cmp    = 0\r
+codes. = 0\r
+names. = ''\r
+\r
+/*\r
+ * This sed expression cleans empty lines, comments and special .DEF\r
+ * commands, such as LIBRARY..., EXPORTS..., etc\r
+ */\r
+tidy_up  = '"s/[       ][      ]*/ /g;s/;.*//g;/^[ ]*$/d;/^[a-zA-Z]/d;"'\r
+\r
+/*\r
+ * First we find all public symbols from the original DLL. All this\r
+ * information is pushed into a REXX private list with the RXQUEUE\r
+ * utility program.\r
+ */\r
+'@echo off'\r
+'type' def_file '| sed' tidy_up '| sort | rxqueue'\r
+\r
+do while queued() > 0\r
+   /*\r
+    * We retrieve the symbol name (NEW_NAME) and its code (NEW_CODE)\r
+    */\r
+   parse pull '"' new_name '"' '@'new_code rest\r
+   select\r
+      when (new_code = '') | (new_name = '') then\r
+         /* The input was not properly formatted */\r
+         do\r
+         say 'Error: symbol "'new_name'" has no export code or is empty'\r
+         cmp = 1\r
+         end\r
+      when codes.new_name \= 0 then\r
+         /* This symbol was already defined */\r
+         if codes.new_name \= new_code then\r
+            do\r
+           cmp = 2\r
+           say 'Symbol "'new_name'" multiply defined'\r
+           end\r
+      when names.new_code \= '' then\r
+         /* This code was already assigned to a symbol */\r
+         if names.new_code \= new_name then\r
+            do\r
+            cmp = 3\r
+           say 'Conflict with "'names.new_code'" & "'new_name'" being @'new_code\r
+            end\r
+      otherwise\r
+         do\r
+         codes.new_name = new_code\r
+         names.new_code = new_name\r
+         end\r
+   end  /* select */\r
+end\r
+\r
+exit cmp\r
+\r
+CleanQueue: procedure\r
+       do while queued() > 0\r
+          parse pull foo\r
+       end\r
+return\r
diff --git a/misc/cleantic.cmd b/misc/cleantic.cmd
new file mode 100644 (file)
index 0000000..ab6a40a
--- /dev/null
@@ -0,0 +1,16 @@
+/*\r
+ * $Id: cleantic.cmd,v 1.3 1998/08/29 21:43:19 tom Exp $\r
+ *\r
+ * Author:  Juan Jose Garcia Ripoll <worm@arrakis.es>.\r
+ * Webpage: http://www.arrakis.es/~worm/\r
+ */\r
+parse arg dir\r
+\r
+pause\r
+dir = translate(dir,'\','/');\r
+letters = '0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z'\r
+\r
+if dir = '' then\r
+    dir = '.'\r
+'echo Cleaning 'dir\r
+'for %%1 in ('letters') do @if not exist 'dir'\%%1\* (echo Cleaning ...\%%1 & rd %%1 2>NUL)'\r
diff --git a/misc/cmpdef.cmd b/misc/cmpdef.cmd
new file mode 100644 (file)
index 0000000..7cc9c95
--- /dev/null
@@ -0,0 +1,106 @@
+/*\r
+ * $Id: cmpdef.cmd,v 1.2 1998/08/29 21:44:47 tom Exp $\r
+ *\r
+ * Author:  Juan Jose Garcia Ripoll <worm@arrakis.es>.\r
+ * Webpage: http://www.arrakis.es/~worm/\r
+ *\r
+ * cmpdef.cmd - compares two .def files, checking whether they have\r
+ *             the same entries with the same export codes.\r
+ *\r
+ * returns 0 if there are no conflicts between the files -- that is,\r
+ * the newer one can replace the older one.\r
+ *\r
+ * returns 1 when either of the files is not properly formatted and\r
+ * when there are conflicts: two symbols having the same export code.\r
+ *\r
+ * the standard output shows a list with newly added symbols, plus\r
+ * replaced symbols and conflicts.\r
+ */\r
+parse arg def_file1 def_file2\r
+\r
+def_file1 = translate(def_file1,'\','/')\r
+def_file2 = translate(def_file2,'\','/')\r
+\r
+call CleanQueue\r
+\r
+/*\r
+ * `cmp' is zero when the last file is valid and upward compatible\r
+ * `numbers' is the stem where symbols are stored\r
+ */\r
+cmp      = 0\r
+names.   = ''\r
+numbers. = 0\r
+\r
+/*\r
+ * This sed expression cleans empty lines, comments and special .DEF\r
+ * commands, such as LIBRARY..., EXPORTS..., etc\r
+ */\r
+tidy_up  = '"s/[       ][      ]*/ /g;s/;.*//g;/^[ ]*$/d;/^[a-zA-Z]/d;"'\r
+\r
+/*\r
+ * First we find all public symbols from the original DLL. All this\r
+ * information is pushed into a REXX private list with the RXQUEUE\r
+ * utility program.\r
+ */\r
+'@echo off'\r
+'type' def_file1 '| sed' tidy_up '| sort | rxqueue'\r
+\r
+do while queued() > 0\r
+   /*\r
+    * We retrieve the symbol name (NAME) and its number (NUMBER)\r
+    */\r
+   parse pull '"' name '"' '@'number rest\r
+   if number = '' || name = '' then\r
+      do\r
+      say 'Corrupted file' def_file1\r
+      say 'Symbol' name 'has no number'\r
+      exit 1\r
+      end\r
+   else\r
+      do\r
+      numbers.name = number\r
+      names.number = name\r
+      end\r
+end\r
+\r
+/*\r
+ * Now we find all public symbols from the new DLL, and compare.\r
+ */\r
+'type' def_file2 '| sed' tidy_up '| sort | rxqueue'\r
+\r
+do while queued() > 0\r
+   parse pull '"' name '"' '@'number rest\r
+   if name = '' | number = '' then\r
+      do\r
+      say 'Corrupted file' def_file2\r
+      say 'Symbol' name 'has no number'\r
+      exit 1\r
+      end\r
+   if numbers.name = 0 then\r
+      do\r
+      cmp = 1\r
+      if names.number = '' then\r
+         say 'New symbol' name 'with code @'number\r
+      else\r
+         say 'Conflict old =' names.number ', new =' name 'at @'number\r
+      end\r
+   else if numbers.name \= number then\r
+      do\r
+      cmp = 1\r
+      say name 'Symbol' name 'changed from @'numbers.name 'to @'number\r
+      end\r
+end /* do */\r
+\r
+exit cmp\r
+\r
+/*\r
+ * Cleans the REXX queue by pulling and forgetting every line.\r
+ * This is needed, at least, when `cmpdef.cmd' starts, because an aborted\r
+ * REXX program might have left some rubbish in.\r
+ */\r
+CleanQueue: procedure\r
+   do while queued() > 0\r
+      parse pull foo\r
+   end\r
+return\r
+\r
index 5907208998f31d1be88268bc8810b1132019cb76..7319f5d83cf8b2f4315971399c6f4b49f1b294f0 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: emx.src,v 1.4 1998/02/01 00:03:44 tom Exp $
+# $Id: emx.src,v 1.6 1999/08/15 01:56:54 tom Exp $
 # This is a reformatted copy of the terminfo source for OS/2 EMX from
 # Juan Jose Garcia Ripoll <worm@arrakis.es>.
 # http://www.arrakis.es/~worm/
@@ -209,6 +209,7 @@ ansi.sys|ANSI.SYS 3.1 and later versions,
 # no_color_video to inform the application that standout(1), underline(2)
 # reverse(4) and invisible(64) don't work with color.
 emx-base|DOS special keys,
+       bw,
        ncv#71,
        bel=^G,
        ka1=\0G,
@@ -295,12 +296,13 @@ emx-base|DOS special keys,
 ansi|ANSI.SYS color,
        blink=\E[5m,
        bold=\E[1m,
+       kmous=\E[M,
        rev=\E[7m,
        rmcup=\E[0m,
        rmso=\E[0m,
        rmul@,
        sgr0=\E[0m,
-       smcup=\E[0;30;47m,
+       smcup=\E[0;37;40m,
        smso=\E[7m,
        smul@,
        use=emx-base,
@@ -309,10 +311,10 @@ window|ANSI.SYS window,
        bold=\E[1;37;47m,
        rev=\E[1;37;47m,
        rmcup=\E[0m,
-       rmso=\E[0;30;47m,
-       rmul=\E[0;30;47m,
-       sgr0=\E[0;30;47m,
-       smcup=\E[0;30;47m,
+       rmso=\E[0;37;40m,
+       rmul=\E[0;37;40m,
+       sgr0=\E[0;37;40m,
+       smcup=\E[0;37;40m,
        smso=\E[1;37;47m,
        smul=\E[1;31;47m,
        use=emx-base,
diff --git a/misc/form.def b/misc/form.def
new file mode 100644 (file)
index 0000000..3fbe2b5
--- /dev/null
@@ -0,0 +1,101 @@
+LIBRARY form5 INITINSTANCE TERMINSTANCE\r
+DESCRIPTION "NCurses-5-0-990828, module form"\r
+CODE LOADONCALL\r
+DATA LOADONCALL NONSHARED MULTIPLE\r
+EXPORTS\r
+       "TYPE_ALNUM"    @2      NONAME\r
+       "TYPE_ALPHA"    @1      NONAME\r
+       "TYPE_ENUM"     @3      NONAME\r
+       "TYPE_INTEGER"  @4      NONAME\r
+       "TYPE_IPV4"     @7      NONAME\r
+       "TYPE_NUMERIC"  @5      NONAME\r
+       "TYPE_REGEXP"   @6      NONAME\r
+       "_nc_Copy_Argument"     @8      NONAME\r
+       "_nc_Copy_Type" @9      NONAME\r
+       "_nc_Default_Field"     @11     NONAME\r
+       "_nc_Default_FieldType" @12     NONAME\r
+       "_nc_Default_Form"      @10     NONAME\r
+       "_nc_First_Active_Field"        @13     NONAME\r
+       "_nc_Free_Argument"     @14     NONAME\r
+       "_nc_Free_Type" @15     NONAME\r
+       "_nc_Internal_Validation"       @16     NONAME\r
+       "_nc_Make_Argument"     @17     NONAME\r
+       "_nc_Position_Form_Cursor"      @18     NONAME\r
+       "_nc_Refresh_Current_Field"     @19     NONAME\r
+       "_nc_Set_Current_Field" @25     NONAME\r
+       "_nc_Set_Form_Page"     @26     NONAME\r
+       "_nc_Synchronize_Attributes"    @27     NONAME\r
+       "_nc_Synchronize_Options"       @28     NONAME\r
+       "current_field" @102    NONAME\r
+       "data_ahead"    @133    NONAME\r
+       "data_behind"   @134    NONAME\r
+       "dup_field"     @31     NONAME\r
+       "dynamic_field_info"    @35     NONAME\r
+       "field_arg"     @56     NONAME\r
+       "field_back"    @53     NONAME\r
+       "field_buffer"  @59     NONAME\r
+       "field_count"   @111    NONAME\r
+       "field_fore"    @52     NONAME\r
+       "field_index"   @115    NONAME\r
+       "field_info"    @34     NONAME\r
+       "field_init"    @107    NONAME\r
+       "field_just"    @41     NONAME\r
+       "field_opts"    @60     NONAME\r
+       "field_opts_off"        @51     NONAME\r
+       "field_opts_on" @50     NONAME\r
+       "field_pad"     @45     NONAME\r
+       "field_status"  @55     NONAME\r
+       "field_term"    @108    NONAME\r
+       "field_type"    @58     NONAME\r
+       "field_userptr" @57     NONAME\r
+       "form_driver"   @126    NONAME\r
+       "form_fields"   @101    NONAME\r
+       "form_init"     @105    NONAME\r
+       "form_opts"     @132    NONAME\r
+       "form_opts_off" @130    NONAME\r
+       "form_opts_on"  @129    NONAME\r
+       "form_page"     @117    NONAME\r
+       "form_request_by_name"  @29     NONAME\r
+       "form_request_name"     @61     NONAME\r
+       "form_sub"      @104    NONAME\r
+       "form_term"     @106    NONAME\r
+       "form_userptr"  @131    NONAME\r
+       "form_win"      @103    NONAME\r
+       "free_field"    @33     NONAME\r
+       "free_fieldtype"        @22     NONAME\r
+       "free_form"     @109    NONAME\r
+       "link_field"    @32     NONAME\r
+       "link_fieldtype"        @21     NONAME\r
+       "move_field"    @37     NONAME\r
+       "new_field"     @30     NONAME\r
+       "new_fieldtype" @20     NONAME\r
+       "new_form"      @100    NONAME\r
+       "new_page"      @54     NONAME\r
+       "pos_form_cursor"       @125    NONAME\r
+       "post_form"     @123    NONAME\r
+       "scale_form"    @118    NONAME\r
+       "set_current_field"     @114    NONAME\r
+       "set_field_back"        @43     NONAME\r
+       "set_field_buffer"      @46     NONAME\r
+       "set_field_fore"        @42     NONAME\r
+       "set_field_init"        @121    NONAME\r
+       "set_field_just"        @40     NONAME\r
+       "set_field_opts"        @49     NONAME\r
+       "set_field_pad" @44     NONAME\r
+       "set_field_status"      @47     NONAME\r
+       "set_field_term"        @122    NONAME\r
+       "set_field_type"        @38     NONAME\r
+       "set_field_userptr"     @48     NONAME\r
+       "set_fieldtype_arg"     @23     NONAME\r
+       "set_fieldtype_choice"  @24     NONAME\r
+       "set_form_fields"       @110    NONAME\r
+       "set_form_init" @119    NONAME\r
+       "set_form_opts" @128    NONAME\r
+       "set_form_page" @116    NONAME\r
+       "set_form_sub"  @113    NONAME\r
+       "set_form_term" @120    NONAME\r
+       "set_form_userptr"      @127    NONAME\r
+       "set_form_win"  @112    NONAME\r
+       "set_max_field" @36     NONAME\r
+       "set_new_page"  @39     NONAME\r
+       "unpost_form"   @124    NONAME\r
diff --git a/misc/form.ref b/misc/form.ref
new file mode 100644 (file)
index 0000000..18e65a6
--- /dev/null
@@ -0,0 +1,106 @@
+LIBRARY FORM2 INITINSTANCE\r
+DESCRIPTION 'NCurses 1.9.9e-1 for OS/2 - forms library'\r
+EXPORTS\r
+;\r
+; SHARED VARIABLES\r
+;\r
+       "TYPE_ALPHA"            @1      ;NONAME\r
+       "TYPE_ALNUM"            @2      ;NONAME\r
+       "TYPE_ENUM"             @3      ;NONAME\r
+       "TYPE_INTEGER"          @4      ;NONAME\r
+       "TYPE_NUMERIC"          @5      ;NONAME\r
+       "TYPE_REGEXP"           @6      ;NONAME\r
+\r
+       "_nc_Default_Form"      @10     ;NONAME\r
+       "_nc_Default_Field"     @11     ;NONAME\r
+\r
+;\r
+; FIELD FUNCTIONS\r
+;\r
+       "new_fieldtype"         @20     ;NONAME\r
+       "link_fieldtype"        @21     ;NONAME\r
+\r
+       "free_fieldtype"        @22     ;NONAME\r
+       "set_fieldtype_arg"     @23     ;NONAME\r
+       "set_fieldtype_choice"  @24     ;NONAME\r
+\r
+       "new_field"             @30     ;NONAME\r
+       "dup_field"             @31     ;NONAME\r
+       "link_field"            @32     ;NONAME\r
+\r
+       "free_field"            @33     ;NONAME\r
+       "field_info"            @34     ;NONAME\r
+       "dynamic_field_info"    @35     ;NONAME\r
+       "set_max_field"         @36     ;NONAME\r
+       "move_field"            @37     ;NONAME\r
+       "set_field_type"        @38     ;NONAME\r
+       "set_new_page"          @39     ;NONAME\r
+       "set_field_just"        @40     ;NONAME\r
+       "field_just"            @41     ;NONAME\r
+       "set_field_fore"        @42     ;NONAME\r
+       "set_field_back"        @43     ;NONAME\r
+       "set_field_pad"         @44     ;NONAME\r
+       "field_pad"             @45     ;NONAME\r
+       "set_field_buffer"      @46     ;NONAME\r
+       "set_field_status"      @47     ;NONAME\r
+       "set_field_userptr"     @48     ;NONAME\r
+       "set_field_opts"        @49     ;NONAME\r
+       "field_opts_on"         @50     ;NONAME\r
+       "field_opts_off"        @51     ;NONAME\r
+\r
+       "field_fore"            @52     ;NONAME\r
+       "field_back"            @53     ;NONAME\r
+\r
+       "new_page"              @54     ;NONAME\r
+       "field_status"          @55     ;NONAME\r
+       "field_arg"             @56     ;NONAME\r
+       "field_userptr"         @57     ;NONAME\r
+       "field_type"            @58     ;NONAME\r
+       "field_buffer"          @59     ;NONAME\r
+       "field_opts"            @60     ;NONAME\r
+\r
+;\r
+; FORM FUNCTIONS\r
+;\r
+       "new_form"              @100    ;NONAME\r
+\r
+       "form_fields"           @101    ;NONAME\r
+       "current_field"         @102    ;NONAME\r
+\r
+       "form_win"              @103    ;NONAME\r
+       "form_sub"              @104    ;NONAME\r
+\r
+       "form_init"             @105    ;NONAME\r
+       "form_term"             @106    ;NONAME\r
+       "field_init"            @107    ;NONAME\r
+       "field_term"            @108    ;NONAME\r
+\r
+       "free_form"             @109    ;NONAME\r
+       "set_form_fields" @110  ;NONAME\r
+       "field_count"           @111    ;NONAME\r
+       "set_form_win"          @112    ;NONAME\r
+       "set_form_sub"          @113    ;NONAME\r
+       "set_current_field"     @114    ;NONAME\r
+       "field_index"           @115    ;NONAME\r
+       "set_form_page"         @116    ;NONAME\r
+       "form_page"             @117    ;NONAME\r
+       "scale_form"            @118    ;NONAME\r
+       "set_form_init"         @119    ;NONAME\r
+       "set_form_term"         @120    ;NONAME\r
+       "set_field_init"        @121    ;NONAME\r
+       "set_field_term"        @122    ;NONAME\r
+       "post_form"             @123    ;NONAME\r
+       "unpost_form"           @124    ;NONAME\r
+       "pos_form_cursor"       @125    ;NONAME\r
+       "form_driver"           @126    ;NONAME\r
+       "set_form_userptr"      @127    ;NONAME\r
+       "set_form_opts"         @128    ;NONAME\r
+       "form_opts_on"          @129    ;NONAME\r
+       "form_opts_off"         @130    ;NONAME\r
+\r
+       "form_userptr"          @131    ;NONAME\r
+\r
+       "form_opts"             @132    ;NONAME\r
+\r
+       "data_ahead"            @133    ;NONAME\r
+       "data_behind"           @134    ;NONAME\r
index 1dd3f491a48c816d7ea454242a5c4dc98ff245dc..5fd49b3ada340228e9350c015060d8b8ce7e5f19 100644 (file)
@@ -8,7 +8,6 @@
           + Why System V Curses?
           + How to Design Extensions
      * Portability and Configuration
-          + If autoconf Fails
      * Documentation Conventions
      * How to Report Bugs
      * A Tour of the Ncurses Library
@@ -36,8 +35,8 @@
    
                            Objective of the Package
                                        
-   The objective of the ncurses package is to provide a freeware API for
-   character-cell terminals and terminal emulators with the following
+   The objective of the ncurses package is to provide a free software API
+   for character-cell terminals and terminal emulators with the following
    characteristics:
    
      * Source-compatible with historical curses implementations
@@ -105,33 +104,6 @@ How to Design Extensions
    specification files (configure.in and aclocal.m4) to set up a new
    feature macro, which you then use to condition your code.
    
-If autoconf Fails
-
-   The 'configure' script usually gets your system environment right
-   automatically. Here are some -D options you might need to compile with
-   if it fails:
-   
-   -DHAVE_UNISTD_H
-          if <unistd.h> is present
-          
-   -DHAVE_SIGACTION
-          if the sigaction function is present
-          
-   -DHAVE_USLEEP
-          if the usleep function is present
-          
-   -DSVR4_ACTION
-          if (e.g., svr4) you need _POSIX_SOURCE to have sigaction
-          
-   -DHAVE_TERMIOS_H
-          if you have <termios.h>
-          
-   -DHAVE_TERMIO_H
-          if you have <termio.h>; otherwise it uses <sgtty.h>
-          
-   -DBROKEN_TIOCGETWINSZ
-          on SVR4 and HPUX, the get window size ioctl is broken.
-          
                            Documentation Conventions
                                        
    There are three kinds of documentation associated with this package.
@@ -163,7 +135,7 @@ If autoconf Fails
                               How to Report Bugs
                                        
    The reporting address for bugs is bug-ncurses@gnu.org. This is a
-   majordomo list; to join, write to ncurses-request@gnu.org with a
+   majordomo list; to join, write to bug-ncurses-request@gnu.org with a
    message containing the line:
              subscribe <name>@<host.domain>
 
@@ -274,51 +246,71 @@ Library Overview
    interfaces to a small set of basic functions and data structures used
    to manipulate the virtual screen (in particular, none of this code
    does any I/O except through calls to more fundamental modules
-   described below). The files lib_addch.c, lib_bkgnd.c, lib_box.c,
-   lib_clear.c, lib_clrbot.c, lib_clreol.c, lib_data.c, lib_delch.c,
-   lib_delwin.c, lib_erase.c, lib_getstr.c, lib_inchstr.c, lib_insch.c,
-   lib_insdel.c, lib_insstr.c, lib_instr.c, lib_isendwin.c,
-   lib_keyname.c, lib_move.c, lib_mvwin.c, lib_overlay.c, lib_pad.c,
-   lib_printw.c, lib_scanw.c, lib_screen.c, lib_scroll.c, lib_scrreg.c,
-   lib_set_term.c, lib_slk.c, lib_touch.c, lib_unctrl.c, and lib_window.c
+   described below). The files
+   
+     lib_addch.c lib_bkgd.c lib_box.c lib_chgat.c lib_clear.c
+     lib_clearok.c lib_clrbot.c lib_clreol.c lib_colorset.c lib_data.c
+     lib_delch.c lib_delwin.c lib_echo.c lib_erase.c lib_gen.c
+     lib_getstr.c lib_hline.c lib_immedok.c lib_inchstr.c lib_insch.c
+     lib_insdel.c lib_insstr.c lib_instr.c lib_isendwin.c lib_keyname.c
+     lib_leaveok.c lib_move.c lib_mvwin.c lib_overlay.c lib_pad.c
+     lib_printw.c lib_redrawln.c lib_scanw.c lib_screen.c lib_scroll.c
+     lib_scrollok.c lib_scrreg.c lib_set_term.c lib_slk.c
+     lib_slkatr_set.c lib_slkatrof.c lib_slkatron.c lib_slkatrset.c
+     lib_slkattr.c lib_slkclear.c lib_slkcolor.c lib_slkinit.c
+     lib_slklab.c lib_slkrefr.c lib_slkset.c lib_slktouch.c lib_touch.c
+     lib_unctrl.c lib_vline.c lib_wattroff.c lib_wattron.c lib_window.c
+     
    are all in this category. They are very unlikely to need change,
    barring bugs or some fundamental reorganization in the underlying data
    structures.
    
-   The lib_trace.c, lib_traceatr.c, and lib_tracechr.c file are used only
-   for debugging support. It is rather unlikely you will ever need to
-   change these, unless you want to introduce a new debug trace level for
-   some reasoon.
+   These files are used only for debugging support:
+   
+     lib_trace.c lib_traceatr.c lib_tracebits.c lib_tracechr.c
+     lib_tracedmp.c lib_tracemse.c trace_buf.c
+     
+   It is rather unlikely you will ever need to change these, unless you
+   want to introduce a new debug trace level for some reasoon.
    
    There is another group of files that do direct I/O via tputs(),
    computations on the terminal capabilities, or queries to the OS
    environment, but nevertheless have only fairly low complexity. These
-   include: lib_acs.c, lib_beep.c, lib_color.c, lib_endwin.c,
-   lib_initscr.c, lib_longname.c, lib_newterm.c, lib_options.c,
-   lib_termcap.c, lib_ti.c, lib_tparm.c, lib_tputs.c, lib_vidattr.c, and
-   read_entry.c. These are likely to need revision only if ncurses is
-   being ported to an environment without an underlying terminfo
-   capability representation.
-   
-   The files lib_kernel.c, lib_baudrate.c, lib_raw.c, lib_tstp.c, and
-   lib_twait.c have serious hooks into the tty driver and signal
-   facilities. If you run into porting snafus moving the package to
-   another UNIX, the problem is likely to be in one of these files. The
-   file lib_print.c uses sleep(2) and also falls in this category.
-   
-   Almost all of the real work is done in the files hashmap.c,
-   hardscroll.c, lib_addch.c, lib_doupdate.c, lib_mvcur.c, lib_getch.c,
-   lib_mouse.c, lib_refresh.c, and lib_setup.c. Most of the algorithmic
-   complexity in the library lives in these files. If there is a real bug
-   in ncurses itself, it's probably here. We'll tour some of these files
-   in detail below (see The Engine Room).
+   include:
+   
+     lib_acs.c lib_beep.c lib_color.c lib_endwin.c lib_initscr.c
+     lib_longname.c lib_newterm.c lib_options.c lib_termcap.c lib_ti.c
+     lib_tparm.c lib_tputs.c lib_vidattr.c read_entry.c.
+     
+   They are likely to need revision only if ncurses is being ported to an
+   environment without an underlying terminfo capability representation.
+   
+   These files have serious hooks into the tty driver and signal
+   facilities:
+   
+     lib_kernel.c lib_baudrate.c lib_raw.c lib_tstp.c lib_twait.c
+     
+   If you run into porting snafus moving the package to another UNIX, the
+   problem is likely to be in one of these files. The file lib_print.c
+   uses sleep(2) and also falls in this category.
+   
+   Almost all of the real work is done in the files
+   
+     hardscroll.c hashmap.c lib_addch.c lib_doupdate.c lib_getch.c
+     lib_mouse.c lib_mvcur.c lib_refresh.c lib_setup.c lib_vidattr.c
+     
+   Most of the algorithmic complexity in the library lives in these
+   files. If there is a real bug in ncurses itself, it's probably here.
+   We'll tour some of these files in detail below (see The Engine Room).
    
    Finally, there is a group of files that is actually most of the
    terminfo compiler. The reason this code lives in the ncurses library
    is to support fallback to /etc/termcap. These files include
-   alloc_entry.c, captoinfo.c, comp_captab.c, comp_error.c, comp_hash.c,
-   comp_parse.c, comp_scan.c, and parse_entry.c, read_termcap.c, and
-   write_entry.c. We'll discuss these in the compiler tour.
+   
+     alloc_entry.c captoinfo.c comp_captab.c comp_error.c comp_hash.c
+     comp_parse.c comp_scan.c parse_entry.c read_termcap.c write_entry.c
+     
+   We'll discuss these in the compiler tour.
    
 The Engine Room
 
@@ -603,23 +595,24 @@ Source-Form Translation
    UNIX routines such as signal(2) or the stdio library. Thus, they
    should not need to be modified for single-terminal ports.
    
-   lib_addch.c lib_addstr.c lib_bkgd.c lib_box.c lib_clear.c lib_clrbot.c
-   lib_clreol.c lib_delch.c lib_delwin.c lib_erase.c lib_inchstr.c
-   lib_insch.c lib_insdel.c lib_insstr.c lib_keyname.c lib_move.c
-   lib_mvwin.c lib_newwin.c lib_overlay.c lib_pad.c lib_printw.c
-   lib_refresh.c lib_scanw.c lib_scroll.c lib_scrreg.c lib_set_term.c
-   lib_touch.c lib_tparm.c lib_tputs.c lib_unctrl.c lib_window.c panel.c
-   
+     lib_addch.c lib_addstr.c lib_bkgd.c lib_box.c lib_clear.c
+     lib_clrbot.c lib_clreol.c lib_delch.c lib_delwin.c lib_erase.c
+     lib_inchstr.c lib_insch.c lib_insdel.c lib_insstr.c lib_keyname.c
+     lib_move.c lib_mvwin.c lib_newwin.c lib_overlay.c lib_pad.c
+     lib_printw.c lib_refresh.c lib_scanw.c lib_scroll.c lib_scrreg.c
+     lib_set_term.c lib_touch.c lib_tparm.c lib_tputs.c lib_unctrl.c
+     lib_window.c panel.c
+     
    This module is pure curses, but calls outstr():
    
-   lib_getstr.c
-   
+     lib_getstr.c
+     
    These modules are pure curses, except that they use tputs() and
    putp():
    
-   lib_beep.c lib_endwin.c lib_color.c lib_options.c lib_slk.c
-   lib_vidattr.c
-   
+     lib_beep.c lib_color.c lib_endwin.c lib_options.c lib_slk.c
+     lib_vidattr.c
+     
    This modules assist in POSIX emulation on non-POSIX systems:
    
    sigaction.c
@@ -628,10 +621,10 @@ Source-Form Translation
    The following source files will not be needed for a
    single-terminal-type port.
    
-   captoinfo.c clear.c comp_captab.c comp_error.c comp_hash.c comp_main.c
-   comp_parse.c comp_scan.c alloc_entry.c dump_entry.c parse_entry.c
-   read_entry.c write_entry.c infocmp.c tput.c
-   
+     alloc_entry.c captoinfo.c clear.c comp_captab.c comp_error.c
+     comp_hash.c comp_main.c comp_parse.c comp_scan.c dump_entry.c
+     infocmp.c parse_entry.c read_entry.c tput.c write_entry.c
+     
    The following modules will use open()/read()/write()/close()/lseek()
    on files, but no other OS calls.
    
@@ -646,74 +639,51 @@ Source-Form Translation
    The following modules are `pure curses' but contain assumptions
    inappropriate for a memory-mapped port.
    
-lib_longname.c  -- assumes there may be multiple terminals
-        longname()              -- return long name of terminal
-lib_acs.c       -- assumes acs_map as a double indirection
-        init_acs()              -- initialize acs map
-lib_mvcur.c     -- assumes cursor moves have variable cost
-        mvcur_init()            -- initialize
-        mvcur()                 -- do physical cursor move
-        mvcur_wrap()            -- wrap
-        scrolln()               -- do physical scrolling
-lib_termcap.c   -- assumes there may be multiple terminals
-        tgetent()               -- load entry
-        tgetflag()              -- get boolean capability
-        tgetnum()               -- get numeric capability
-        tgetstr()               -- get string capability
-lib_ti.c        -- assumes there may be multiple terminals
-        tigetent()              -- load entry
-        tigetflag()             -- get boolean capability
-        tigetnum()              -- get numeric capability
-        tigetstr()              -- get string capability
-
-The following modules use UNIX-specific calls:
-
-lib_doupdate.c  -- input checking
-        doupdate()              -- repaint real screen to match virtual
-        _nc_outch()             -- put out a single character
-lib_getch.c     -- read()
-        wgetch()                -- get single character
-        wungetch()              -- push back single character
-lib_initscr.c   -- getenv()
-        initscr()               -- initialize curses functions
-lib_newterm.c
-        newterm()               -- set up new terminal screen
-lib_baudrate.c
-        baudrate()              -- return the baudrate
-lib_kernel.c    -- various tty-manipulation and system calls
-        reset_prog_mode()       -- reset ccurses-raw mode
-        reset_shell_mode()      -- reset cooked mode
-        erasechar()             -- return the erase char
-        killchar()              -- return the kill character
-        flushinp()              -- flush pending input
-        savetty()               -- save tty state
-        resetty()               -- reset tty to state at last savetty()
-lib_raw.c       -- various tty-manipulation calls
-        raw()
-        echo()
-        nl()
-        qiflush()
-        cbreak()
-        noraw()
-        noecho()
-        nonl()
-        noqiflush()
-        nocbreak()
-lib_setup.c     -- various tty-manipulation calls
-        use_env()
-        setupterm()
-lib_restart.c   -- various tty-manipulation calls
-        def_shell_mode()
-        def_prog_mode()
-        set_curterm()
-        del_curterm()
-lib_tstp.c      -- signal-manipulation calls
-        _nc_signal_handler()    -- enable/disable window-mode signal catching
-lib_twait.c     -- gettimeofday(), select().
-        usleep()                -- microsecond sleep
-        _nc_timed_wait()        -- timed wait for input
-
-   The package kernel could be made smaller.
+   lib_longname.c
+          assumes there may be multiple terminals
+          
+   lib_acs.c
+          assumes acs_map as a double indirection
+          
+   lib_mvcur.c
+          assumes cursor moves have variable cost
+          
+   lib_termcap.c
+          assumes there may be multiple terminals
+          
+   lib_ti.c
+          assumes there may be multiple terminals
+          
+   The following modules use UNIX-specific calls:
+   
+   lib_doupdate.c
+          input checking
+          
+   lib_getch.c
+          read()
+          
+   lib_initscr.c
+          getenv()
+          
+   lib_newterm.c
+   lib_baudrate.c
+   lib_kernel.c
+          various tty-manipulation and system calls
+          
+   lib_raw.c
+          various tty-manipulation calls
+          
+   lib_setup.c
+          various tty-manipulation calls
+          
+   lib_restart.c
+          various tty-manipulation calls
+          
+   lib_tstp.c
+          signal-manipulation calls
+          
+   lib_twait.c
+          gettimeofday(), select().
      _________________________________________________________________
    
    
index 9cd317b96ba3117ea092974ded658c011d949b0b..417399a68365d12fb3401fe668591ca1adcdfad1 100644 (file)
@@ -1,13 +1,13 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: hackguide.html,v 1.17 1998/02/15 01:32:35 tom Exp $
+  $Id: hackguide.html,v 1.23 1999/01/17 00:15:48 tom Exp $
 -->
 <HTML>
 <HEAD>
 <TITLE>A Hacker's Guide to Ncurses Internals</TITLE>
-<link rev="made" href="mailto:esr@snark.thyrsus.com">
+<link rev="made" href="mailto:bugs-ncurses@gnu.org">
 <!--
-This document is self-contained, *except* that there is one relative link to 
+This document is self-contained, *except* that there is one relative link to
 the ncurses-intro.html document, expected to be in the same directory with
 this one.
 -->
@@ -26,7 +26,6 @@ this one.
 <LI><A HREF="#extensions">How to Design Extensions</A>
 </UL>
 <LI><A HREF="#portability">Portability and Configuration</A><UL>
-<LI><A HREF="#fooup">If autoconf Fails</A>
 </UL>
 <LI><A HREF="#documentation">Documentation Conventions</A>
 <P>
@@ -65,8 +64,8 @@ package. <P>
 
 <H1><A NAME="objective">Objective of the Package</A></H1>
 
-The objective of the <STRONG>ncurses</STRONG> package is to provide a freeware API for
-character-cell terminals and terminal emulators with the following 
+The objective of the <STRONG>ncurses</STRONG> package is to provide a free software API for
+character-cell terminals and terminal emulators with the following
 characteristics: <P>
 
 <UL>
@@ -74,7 +73,7 @@ characteristics: <P>
      the original BSD curses and System V curses.
 <P>
 <LI>Conformant with the XSI Curses standard issued as part of XPG4 by
-     X/Open. 
+     X/Open.
 <P>
 <LI>High-quality -- stable and reliable code, wide portability, good
      packaging, superior documentation.
@@ -136,33 +135,11 @@ not available under POSIX/ANSI, provided only that:  <P>
      in the <STRONG>ncurses</STRONG> API between platforms.
 </UL>
 
-We use GNU <CODE>autoconf(1)</CODE> as a tool to deal with portability issues.  
+We use GNU <CODE>autoconf(1)</CODE> as a tool to deal with portability issues.
 The right way to leverage an OS-specific feature is to modify the autoconf
 specification files (configure.in and aclocal.m4) to set up a new feature
 macro, which you then use to condition your code. <P>
 
-<H2><A NAME="fooup">If autoconf Fails</A></H2>
-
-The 'configure' script usually gets your system environment right
-automatically.  Here are some -D options you might need to compile
-with if it fails: <P>
-<DL>
-<DT>-DHAVE_UNISTD_H
-<DD>if &lt;unistd.h&gt; is present
-<DT>-DHAVE_SIGACTION
-<DD>if the sigaction function is present 
-<DT>-DHAVE_USLEEP
-<DD>if the usleep function is present
-<DT>-DSVR4_ACTION
-<DD>if (e.g., svr4) you need _POSIX_SOURCE to have sigaction
-<DT>-DHAVE_TERMIOS_H
-<DD>if you have &lt;termios.h&gt;
-<DT>-DHAVE_TERMIO_H
-<DD>if you have &lt;termio.h&gt;; otherwise it uses &lt;sgtty.h&gt;
-<DT>-DBROKEN_TIOCGETWINSZ
-<DD>on SVR4 and HPUX, the get window size ioctl is broken.
-</DL>
-
 <H1><A NAME="documentation">Documentation Conventions</A></H1>
 
 There are three kinds of documentation associated with this package.  Each
@@ -193,7 +170,7 @@ The reason for choosing HTML is that it's (a) well-adapted for on-line
 browsing through viewers that are everywhere; (b) more easily readable
 as plain text than most other mark-ups, if you don't have a viewer; and (c)
 carries enough information that you can generate a nice-looking printed
-version from it.  Also, of course, it make exporting things like the 
+version from it.  Also, of course, it make exporting things like the
 announcement document to WWW pretty trivial.<P>
 
 <H1><A NAME="bugtrack">How to Report Bugs</A></H1>
@@ -201,7 +178,7 @@ announcement document to WWW pretty trivial.<P>
 The <A NAME="bugreport">reporting address for bugs</A> is
 <A HREF="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</A>.
 This is a majordomo list; to join, write
-to <CODE>ncurses-request@gnu.org</CODE> with a message containing the line:
+to <CODE>bug-ncurses-request@gnu.org</CODE> with a message containing the line:
 <PRE>
              subscribe &lt;name&gt;@&lt;host.domain&gt;
 </PRE>
@@ -210,7 +187,7 @@ The <CODE>ncurses</CODE> code is maintained by a small group of
 volunteers.  While we try our best to fix bugs promptly, we simply
 don't have a lot of hours to spend on elementary hand-holding.  We rely
 on intelligent cooperation from our users.  If you think you have
-found a bug in <CODE>ncurses</CODE>, there are some steps you can take 
+found a bug in <CODE>ncurses</CODE>, there are some steps you can take
 before contacting us that will help get the bug fixed quickly. <P>
 
 In order to use our bug-fixing time efficiently, we put people who
@@ -241,7 +218,7 @@ problem reproduces on other terminal types.  Usually you'll have both
 a console type and xterm available; please tell us whether or not your
 bug reproduces on both. <P>
 
-If you have xterm available, it is also good to collect xterm reports for 
+If you have xterm available, it is also good to collect xterm reports for
 different window sizes.  This is especially true if you normally use an
 unusual xterm window size -- a surprising number of the bugs we've seen
 are either triggered or masked by these.  <P>
@@ -332,62 +309,160 @@ Most of the library is superstructure -- fairly trivial convenience
 interfaces to a small set of basic functions and data structures used
 to manipulate the virtual screen (in particular, none of this code
 does any I/O except through calls to more fundamental modules
-described below).  The files <CODE>lib_addch.c</CODE>,
-<CODE>lib_bkgnd.c</CODE>, <CODE>lib_box.c</CODE>, <CODE>lib_clear.c</CODE>,
-<CODE>lib_clrbot.c</CODE>, <CODE>lib_clreol.c</CODE>, <CODE>lib_data.c</CODE>,
-<CODE>lib_delch.c</CODE>, <CODE>lib_delwin.c</CODE>, <CODE>lib_erase.c</CODE>,
-<CODE>lib_getstr.c</CODE>, <CODE>lib_inchstr.c</CODE>, <CODE>lib_insch.c</CODE>,
-<CODE>lib_insdel.c</CODE>, <CODE>lib_insstr.c</CODE>, <CODE>lib_instr.c</CODE>,
-<CODE>lib_isendwin.c</CODE>, <CODE>lib_keyname.c</CODE>, <CODE>lib_move.c</CODE>,
-<CODE>lib_mvwin.c</CODE>, <CODE>lib_overlay.c</CODE>, <CODE>lib_pad.c</CODE>,
-<CODE>lib_printw.c</CODE>, <CODE>lib_scanw.c</CODE>, <CODE>lib_screen.c</CODE>,
-<CODE>lib_scroll.c</CODE>, <CODE>lib_scrreg.c</CODE>, <CODE>lib_set_term.c</CODE>,
-<CODE>lib_slk.c</CODE>, <CODE>lib_touch.c</CODE>, <CODE>lib_unctrl.c</CODE>, and
-<CODE>lib_window.c</CODE> are all in this category.  They are very
+described below).  The files
+<blockquote>
+<CODE>
+lib_addch.c
+lib_bkgd.c
+lib_box.c
+lib_chgat.c
+lib_clear.c
+lib_clearok.c
+lib_clrbot.c
+lib_clreol.c
+lib_colorset.c
+lib_data.c
+lib_delch.c
+lib_delwin.c
+lib_echo.c
+lib_erase.c
+lib_gen.c
+lib_getstr.c
+lib_hline.c
+lib_immedok.c
+lib_inchstr.c
+lib_insch.c
+lib_insdel.c
+lib_insstr.c
+lib_instr.c
+lib_isendwin.c
+lib_keyname.c
+lib_leaveok.c
+lib_move.c
+lib_mvwin.c
+lib_overlay.c
+lib_pad.c
+lib_printw.c
+lib_redrawln.c
+lib_scanw.c
+lib_screen.c
+lib_scroll.c
+lib_scrollok.c
+lib_scrreg.c
+lib_set_term.c
+lib_slk.c
+lib_slkatr_set.c
+lib_slkatrof.c
+lib_slkatron.c
+lib_slkatrset.c
+lib_slkattr.c
+lib_slkclear.c
+lib_slkcolor.c
+lib_slkinit.c
+lib_slklab.c
+lib_slkrefr.c
+lib_slkset.c
+lib_slktouch.c
+lib_touch.c
+lib_unctrl.c
+lib_vline.c
+lib_wattroff.c
+lib_wattron.c
+lib_window.c
+</CODE>
+</blockquote>
+are all in this category.  They are very
 unlikely to need change, barring bugs or some fundamental
 reorganization in the underlying data structures. <P>
 
-The <CODE>lib_trace.c</CODE>, <CODE>lib_traceatr.c</CODE>, and
-<CODE>lib_tracechr.c</CODE> file are used only for debugging support. 
+These files are used only for debugging support:
+<blockquote><code>
+lib_trace.c
+lib_traceatr.c
+lib_tracebits.c
+lib_tracechr.c
+lib_tracedmp.c
+lib_tracemse.c
+trace_buf.c
+</blockquote></code>
 It is rather unlikely you will ever need to change these, unless
 you want to introduce a new debug trace level for some reasoon.<P>
 
 There is another group of files that do direct I/O via <EM>tputs()</EM>,
 computations on the terminal capabilities, or queries to the OS
 environment, but nevertheless have only fairly low complexity.  These
-include: <CODE>lib_acs.c</CODE>, <CODE>lib_beep.c</CODE>,
-<CODE>lib_color.c</CODE>, <CODE>lib_endwin.c</CODE>, <CODE>lib_initscr.c</CODE>,
-<CODE>lib_longname.c</CODE>, <CODE>lib_newterm.c</CODE>,
-<CODE>lib_options.c</CODE>, <CODE>lib_termcap.c</CODE>, <CODE>lib_ti.c</CODE>,
-<CODE>lib_tparm.c</CODE>, <CODE>lib_tputs.c</CODE>, <CODE>lib_vidattr.c</CODE>,
-and <CODE>read_entry.c</CODE>.  These are likely to need revision only if
+include:
+<blockquote><code>
+lib_acs.c
+lib_beep.c
+lib_color.c
+lib_endwin.c
+lib_initscr.c
+lib_longname.c
+lib_newterm.c
+lib_options.c
+lib_termcap.c
+lib_ti.c
+lib_tparm.c
+lib_tputs.c
+lib_vidattr.c
+read_entry.c.
+</blockquote></code>
+They are likely to need revision only if
 ncurses is being ported to an environment without an underlying
 terminfo capability representation. <P>
 
-The files <CODE>lib_kernel.c</CODE>, <CODE>lib_baudrate.c</CODE>, <CODE>lib_raw.c</CODE>,
-<CODE>lib_tstp.c</CODE>, and <CODE>lib_twait.c</CODE> have serious hooks into
-the tty driver and signal facilities.  If you run into porting snafus
+These files
+have serious hooks into
+the tty driver and signal facilities:
+<blockquote><code>
+lib_kernel.c
+lib_baudrate.c
+lib_raw.c
+lib_tstp.c
+lib_twait.c
+</blockquote></code>
+If you run into porting snafus
 moving the package to another UNIX, the problem is likely to be in one
-of these files.  The file <CODE>lib_print.c</CODE> uses sleep(2) and also
+of these files.
+The file <CODE>lib_print.c</CODE> uses sleep(2) and also
 falls in this category.<P>
 
-Almost all of the real work is done in the files 
-<CODE>hashmap.c</CODE>, <CODE>hardscroll.c</CODE>,
-<CODE>lib_addch.c</CODE>, <CODE>lib_doupdate.c</CODE>, <CODE>lib_mvcur.c</CODE>,
-<CODE>lib_getch.c</CODE>, <CODE>lib_mouse.c</CODE>, <CODE>lib_refresh.c</CODE>,
-and <CODE>lib_setup.c</CODE>.  Most of the algorithmic complexity in the
-library lives in these files.  If there is a real bug in <STRONG>ncurses</STRONG>
-itself, it's probably here.  We'll tour some of these files in detail
+Almost all of the real work is done in the files
+<blockquote><code>
+hardscroll.c
+hashmap.c
+lib_addch.c
+lib_doupdate.c
+lib_getch.c
+lib_mouse.c
+lib_mvcur.c
+lib_refresh.c
+lib_setup.c
+lib_vidattr.c
+</blockquote></code>
+Most of the algorithmic complexity in the
+library lives in these files.
+If there is a real bug in <STRONG>ncurses</STRONG> itself, it's probably here.
+We'll tour some of these files in detail
 below (see <A HREF="#engine">The Engine Room</A>). <P>
 
 Finally, there is a group of files that is actually most of the
 terminfo compiler.  The reason this code lives in the <STRONG>ncurses</STRONG>
 library is to support fallback to /etc/termcap.  These files include
-<CODE>alloc_entry.c</CODE>, <CODE>captoinfo.c</CODE>, <CODE>comp_captab.c</CODE>,
-<CODE>comp_error.c</CODE>, <CODE>comp_hash.c</CODE>, <CODE>comp_parse.c</CODE>,
-<CODE>comp_scan.c</CODE>, and <CODE>parse_entry.c</CODE>,
-<CODE>read_termcap.c</CODE>, and <CODE>write_entry.c</CODE>.  We'll discuss these
-in the compiler tour. <P>
+<blockquote><code>
+alloc_entry.c
+captoinfo.c
+comp_captab.c
+comp_error.c
+comp_hash.c
+comp_parse.c
+comp_scan.c
+parse_entry.c
+read_termcap.c
+write_entry.c
+</blockquote></code>
+We'll discuss these in the compiler tour. <P>
 
 <H2><A NAME="engine">The Engine Room</A></H2>
 
@@ -456,11 +531,11 @@ events) into a gesture (a high-level or composite event). <P>
 <H3><A NAME="output">Output and Screen Updating</A></H3>
 
 With the single exception of character echoes during a <CODE>wgetnstr()</CODE>
-call (which simulates cooked-mode line editing in an ncurses window), 
+call (which simulates cooked-mode line editing in an ncurses window),
 the library normally does all its output at refresh time. <P>
 
 The main job is to go from the current state of the screen (as represented
-in the <CODE>curscr</CODE> window structure) to the desired new state (as 
+in the <CODE>curscr</CODE> window structure) to the desired new state (as
 represented in the <CODE>newscr</CODE> window structure), while doing as
 little I/O as possible. <P>
 
@@ -483,7 +558,7 @@ insertion, and deletion operations to make the indices match.  It calls
 Then <CODE>lib_doupdate.c</CODE> goes to work.  Its job is to do line-by-line
 transformations of <CODE>curscr</CODE> lines to <CODE>newscr</CODE> lines.  Its main
 tool is the routine <CODE>mvcur()</CODE> in <CODE>lib_mvcur.c</CODE>.  This routine
-does cursor-movement optimization, attempting to get from given screen 
+does cursor-movement optimization, attempting to get from given screen
 location A to given location B in the fewest output characters posible. <P>
 
 If you want to work on screen optimizations, you should use the fact
@@ -538,8 +613,8 @@ and controls interpretation of the value. <P>
 
 One possibly interesting aspect of the implementation is the way the
 compiler tables are initialized.  All the tables are generated by various
-awk/sed/sh scripts from a master table <CODE>include/Caps</CODE>; these 
-scripts actually write C initializers which are linked to the compiler. 
+awk/sed/sh scripts from a master table <CODE>include/Caps</CODE>; these
+scripts actually write C initializers which are linked to the compiler.
 Furthermore, the hash table is generated in the same way, so it doesn't
 have to be generated at compiler startup time (another benefit of this
 organization is that the hash table can be in shareable text space). <P>
@@ -553,7 +628,7 @@ Translation</A>. <P>
 
 The background problem that makes <STRONG>tic</STRONG> tricky isn't the capability
 translation itself, it's the resolution of <STRONG>use</STRONG> capabilities.  Older
-versions would not handle forward <STRONG>use</STRONG> references for this reason 
+versions would not handle forward <STRONG>use</STRONG> references for this reason
 (that is, a using terminal always had to follow its use target in the
 source file).  By doing this, they got away with a simple implementation
 tactic; compile everything as it blows by, then resolve uses from compiled
@@ -564,7 +639,7 @@ compilation process has to be embeddable in the <STRONG>ncurses</STRONG> library
 so that it can be called by the startup code to translate termcap
 entries on the fly.  The embedded version can't go promiscuously writing
 everything it translates out to disk -- for one thing, it will typically
-be running with non-root permissions. <P> 
+be running with non-root permissions. <P>
 
 So our <STRONG>tic</STRONG> is designed to parse an entire terminfo file into a
 doubly-linked circular list of entry structures in-core, and then do
@@ -614,7 +689,7 @@ format. <P>
 
 The <CODE>include/Caps</CODE> file has a header comment describing ways you
 can specify source translations for nonstandard capabilities just by
-altering the master table.  It's possible to set up capability aliasing 
+altering the master table.  It's possible to set up capability aliasing
 or tell the compiler to plain ignore a given capability without writing
 any C code at all. <P>
 
@@ -633,7 +708,7 @@ function passed in to <CODE>dump_entry()</CODE> to control which
 capabilities are dumped.  This is necessary in order to handle both
 the ordinary De-compilation case and entry difference reporting. <P>
 
-The <STRONG>tput</STRONG> and <STRONG>clear</STRONG> utilities just do an entry load 
+The <STRONG>tput</STRONG> and <STRONG>clear</STRONG> utilities just do an entry load
 followed by a <CODE>tputs()</CODE> of a selected capability. <P>
 
 <H1><A NAME="style">Style Tips for Developers</A></H1>
@@ -678,7 +753,7 @@ call any other UNIX routines such as signal(2) or the stdio library.
 Thus, they should not need to be modified for single-terminal
 ports. <P>
 
-<CODE>
+<blockquote><code>
 lib_addch.c
 lib_addstr.c
 lib_bkgd.c
@@ -710,28 +785,28 @@ lib_tparm.c
 lib_tputs.c
 lib_unctrl.c
 lib_window.c
-panel.c 
-</CODE>
+panel.c
+</blockquote></code>
 <P>
 
 This module is pure curses, but calls outstr(): <P>
 
-<CODE>
+<blockquote><code>
 lib_getstr.c
-</CODE>
+</blockquote></code>
 <P>
 
 These modules are pure curses, except that they use <CODE>tputs()</CODE>
 and <CODE>putp()</CODE>: <P>
 
-<CODE>
+<blockquote><code>
 lib_beep.c
-lib_endwin.c
 lib_color.c
+lib_endwin.c
 lib_options.c
 lib_slk.c
 lib_vidattr.c
-</CODE>
+</blockquote></code>
 <P>
 
 This modules assist in POSIX emulation on non-POSIX systems: <P>
@@ -743,7 +818,8 @@ This modules assist in POSIX emulation on non-POSIX systems: <P>
 The following source files will not be needed for a
 single-terminal-type port. <P>
 
-<CODE>
+<blockquote><code>
+alloc_entry.c
 captoinfo.c
 clear.c
 comp_captab.c
@@ -752,24 +828,23 @@ comp_hash.c
 comp_main.c
 comp_parse.c
 comp_scan.c
-alloc_entry.c
 dump_entry.c
+infocmp.c
 parse_entry.c
 read_entry.c
-write_entry.c
-infocmp.c
 tput.c
-</CODE>
+write_entry.c
+</blockquote></code>
 <P>
 
 The following modules will use open()/read()/write()/close()/lseek() on files,
 but no other OS calls. <P>
 
 <DL>
-<DT> lib_screen.c
-<DD> used to read/write screen dumps
-<DT> lib_trace.c
-<DD> used to write trace data to the logfile
+<DT>lib_screen.c
+<DD>used to read/write screen dumps
+<DT>lib_trace.c
+<DD>used to write trace data to the logfile
 </DL>
 
 Modules that would have to be modified for a port start here: <P>
@@ -777,76 +852,29 @@ Modules that would have to be modified for a port start here: <P>
 The following modules are `pure curses' but contain assumptions inappropriate
 for a memory-mapped port. <P>
 
-<PRE>
-lib_longname.c -- assumes there may be multiple terminals
-       longname()              -- return long name of terminal
-lib_acs.c      -- assumes acs_map as a double indirection
-       init_acs()              -- initialize acs map
-lib_mvcur.c    -- assumes cursor moves have variable cost
-       mvcur_init()            -- initialize
-       mvcur()                 -- do physical cursor move
-       mvcur_wrap()            -- wrap
-       scrolln()               -- do physical scrolling
-lib_termcap.c  -- assumes there may be multiple terminals
-       tgetent()               -- load entry
-       tgetflag()              -- get boolean capability
-       tgetnum()               -- get numeric capability
-       tgetstr()               -- get string capability
-lib_ti.c       -- assumes there may be multiple terminals
-       tigetent()              -- load entry
-       tigetflag()             -- get boolean capability
-       tigetnum()              -- get numeric capability
-       tigetstr()              -- get string capability
+<dl>
+<dt>lib_longname.c<dd>assumes there may be multiple terminals
+<dt>lib_acs.c<dd>assumes acs_map as a double indirection
+<dt>lib_mvcur.c<dd>assumes cursor moves have variable cost
+<dt>lib_termcap.c<dd>assumes there may be multiple terminals
+<dt>lib_ti.c<dd>assumes there may be multiple terminals
+</dl>
 
 The following modules use UNIX-specific calls:
 
-lib_doupdate.c -- input checking
-       doupdate()              -- repaint real screen to match virtual
-       _nc_outch()             -- put out a single character
-lib_getch.c    -- read()
-       wgetch()                -- get single character
-       wungetch()              -- push back single character
-lib_initscr.c  -- getenv()
-       initscr()               -- initialize curses functions
-lib_newterm.c
-       newterm()               -- set up new terminal screen
-lib_baudrate.c
-       baudrate()              -- return the baudrate
-lib_kernel.c   -- various tty-manipulation and system calls
-       reset_prog_mode()       -- reset ccurses-raw mode
-       reset_shell_mode()      -- reset cooked mode
-       erasechar()             -- return the erase char
-       killchar()              -- return the kill character
-       flushinp()              -- flush pending input
-       savetty()               -- save tty state
-       resetty()               -- reset tty to state at last savetty() 
-lib_raw.c      -- various tty-manipulation calls
-       raw()
-       echo()
-       nl()
-       qiflush()
-       cbreak()
-       noraw()
-       noecho()
-       nonl()
-       noqiflush()
-       nocbreak()
-lib_setup.c    -- various tty-manipulation calls
-       use_env()
-       setupterm()
-lib_restart.c  -- various tty-manipulation calls
-       def_shell_mode()
-       def_prog_mode()
-       set_curterm()
-       del_curterm()
-lib_tstp.c     -- signal-manipulation calls
-       _nc_signal_handler()    -- enable/disable window-mode signal catching
-lib_twait.c    -- gettimeofday(), select().
-       usleep()                -- microsecond sleep
-       _nc_timed_wait()        -- timed wait for input
-</PRE>
-
-The package kernel could be made smaller. <P>
+<dl>
+<dt>lib_doupdate.c<dd>input checking
+<dt>lib_getch.c<dd>read()
+<dt>lib_initscr.c<dd>getenv()
+<dt>lib_newterm.c
+<dt>lib_baudrate.c
+<dt>lib_kernel.c<dd>various tty-manipulation and system calls
+<dt>lib_raw.c<dd>various tty-manipulation calls
+<dt>lib_setup.c<dd>various tty-manipulation calls
+<dt>lib_restart.c<dd>various tty-manipulation calls
+<dt>lib_tstp.c<dd>signal-manipulation calls
+<dt>lib_twait.c<dd>gettimeofday(), select().
+</dl>
 
 <HR>
 <ADDRESS>Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;</ADDRESS>
diff --git a/misc/makedef.cmd b/misc/makedef.cmd
new file mode 100644 (file)
index 0000000..f3d9740
--- /dev/null
@@ -0,0 +1,151 @@
+/*\r
+ * $Id: makedef.cmd,v 1.4 1998/11/22 03:14:08 tom Exp $\r
+ *\r
+ * Author:  Juan Jose Garcia Ripoll <worm@arrakis.es>.\r
+ * Webpage: http://www.arrakis.es/~worm/\r
+ *\r
+ * makedef.cmd - update a DLL export list using a newly created library file\r
+ *              in a.out format, plus an old .DEF file.\r
+ *\r
+ * standard output gets a sorted list with all entrypoints with entrycodes.\r
+ * This list, plus a few .def sentences (LIBRARY, DESCRIPTION and EXPORT)\r
+ * is used to build a new .def file.\r
+ *\r
+ * `_nc_*' symbols are ignored.\r
+ *\r
+ * returns 1 when the old def_file is corrupted -- that is, export items are\r
+ * not properly formatted.\r
+ *\r
+ * returns 0 if everything went OK.\r
+ */\r
+\r
+parse arg lib_file def_file\r
+\r
+lib_file = translate(lib_file,'\','/')\r
+def_file = translate(def_file,'\','/')\r
+\r
+call CleanQueue\r
+\r
+/*\r
+ * `codes' is the stem that links a code to every symbol\r
+ * `names' is the stem where symbols are stored sequentially\r
+ * `last' is the index of the last symbol defined\r
+ */\r
+last   = 0\r
+used.  = 0\r
+codes. = 0\r
+names. = ''\r
+\r
+tmp_name = 'foo.tmp'\r
+\r
+/*\r
+ * This sed expression cleans empty lines, comments and special .DEF\r
+ * commands, such as LIBRARY..., EXPORTS..., etc\r
+ */\r
+tidy_up  = '"/^[A-Z]/d;s/[     ][      ]*/ /g;s/;.*$//g;s/^[ ]*//g;/^[ ]*$/d"'\r
+\r
+/*\r
+ * First we find all public symbols (functions and variables). Next we\r
+ * concatenate this list with the old one, sorting it and wiping out\r
+ * all unused data (comments, DLL directives, blanks, etc). All this\r
+ * information is pushed into a REXX private list with the RXQUEUE\r
+ * utility program.\r
+ */\r
+'@echo off'\r
+'emxexp -u' lib_file '>' tmp_name\r
+'cat' tmp_name def_file '| sed' tidy_up '| sort > foo2.tmp'\r
+'type foo2.tmp | rxqueue'\r
+'del' tmp_name '1>NUL'\r
+\r
+/*\r
+ * This loop runs over the queue items\r
+ */\r
+do while queued() > 0\r
+   /*\r
+    * We retrieve the symbol name (NEW_NAME) and its number (NEW_NUMBER)\r
+    * When the line comes from `emximp's output, there's no number, so\r
+    * we assign it the special value 0.\r
+    */\r
+   parse pull new_symbol '@'new_code rest\r
+   if Left(new_symbol,1) = '"' then\r
+      parse var new_symbol '"' new_name '"' rest\r
+   else\r
+      do\r
+      echo 'Symbol 'new_symbol' was not quoted'\r
+      new_name = new_symbol\r
+      end\r
+\r
+   if new_code = '' then\r
+      new_code = 0\r
+   /*\r
+    * Here, one would place all smart checks that would kill unused symbols.\r
+    * However, export tables are not that big, so why bothering?\r
+   if Left(new_name,4) = '_nc_' then\r
+      iterate\r
+    */\r
+   /*\r
+    * The algorithm:\r
+    *  IF (this is the 2nd time the symbol appears) THEN\r
+    *          (this symbol comes from a .DEF file)\r
+    *          it has a valid code that we store\r
+    *          we mark that code as used\r
+    *   ELIF (it has no number) THEN\r
+    *          (it's a new symbol)\r
+    *          we increase the counter of defined symbols\r
+    *          we assign it the special number 0\r
+    *          (later on it'll be assigned an unused export code)\r
+    *   ELSE\r
+    *          this symbol was in the old DLL and it's no longer\r
+    *          here, so we skip it.\r
+    */\r
+   select\r
+      when new_name = '' then\r
+         'echo Warning: empty symbol found 1>&2'\r
+      when names.last = new_name then\r
+         do\r
+         codes.last = new_code\r
+         used.new_code = 1\r
+         end\r
+      when new_code = 0 then\r
+         do\r
+         last = last + 1\r
+         names.last = new_name\r
+         codes.last = 0\r
+         end\r
+   otherwise\r
+      'echo Warning: symbol "'new_name'" has disappeared 1>&2'\r
+   end /* select */\r
+end /* do while queued() */\r
+\r
+/*\r
+ * Finally we scan the stem, writing out all symbols with export codes.\r
+ * Those that did not have a valid one (just 0) are assigned a new one.\r
+ */\r
+new_code = 1\r
+inx = 1\r
+do while inx <= last\r
+   if codes.inx = 0 then\r
+      do\r
+      do while used.new_code \= 0\r
+         new_code = new_code + 1\r
+      end\r
+      codes.inx = new_code\r
+      used.new_code = 1\r
+      end\r
+   say '       "'names.inx'"   @'codes.inx'    NONAME'\r
+   inx = inx + 1\r
+end\r
+'del foo2.tmp 1>NUL'\r
+exit 0\r
+\r
+/*\r
+ * Cleans the REXX queue by pulling and forgetting every line.\r
+ * This is needed, at least, when `makedef.cmd' starts, because an aborted\r
+ * REXX program might have left some rubbish in.\r
+ */\r
+CleanQueue: procedure\r
+   do while queued() > 0\r
+      parse pull foo\r
+   end\r
+return\r
+\r
diff --git a/misc/menu.def b/misc/menu.def
new file mode 100644 (file)
index 0000000..a84e63d
--- /dev/null
@@ -0,0 +1,81 @@
+LIBRARY menu5 INITINSTANCE TERMINSTANCE\r
+DESCRIPTION "NCurses-5-0-990828, module menu"\r
+CODE LOADONCALL\r
+DATA LOADONCALL NONSHARED MULTIPLE\r
+EXPORTS\r
+       "_nc_Calculate_Item_Length_and_Width"   @11     NONAME\r
+       "_nc_Connect_Items"     @38     NONAME\r
+       "_nc_Default_Item"      @63     NONAME\r
+       "_nc_Default_Menu"      @64     NONAME\r
+       "_nc_Disconnect_Items"  @65     NONAME\r
+       "_nc_Draw_Menu" @66     NONAME\r
+       "_nc_Link_Items"        @67     NONAME\r
+       "_nc_Match_Next_Character_In_Item_Name" @68     NONAME\r
+       "_nc_New_TopRow_and_CurrentItem"        @69     NONAME\r
+       "_nc_Post_Item" @70     NONAME\r
+       "_nc_Show_Menu" @71     NONAME\r
+       "_nc_menu_cursor_pos"   @72     NONAME\r
+       "current_item"  @2      NONAME\r
+       "free_item"     @23     NONAME\r
+       "free_menu"     @24     NONAME\r
+       "item_count"    @25     NONAME\r
+       "item_description"      @14     NONAME\r
+       "item_index"    @26     NONAME\r
+       "item_init"     @7      NONAME\r
+       "item_name"     @15     NONAME\r
+       "item_opts"     @5      NONAME\r
+       "item_opts_off" @27     NONAME\r
+       "item_opts_on"  @28     NONAME\r
+       "item_term"     @8      NONAME\r
+       "item_userptr"  @18     NONAME\r
+       "item_value"    @60     NONAME\r
+       "item_visible"  @61     NONAME\r
+       "menu_back"     @20     NONAME\r
+       "menu_driver"   @29     NONAME\r
+       "menu_fore"     @21     NONAME\r
+       "menu_format"   @62     NONAME\r
+       "menu_grey"     @22     NONAME\r
+       "menu_init"     @9      NONAME\r
+       "menu_items"    @1      NONAME\r
+       "menu_mark"     @16     NONAME\r
+       "menu_opts"     @6      NONAME\r
+       "menu_opts_off" @30     NONAME\r
+       "menu_opts_on"  @31     NONAME\r
+       "menu_pad"      @32     NONAME\r
+       "menu_pattern"  @17     NONAME\r
+       "menu_request_by_name"  @73     NONAME\r
+       "menu_request_name"     @74     NONAME\r
+       "menu_spacing"  @75     NONAME\r
+       "menu_sub"      @12     NONAME\r
+       "menu_term"     @10     NONAME\r
+       "menu_userptr"  @19     NONAME\r
+       "menu_win"      @13     NONAME\r
+       "new_item"      @3      NONAME\r
+       "new_menu"      @4      NONAME\r
+       "pos_menu_cursor"       @33     NONAME\r
+       "post_menu"     @34     NONAME\r
+       "scale_menu"    @35     NONAME\r
+       "set_current_item"      @36     NONAME\r
+       "set_item_init" @37     NONAME\r
+       "set_item_opts" @39     NONAME\r
+       "set_item_term" @40     NONAME\r
+       "set_item_userptr"      @41     NONAME\r
+       "set_item_value"        @42     NONAME\r
+       "set_menu_back" @43     NONAME\r
+       "set_menu_fore" @44     NONAME\r
+       "set_menu_format"       @45     NONAME\r
+       "set_menu_grey" @46     NONAME\r
+       "set_menu_init" @47     NONAME\r
+       "set_menu_items"        @48     NONAME\r
+       "set_menu_mark" @49     NONAME\r
+       "set_menu_opts" @50     NONAME\r
+       "set_menu_pad"  @51     NONAME\r
+       "set_menu_pattern"      @52     NONAME\r
+       "set_menu_spacing"      @76     NONAME\r
+       "set_menu_sub"  @53     NONAME\r
+       "set_menu_term" @54     NONAME\r
+       "set_menu_userptr"      @55     NONAME\r
+       "set_menu_win"  @56     NONAME\r
+       "set_top_row"   @57     NONAME\r
+       "top_row"       @58     NONAME\r
+       "unpost_menu"   @59     NONAME\r
diff --git a/misc/menu.ref b/misc/menu.ref
new file mode 100644 (file)
index 0000000..cee964f
--- /dev/null
@@ -0,0 +1,73 @@
+LIBRARY MENU2 INITINSTANCE\r
+DESCRIPTION 'NCurses 1.9.9e-1 for OS/2 - menu library'\r
+EXPORTS\r
+       "menu_items"            @1      ;NONAME\r
+       "current_item"          @2      ;NONAME\r
+       "new_item"              @3      ;NONAME\r
+\r
+       "new_menu"              @4      ;NONAME\r
+\r
+       "item_opts"             @5      ;NONAME\r
+       "menu_opts"             @6      ;NONAME\r
+\r
+       "item_init"             @7      ;NONAME\r
+       "item_term"             @8      ;NONAME\r
+       "menu_init"             @9      ;NONAME\r
+       "menu_term"             @10     ;NONAME\r
+\r
+       "menu_sub"              @12     ;NONAME\r
+       "menu_win"              @13     ;NONAME\r
+\r
+       "item_description"      @14     ;NONAME\r
+       "item_name"             @15     ;NONAME\r
+       "menu_mark"             @16     ;NONAME\r
+       "menu_pattern"          @17     ;NONAME\r
+\r
+       "item_userptr"          @18     ;NONAME\r
+       "menu_userptr"          @19     ;NONAME\r
+\r
+       "menu_back"             @20     ;NONAME\r
+       "menu_fore"             @21     ;NONAME\r
+       "menu_grey"             @22     ;NONAME\r
+\r
+       "free_item"             @23     ;NONAME\r
+       "free_menu"             @24     ;NONAME\r
+       "item_count"            @25     ;NONAME\r
+       "item_index"            @26     ;NONAME\r
+       "item_opts_off"         @27     ;NONAME\r
+       "item_opts_on"          @28     ;NONAME\r
+       "menu_driver"           @29     ;NONAME\r
+       "menu_opts_off"         @30     ;NONAME\r
+       "menu_opts_on"          @31     ;NONAME\r
+       "menu_pad"              @32     ;NONAME\r
+       "pos_menu_cursor"       @33     ;NONAME\r
+       "post_menu"             @34     ;NONAME\r
+       "scale_menu"            @35     ;NONAME\r
+       "set_current_item"      @36     ;NONAME\r
+       "set_item_init"         @37     ;NONAME\r
+       "set_item_opts"         @39     ;NONAME\r
+       "set_item_term"         @40     ;NONAME\r
+       "set_item_userptr"      @41     ;NONAME\r
+       "set_item_value"        @42     ;NONAME\r
+       "set_menu_back"         @43     ;NONAME\r
+       "set_menu_fore"         @44     ;NONAME\r
+       "set_menu_format"       @45     ;NONAME\r
+       "set_menu_grey"         @46     ;NONAME\r
+       "set_menu_init"         @47     ;NONAME\r
+       "set_menu_items"        @48     ;NONAME\r
+       "set_menu_mark"         @49     ;NONAME\r
+       "set_menu_opts"         @50     ;NONAME\r
+       "set_menu_pad"          @51     ;NONAME\r
+       "set_menu_pattern"      @52     ;NONAME\r
+       "set_menu_sub"          @53     ;NONAME\r
+       "set_menu_term"         @54     ;NONAME\r
+       "set_menu_userptr"      @55     ;NONAME\r
+       "set_menu_win"          @56     ;NONAME\r
+       "set_top_row"           @57     ;NONAME\r
+       "top_row"               @58     ;NONAME\r
+       "unpost_menu"           @59     ;NONAME\r
+\r
+       "item_value"            @60     ;NONAME\r
+       "item_visible"          @61     ;NONAME\r
+\r
+       "menu_format"           @62     ;NONAME\r
index ada9b08dd12370b3e7e57ce004d58663d47e2409..e45ca3530f202e642ed92549e39911dc0db0b153 100644 (file)
@@ -2,6 +2,7 @@
                          Writing Programs with NCURSES
                                        
      by Eric S. Raymond and Zeyd M. Ben-Halim
+     updates since release 1.9.9e by Thomas Dickey
      
                                    Contents
                                        
@@ -149,9 +150,9 @@ A Brief History of Curses
    
 Scope of This Document
 
-   This document describes ncurses, a freeware implementation of the
-   System V curses API with some clearly marked extensions. It includes
-   the following System V curses features:
+   This document describes ncurses, a free implementation of the System V
+   curses API with some clearly marked extensions. It includes the
+   following System V curses features:
    
      * Support for multiple screen highlights (BSD curses could only
        handle one `standout' highlight, usually reverse-video).
@@ -173,7 +174,7 @@ Scope of This Document
    This document includes tips for using the mouse.
    
    The ncurses package was originated by Pavel Curtis. The original
-   maintainer of the package is Zeyd Ben-Halim <zmbenhal@netcom.com>.
+   maintainer of this package is Zeyd Ben-Halim <zmbenhal@netcom.com>.
    Eric S. Raymond <esr@snark.thyrsus.com> wrote many of the new features
    in versions after 1.8.1 and wrote most of this introduction. Jürgen
    Pfeifer wrote all of the menu and forms code as well as the Ada95
@@ -513,18 +514,24 @@ static void finish(int sig)
    
   Mouse Interfacing
   
-   The ncurses library also provides a mouse interface. Note: his
-   facility is original to ncurses, it is not part of either the XSI
-   Curses standard, nor of System V Release 4, nor BSD curses. Thus, we
-   recommend that you wrap mouse-related code in an #ifdef using the
-   feature macro NCURSES_MOUSE_VERSION so it will not be compiled and
-   linked on non-ncurses systems.
-   
-   Presently, mouse event reporting works only under xterm. In the
-   future, ncurses will detect the presence of gpm(1), Alessandro
-   Rubini's freeware mouse server for Linux systems, and accept mouse
-   reports through it.
-   
+   The ncurses library also provides a mouse interface.
+   
+     NOTE: this facility is specific to ncurses, it is not part of
+     either the XSI Curses standard, nor of System V Release 4, nor BSD
+     curses. System V Release 4 curses contains code with similar
+     interface definitions, however it is not documented. Other than by
+     disassembling the library, we have no way to determine exactly how
+     that mouse code works. Thus, we recommend that you wrap
+     mouse-related code in an #ifdef using the feature macro
+     NCURSES_MOUSE_VERSION so it will not be compiled and linked on
+     non-ncurses systems.
+     
+   Presently, mouse event reporting works in the following environments:
+     * xterm and similar programs such as rxvt.
+     * Linux console, when configured with gpm(1), Alessandro Rubini's
+       mouse server.
+     * OS/2 EMX
+       
    The mouse interface is very simple. To activate it, you use the
    function mousemask(), passing it as first argument a bit-mask that
    specifies what kinds of events you want your program to be able to
@@ -692,8 +699,8 @@ Function Descriptions
           
   Debugging
   
-   NOTE: These functions are not part of the standard curses API!
-   
+     NOTE: These functions are not part of the standard curses API!
+     
    trace()
           This function can be used to explicitly set a trace level. If
           the trace level is nonzero, execution of your program will
@@ -735,13 +742,13 @@ Hints, Tips, and Tricks
    likely to hurt your application's usability with other curses
    libraries.
    
-   Bear in mind that refresh() is a synonym for wrefresh(stdscr), and
-   don't try to mix use of stdscr with use of windows declared by
-   newwin(); a refresh() call will blow them off the screen. The right
-   way to handle this is to use subwin(), or not touch stdscr at all and
-   tile your screen with declared windows which you then wnoutrefresh()
-   somewhere in your program event loop, with a single doupdate() call to
-   trigger actual repainting.
+   Bear in mind that refresh() is a synonym for wrefresh(stdscr). Don't
+   try to mix use of stdscr with use of windows declared by newwin(); a
+   refresh() call will blow them off the screen. The right way to handle
+   this is to use subwin(), or not touch stdscr at all and tile your
+   screen with declared windows which you then wnoutrefresh() somewhere
+   in your program event loop, with a single doupdate() call to trigger
+   actual repainting.
    
    You are much less likely to run into problems if you design your
    screen layouts to use tiled rather than overlapping windows.
@@ -749,16 +756,16 @@ Hints, Tips, and Tricks
    fragile, and poorly documented. The ncurses library is not yet an
    exception to this rule.
    
-   There is a freeware panels library included in the ncurses
-   distribution that does a pretty good job of strengthening the
-   overlapping-windows facilities.
+   There is a panels library included in the ncurses distribution that
+   does a pretty good job of strengthening the overlapping-windows
+   facilities.
    
    Try to avoid using the global variables LINES and COLS. Use getmaxyx()
    on the stdscr context instead. Reason: your code may be ported to run
    in an environment with window resizes, in which case several screens
    could be open with different sizes.
    
-  Temporarily Leaving ncurses Mode
+  Temporarily Leaving NCURSES Mode
   
    Sometimes you will want to write a program that spends most of its
    time in screen mode, but occasionally returns to ordinary `cooked'
@@ -783,18 +790,30 @@ Hints, Tips, and Tricks
     addstr("returned.\n");     /* prepare return message */
     refresh();                 /* restore save modes, repaint screen */
 
-  Using ncurses Under xterm
+  Using NCURSES under XTERM
   
    A resize operation in X sends SIGWINCH to the application running
-   under xterm. The ncurses library does not catch this signal, because
-   it cannot in general know how you want the screen re-painted. You will
-   have to write the SIGWINCH handler yourself.
+   under xterm. The ncurses library provides an experimental signal
+   handler, but in general does not catch this signal, because it cannot
+   know how you want the screen re-painted. You will usually have to
+   write the SIGWINCH handler yourself. Ncurses can give you some help.
    
    The easiest way to code your SIGWINCH handler is to have it do an
    endwin, followed by an refresh and a screen repaint you code yourself.
    The refresh will pick up the new screen size from the xterm's
    environment.
    
+   That is the standard way, of course (it even works with some vendor's
+   curses implementations). Its drawback is that it clears the screen to
+   reinitialize the display, and does not resize subwindows which must be
+   shrunk. Ncurses provides an extension which works better, the
+   resizeterm function. That function ensures that all windows are
+   limited to the new screen dimensions, and pads stdscr with blanks if
+   the screen is larger.
+   
+   Finally, ncurses can be configured to provide its own SIGWINCH
+   handler, based on resizeterm.
+   
   Handling Multiple Terminal Screens
   
    The initscr() function actually calls a function named newterm() to do
@@ -828,14 +847,25 @@ Hints, Tips, and Tricks
    Try to make attribute changes infrequent on your screens. Don't use
    the immedok() option!
    
-  Special Features of ncurses
+  Special Features of NCURSES
   
-   When running on PC-clones, ncurses has enhanced support for the IBM
-   high-half and ROM characters. The A_ALTCHARSET highlight, enables
-   display of both high-half ACS graphics and the PC ROM graphics 0-31
-   that are normally interpreted as control characters.
+   The wresize() function allows you to resize a window in place. The
+   associated resizeterm() function simplifies the construction of
+   SIGWINCH handlers, for resizing all windows.
+   
+   The define_key() function allows you to define at runtime function-key
+   control sequences which are not in the terminal description. The
+   keyok() function allows you to temporarily enable or disable
+   interpretation of any function-key control sequence.
+   
+   The use_default_colors() function allows you to construct applications
+   which can use the terminal's default foreground and background colors
+   as an additional "default" color. Several terminal emulators support
+   this feature, which is based on ISO 6429.
    
-   The wresize() function allows you to resize a window in place.
+   Ncurses supports up 16 colors, unlike SVr4 curses which defines only
+   8. While most terminals which provide color allow only 8 colors, about
+   a quarter (including XFree86 xterm) support 16 colors.
    
 Compatibility with Older Versions
 
@@ -940,7 +970,7 @@ XSI Curses Conformance
    panels library.
    
    The panel library first appeared in AT&T System V. The version
-   documented here is the freeware panel code distributed with ncurses.
+   documented here is the panel code distributed with ncurses.
    
 Compiling With the Panels Library
 
@@ -1044,7 +1074,7 @@ Miscellaneous Other Facilities
    flexible interface.
    
    The menu library first appeared in AT&T System V. The version
-   documented here is the freeware menu code distributed with ncurses.
+   documented here is the menu code distributed with ncurses.
    
 Compiling With the menu Library
 
@@ -1236,7 +1266,7 @@ Miscellaneous Other Features
    of on-screen forms for data entry and program control.
    
    The form library first appeared in AT&T System V. The version
-   documented here is the freeware form code distributed with ncurses.
+   documented here is the form code distributed with ncurses.
    
 Compiling With the form Library
 
@@ -1408,7 +1438,7 @@ int field_info(FIELD *field,              /* field from which to fetch */
    
   Changing the Field Location
   
-   If is possible to move a field's location on the screen:
+   It is possible to move a field's location on the screen:
    
 int move_field(FIELD *field,              /* field to alter */
                int top, int left);        /* new upper-left corner */
index a2e0149206af0ed77c4c96b6668d41446efe7565..d01c65e6e52d6d88268f770ebdf4fe079bca9b1a 100644 (file)
@@ -1,6 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: ncurses-intro.html,v 1.23 1998/02/22 17:41:03 juergen Exp $
+  $Id: ncurses-intro.html,v 1.31 1999/05/16 17:02:31 juergen Exp $
 -->
 <HTML>
 <HEAD>
@@ -13,6 +13,7 @@
 
 <BLOCKQUOTE>
 by Eric S. Raymond and Zeyd M. Ben-Halim<BR>
+updates since release 1.9.9e by Thomas Dickey
 </BLOCKQUOTE>
 
 <H1>Contents</H1>
@@ -52,7 +53,7 @@ by Eric S. Raymond and Zeyd M. Ben-Halim<BR>
 <LI><A HREF="#hints">Hints, Tips, and Tricks</A>
 <UL>
 <LI><A HREF="#caution">Some Notes of Caution</A>
-<LI><A HREF="#leaving">Temporarily Leaving ncurses Mode</A> 
+<LI><A HREF="#leaving">Temporarily Leaving ncurses Mode</A>
 <LI><A HREF="#xterm">Using <CODE>ncurses</CODE> under <CODE>xterm</CODE></A>
 <LI><A HREF="#screens">Handling Multiple Terminal Screens</A>
 <LI><A HREF="#testing">Testing for Terminal Capabilities</A>
@@ -139,7 +140,7 @@ by Eric S. Raymond and Zeyd M. Ben-Halim<BR>
 <HR>
 <H1><A NAME="introduction">Introduction</A></H1>
 
-This document is an introduction to programming with <CODE>curses</CODE>. It is 
+This document is an introduction to programming with <CODE>curses</CODE>. It is
 not an exhaustive reference for the curses Application Programming Interface
 (API); that role is filled by the <CODE>curses</CODE> manual pages.  Rather, it
 is intended to help C programmers ease into using the package. <P>
@@ -148,7 +149,7 @@ This document is aimed at C applications programmers not yet specifically
 familiar with ncurses.  If you are already an experienced <CODE>curses</CODE>
 programmer, you should nevertheless read the sections on
 <A HREF="#mouse">Mouse Interfacing</A>, <A HREF="#debugging">Debugging</A>,
-<A HREF="compat">Compatibility with Older Versions</A>,
+<A HREF="#compat">Compatibility with Older Versions</A>,
 and <A HREF="#hints">Hints, Tips, and Tricks</A>.  These will bring you up
 to speed on the special features and quirks of the <CODE>ncurses</CODE>
 implementation.  If you are not so experienced, keep reading. <P>
@@ -189,7 +190,7 @@ more capabilities, going far beyond BSD curses in power and flexibility.<P>
 
 <H2><A NAME="scope">Scope of This Document</A></H2>
 
-This document describes <CODE>ncurses</CODE>, a freeware implementation of
+This document describes <CODE>ncurses</CODE>, a free implementation of
 the System V <CODE>curses</CODE> API with some clearly marked extensions.
 It includes the following System V curses features: <P>
 <UL>
@@ -213,20 +214,20 @@ mouse in some environments (notably, xterm under the X window system).  This
 document includes tips for using the mouse. <P>
 
 The <CODE>ncurses</CODE> package was originated by Pavel Curtis.  The original
-maintainer of the package is
+maintainer of this package is
 <A HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A>
 &lt;zmbenhal@netcom.com&gt;.
-<A HREF="mailto:esr@snark.thyrsus.com">Eric S. Raymond</A> 
+<A HREF="mailto:esr@snark.thyrsus.com">Eric S. Raymond</A>
 &lt;esr@snark.thyrsus.com&gt;
-wrote many of the new features in versions after 1.8.1 
+wrote many of the new features in versions after 1.8.1
 and wrote most of this introduction.
-<A HREF="mailto:Juergen.Pfeifer@T-Online.de">J&uuml;rgen Pfeifer</A>
-wrote all of the menu and forms code as well as the 
+<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>
+wrote all of the menu and forms code as well as the
 <A HREF="http://www.adahome.com">Ada95</A> binding.
 Ongoing work is being done by
 <A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
 and
-<A HREF="mailto:Juergen.Pfeifer@T-Online.de">J&uuml;rgen Pfeifer</A>.
+<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
 <A HREF="mailto:florian@gnu.org">Florian La Roche</A>
 acts as the maintainer for the Free Software Foundation, which holds the
 copyright on ncurses.
@@ -234,7 +235,7 @@ Contact the current maintainers at
 <A HREF="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</A>.
 <P>
 
-This document also describes the <A HREF="panels">panels</A> extension library,
+This document also describes the <A HREF="#panels">panels</A> extension library,
 similarly modeled on the SVr4 panels facility.  This library allows you to
 associate backing store with each of a stack or deck of overlapping windows,
 and provides operations for moving windows around in the stack that change
@@ -253,17 +254,17 @@ consistency:
 
 <DL>
 <DT> window
-<DD> 
+<DD>
 A data structure describing a sub-rectangle of the screen (possibly the
 entire screen).  You can write to a window as though it were a miniature
 screen, scrolling independently of other windows on the physical screen. <P>
 <DT> screens
-<DD> 
+<DD>
 A subset of windows which are as large as the terminal screen, i.e., they start
 at the upper left hand corner and encompass the lower right hand corner.  One
 of these, <CODE>stdscr</CODE>, is automatically provided for the programmer. <P>
 <DT> terminal screen
-<DD> 
+<DD>
 The package's idea of what the terminal display currently looks like, i.e.,
 what the user sees now.  This is a special screen.
 </DL>
@@ -384,7 +385,7 @@ capabilities.
 The <CODE>curses.h</CODE> also introduces some <CODE>#define</CODE> constants and types
 of general usefulness:
 
-<DL> 
+<DL>
 <DT> <CODE>bool</CODE>
 <DD> boolean type, actually a `char' (e.g., <CODE>bool doneit;</CODE>)
 <DT> <CODE>TRUE</CODE>
@@ -587,21 +588,30 @@ is itself a compile-time constant and can be used in initializers. <P>
 
 <H3><A NAME="mouse">Mouse Interfacing</A></H3>
 
-The <CODE>ncurses</CODE> library also provides a mouse interface.  Note:
-his facility is original to <CODE>ncurses</CODE>, it is not part of either
+The <CODE>ncurses</CODE> library also provides a mouse interface.
+<!-- The 'note' tag is not portable enough -->
+<blockquote>
+<strong>NOTE:</strong> this facility is specific to <CODE>ncurses</CODE>, it is not part of either
 the XSI Curses standard, nor of System V Release 4, nor BSD curses.
+System V Release 4 curses contains code with similar interface definitions,
+however it is not documented.  Other than by disassembling the library, we
+have no way to determine exactly how that mouse code works.
 Thus, we recommend that you wrap mouse-related code in an #ifdef using the
 feature macro NCURSES_MOUSE_VERSION so it will not be compiled and linked
-on non-ncurses systems.  <P>
-
-Presently, mouse event reporting works only under xterm.  In the
-future, ncurses will detect the presence of <CODE>gpm</CODE>(1), Alessandro
-Rubini's freeware mouse server for Linux systems, and accept mouse
-reports through it. <P>
-
+on non-ncurses systems.
+</blockquote>
+
+Presently, mouse event reporting works in the following environments:
+<ul>
+<li>xterm and similar programs such as rxvt.
+<li>Linux console, when configured with <CODE>gpm</CODE>(1), Alessandro
+Rubini's mouse server.
+<li>OS/2 EMX
+</ul>
+<P>
 The mouse interface is very simple.  To activate it, you use the function
 <CODE>mousemask()</CODE>, passing it as first argument a bit-mask that specifies
-what kinds of events you want your program to be able to see.  It will 
+what kinds of events you want your program to be able to see.  It will
 return the bit-mask of events that actually become visible, which may differ
 from the argument if the mouse device is not capable of reporting some of
 the event types you specify. <P>
@@ -616,13 +626,13 @@ in and make the first one inaccessible). <P>
 Each call to <CODE>getmouse()</CODE> fills a structure (the address of which you'll
 pass it) with mouse event data.  The event data includes zero-origin,
 screen-relative character-cell coordinates of the mouse pointer.  It also
-includes an event mask.  Bits in this mask will be set, corresponding 
+includes an event mask.  Bits in this mask will be set, corresponding
 to the event type being reported. <P>
 
 The mouse structure contains two additional fields which may be
 significant in the future as ncurses interfaces to new kinds of
 pointing device.  In addition to x and y coordinates, there is a slot
-for a z coordinate; this might be useful with touch-screens that can 
+for a z coordinate; this might be useful with touch-screens that can
 return a pressure or duration parameter.  There is also a device ID
 field, which could be used to distinguish between multiple pointing
 devices. <P>
@@ -766,7 +776,10 @@ yourself if need be.
 
 <H3><A NAME="debugging">Debugging</A></H3>
 
-NOTE: These functions are not part of the standard curses API! <P>
+<!-- The 'note' tag is not portable enough -->
+<blockquote>
+<strong>NOTE:</strong> These functions are not part of the standard curses API!
+</blockquote>
 
 <DL>
 <DT> <CODE>trace()</CODE>
@@ -780,7 +793,7 @@ in the <CODE>curses.h</CODE> file for details.  (It is also possible to set
 a trace level by assigning a trace level value to the environment variable
 <CODE>NCURSES_TRACE</CODE>).
 <DT> <CODE>_tracef()</CODE>
-<DD> 
+<DD>
 This function can be used to output your own debugging information.  It is only
 available only if you link with -lncurses_g.  It can be used the same way as
 <CODE>printf()</CODE>, only it outputs a newline after the end of arguments.
@@ -811,8 +824,8 @@ some control bits set before you started your application.  Also, they
 have always been poorly documented, and are likely to hurt your
 application's usability with other curses libraries. <P>
 
-Bear in mind that <CODE>refresh()</CODE> is a synonym for <CODE>wrefresh(stdscr)</CODE>,
-and don't try to mix use of <CODE>stdscr</CODE> with use of windows declared
+Bear in mind that <CODE>refresh()</CODE> is a synonym for <CODE>wrefresh(stdscr)</CODE>.
+Don't try to mix use of <CODE>stdscr</CODE> with use of windows declared
 by <CODE>newwin()</CODE>; a <CODE>refresh()</CODE> call will blow them off the
 screen.  The right way to handle this is to use <CODE>subwin()</CODE>, or
 not touch <CODE>stdscr</CODE> at all and tile your screen with declared
@@ -826,7 +839,7 @@ curses support for overlapping windows has been weak, fragile, and poorly
 documented.  The <CODE>ncurses</CODE> library is not yet an exception to this
 rule. <P>
 
-There is a freeware panels library included in the <CODE>ncurses</CODE>
+There is a panels library included in the <CODE>ncurses</CODE>
 distribution that does a pretty good job of strengthening the
 overlapping-windows facilities. <P>
 
@@ -835,7 +848,7 @@ Try to avoid using the global variables LINES and COLS.  Use
 your code may be ported to run in an environment with window resizes,
 in which case several screens could be open with different sizes. <P>
 
-<H3><A NAME="leaving">Temporarily Leaving <CODE>ncurses</CODE> Mode</A></H3>
+<H3><A NAME="leaving">Temporarily Leaving NCURSES Mode</A></H3>
 
 Sometimes you will want to write a program that spends most of its time in
 screen mode, but occasionally returns to ordinary `cooked' mode.  A common
@@ -864,17 +877,30 @@ Here is some sample code for shellout:
     refresh();                 /* restore save modes, repaint screen */
 </PRE>
 
-<H3><A NAME="xterm">Using <CODE>ncurses</CODE> Under <CODE>xterm</CODE></A></H3>
+<H3><A NAME="xterm">Using NCURSES under XTERM</A></H3>
 
 A resize operation in X sends SIGWINCH to the application running under xterm.
-The <CODE>ncurses</CODE> library does not catch this signal, because it cannot in
-general know how you want the screen re-painted.  You will have to write the
-SIGWINCH handler yourself. <P>
+The <CODE>ncurses</CODE> library provides an experimental signal
+handler, but in general does not catch this signal, because it cannot
+know how you want the screen re-painted.  You will usually have to write the
+SIGWINCH handler yourself.  Ncurses can give you some help. <P>
 
 The easiest way to code your SIGWINCH handler is to have it do an
 <CODE>endwin</CODE>, followed by an <CODE>refresh</CODE> and a screen repaint you code
 yourself.  The <CODE>refresh</CODE> will pick up the new screen size from the
-xterm's environment.
+xterm's environment. <P>
+
+That is the standard way, of course (it even works with some vendor's curses
+implementations).
+Its drawback is that it clears the screen to reinitialize the display, and does
+not resize subwindows which must be shrunk.
+<CODE>Ncurses</CODE> provides an extension which works better, the
+<CODE>resizeterm</CODE> function.  That function ensures that all windows
+are limited to the new screen dimensions, and pads <CODE>stdscr</CODE>
+with blanks if the screen is larger. <P>
+
+Finally, ncurses can be configured to provide its own SIGWINCH handler,
+based on <CODE>resizeterm</CODE>.
 
 <H3><A NAME="screens">Handling Multiple Terminal Screens</A></H3>
 
@@ -910,14 +936,26 @@ screen-painting of text when you know the text doesn't contain any
 control characters.  Try to make attribute changes infrequent on your
 screens.  Don't use the <CODE>immedok()</CODE> option! <P>
 
-<H3><A NAME="special">Special Features of <CODE>ncurses</CODE></A></H3>
+<H3><A NAME="special">Special Features of NCURSES</A></H3>
+
+The <CODE>wresize()</CODE> function allows you to resize a window in place.
+The associated <CODE>resizeterm()</CODE> function simplifies the construction
+of <a HREF="#xterm">SIGWINCH</a> handlers, for resizing all windows.  <P>
+
+The <CODE>define_key()</CODE> function allows you
+to define at runtime function-key control sequences which are not in the
+terminal description.
+The <CODE>keyok()</CODE> function allows you to temporarily
+enable or disable interpretation of any function-key control sequence. <P>
 
-When running on PC-clones, <CODE>ncurses</CODE> has enhanced support for
-the IBM high-half and ROM characters.  The <CODE>A_ALTCHARSET</CODE> highlight,
-enables display of both high-half ACS graphics and the PC ROM graphics
-0-31 that are normally interpreted as control characters. <P>
+The <CODE>use_default_colors()</CODE> function allows you to construct
+applications which can use the terminal's default foreground and
+background colors as an additional "default" color.
+Several terminal emulators support this feature, which is based on ISO 6429. <P>
 
-The <CODE>wresize()</CODE> function allows you to resize a window in place. <P>
+Ncurses supports up 16 colors, unlike SVr4 curses which defines only 8.
+While most terminals which provide color allow only 8 colors, about
+a quarter (including XFree86 xterm) support 16 colors.
 
 <H2><A NAME="compat">Compatibility with Older Versions</A></H2>
 
@@ -943,7 +981,7 @@ intervals. <P>
 What happens to the overlapping region depends on what <CODE>wnoutrefresh()</CODE>
 does with its argument -- what portions of the argument window it copies to the
 virtual screen.  Some implementations do "change copy", copying down only
-locations in the window that have changed (or been marked changed with 
+locations in the window that have changed (or been marked changed with
 <CODE>wtouchln()</CODE> and friends).  Some implementations do  "entire copy",
 copying <EM>all</EM> window locations to the virtual screen whether or not
 they have changed. <P>
@@ -978,7 +1016,7 @@ all your updates. <P>
 
 <H3><A NAME="backbug">Background Erase</A></H3>
 
-If you have been using a very old versions of <CODE>ncurses</CODE> (1.8.7 or 
+If you have been using a very old versions of <CODE>ncurses</CODE> (1.8.7 or
 older) you may be surprised by the behavior of the erase functions.  In older
 versions, erased areas of a window were filled with a blank modified by the
 window's current attribute (as set by <STRONG>wattrset()</STRONG>, <STRONG>wattron()</STRONG>,
@@ -994,7 +1032,7 @@ the XSI Curses standard. <P>
 <H2><A NAME="xsifuncs">XSI Curses Conformance</A></H2>
 
 The <CODE>ncurses</CODE> library is intended to be base-level conformant with the
-XSI Curses standard from X/Open.  Many extended-level features (in fact, almost 
+XSI Curses standard from X/Open.  Many extended-level features (in fact, almost
 all features not directly concerned with wide characters and
 internationalization) are also supported. <P>
 
@@ -1021,7 +1059,7 @@ visibility stack or pop to the top at runtime, the resulting book-keeping
 can be tedious and difficult to get right.  Hence the panels library. <P>
 
 The <CODE>panel</CODE> library first appeared in AT&amp;T System V.  The
-version documented here is the freeware <CODE>panel</CODE> code distributed
+version documented here is the <CODE>panel</CODE> code distributed
 with <CODE>ncurses</CODE>.
 
 <H2><A NAME="pcompile">Compiling With the Panels Library</A></H2>
@@ -1132,7 +1170,7 @@ extension that supports easy programming of menu hierarchies with a
 uniform but flexible interface. <P>
 
 The <CODE>menu</CODE> library first appeared in AT&amp;T System V.  The
-version documented here is the freeware <CODE>menu</CODE> code distributed
+version documented here is the <CODE>menu</CODE> code distributed
 with <CODE>ncurses</CODE>. <P>
 
 <H2><A NAME="mcompile">Compiling With the menu Library</A></H2>
@@ -1190,7 +1228,7 @@ Both types always have a <DFN>current item</DFN>. <P>
 
 From a single-valued menu you can read the selected value simply by looking
 at the current item.  From a multi-valued menu, you get the selected set
-by looping through the items applying the <CODE>item_value()</CODE> 
+by looping through the items applying the <CODE>item_value()</CODE>
 predicate function.  Your menu-processing code can use the function
 <CODE>set_item_value()</CODE> to flag the items in the select set. <P>
 
@@ -1218,9 +1256,9 @@ to display menu items.  You can retrieve any format associated with a
 menu with <CODE>menu_format()</CODE>. The default format is rows=16,
 columns=1. <P>
 
-The actual menu page may be smaller than the format size.  This depends 
+The actual menu page may be smaller than the format size.  This depends
 on the item number and size and whether O_ROWMAJOR is on.  This option
-(on by default) causes menu items to be displayed in a `raster-scan' 
+(on by default) causes menu items to be displayed in a `raster-scan'
 pattern, so that if more than one item will fit horizontally the first
 couple of items are side-by-side in the top row.  The alternative is
 column-major display, which tries to put the first several items in
@@ -1235,7 +1273,7 @@ Each menu has a <DFN>mark string</DFN> used to visually tag selected items;
 see the <CODE>menu_mark(3x)</CODE> manual page for details.  The mark
 string length also influences the menu page size. <P>
 
-The function <CODE>scale_menu()</CODE> returns the minimum display size 
+The function <CODE>scale_menu()</CODE> returns the minimum display size
 that the menu code computes from all these factors.
 
 There are other menu display attributes including a select attribute,
@@ -1283,7 +1321,7 @@ partially displayed. <P>
 
 There are explicit requests for scrolling which also change the
 current item (because the select location does not change, but the
-item there does).  These are <CODE>REQ_SCR_DLINE</CODE>, 
+item there does).  These are <CODE>REQ_SCR_DLINE</CODE>,
 <CODE>REQ_SCR_ULINE</CODE>, <CODE>REQ_SCR_DPAGE</CODE>, and
 <CODE>REQ_SCR_UPAGE</CODE>. <P>
 
@@ -1303,7 +1341,7 @@ Some requests change the pattern buffer directly:
 <CODE>REQ_CLEAR_PATTERN</CODE>, <CODE>REQ_BACK_PATTERN</CODE>,
 <CODE>REQ_NEXT_MATCH</CODE>, <CODE>REQ_PREV_MATCH</CODE>.  The latter
 two are useful when pattern buffer input matches more than one item
-in a multi-valued menu. <P>  
+in a multi-valued menu. <P>
 
 Each successful scroll or item navigation request clears the pattern
 buffer.  It is also possible to set the pattern buffer explicitly
@@ -1342,7 +1380,7 @@ The <CODE>form</CODE> library is a curses extension that supports easy
 programming of on-screen forms for data entry and program control. <P>
 
 The <CODE>form</CODE> library first appeared in AT&amp;T System V.  The
-version documented here is the freeware <CODE>form</CODE> code distributed
+version documented here is the <CODE>form</CODE> code distributed
 with <CODE>ncurses</CODE>. <P>
 
 <H2><A NAME="fcompile">Compiling With the form Library</A></H2>
@@ -1379,7 +1417,7 @@ form library allows you (the forms designer) to bind each navigation
 and editing key to any keystroke accepted by <CODE>curses</CODE>
 
 Fields may have validation conditions on them, so that they check input
-data for type and value.  The form library supplies a rich set of 
+data for type and value.  The form library supplies a rich set of
 pre-defined field types, and makes it relatively easy to define new ones. <P>
 
 Once its transaction is completed (or aborted), a form may be
@@ -1407,7 +1445,7 @@ designed to resemble that of the <A HREF="#menu">menu library</A>
 wherever possible. <P>
 
 In forms programs, however, the `process user requests' is somewhat more
-complicated than for menus.  Besides menu-like navigation operations, 
+complicated than for menus.  Besides menu-like navigation operations,
 the menu driver loop has to support field editing and data validation. <P>
 
 <H2><A NAME="fcreate">Creating and Freeing Fields and Forms</A></H2>
@@ -1415,7 +1453,7 @@ the menu driver loop has to support field editing and data validation. <P>
 The basic function for creating fields is <CODE>new_field()</CODE>: <P>
 
 <PRE>
-FIELD *new_field(int height, int width,   /* new field size */ 
+FIELD *new_field(int height, int width,   /* new field size */
                  int top, int left,       /* upper left corner */
                  int offscreen,           /* number of offscreen rows */
                  int nbuf);               /* number of working buffers */
@@ -1434,8 +1472,8 @@ need not be <CODE>stdscr</CODE> if you've done an explicit
 <CODE>set_form_window()</CODE> call. <P>
 
 The fifth argument allows you to specify a number of off-screen rows.  If
-this is zero, the entire field will always be displayed.  If it is 
-nonzero, the form will be scrollable, with only one screen-full (initially 
+this is zero, the entire field will always be displayed.  If it is
+nonzero, the form will be scrollable, with only one screen-full (initially
 the top part) displayed at any given time.  If you make a field dynamic
 and grow it so it will no longer fit on the screen, the form will become
 scrollable even if the <CODE>offscreen</CODE> argument was initially zero. <P>
@@ -1519,19 +1557,19 @@ You can retrieve field sizes and locations through: <P>
 
 <PRE>
 int field_info(FIELD *field,              /* field from which to fetch */
-               int *height, *int width,   /* field size */ 
+               int *height, *int width,   /* field size */
                int *top, int *left,       /* upper left corner */
                int *offscreen,            /* number of offscreen rows */
                int *nbuf);                /* number of working buffers */
 </PRE>
 
-This function is a sort of inverse of <CODE>new_field()</CODE>; instead of 
+This function is a sort of inverse of <CODE>new_field()</CODE>; instead of
 setting size and location attributes of a new field, it fetches them
 from an existing one.  <P>
 
 <H3><A NAME="flocation">Changing the Field Location</A></H3>
 
-If is possible to move a field's location on the screen:  <P>
+It is possible to move a field's location on the screen:  <P>
 
 <PRE>
 int move_field(FIELD *field,              /* field to alter */
@@ -1569,22 +1607,22 @@ in the field buffer. <P>
 
 <PRE>
 int set_field_fore(FIELD *field,          /* field to alter */
-                   chtype attr);          /* attribute to set */ 
+                   chtype attr);          /* attribute to set */
 
 chtype field_fore(FIELD *field);          /* field to query */
 
 int set_field_back(FIELD *field,          /* field to alter */
-                   chtype attr);          /* attribute to set */ 
+                   chtype attr);          /* attribute to set */
 
 chtype field_back(FIELD *field);          /* field to query */
 
 int set_field_pad(FIELD *field,           /* field to alter */
-                 int pad);                /* pad character to set */ 
+                 int pad);                /* pad character to set */
 
 chtype field_pad(FIELD *field);
 
 int set_new_page(FIELD *field,            /* field to alter */
-                 int flag);               /* TRUE to force new page */ 
+                 int flag);               /* TRUE to force new page */
 
 chtype new_page(FIELD *field);            /* field to query */
 </PRE>
@@ -1604,13 +1642,13 @@ functions:
 
 <PRE>
 int set_field_opts(FIELD *field,          /* field to alter */
-                   int attr);             /* attribute to set */ 
+                   int attr);             /* attribute to set */
 
 int field_opts_on(FIELD *field,           /* field to alter */
-                  int attr);              /* attributes to turn on */ 
+                  int attr);              /* attributes to turn on */
 
 int field_opts_off(FIELD *field,          /* field to alter */
-                   int attr);             /* attributes to turn off */ 
+                   int attr);             /* attributes to turn off */
 
 int field_opts(FIELD *field);             /* field to query */
 </PRE>
@@ -1627,19 +1665,19 @@ visited by form navigation keys).  Can be used to make labels or derived
 fields with buffer values alterable by the forms application, not the user.
 <DT> O_PUBLIC
 <DD> Controls whether data is displayed during field entry.  If this option is
-turned off on a field, the library will accept and edit data in that field, 
+turned off on a field, the library will accept and edit data in that field,
 but it will not be displayed and the visible field cursor will not move.
 You can turn off the O_PUBLIC bit to define password fields.
 <DT> O_EDIT
 <DD> Controls whether the field's data can be modified.  When this option is
-off, all editing requests except <CODE>REQ_PREV_CHOICE</CODE> and 
+off, all editing requests except <CODE>REQ_PREV_CHOICE</CODE> and
 <CODE>REQ_NEXT_CHOICE</CODE> will fail.  Such read-only fields may be useful for
 help messages.
 <DT> O_WRAP
 <DD> Controls word-wrapping in multi-line fields.  Normally, when any
 character of a (blank-separated) word reaches the end of the current line, the
 entire word is wrapped to the next line (assuming there is one).  When this
-option is off, the word will be split across the line break.  
+option is off, the word will be split across the line break.
 <DT> O_BLANK
 <DD> Controls field blanking.  When this option is on, entering a character at
 the first field position erases the entire field (except for the just-entered
@@ -1652,7 +1690,7 @@ user's cursor will hang at the end of the field.  This option is ignored
 in dynamic fields that have not reached their size limit.
 <DT> O_NULLOK
 <DD> Controls whether <A HREF="#fvalidation">validation</A> is applied to
-blank fields.  Normally, it is not; the user can leave a field blank 
+blank fields.  Normally, it is not; the user can leave a field blank
 without invoking the usual validation check on exit.  If this option is
 off on a field, exit from it will invoke a validation check.
 <DT> O_PASSOK
@@ -1690,7 +1728,7 @@ form repeatedly, looking for modified fields each time. <P>
 
 Calling <CODE>field_status()</CODE> on a field not currently selected
 for input will return a correct value.  Calling <CODE>field_status()</CODE> on a
-field that is currently selected for input may not necessarily give a 
+field that is currently selected for input may not necessarily give a
 correct field status value, because entered data isn't necessarily copied to
 buffer zero before the exit validation check.
 
@@ -1716,7 +1754,7 @@ char *field_userptr(FIELD *field);        /* fetch mode of field */
 (Properly, this user pointer field ought to have <CODE>(void *)</CODE> type.
 The <CODE>(char *)</CODE> type is retained for System V compatibility.) <P>
 
-It is valid to set the user pointer of the default field (with a 
+It is valid to set the user pointer of the default field (with a
 <CODE>set_field_userptr()</CODE> call passed a NULL field pointer.)
 When a new field is created, the default-field user pointer is copied
 to initialize the new field's user pointer. <P>
@@ -1742,7 +1780,7 @@ it with this function: <P>
 
 <PRE>
 int set_max_field(FIELD *field,     /* field to alter (may not be NULL) */
-                   int max_size);   /* upper limit on field size */ 
+                   int max_size);   /* upper limit on field size */
 </PRE>
 
 If the field is one-line, <CODE>max_size</CODE> is taken to be a column size
@@ -1755,9 +1793,9 @@ The following properties of a field change when it becomes dynamic:
 <UL>
 <LI>If there is no growth limit, there is no final position of the field;
 therefore <CODE>O_AUTOSKIP</CODE> and <CODE>O_NL_OVERLOAD</CODE> are ignored.
-<LI>Field justification will be ignored (though whatever justification is 
+<LI>Field justification will be ignored (though whatever justification is
 set up will be retained internally and can be queried).
-<LI>The <CODE>dup_field()</CODE> and <CODE>link_field()</CODE> calls copy 
+<LI>The <CODE>dup_field()</CODE> and <CODE>link_field()</CODE> calls copy
 dynamic-buffer sizes.  If the <CODE>O_STATIC</CODE> option is set on one of a
 collection of links, buffer resizing will occur only when the field is
 edited through that link.
@@ -1770,7 +1808,7 @@ the field; use <CODE>dynamic_field_info()</CODE> to get the actual dynamic size.
 By default, a field will accept any data that will fit in its input buffer.
 However, it is possible to attach a validation type to a field.  If you do
 this, any attempt to leave the field while it contains data that doesn't
-match the validation type will fail.  Some validation types also have a 
+match the validation type will fail.  Some validation types also have a
 character-validity check for each time a character is entered in the field. <P>
 
 A field's validation check (if any) is not called when
@@ -1853,7 +1891,7 @@ has been entered, it is of course valid.  But it is also possible to enter a
 prefix of a valid string and have it completed for you. <P>
 
 By default, if you enter such a prefix and it matches more than one value
-in the string list, the prefix will be completed to the first matching 
+in the string list, the prefix will be completed to the first matching
 value.  But the <CODE>checkunique</CODE> argument, if true, requires prefix
 matches to be unique in order to be valid. <P>
 
@@ -1894,7 +1932,7 @@ int set_field_type(FIELD *field,              /* field to alter */
 
 Valid characters consist of an optional leading minus and digits. possibly
 including a decimal point. If your system supports locale's, the decimal point
-character used must be the one defined by your locale. The range check is 
+character used must be the one defined by your locale. The range check is
 performed on exit. If the range maximum is less than or equal to the minimum,
 the range is ignored. <P>
 
@@ -1947,7 +1985,7 @@ to fit. <P>
 Calling <CODE>field_buffer()</CODE> with a null field pointer will raise an
 error.  Calling <CODE>field_buffer()</CODE> on a field not currently selected
 for input will return a correct value.  Calling <CODE>field_buffer()</CODE> on a
-field that is currently selected for input may not necessarily give a 
+field that is currently selected for input may not necessarily give a
 correct field buffer value, because entered data isn't necessarily copied to
 buffer zero before the exit validation check.
 
@@ -2049,9 +2087,9 @@ scrollable field is actually displayed within the menu subwindow.  Use
 these functions: <P>
 
 <PRE>
-int data_ahead(FORM *form);               /* form to be queried */ 
+int data_ahead(FORM *form);               /* form to be queried */
 
-int data_behind(FORM *form);              /* form to be queried */ 
+int data_behind(FORM *form);              /* form to be queried */
 </PRE>
 
 The function <CODE>data_ahead()</CODE> returns TRUE if (a) the current
@@ -2084,7 +2122,7 @@ int form_driver(FORM *form,               /* form to pass input to */
 </PRE>
 
 Your input virtualization function needs to take input and then convert it
-to either an alphanumeric character (which is treated as data to be 
+to either an alphanumeric character (which is treated as data to be
 entered in the currently-selected field), or a forms processing request. <P>
 
 The forms driver provides hooks (through input-validation and
@@ -2337,7 +2375,7 @@ there are requests that can fetch that value into the field buffer: <P>
 </DL>
 
 Of the built-in field types, only <CODE>TYPE_ENUM</CODE> has built-in successor
-and predecessor functions.  When you define a field type of your own 
+and predecessor functions.  When you define a field type of your own
 (see <A HREF="#fcustom">Custom Validation Types</A>), you can associate
 our own ordering functions. <P>
 
@@ -2457,13 +2495,13 @@ or queried with these functions: <P>
 
 <PRE>
 int set_form_opts(FORM *form,             /* form to alter */
-                  int attr);              /* attribute to set */ 
+                  int attr);              /* attribute to set */
 
 int form_opts_on(FORM *form,              /* form to alter */
-                 int attr);               /* attributes to turn on */ 
+                 int attr);               /* attributes to turn on */
 
 int form_opts_off(FORM *form,             /* form to alter */
-                  int attr);              /* attributes to turn off */ 
+                  int attr);              /* attributes to turn off */
 
 int form_opts(FORM *form);                /* form to query */
 </PRE>
@@ -2500,7 +2538,7 @@ The simplest way to create a custom data type is to compose it from two
 preexisting ones:  <P>
 
 <PRE>
-FIELD *link_fieldtype(FIELDTYPE *type1, 
+FIELD *link_fieldtype(FIELDTYPE *type1,
                       FIELDTYPE *type2);
 </PRE>
 
@@ -2620,7 +2658,7 @@ int set_fieldtype_arg(FIELDTYPE *type,    /* type to alter */
 
 The successor and predecessor arguments will each be passed two arguments;
 a field pointer, and a pile pointer (as for the validation functions).  They
-are expected to use the function <CODE>field_buffer()</CODE> to read the 
+are expected to use the function <CODE>field_buffer()</CODE> to read the
 current value, and <CODE>set_field_buffer()</CODE> on buffer 0 to set the next
 or previous value.  Either hook may return TRUE to indicate success (a
 legal next or previous value was set) or FALSE to indicate failure. <P>
diff --git a/misc/ncurses.def b/misc/ncurses.def
new file mode 100644 (file)
index 0000000..13db4bf
--- /dev/null
@@ -0,0 +1,452 @@
+LIBRARY ncurses5 INITINSTANCE TERMINSTANCE\r
+DESCRIPTION "NCurses-5-0-990828, module ncurses"\r
+CODE LOADONCALL\r
+DATA LOADONCALL NONSHARED MULTIPLE\r
+EXPORTS\r
+       "BC"    @662    NONAME\r
+       "COLORS"        @503    NONAME\r
+       "COLOR_PAIR"    @36     NONAME\r
+       "COLOR_PAIRS"   @504    NONAME\r
+       "COLS"  @511    NONAME\r
+       "ESCDELAY"      @513    NONAME\r
+       "LINES" @510    NONAME\r
+       "PAIR_NUMBER"   @209    NONAME\r
+       "PC"    @660    NONAME\r
+       "SP"    @1003   NONAME\r
+       "TABSIZE"       @512    NONAME\r
+       "UP"    @661    NONAME\r
+       "_nc_access"    @6      NONAME\r
+       "_nc_add_to_try"        @7      NONAME\r
+       "_nc_align_termtype"    @8      NONAME\r
+       "_nc_background"        @9      NONAME\r
+       "_nc_baudrate"  @10     NONAME\r
+       "_nc_cap_hash_table"    @805    NONAME\r
+       "_nc_capalias_table"    @806    NONAME\r
+       "_nc_capcmp"    @707    NONAME\r
+       "_nc_captoinfo" @829    NONAME\r
+       "_nc_check_termtype"    @15     NONAME\r
+       "_nc_comment_end"       @819    NONAME\r
+       "_nc_comment_start"     @818    NONAME\r
+       "_nc_copy_entry"        @16     NONAME\r
+       "_nc_copy_termtype"     @22     NONAME\r
+       "_nc_curr_col"  @816    NONAME\r
+       "_nc_curr_file_pos"     @817    NONAME\r
+       "_nc_curr_line" @815    NONAME\r
+       "_nc_curr_token"        @803    NONAME\r
+       "_nc_do_color"  @1037   NONAME\r
+       "_nc_do_xmc_glitch"     @23     NONAME\r
+       "_nc_doalloc"   @25     NONAME\r
+       "_nc_entry_match"       @710    NONAME\r
+       "_nc_err_abort" @826    NONAME\r
+       "_nc_expand_try"        @27     NONAME\r
+       "_nc_expanded"  @51     NONAME\r
+       "_nc_fallback"  @625    NONAME\r
+       "_nc_find_entry"        @809    NONAME\r
+       "_nc_find_type_entry"   @810    NONAME\r
+       "_nc_first_name"        @622    NONAME\r
+       "_nc_free_entries"      @712    NONAME\r
+       "_nc_free_termtype"     @54     NONAME\r
+       "_nc_freeall"   @58     NONAME\r
+       "_nc_freewin"   @59     NONAME\r
+       "_nc_get_hash_table"    @60     NONAME\r
+       "_nc_get_table" @808    NONAME\r
+       "_nc_get_token" @811    NONAME\r
+       "_nc_get_tty_mode"      @63     NONAME\r
+       "_nc_get_type"  @823    NONAME\r
+       "_nc_getenv_num"        @65     NONAME\r
+       "_nc_has_mouse" @67     NONAME\r
+       "_nc_hash_map"  @73     NONAME\r
+       "_nc_head"      @700    NONAME\r
+       "_nc_home_terminfo"     @84     NONAME\r
+       "_nc_info_hash_table"   @804    NONAME\r
+       "_nc_infoalias_table"   @807    NONAME\r
+       "_nc_infotocap" @830    NONAME\r
+       "_nc_init_acs"  @91     NONAME\r
+       "_nc_init_entry"        @702    NONAME\r
+       "_nc_init_keytry"       @92     NONAME\r
+       "_nc_keep_tic_dir"      @93     NONAME\r
+       "_nc_key_names" @95     NONAME\r
+       "_nc_keypad"    @1024   NONAME\r
+       "_nc_lib_traceatr"      @96     NONAME\r
+       "_nc_lib_tracedmp"      @97     NONAME\r
+       "_nc_lib_tracemouse"    @98     NONAME\r
+       "_nc_make_oldhash"      @103    NONAME\r
+       "_nc_makenew"   @1025   NONAME\r
+       "_nc_memmove"   @106    NONAME\r
+       "_nc_merge_entry"       @704    NONAME\r
+       "_nc_msec_cost" @116    NONAME\r
+       "_nc_mvcur_init"        @1014   NONAME\r
+       "_nc_mvcur_resume"      @117    NONAME\r
+       "_nc_mvcur_wrap"        @1015   NONAME\r
+       "_nc_name_match"        @623    NONAME\r
+       "_nc_nulls_sent"        @118    NONAME\r
+       "_nc_oldnums"   @119    NONAME\r
+       "_nc_ospeed"    @120    NONAME\r
+       "_nc_outch"     @1026   NONAME\r
+       "_nc_outstr"    @1033   NONAME\r
+       "_nc_panelhook" @127    NONAME\r
+       "_nc_panic_mode"        @814    NONAME\r
+       "_nc_parse_entry"       @706    NONAME\r
+       "_nc_printf_string"     @129    NONAME\r
+       "_nc_push_token"        @812    NONAME\r
+       "_nc_read_entry"        @620    NONAME\r
+       "_nc_read_entry_source" @709    NONAME\r
+       "_nc_read_file_entry"   @621    NONAME\r
+       "_nc_read_termcap"      @130    NONAME\r
+       "_nc_remove_key"        @132    NONAME\r
+       "_nc_remove_string"     @137    NONAME\r
+       "_nc_render"    @1027   NONAME\r
+       "_nc_reset_input"       @813    NONAME\r
+       "_nc_resolve_uses"      @711    NONAME\r
+       "_nc_ripoffline"        @142    NONAME\r
+       "_nc_save_str"  @703    NONAME\r
+       "_nc_screen_chain"      @143    NONAME\r
+       "_nc_screen_init"       @144    NONAME\r
+       "_nc_screen_resume"     @145    NONAME\r
+       "_nc_screen_wrap"       @146    NONAME\r
+       "_nc_scroll_oldhash"    @147    NONAME\r
+       "_nc_scroll_optimize"   @1029   NONAME\r
+       "_nc_scroll_window"     @1030   NONAME\r
+       "_nc_scrolln"   @148    NONAME\r
+       "_nc_set_buffer"        @152    NONAME\r
+       "_nc_set_source"        @822    NONAME\r
+       "_nc_set_tty_mode"      @158    NONAME\r
+       "_nc_set_type"  @824    NONAME\r
+       "_nc_set_writedir"      @159    NONAME\r
+       "_nc_setupscreen"       @1031   NONAME\r
+       "_nc_sigaction" @160    NONAME\r
+       "_nc_signal_handler"    @1034   NONAME\r
+       "_nc_slk_format"        @161    NONAME\r
+       "_nc_slk_initialize"    @162    NONAME\r
+       "_nc_start_line"        @821    NONAME\r
+       "_nc_suppress_warnings" @828    NONAME\r
+       "_nc_synchook"  @1035   NONAME\r
+       "_nc_syntax"    @820    NONAME\r
+       "_nc_syserr_abort"      @825    NONAME\r
+       "_nc_tail"      @701    NONAME\r
+       "_nc_tic_dir"   @167    NONAME\r
+       "_nc_tic_expand"        @169    NONAME\r
+       "_nc_tic_written"       @170    NONAME\r
+       "_nc_timed_wait"        @1036   NONAME\r
+       "_nc_tinfo_fkeys"       @172    NONAME\r
+       "_nc_trace_buf" @178    NONAME\r
+       "_nc_trace_tries"       @183    NONAME\r
+       "_nc_trace_xnames"      @184    NONAME\r
+       "_nc_tracebits" @185    NONAME\r
+       "_nc_tracing"   @1010   NONAME\r
+       "_nc_trans_string"      @186    NONAME\r
+       "_nc_user_definable"    @187    NONAME\r
+       "_nc_visbuf"    @1012   NONAME\r
+       "_nc_visbuf2"   @188    NONAME\r
+       "_nc_vsscanf"   @189    NONAME\r
+       "_nc_waddch_nosync"     @1028   NONAME\r
+       "_nc_warning"   @827    NONAME\r
+       "_nc_wrap_entry"        @705    NONAME\r
+       "_nc_write_entry"       @708    NONAME\r
+       "_tracechar"    @403    NONAME\r
+       "acs_map"       @506    NONAME\r
+       "addch" @1      NONAME\r
+       "addchnstr"     @2      NONAME\r
+       "addchstr"      @3      NONAME\r
+       "addnstr"       @4      NONAME\r
+       "addstr"        @5      NONAME\r
+       "attr_get"      @14     NONAME\r
+       "attr_off"      @193    NONAME\r
+       "attr_on"       @211    NONAME\r
+       "attr_set"      @17     NONAME\r
+       "attroff"       @11     NONAME\r
+       "attron"        @12     NONAME\r
+       "attrset"       @13     NONAME\r
+       "baudrate"      @18     NONAME\r
+       "beep"  @19     NONAME\r
+       "bkgd"  @20     NONAME\r
+       "bkgdset"       @21     NONAME\r
+       "boolcodes"     @601    NONAME\r
+       "boolfnames"    @602    NONAME\r
+       "boolnames"     @600    NONAME\r
+       "border"        @24     NONAME\r
+       "box"   @26     NONAME\r
+       "can_change_color"      @28     NONAME\r
+       "cbreak"        @29     NONAME\r
+       "chgat" @30     NONAME\r
+       "clear" @31     NONAME\r
+       "clearok"       @32     NONAME\r
+       "clrtobot"      @33     NONAME\r
+       "clrtoeol"      @34     NONAME\r
+       "color_content" @35     NONAME\r
+       "color_set"     @234    NONAME\r
+       "copywin"       @37     NONAME\r
+       "cur_term"      @515    NONAME\r
+       "curs_set"      @38     NONAME\r
+       "curscr"        @501    NONAME\r
+       "def_prog_mode" @39     NONAME\r
+       "def_shell_mode"        @40     NONAME\r
+       "define_key"    @238    NONAME\r
+       "del_curterm"   @641    NONAME\r
+       "delay_output"  @41     NONAME\r
+       "delch" @42     NONAME\r
+       "deleteln"      @45     NONAME\r
+       "delscreen"     @43     NONAME\r
+       "delwin"        @44     NONAME\r
+       "derwin"        @46     NONAME\r
+       "doupdate"      @47     NONAME\r
+       "dupwin"        @48     NONAME\r
+       "echo"  @49     NONAME\r
+       "echochar"      @50     NONAME\r
+       "endwin"        @52     NONAME\r
+       "erasechar"     @53     NONAME\r
+       "filter"        @55     NONAME\r
+       "flash" @56     NONAME\r
+       "flushinp"      @57     NONAME\r
+       "getbkgd"       @240    NONAME\r
+       "getch" @61     NONAME\r
+       "getmouse"      @356    NONAME\r
+       "getnstr"       @62     NONAME\r
+       "getstr"        @64     NONAME\r
+       "getwin"        @66     NONAME\r
+       "halfdelay"     @68     NONAME\r
+       "has_colors"    @69     NONAME\r
+       "has_ic"        @70     NONAME\r
+       "has_il"        @71     NONAME\r
+       "has_key"       @242    NONAME\r
+       "hline" @72     NONAME\r
+       "idcok" @74     NONAME\r
+       "idlok" @75     NONAME\r
+       "immedok"       @76     NONAME\r
+       "inch"  @77     NONAME\r
+       "inchnstr"      @78     NONAME\r
+       "inchstr"       @79     NONAME\r
+       "init_color"    @81     NONAME\r
+       "init_pair"     @82     NONAME\r
+       "initscr"       @80     NONAME\r
+       "innstr"        @83     NONAME\r
+       "insch" @85     NONAME\r
+       "insdelln"      @86     NONAME\r
+       "insertln"      @87     NONAME\r
+       "insnstr"       @88     NONAME\r
+       "insstr"        @89     NONAME\r
+       "instr" @90     NONAME\r
+       "intrflush"     @94     NONAME\r
+       "is_linetouched"        @100    NONAME\r
+       "is_wintouched" @101    NONAME\r
+       "isendwin"      @99     NONAME\r
+       "keybound"      @251    NONAME\r
+       "keyname"       @102    NONAME\r
+       "keyok" @263    NONAME\r
+       "keypad"        @104    NONAME\r
+       "killchar"      @105    NONAME\r
+       "leaveok"       @107    NONAME\r
+       "longname"      @108    NONAME\r
+       "mcprint"       @266    NONAME\r
+       "meta"  @109    NONAME\r
+       "mouse_trafo"   @270    NONAME\r
+       "mouseinterval" @360    NONAME\r
+       "mousemask"     @358    NONAME\r
+       "move"  @110    NONAME\r
+       "mvaddch"       @111    NONAME\r
+       "mvaddchnstr"   @112    NONAME\r
+       "mvaddchstr"    @113    NONAME\r
+       "mvaddnstr"     @114    NONAME\r
+       "mvaddstr"      @115    NONAME\r
+       "mvchgat"       @121    NONAME\r
+       "mvcur" @122    NONAME\r
+       "mvdelch"       @123    NONAME\r
+       "mvderwin"      @124    NONAME\r
+       "mvgetch"       @125    NONAME\r
+       "mvgetnstr"     @126    NONAME\r
+       "mvgetstr"      @128    NONAME\r
+       "mvhline"       @131    NONAME\r
+       "mvinch"        @133    NONAME\r
+       "mvinchnstr"    @134    NONAME\r
+       "mvinchstr"     @135    NONAME\r
+       "mvinnstr"      @136    NONAME\r
+       "mvinsch"       @138    NONAME\r
+       "mvinsnstr"     @139    NONAME\r
+       "mvinsstr"      @140    NONAME\r
+       "mvinstr"       @141    NONAME\r
+       "mvprintw"      @149    NONAME\r
+       "mvscanw"       @150    NONAME\r
+       "mvvline"       @151    NONAME\r
+       "mvwaddch"      @153    NONAME\r
+       "mvwaddchnstr"  @154    NONAME\r
+       "mvwaddchstr"   @155    NONAME\r
+       "mvwaddnstr"    @156    NONAME\r
+       "mvwaddstr"     @157    NONAME\r
+       "mvwchgat"      @163    NONAME\r
+       "mvwdelch"      @164    NONAME\r
+       "mvwgetch"      @165    NONAME\r
+       "mvwgetnstr"    @166    NONAME\r
+       "mvwgetstr"     @168    NONAME\r
+       "mvwhline"      @171    NONAME\r
+       "mvwin" @173    NONAME\r
+       "mvwinch"       @174    NONAME\r
+       "mvwinchnstr"   @175    NONAME\r
+       "mvwinchstr"    @176    NONAME\r
+       "mvwinnstr"     @177    NONAME\r
+       "mvwinsch"      @179    NONAME\r
+       "mvwinsnstr"    @180    NONAME\r
+       "mvwinsstr"     @181    NONAME\r
+       "mvwinstr"      @182    NONAME\r
+       "mvwprintw"     @190    NONAME\r
+       "mvwscanw"      @191    NONAME\r
+       "mvwvline"      @192    NONAME\r
+       "napms" @194    NONAME\r
+       "newpad"        @195    NONAME\r
+       "newscr"        @502    NONAME\r
+       "newterm"       @196    NONAME\r
+       "newwin"        @197    NONAME\r
+       "nl"    @198    NONAME\r
+       "nocbreak"      @199    NONAME\r
+       "nodelay"       @200    NONAME\r
+       "noecho"        @201    NONAME\r
+       "nonl"  @202    NONAME\r
+       "noqiflush"     @203    NONAME\r
+       "noraw" @204    NONAME\r
+       "notimeout"     @205    NONAME\r
+       "numcodes"      @604    NONAME\r
+       "numfnames"     @605    NONAME\r
+       "numnames"      @603    NONAME\r
+       "ospeed"        @663    NONAME\r
+       "overlay"       @206    NONAME\r
+       "overwrite"     @207    NONAME\r
+       "pair_content"  @208    NONAME\r
+       "pechochar"     @210    NONAME\r
+       "pnoutrefresh"  @212    NONAME\r
+       "prefresh"      @213    NONAME\r
+       "printw"        @214    NONAME\r
+       "putp"  @215    NONAME\r
+       "putwin"        @216    NONAME\r
+       "qiflush"       @217    NONAME\r
+       "raw"   @218    NONAME\r
+       "redrawwin"     @219    NONAME\r
+       "refresh"       @220    NONAME\r
+       "reset_prog_mode"       @222    NONAME\r
+       "reset_shell_mode"      @223    NONAME\r
+       "resetty"       @221    NONAME\r
+       "resizeterm"    @272    NONAME\r
+       "restartterm"   @643    NONAME\r
+       "ripoffline"    @224    NONAME\r
+       "savetty"       @225    NONAME\r
+       "scanw" @226    NONAME\r
+       "scr_dump"      @227    NONAME\r
+       "scr_init"      @228    NONAME\r
+       "scr_restore"   @232    NONAME\r
+       "scr_set"       @233    NONAME\r
+       "scrl"  @229    NONAME\r
+       "scroll"        @230    NONAME\r
+       "scrollok"      @231    NONAME\r
+       "set_curterm"   @640    NONAME\r
+       "set_term"      @236    NONAME\r
+       "setscrreg"     @235    NONAME\r
+       "setupterm"     @644    NONAME\r
+       "slk_attr"      @274    NONAME\r
+       "slk_attr_set"  @276    NONAME\r
+       "slk_attroff"   @237    NONAME\r
+       "slk_attron"    @239    NONAME\r
+       "slk_attrset"   @241    NONAME\r
+       "slk_clear"     @243    NONAME\r
+       "slk_color"     @278    NONAME\r
+       "slk_init"      @244    NONAME\r
+       "slk_label"     @245    NONAME\r
+       "slk_noutrefresh"       @246    NONAME\r
+       "slk_refresh"   @247    NONAME\r
+       "slk_restore"   @248    NONAME\r
+       "slk_set"       @249    NONAME\r
+       "slk_touch"     @250    NONAME\r
+       "standend"      @253    NONAME\r
+       "standout"      @252    NONAME\r
+       "start_color"   @254    NONAME\r
+       "stdscr"        @500    NONAME\r
+       "strcodes"      @608    NONAME\r
+       "strfnames"     @609    NONAME\r
+       "strnames"      @606    NONAME\r
+       "subpad"        @255    NONAME\r
+       "subwin"        @256    NONAME\r
+       "syncok"        @257    NONAME\r
+       "termattrs"     @258    NONAME\r
+       "termname"      @259    NONAME\r
+       "tgetent"       @645    NONAME\r
+       "tgetflag"      @646    NONAME\r
+       "tgetnum"       @647    NONAME\r
+       "tgetstr"       @648    NONAME\r
+       "tgoto" @649    NONAME\r
+       "tigetflag"     @260    NONAME\r
+       "tigetnum"      @261    NONAME\r
+       "tigetstr"      @262    NONAME\r
+       "timeout"       @284    NONAME\r
+       "tparm" @653    NONAME\r
+       "tputs" @655    NONAME\r
+       "trace" @405    NONAME\r
+       "ttytype"       @514    NONAME\r
+       "typeahead"     @264    NONAME\r
+       "unctrl"        @361    NONAME\r
+       "ungetch"       @265    NONAME\r
+       "ungetmouse"    @357    NONAME\r
+       "untouchwin"    @267    NONAME\r
+       "use_default_colors"    @285    NONAME\r
+       "use_env"       @268    NONAME\r
+       "use_extended_names"    @286    NONAME\r
+       "vidattr"       @269    NONAME\r
+       "vidputs"       @271    NONAME\r
+       "vline" @273    NONAME\r
+       "vw_printw"     @287    NONAME\r
+       "vw_scanw"      @294    NONAME\r
+       "vwprintw"      @275    NONAME\r
+       "vwscanw"       @277    NONAME\r
+       "waddch"        @279    NONAME\r
+       "waddchnstr"    @280    NONAME\r
+       "waddchstr"     @281    NONAME\r
+       "waddnstr"      @282    NONAME\r
+       "waddstr"       @283    NONAME\r
+       "wattr_get"     @291    NONAME\r
+       "wattr_off"     @293    NONAME\r
+       "wattr_on"      @292    NONAME\r
+       "wattr_set"     @297    NONAME\r
+       "wattroff"      @289    NONAME\r
+       "wattron"       @288    NONAME\r
+       "wattrset"      @290    NONAME\r
+       "wbkgd" @295    NONAME\r
+       "wbkgdset"      @296    NONAME\r
+       "wborder"       @299    NONAME\r
+       "wchgat"        @301    NONAME\r
+       "wclear"        @302    NONAME\r
+       "wclrtobot"     @303    NONAME\r
+       "wclrtoeol"     @304    NONAME\r
+       "wcolor_set"    @298    NONAME\r
+       "wcursyncup"    @305    NONAME\r
+       "wdelch"        @306    NONAME\r
+       "wdeleteln"     @307    NONAME\r
+       "wechochar"     @308    NONAME\r
+       "wenclose"      @359    NONAME\r
+       "werase"        @310    NONAME\r
+       "wgetch"        @312    NONAME\r
+       "wgetnstr"      @313    NONAME\r
+       "wgetstr"       @315    NONAME\r
+       "whline"        @318    NONAME\r
+       "winch" @320    NONAME\r
+       "winchnstr"     @321    NONAME\r
+       "winchstr"      @322    NONAME\r
+       "winnstr"       @323    NONAME\r
+       "winsch"        @325    NONAME\r
+       "winsdelln"     @326    NONAME\r
+       "winsertln"     @327    NONAME\r
+       "winsnstr"      @328    NONAME\r
+       "winsstr"       @329    NONAME\r
+       "winstr"        @330    NONAME\r
+       "wmouse_trafo"  @300    NONAME\r
+       "wmove" @338    NONAME\r
+       "wnoutrefresh"  @339    NONAME\r
+       "wprintw"       @340    NONAME\r
+       "wredrawln"     @341    NONAME\r
+       "wrefresh"      @342    NONAME\r
+       "wresize"       @343    NONAME\r
+       "wscanw"        @344    NONAME\r
+       "wscrl" @345    NONAME\r
+       "wsetscrreg"    @346    NONAME\r
+       "wstandend"     @348    NONAME\r
+       "wstandout"     @347    NONAME\r
+       "wsyncdown"     @349    NONAME\r
+       "wsyncup"       @350    NONAME\r
+       "wtimeout"      @351    NONAME\r
+       "wtouchln"      @352    NONAME\r
+       "wvline"        @354    NONAME\r
diff --git a/misc/ncurses.ref b/misc/ncurses.ref
new file mode 100644 (file)
index 0000000..cf4de7d
--- /dev/null
@@ -0,0 +1,572 @@
+LIBRARY ncurses2 INITINSTANCE\r
+DESCRIPTION 'NCurses 1.9.9e-1 for OS/2 - base library'\r
+EXPORTS\r
+;************\r
+;* curses.h *\r
+;************\r
+\r
+       "stdscr"                        @500    NONAME ; variable\r
+       "curscr"                        @501    NONAME ; variable\r
+       "newscr"                        @502    NONAME ; variable\r
+       "COLORS"                        @503    NONAME ; variable\r
+       "COLOR_PAIRS"                   @504    NONAME ; variable\r
+       "color_pairs"                   @505    NONAME ; variable\r
+       "acs_map"                       @506    NONAME ; variable\r
+       "LINES"                         @510    NONAME ; variable\r
+       "COLS"                          @511    NONAME ; variable\r
+       "TABSIZE"                       @512    NONAME ; variable\r
+       "ESCDELAY"                      @513    NONAME ; variable\r
+       "ttytype"                       @514    NONAME ; variable\r
+       "cur_term"                      @515    NONAME ; variable\r
+\r
+       "addch"                         @1      NONAME ; generated\r
+       "addchnstr"                     @2      NONAME ; generated\r
+       "addchstr"                      @3      NONAME ; generated\r
+       "addnstr"                       @4      NONAME ; generated\r
+       "addstr"                        @5      NONAME ; generated\r
+;      "addnwstr"                      @6      NONAME ; missing\r
+;      "addwstr"                       @7      NONAME ; missing\r
+;      "add_wch"                       @8      NONAME ; missing\r
+;      "add_wchnstr"                   @9      NONAME ; missing\r
+;      "add_wchstr"                    @10     NONAME ; missing\r
+       "attroff"                       @11     NONAME ; generated\r
+       "attron"                        @12     NONAME ; generated\r
+       "attrset"                       @13     NONAME ; generated\r
+       "attr_get"                      @14     NONAME ; generated\r
+;      "attr_off"                      @15     NONAME ; implemented << NO!!\r
+;      "attr_on"                       @16     NONAME ; implemented << NO!!\r
+       "attr_set"                      @17     NONAME ; generated\r
+       "baudrate"                      @18     NONAME ; implemented\r
+       "beep"                          @19     NONAME ; implemented\r
+       "bkgd"                          @20     NONAME ; generated\r
+       "bkgdset"                       @21     NONAME ; generated\r
+;      "bkgrndset"                     @22     NONAME ; missing\r
+;      "bkgrnd"                        @23     NONAME ; missing\r
+       "border"                        @24     NONAME ; generated\r
+;      "border_set"                    @25     NONAME ; missing\r
+       "box"                           @26     NONAME ; generated\r
+;      "box_set"                       @27     NONAME ; missing\r
+       "can_change_color"              @28     NONAME ; implemented\r
+       "cbreak"                        @29     NONAME ; implemented\r
+       "chgat"                         @30     NONAME ; generated\r
+       "clear"                         @31     NONAME ; generated\r
+       "clearok"                       @32     NONAME ; implemented\r
+       "clrtobot"                      @33     NONAME ; generated\r
+       "clrtoeol"                      @34     NONAME ; generated\r
+       "color_content"                 @35     NONAME ; implemented\r
+       "COLOR_PAIR"                    @36     NONAME ; generated\r
+       "copywin"                       @37     NONAME ; implemented\r
+       "curs_set"                      @38     NONAME ; implemented\r
+       "def_prog_mode"                 @39     NONAME ; implemented\r
+       "def_shell_mode"                @40     NONAME ; implemented\r
+       "delay_output"                  @41     NONAME ; implemented\r
+       "delch"                         @42     NONAME ; generated\r
+       "delscreen"                     @43     NONAME ; implemented\r
+       "delwin"                        @44     NONAME ; implemented\r
+       "deleteln"                      @45     NONAME ; generated\r
+       "derwin"                        @46     NONAME ; implemented\r
+       "doupdate"                      @47     NONAME ; implemented\r
+       "dupwin"                        @48     NONAME ; implemented\r
+       "echo"                          @49     NONAME ; implemented\r
+       "echochar"                      @50     NONAME ; generated\r
+;      "echo_wchar"                    @51     NONAME ; missing\r
+       "endwin"                        @52     NONAME ; implemented\r
+       "erasechar"                     @53     NONAME ; implemented\r
+;      "erase_wchar"                   @54     NONAME ; missing\r
+       "filter"                        @55     NONAME ; implemented\r
+       "flash"                         @56     NONAME ; implemented\r
+       "flushinp"                      @57     NONAME ; implemented\r
+;      "getbkgd"                       @58     NONAME ; missing\r
+;      "getbkgrnd"                     @59     NONAME ; missing\r
+;      "getcchar"                      @60     NONAME ; missing\r
+       "getch"                         @61     NONAME ; generated\r
+       "getnstr"                       @62     NONAME ; generated\r
+;      "getn_wstr"                     @63     NONAME ; missing\r
+       "getstr"                        @64     NONAME ; generated\r
+;      "get_wch"                       @65     NONAME ; missing\r
+       "getwin"                        @66     NONAME ; not in XPG4\r
+;      "get_wstr"                      @67     NONAME ; missing\r
+       "halfdelay"                     @68     NONAME ; implemented\r
+       "has_colors"                    @69     NONAME ; implemented\r
+       "has_ic"                        @70     NONAME ; implemented\r
+       "has_il"                        @71     NONAME ; implemented\r
+       "hline"                         @72     NONAME ; generated\r
+;      "hline_set"                     @73     NONAME ; missing\r
+       "idcok"                         @74     NONAME ; implemented\r
+       "idlok"                         @75     NONAME ; implemented\r
+       "immedok"                       @76     NONAME ; implemented\r
+       "inch"                          @77     NONAME ; generated\r
+       "inchnstr"                      @78     NONAME ; generated\r
+       "inchstr"                       @79     NONAME ; generated\r
+       "initscr"                       @80     NONAME ; implemented\r
+       "init_color"                    @81     NONAME ; implemented\r
+       "init_pair"                     @82     NONAME ; implemented\r
+       "innstr"                        @83     NONAME ; generated\r
+;      "innwstr"                       @84     NONAME ; missing\r
+       "insch"                         @85     NONAME ; generated\r
+       "insdelln"                      @86     NONAME ; generated\r
+       "insertln"                      @87     NONAME ; generated\r
+       "insnstr"                       @88     NONAME ; generated\r
+       "insstr"                        @89     NONAME ; generated\r
+       "instr"                         @90     NONAME ; generated\r
+;      "ins_nwstr"                     @91     NONAME ; missing\r
+;      "ins_wch"                       @92     NONAME ; missing\r
+;      "ins_wstr"                      @93     NONAME ; missing\r
+       "intrflush"                     @94     NONAME ; implemented\r
+;      "inwstr"                        @95     NONAME ; missing\r
+;      "in_wch"                        @96     NONAME ; missing\r
+;      "in_wchstr"                     @97     NONAME ; missing\r
+;      "in_wchntr"                     @98     NONAME ; missing\r
+       "isendwin"                      @99     NONAME ; implemented\r
+       "is_linetouched"                @100    NONAME ; implemented\r
+       "is_wintouched"                 @101    NONAME ; implemented\r
+       "keyname"                       @102    NONAME ; implemented\r
+;      "key_name"                      @103    NONAME ; missing\r
+       "keypad"                        @104    NONAME ; implemented\r
+       "killchar"                      @105    NONAME ; implemented\r
+;      "killwchar"                     @106    NONAME ; missing\r
+       "leaveok"                       @107    NONAME ; implemented\r
+       "longname"                      @108    NONAME ; implemented\r
+       "meta"                          @109    NONAME ; implemented\r
+       "move"                          @110    NONAME ; generated\r
+       "mvaddch"                       @111    NONAME ; generated\r
+       "mvaddchnstr"                   @112    NONAME ; generated\r
+       "mvaddchstr"                    @113    NONAME ; generated\r
+       "mvaddnstr"                     @114    NONAME ; generated\r
+       "mvaddstr"                      @115    NONAME ; generated\r
+;      "mvaddnwstr"                    @116    NONAME ; missing\r
+;      "mvaddwstr"                     @117    NONAME ; missing\r
+;      "mvadd_wch"                     @118    NONAME ; missing\r
+;      "mvadd_wchnstr"                 @119    NONAME ; missing\r
+;      "mvadd_wchstr"                  @120    NONAME ; missing\r
+       "mvchgat"                       @121    NONAME ; generated\r
+       "mvcur"                         @122    NONAME ; implemented\r
+       "mvdelch"                       @123    NONAME ; generated\r
+       "mvderwin"                      @124    NONAME ; implemented\r
+       "mvgetch"                       @125    NONAME ; generated\r
+       "mvgetnstr"                     @126    NONAME ; generated\r
+;      "mvgetn_wstr"                   @127    NONAME ; missing\r
+       "mvgetstr"                      @128    NONAME ; generated\r
+;      "mvget_wch"                     @129    NONAME ; missing\r
+;      "mvget_wstr"                    @130    NONAME ; missing\r
+       "mvhline"                       @131    NONAME ; generated\r
+;      "mvhline_set"                   @132    NONAME ; missing\r
+       "mvinch"                        @133    NONAME ; generated\r
+       "mvinchnstr"                    @134    NONAME ; generated\r
+       "mvinchstr"                     @135    NONAME ; generated\r
+       "mvinnstr"                      @136    NONAME ; generated\r
+;      "mvinnwstr"                     @137    NONAME ; missing\r
+       "mvinsch"                       @138    NONAME ; generated\r
+       "mvinsnstr"                     @139    NONAME ; generated\r
+       "mvinsstr"                      @140    NONAME ; generated\r
+       "mvinstr"                       @141    NONAME ; generated\r
+;      "mvins_nwstr"                   @142    NONAME ; missing\r
+;      "mvins_wch"                     @143    NONAME ; missing\r
+;      "mvins_wstr"                    @144    NONAME ; missing\r
+;      "mvinwstr"                      @145    NONAME ; missing\r
+;      "mvin_wch"                      @146    NONAME ; missing\r
+;      "mvin_wchstr"                   @147    NONAME ; missing\r
+;      "mvin_wchntr"                   @148    NONAME ; missing\r
+       "mvprintw"                      @149    NONAME ; implemented\r
+       "mvscanw"                       @150    NONAME ; implemented\r
+       "mvvline"                       @151    NONAME ; generated\r
+;      "mvvline_set"                   @152    NONAME ; missing\r
+       "mvwaddch"                      @153    NONAME ; generated\r
+       "mvwaddchnstr"                  @154    NONAME ; generated\r
+       "mvwaddchstr"                   @155    NONAME ; generated\r
+       "mvwaddnstr"                    @156    NONAME ; generated\r
+       "mvwaddstr"                     @157    NONAME ; generated\r
+;      "mvwaddnwstr"                   @158    NONAME ; missing\r
+;      "mvwaddwstr"                    @159    NONAME ; missing\r
+;      "mvwadd_wch"                    @160    NONAME ; missing\r
+;      "mvwadd_wchnstr"                @161    NONAME ; missing\r
+;      "mvwadd_wchstr"                 @162    NONAME ; missing\r
+       "mvwchgat"                      @163    NONAME ; generated\r
+       "mvwdelch"                      @164    NONAME ; generated\r
+       "mvwgetch"                      @165    NONAME ; generated\r
+       "mvwgetnstr"                    @166    NONAME ; generated\r
+;      "mvwgetn_wstr"                  @167    NONAME ; missing\r
+       "mvwgetstr"                     @168    NONAME ; generated\r
+;      "mvwget_wch"                    @169    NONAME ; missing\r
+;      "mvwget_wstr"                   @170    NONAME ; missing\r
+       "mvwhline"                      @171    NONAME ; generated\r
+;      "mvwhline_set"                  @172    NONAME ; missing\r
+       "mvwin"                         @173    NONAME ; implemented\r
+       "mvwinch"                       @174    NONAME ; generated\r
+       "mvwinchnstr"                   @175    NONAME ; generated\r
+       "mvwinchstr"                    @176    NONAME ; generated\r
+       "mvwinnstr"                     @177    NONAME ; generated\r
+;      "mvwinnwstr"                    @178    NONAME ; missing\r
+       "mvwinsch"                      @179    NONAME ; generated\r
+       "mvwinsnstr"                    @180    NONAME ; generated\r
+       "mvwinsstr"                     @181    NONAME ; generated\r
+       "mvwinstr"                      @182    NONAME ; generated\r
+;      "mvwins_nwstr"                  @183    NONAME ; missing\r
+;      "mvwins_wch"                    @184    NONAME ; missing\r
+;      "mvwins_wstr"                   @185    NONAME ; missing\r
+;      "mvwinwstr"                     @186    NONAME ; missing\r
+;      "mvwin_wch"                     @187    NONAME ; missing\r
+;      "mvwin_wchnstr"                 @188    NONAME ; missing\r
+;      "mvwin_wchstr"                  @189    NONAME ; missing\r
+       "mvwprintw"                     @190    NONAME ; implemented\r
+       "mvwscanw"                      @191    NONAME ; implemented\r
+       "mvwvline"                      @192    NONAME ; generated\r
+;      "mvwvline_set"                  @193    NONAME ; missing\r
+       "napms"                         @194    NONAME ; implemented\r
+       "newpad"                        @195    NONAME ; implemented\r
+       "newterm"                       @196    NONAME ; implemented\r
+       "newwin"                        @197    NONAME ; implemented\r
+       "nl"                            @198    NONAME ; implemented\r
+       "nocbreak"                      @199    NONAME ; implemented\r
+       "nodelay"                       @200    NONAME ; implemented\r
+       "noecho"                        @201    NONAME ; implemented\r
+       "nonl"                          @202    NONAME ; implemented\r
+       "noqiflush"                     @203    NONAME ; implemented\r
+       "noraw"                         @204    NONAME ; implemented\r
+       "notimeout"                     @205    NONAME ; implemented\r
+       "overlay"                       @206    NONAME ; implemented\r
+       "overwrite"                     @207    NONAME ; implemented\r
+       "pair_content"                  @208    NONAME ; implemented\r
+       "PAIR_NUMBER"                   @209    NONAME ; generated\r
+       "pechochar"                     @210    NONAME ; implemented\r
+;      "pecho_wchar"                   @211    NONAME ; missing\r
+       "pnoutrefresh"                  @212    NONAME ; implemented\r
+       "prefresh"                      @213    NONAME ; implemented\r
+       "printw"                        @214    NONAME ; implemented\r
+       "putp"                          @215    NONAME ; implemented\r
+       "putwin"                        @216    NONAME ; implemented\r
+       "qiflush"                       @217    NONAME ; implemented\r
+       "raw"                           @218    NONAME ; implemented\r
+       "redrawwin"                     @219    NONAME ; generated\r
+       "refresh"                       @220    NONAME ; generated\r
+       "resetty"                       @221    NONAME ; implemented\r
+       "reset_prog_mode"               @222    NONAME ; implemented\r
+       "reset_shell_mode"              @223    NONAME ; implemented\r
+       "ripoffline"                    @224    NONAME ; implemented\r
+       "savetty"                       @225    NONAME ; implemented\r
+       "scanw"                         @226    NONAME ; implemented\r
+       "scr_dump"                      @227    NONAME ; implemented\r
+       "scr_init"                      @228    NONAME ; implemented\r
+       "scrl"                          @229    NONAME ; generated\r
+       "scroll"                        @230    NONAME ; generated\r
+       "scrollok"                      @231    NONAME ; implemented\r
+       "scr_restore"                   @232    NONAME ; implemented\r
+       "scr_set"                       @233    NONAME ; implemented\r
+;      "setcchar"                      @234    NONAME ; missing\r
+       "setscrreg"                     @235    NONAME ; generated\r
+       "set_term"                      @236    NONAME ; implemented\r
+       "slk_attroff"                   @237    NONAME ; implemented\r
+;      "slk_attr_off"                  @238    NONAME ; missing\r
+       "slk_attron"                    @239    NONAME ; implemented\r
+;      "slk_attr_on"                   @240    NONAME ; missing\r
+       "slk_attrset"                   @241    NONAME ; implemented\r
+;      "slk_attr_set"                  @242    NONAME ; missing\r
+       "slk_clear"                     @243    NONAME ; implemented\r
+       "slk_init"                      @244    NONAME ; implemented\r
+       "slk_label"                     @245    NONAME ; implemented\r
+       "slk_noutrefresh"               @246    NONAME ; implemented\r
+       "slk_refresh"                   @247    NONAME ; implemented\r
+       "slk_restore"                   @248    NONAME ; implemented\r
+       "slk_set"                       @249    NONAME ; implemented\r
+       "slk_touch"                     @250    NONAME ; implemented\r
+;      "slk_wset"                      @251    NONAME ; missing\r
+       "standout"                      @252    NONAME ; generated\r
+       "standend"                      @253    NONAME ; generated\r
+       "start_color"                   @254    NONAME ; implemented\r
+       "subpad"                        @255    NONAME ; implemented\r
+       "subwin"                        @256    NONAME ; implemented\r
+       "syncok"                        @257    NONAME ; implemented\r
+       "termattrs"                     @258    NONAME ; implemented\r
+       "termname"                      @259    NONAME ; implemented\r
+       "tigetflag"                     @260    NONAME ; implemented\r
+       "tigetnum"                      @261    NONAME ; implemented\r
+       "tigetstr"                      @262    NONAME ; implemented\r
+;      "timeout"                       @263    NONAME ; implemented << NO!!\r
+       "typeahead"                     @264    NONAME ; implemented\r
+       "ungetch"                       @265    NONAME ; implemented\r
+;      "unget_wch"                     @266    NONAME ; missing\r
+       "untouchwin"                    @267    NONAME ; generated\r
+       "use_env"                       @268    NONAME ; implemented\r
+       "vidattr"                       @269    NONAME ; implemented\r
+;      "vid_attr"                      @270    NONAME ; missing\r
+       "vidputs"                       @271    NONAME ; implemented\r
+;      "vid_puts"                      @272    NONAME ; missing\r
+       "vline"                         @273    NONAME ; generated\r
+;      "vline_set"                     @274    NONAME ; missing\r
+       "vwprintw"                      @275    NONAME ; implemented\r
+;      "vw_printw"                     @276    NONAME ; implemented << NO!!\r
+       "vwscanw"                       @277    NONAME ; implemented\r
+;      "vw_scanw"                      @278    NONAME ; implemented << NO!!\r
+       "waddch"                        @279    NONAME ; implemented\r
+       "waddchnstr"                    @280    NONAME ; implemented\r
+       "waddchstr"                     @281    NONAME ; generated\r
+       "waddnstr"                      @282    NONAME ; implemented\r
+       "waddstr"                       @283    NONAME ; generated\r
+;      "waddwstr"                      @284    NONAME ; missing\r
+;      "wadd_wch"                      @285    NONAME ; missing\r
+;      "wadd_wchnstr"                  @286    NONAME ; missing\r
+;      "wadd_wchstr"                   @287    NONAME ; missing\r
+       "wattron"                       @288    NONAME ; generated\r
+       "wattroff"                      @289    NONAME ; generated\r
+       "wattrset"                      @290    NONAME ; generated\r
+       "wattr_get"                     @291    NONAME ; generated\r
+       "wattr_on"                      @292    NONAME ; implemented\r
+       "wattr_off"                     @293    NONAME ; implemented\r
+;      "wattr_set"                     @294    NONAME ; implemented << NO!!\r
+       "wbkgd"                         @295    NONAME ; implemented\r
+       "wbkgdset"                      @296    NONAME ; generated\r
+;      "wbkgrndset"                    @297    NONAME ; missing\r
+;      "wbkgrnd"                       @298    NONAME ; missing\r
+       "wborder"                       @299    NONAME ; implemented\r
+;      "wborder_set"                   @300    NONAME ; missing\r
+       "wchgat"                        @301    NONAME ; implemented\r
+       "wclear"                        @302    NONAME ; implemented\r
+       "wclrtobot"                     @303    NONAME ; implemented\r
+       "wclrtoeol"                     @304    NONAME ; implemented\r
+       "wcursyncup"                    @305    NONAME ; implemented\r
+       "wdelch"                        @306    NONAME ; implemented\r
+       "wdeleteln"                     @307    NONAME ; generated\r
+       "wechochar"                     @308    NONAME ; implemented\r
+;      "wecho_wchar"                   @309    NONAME ; missing\r
+       "werase"                        @310    NONAME ; implemented\r
+;      "wgetbkgrnd"                    @311    NONAME ; missing\r
+       "wgetch"                        @312    NONAME ; implemented\r
+       "wgetnstr"                      @313    NONAME ; implemented\r
+;      "wgetn_wstr"                    @314    NONAME ; missing\r
+       "wgetstr"                       @315    NONAME ; generated\r
+;      "wget_wch"                      @316    NONAME ; missing\r
+;      "wget_wstr"                     @317    NONAME ; missing\r
+       "whline"                        @318    NONAME ; implemented\r
+;      "whline_set"                    @319    NONAME ; missing\r
+       "winch"                         @320    NONAME ; generated\r
+       "winchnstr"                     @321    NONAME ; implemented\r
+       "winchstr"                      @322    NONAME ; generated\r
+       "winnstr"                       @323    NONAME ; implemented\r
+;      "winnwstr"                      @324    NONAME ; missing\r
+       "winsch"                        @325    NONAME ; implemented\r
+       "winsdelln"                     @326    NONAME ; implemented\r
+       "winsertln"                     @327    NONAME ; generated\r
+       "winsnstr"                      @328    NONAME ; implemented\r
+       "winsstr"                       @329    NONAME ; generated\r
+       "winstr"                        @330    NONAME ; generated\r
+;      "wins_nwstr"                    @331    NONAME ; missing\r
+;      "wins_wch"                      @332    NONAME ; missing\r
+;      "wins_wstr"                     @333    NONAME ; missing\r
+;      "winwstr"                       @334    NONAME ; missing\r
+;      "win_wch"                       @335    NONAME ; missing\r
+;      "win_wchnstr"                   @336    NONAME ; missing\r
+;      "win_wchstr"                    @337    NONAME ; missing\r
+       "wmove"                         @338    NONAME ; implemented\r
+       "wnoutrefresh"                  @339    NONAME ; implemented\r
+       "wprintw"                       @340    NONAME ; implemented\r
+       "wredrawln"                     @341    NONAME ; implemented\r
+       "wrefresh"                      @342    NONAME ; implemented\r
+       "wresize"                       @343    NONAME ; implemented\r
+       "wscanw"                        @344    NONAME ; implemented\r
+       "wscrl"                         @345    NONAME ; implemented\r
+       "wsetscrreg"                    @346    NONAME ; implemented\r
+       "wstandout"                     @347    NONAME ; generated\r
+       "wstandend"                     @348    NONAME ; generated\r
+       "wsyncdown"                     @349    NONAME ; implemented\r
+       "wsyncup"                       @350    NONAME ; implemented\r
+       "wtimeout"                      @351    NONAME ; implemented\r
+       "wtouchln"                      @352    NONAME ; implemented\r
+;      "wunctrl"                       @353    NONAME ; missing\r
+       "wvline"                        @354    NONAME ; implemented\r
+;      "wvline_set"                    @355    NONAME ; missing\r
+\r
+       "getmouse"                      @356    NONAME\r
+       "ungetmouse"                    @357    NONAME\r
+       "mousemask"                     @358    NONAME\r
+       "wenclose"                      @359    NONAME\r
+       "mouseinterval"                 @360    NONAME\r
+\r
+; from unctrl.h\r
+       "unctrl"                        @361    NONAME\r
+\r
+; publics for tracing\r
+       "_tracef"                       @400    NONAME\r
+       "_tracedump"                    @401    NONAME\r
+       "_traceattr"                    @402    NONAME\r
+       "_tracechar"                    @403    NONAME\r
+       "_tracemouse"                   @404    NONAME\r
+       "trace"                         @405    NONAME\r
+\r
+;**********\r
+;* term.h *\r
+;**********\r
+       "boolnames"                     @600    NONAME ; variable\r
+       "boolcodes"                     @601    NONAME ; variable\r
+       "boolfnames"                    @602    NONAME ; variable\r
+       "numnames"                      @603    NONAME ; variable\r
+       "numcodes"                      @604    NONAME ; variable\r
+       "numfnames"                     @605    NONAME ; variable\r
+       "strnames"                      @606    NONAME ; variable\r
+       "strcodes"                      @608    NONAME ; variable\r
+       "strfnames"                     @609    NONAME ; variable\r
+\r
+; internals\r
+       "_nc_read_entry"                @620    NONAME\r
+       "_nc_read_file_entry"           @621    NONAME\r
+       "_nc_first_name"                @622    NONAME\r
+       "_nc_name_match"                @623    NONAME\r
+       "_nc_read_termcap_entry"        @624    NONAME\r
+       "_nc_fallback"                  @625    NONAME\r
+\r
+; entry points\r
+       "set_curterm"                   @640    NONAME\r
+       "del_curterm"                   @641    NONAME\r
+\r
+; entry points\r
+;      "putp"                          @642    NONAME  ; already defined\r
+       "restartterm"                   @643    NONAME\r
+       "setupterm"                     @644    NONAME\r
+       "tgetent"                       @645    NONAME\r
+       "tgetflag"                      @646    NONAME\r
+       "tgetnum"                       @647    NONAME\r
+       "tgetstr"                       @648    NONAME\r
+       "tgoto"                         @649    NONAME\r
+;      "tigetflag"                     @650    NONAME  ; already defined\r
+;      "tigetnum"                      @651    NONAME  ; already defined\r
+;      "tigetstr"                      @652    NONAME  ; already defined\r
+       "tparm"                         @653    NONAME\r
+       "tparam"                        @654    NONAME\r
+       "tputs"                         @655    NONAME\r
+\r
+;*************\r
+;* termcap.h *\r
+;*************\r
+; the functions are already defined in term.h\r
+       "PC"                            @660    NONAME\r
+       "UP"                            @661    NONAME\r
+       "BC"                            @662    NONAME\r
+       "ospeed"                        @663    NONAME\r
+\r
+;****************\r
+;* term_entry.h *\r
+;****************\r
+       "_nc_head"                      @700    NONAME\r
+       "_nc_tail"                      @701    NONAME\r
+\r
+; alloc_entry.c: elementary allocation code\r
+       "_nc_init_entry"                @702    NONAME\r
+       "_nc_save_str"                  @703    NONAME\r
+       "_nc_merge_entry"               @704    NONAME\r
+       "_nc_wrap_entry"                @705    NONAME\r
+\r
+; parse_entry.c: entry-parsing code\r
+       "_nc_parse_entry"               @706    NONAME\r
+       "_nc_capcmp"                    @707    NONAME\r
+\r
+; write_entry.c: writing an entry to the file system\r
+       "_nc_write_entry"               @708    NONAME\r
+\r
+; comp_parse.c: entry list handling\r
+       "_nc_read_entry_source"         @709    NONAME\r
+       "_nc_entry_match"               @710    NONAME\r
+       "_nc_resolve_uses"              @711    NONAME\r
+       "_nc_free_entries"              @712    NONAME\r
+\r
+;*********\r
+;* tic.h *\r
+;*********\r
+;      "_nc_tracing"                   @800    NONAME  ; defined below\r
+;      "_nc_tracef"                    @801    NONAME  ; missing\r
+;      "_nc_visbuf"                    @802    NONAME  ; defined below\r
+\r
+       "_nc_curr_token"                @803    NONAME\r
+\r
+       "_nc_info_hash_table"           @804    NONAME\r
+       "_nc_cap_hash_table"            @805    NONAME\r
+\r
+       "_nc_capalias_table"            @806    NONAME\r
+       "_nc_infoalias_table"           @807    NONAME\r
+       "_nc_get_table"                 @808    NONAME\r
+\r
+; comp_hash.c: name lookup\r
+       "_nc_find_entry"                @809    NONAME\r
+       "_nc_find_type_entry"           @810    NONAME\r
+\r
+; comp_scan.c: lexical analysis\r
+       "_nc_get_token"                 @811    NONAME\r
+       "_nc_push_token"                @812    NONAME\r
+       "_nc_reset_input"               @813    NONAME\r
+       "_nc_panic_mode"                @814    NONAME\r
+       "_nc_curr_line"                 @815    NONAME\r
+       "_nc_curr_col"                  @816    NONAME\r
+       "_nc_curr_file_pos"             @817    NONAME\r
+       "_nc_comment_start"             @818    NONAME\r
+       "_nc_comment_end"               @819    NONAME\r
+       "_nc_syntax"                    @820    NONAME\r
+       "_nc_start_line"                @821    NONAME\r
+\r
+; comp_error.c: warning & abort messages\r
+       "_nc_set_source"                @822    NONAME\r
+       "_nc_get_type"                  @823    NONAME\r
+       "_nc_set_type"                  @824    NONAME\r
+       "_nc_syserr_abort"              @825    NONAME\r
+       "_nc_err_abort"                 @826    NONAME\r
+       "_nc_warning"                   @827    NONAME\r
+       "_nc_suppress_warnings"         @828    NONAME\r
+\r
+; captoinfo.c: capability conversion\r
+       "_nc_captoinfo"                 @829    NONAME\r
+       "_nc_infotocap"                 @830    NONAME\r
+\r
+; comp_main.c: compiler main\r
+;      "_nc_progname"                  @831    NONAME  ; no need to export it\r
+\r
+\r
+; *****************\r
+; NCurses internals -- just for progs/*.exe and the library itself.\r
+; *****************\r
+\r
+; For broken linkers\r
+;      "_nc_screen"                    @1000   NONAME\r
+;      "_nc_alloc_screen"              @1001   NONAME\r
+;      "_nc_set_screen"                @1002   NONAME\r
+\r
+; For not so broken linkers\r
+       "SP"                            @1003   NONAME\r
+\r
+; Who knows what this is for\r
+       "_slk_init"                     @1004   NONAME\r
+       "slk_initialize"                @1005   NONAME\r
+\r
+; Tracing -- all functions used internally\r
+       "_nc_tracing"                   @1010   NONAME\r
+       "_nc_tputs_trace"               @1011   NONAME\r
+       "_nc_visbuf"                    @1012   NONAME\r
+\r
+; lib_acs.c\r
+       "init_acs"                      @1013   NONAME\r
+\r
+; lib_mvcur.c\r
+       "_nc_mvcur_init"                @1014   NONAME\r
+       "_nc_mvcur_wrap"                @1015   NONAME\r
+       "_nc_mvcur_scrolln"             @1016   NONAME\r
+\r
+; lib_mouse.c\r
+       "_nc_mouse_init"                @1017   NONAME\r
+       "_nc_mouse_event"               @1018   NONAME\r
+       "_nc_mouse_inline"              @1019   NONAME\r
+       "_nc_mouse_parse"               @1020   NONAME\r
+       "_nc_mouse_wrap"                @1021   NONAME\r
+       "_nc_mouse_resume"              @1022   NONAME\r
+       "_nc_max_click_interval"        @1023   NONAME\r
+\r
+; elsewhere ...\r
+       "_nc_keypad"                    @1024   NONAME\r
+       "_nc_makenew"                   @1025   NONAME\r
+       "_nc_outch"                     @1026   NONAME\r
+       "_nc_render"                    @1027   NONAME\r
+       "_nc_waddch_nosync"             @1028   NONAME\r
+       "_nc_scroll_optimize"           @1029   NONAME\r
+       "_nc_scroll_window"             @1030   NONAME\r
+       "_nc_setupscreen"               @1031   NONAME\r
+       "_nc_backspace"                 @1032   NONAME\r
+       "_nc_outstr"                    @1033   NONAME\r
+       "_nc_signal_handler"            @1034   NONAME\r
+       "_nc_synchook"                  @1035   NONAME\r
+       "_nc_timed_wait"                @1036   NONAME\r
+       "_nc_do_color"                  @1037   NONAME\r
diff --git a/misc/panel.def b/misc/panel.def
new file mode 100644 (file)
index 0000000..3d7dc9c
--- /dev/null
@@ -0,0 +1,25 @@
+LIBRARY panel5 INITINSTANCE TERMINSTANCE\r
+DESCRIPTION "NCurses-5-0-990828, module panel"\r
+CODE LOADONCALL\r
+DATA LOADONCALL NONSHARED MULTIPLE\r
+EXPORTS\r
+       "_nc_calculate_obscure" @16     NONAME\r
+       "_nc_free_obscure"      @17     NONAME\r
+       "_nc_override"  @18     NONAME\r
+       "_nc_panel_is_linked"   @19     NONAME\r
+       "_nc_panel_link_bottom" @20     NONAME\r
+       "bottom_panel"  @7      NONAME\r
+       "del_panel"     @5      NONAME\r
+       "hide_panel"    @3      NONAME\r
+       "move_panel"    @13     NONAME\r
+       "new_panel"     @8      NONAME\r
+       "panel_above"   @9      NONAME\r
+       "panel_below"   @10     NONAME\r
+       "panel_hidden"  @15     NONAME\r
+       "panel_userptr" @12     NONAME\r
+       "panel_window"  @1      NONAME\r
+       "replace_panel" @14     NONAME\r
+       "set_panel_userptr"     @11     NONAME\r
+       "show_panel"    @4      NONAME\r
+       "top_panel"     @6      NONAME\r
+       "update_panels" @2      NONAME\r
diff --git a/misc/panel.ref b/misc/panel.ref
new file mode 100644 (file)
index 0000000..e84045a
--- /dev/null
@@ -0,0 +1,18 @@
+LIBRARY panel2 INITINSTANCE\r
+DESCRIPTION 'NCurses 1.9.9e-1 for OS/2 - panel library'\r
+EXPORTS\r
+       "panel_window"          @1\r
+       "update_panels"         @2\r
+       "hide_panel"            @3\r
+       "show_panel"            @4\r
+       "del_panel"             @5\r
+       "top_panel"             @6\r
+       "bottom_panel"          @7\r
+       "new_panel"             @8\r
+       "panel_above"           @9\r
+       "panel_below"           @10\r
+       "set_panel_userptr"     @11\r
+       "panel_userptr"         @12\r
+       "move_panel"            @13\r
+       "replace_panel"         @14\r
+       "panel_hidden"          @15\r
index 9ac65b4d77145ca0ac336b09b7df9e28dbe1ba31..a5170773b09c1d63e57d79d19b0680b2b76250ad 100755 (executable)
@@ -29,7 +29,7 @@
 #
 # Author: Thomas E. Dickey <dickey@clark.net> 1996
 #
-# $Id: run_tic.sh,v 1.9 1998/02/11 12:13:50 tom Exp $
+# $Id: run_tic.sh,v 1.10 1998/05/31 00:29:34 mooney Exp $
 # This script is used to install terminfo.src using tic.  We use a script
 # because the path checking is too awkward to do in a makefile.
 #
@@ -84,6 +84,16 @@ case "$PATH" in
 *) PATH=../progs:$IP$bindir:$PATH ;;
 esac
 export PATH
+
+#
+# set another env var that doesn't get reset when `shlib' runs, so `shlib' uses
+# the PATH we just set.
+#
+NEWPATH=$PATH
+export NEWPATH
+PROG_BIN_DIR=$IP$bindir
+export PROG_BIN_DIR
+
 TERMINFO=$IP$ticdir ; export TERMINFO
 umask 022
 
index 1845a62e51ee620e9337ed4e1f26a9b49abd55cb..ee55062283f749322a209cb21c73cd43a2fb5a24 100755 (executable)
@@ -29,7 +29,7 @@
 #
 # Author: Thomas E. Dickey <dickey@clark.net> 1996
 #
-# $Id: shlib,v 1.4 1998/02/11 12:13:50 tom Exp $
+# $Id: shlib,v 1.5 1998/05/31 00:29:38 mooney Exp $
 # Use this script as a wrapper when running executables linked to shared
 # libraries on systems that use the $LD_LIBRARY_PATH variable and don't embed
 # the soname's path within the linked executable (such as IRIX), e.g,
 # Using a conventional link, with -L and -l options on Linux results in a
 # statically linked executable, which we don't want at all.
 #
+
+#
+# Make sure that we use the PATH that was set in run_tic.sh
+#
+if test X$NEWPATH != X ; then
+       PATH=$NEWPATH
+       export PATH
+fi
+
 q=""
 for p in lib ../lib
 do
index fedfe67ece42971022c2de682c10864e9ed6652e..ee3db89d8a1ad31464bf7857e576aa21bde69233 100644 (file)
@@ -1,14 +1,18 @@
 ######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
 #
-#      Version 10.2.0
+# This version of terminfo.src is distributed with ncurses.
+#
+#      Version 10.2.1
+#      $Date: 1999/10/24 00:28:48 $
 #      terminfo syntax
 #
 #      Eric S. Raymond         (current maintainer)
 #      John Kunze, Berkeley
 #      Craig Leres, Berkeley
 #
-# Please e-mail changes to terminfo@ccil.org.  The old termcap@berkeley.edu
-# address is no longer valid.
+# Please e-mail changes to terminfo@ccil.org; the old termcap@berkeley.edu
+# address is no longer valid.  The latest version can always be found at
+# <http://earthspace.net/terminfo>.
 #
 # PURPOSE OF THIS FILE:
 #
@@ -86,7 +90,9 @@
 # FILE ORGANIZATION:
 #
 # Comments in this file begin with # - they cannot appear in the middle
-# of a terminfo/termcap entry.  Individual capabilities are commented out by
+# of a terminfo/termcap entry (this feature had to be sacrificed in order
+# to allow standard terminfo and termcap syntax to be generated cleanly from
+# the master format).  Individual capabilities are commented out by
 # placing a period between the colon and the capability name.
 #
 # The file is divided up into major sections (headed by lines beginning with 
 # to see a listing of section headings.  The intent of the divisions is
 # (a) to make it easier to find things, and (b) to order the database so
 # that important and frequently-encountered terminal types are near the
-# front (so that you'll get reasonable search efficiency even if you don't
-# use reorder).  Minor sections usually correspond to manufacturers or
-# standard terminal classes.  Parenthesized words following manufacturer
-# names are type prefixes or product line names used by that manufacturers.
+# front (so that you'll get reasonable search efficiency from a linear
+# search of the termcap form even if you don't use reorder).  Minor sections
+# usually correspond to manufacturers or standard terminal classes. 
+# Parenthesized words following manufacturer names are type prefixes or
+# product line names used by that manufacturers.
 #
 # HOW TO READ THE ENTRIES:
 #
 #              only support one attribute without magic-cookie lossage.
 #              Their base entry is usually paired with another that
 #              uses magic cookies to support multiple attributes.
-#      -na     No arrow keys - termcap ignores arrow keys which are
-#              actually there on the terminal, so the user can use
-#              the arrow keys locally.
 #      -nam    No auto-margin - suppress <am> capability
 #      -nl     No labels - suppress soft labels
 #      -ns     No status line - suppress status line
 #      -vb     Use visible bell (<flash>) rather than <bel>.
 #      -w      Wide - in 132 column mode.
 # If a name has multiple suffixes and one is a line height, that one should 
-# go first.  Thus `aaa-30-s-rv' is recommended over `aaa-s-rv'.  
+# go first.  Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'.  
 # 
 # Entries with embedded plus signs are designed to be included through use/tc
 # capabilities, not used as standalone entries. 
 #
 # All the entries in this file have been edited to assume that the tabset
 # files directory is /usr/share/tabset, in conformance with the File Hierarchy
-# Standard for Linux and free BSD systems.  Some vendors (notably Sun) use
-# /usr/lib/tabset or (more recently) /usr/share/lib/tabset.  
+# Standard for Linux and open-source BSD systems.  Some vendors (notably Sun)
+# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset.  
 #
-# No curses package we know of uses these files.  If their location is an
-# issue, you will have to hand-patch the file locations before compiling
+# No curses package we know of actually uses these files.  If their location
+# is an issue, you will have to hand-patch the file locations before compiling
 # this file.
 # 
-# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL:
+# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL
 #
 # As the ANSI/ECMA-48 standard and variants take firmer hold, and as
 # character-cell terminals are increasingly replaced by X displays, much of
 # There are no guarantees anywhere.  Svaha!
 #
 
-######## STANDARD AND SPECIAL TYPES
+######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES
 #
 # This section describes terminal classes and maker brands that are still
 # quite common.
@@ -316,7 +320,7 @@ klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m),
        use=klone+acs, 
 
 # KOI8-R (RFC1489) acs (alternate character set)
-# From: QingLong <qinglong@Bolizm.ihep.su>, 24 Feb 1996.
+# From: Qing Long <qinglong@Bolizm.ihep.su>, 24 Feb 1996.
 klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset, 
        acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i\220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t\206u\207v\210w\211x\201y\230z\231{\267|\274}L~\225, 
        rmacs=\E[10m, smacs=\E[11m, 
@@ -378,7 +382,7 @@ ansi-mini|any ansi terminal with pessimistic assumptions,
 # not to require any -- even at 9600 bps.  If you encounter problems,
 # try including the padding specifications.
 #
-# Note: the "as" and "ae" specifications are not implemented here, for
+# Note: the :as: and :ae: specifications are not implemented here, for
 # the available termcap documentation does not make clear WHICH alternate
 # character set to specify.  ANSI 3.64 seems to make allowances for several.
 # Please make the appropriate adjustments to fit your needs -- that is
@@ -468,8 +472,7 @@ ansi|ansi/pc-term compatible with color,
        u9=\E[c, 
        use=ecma+color, use=klone+sgr, use=ansi-m, 
 
-#
-# ANSI.SYS entries
+#### DOS ANSI.SYS variants
 #
 # This completely describes the sequences specified in the DOS 2.1 ANSI.SYS
 # documentation (except for the keyboard key reassignment feature, which
@@ -523,36 +526,34 @@ nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi
 #### ANSI console types
 #
 
-#### BeOS entry for Terminal program. Seems to be almost ANSI
-#      
+#### BeOS
+#
+# BeOS entry for Terminal program Seems to be almost ANSI
 beterm|BeOS Terminal, 
        am, eo, mir, msgr, xenl, xon, 
-       colors#8, cols#80, it#8, lines#25, pairs#64, 
-       bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
-       clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, 
+       colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64, 
+       bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, 
        csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, 
-       dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, 
-       el=\E[K, flash=\E[?5h\E[?5l$<200/>, home=\E[H, 
-       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, 
-       il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G, 
-       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
-       kend=\E[4~, kf1=\E[11~, kf10=\E[20~, kf11=\E[21~, 
-       kf12=\E[22~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, 
-       kf5=\E[15~, kf6=\E[16~, kf7=\E[17~, kf8=\E[18~, kf9=\E[19~, 
-       khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, 
-       nel=^M^J, op=\E[m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l, 
-       rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7, setab=\E[4%p1%dm, 
-       setaf=\E[3%p1%dm, setb=\E[%p1%'('%+%cm, 
-       setf=\E[%p1%{30}%+%cm, sgr0=\E[0;10m, smir=\E[4h, 
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR, 
-       u7=\E[6n, u8=\E[?6c, u9=\E[c, vpa=\E[%i%p1%dd, 
+       dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, 
+       home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, 
+       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, 
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kdch1=\E[3~, kend=\E[4~, kf1=\E[11~, kf10=\E[20~, 
+       kf11=\E[21~, kf12=\E[22~, kf2=\E[12~, kf3=\E[13~, 
+       kf4=\E[14~, kf5=\E[15~, kf6=\E[16~, kf7=\E[17~, kf8=\E[18~, 
+       kf9=\E[19~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
+       kspd=^Z, nel=^M^J, op=\E[m, rc=\E8, rev=\E[7m, ri=\EM, 
+       rmir=\E[4l, rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7, 
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
+       setb=\E[%p1%{40}%+%cm, setf=\E[%p1%{30}%+%cm, 
+       sgr0=\E[0;10m, smir=\E[4h, smso=\E[7m, smul=\E[4m, 
+       u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, vpa=\E[%i%p1%dd, 
 
-# This entry is good for the 1.2.13 version of the Linux console driver.
+#### Linux consoles
 #
-# Note: there are numerous broken linux entries out there, which didn't screw
-# up BSD termcap but hose ncurses's smarter cursor-movement optimization.
-# One common pathology is an incorrect tab length of 4.
+
+# This entry is good for the 1.2.13 or later version of the Linux console.
 #
 # ***************************************************************************
 # *                                                                         *
@@ -567,7 +568,7 @@ beterm|BeOS Terminal,
 #      string F26 ="\033[Z"
 # *                                                                         *
 # * This has to use a key slot which is unfortunate (any unused one will    *
-# # do, F26 is the higher-numbered one).  The change ought to be built      *
+# * do, F26 is the higher-numbered one).  The change ought to be built      *
 # * into the kernel tables.                                                 *
 # *                                                                         *
 # ***************************************************************************
@@ -578,27 +579,30 @@ beterm|BeOS Terminal,
 # 1.9.9. All linux kernels since 1.2.13 (at least) set the screen size
 # themselves; this entry assumes that capability.
 #
+# The 2.2.x kernels add a private mode that sets the cursor type; use that to
+# get a block cursor for cvvis.
+# reported by Frank Heckenbach <frank@g-n-u.de>.
 linux|linux console, 
        am, bce, eo, mir, msgr, xenl, xon, 
-       it#8, ncv@
+       it#8, ncv#2
        acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
-       bel=^G, civis=\E[?25l, clear=\E[H\E[J, cnorm=\E[?25h
-       cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP
-       dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K
-       flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG
-       ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL
-       il1=\E[L, ind=^J, kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~
-       kend=\E[4~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, 
-       kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
-       kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
-       kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E
-       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
+       bel=^G, civis=\E[?25l\E[?1c, clear=\E[H\E[J
+       cnorm=\E[?25h\E[?0c, cr=^M, csr=\E[%i%p1%d;%p2%dr
+       cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH
+       cuu1=\E[A, cvvis=\E[?25h\E[?8c, dch=\E[%p1%dP, dch1=\E[P
+       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J
+       el=\E[K, el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H
+       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@
+       il=\E[%p1%dL, il1=\E[L, ind=^J, kb2=\E[G, kbs=\177
+       kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A
+       kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, 
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
+       kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D
+       kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
        khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, 
        nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l, rmso=\E[27m, 
-       rmul=\E[24m, rs1=\Ec, sc=\E7, 
+       rmul=\E[24m, rs1=\Ec\E]R, sc=\E7, 
        sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, 
        smir=\E[4h, smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, 
        u7=\E[6n, u8=\E[?6c, u9=\E[c, vpa=\E[%i%p1%dd, 
@@ -615,7 +619,7 @@ linux-c-nc|linux console 1.3.x hack for ncurses only,
 linux-c|linux console 1.3.6+ with private palette for each virtual console, 
        ccc, 
        colors#8, pairs#64, 
-       initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%p'a'%+%c%e%p1%d%p2%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p3%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p4%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;, 
+       initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p3%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p4%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;, 
        oc=\E]R, 
        use=linux, 
 
@@ -630,11 +634,36 @@ linux-koi8|linux with koi8 alternate character set,
        acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i\276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v\211w\210x\201y\230z\231{\267|\274~\224, 
        use=linux, use=klone+koi8acs, 
 
-# Another entry for KOI8-r with QingLong's acsc.
-# (which one better complies the standard?)
+# Another entry for KOI8-r with Qing Long's acsc.
+# (which one better complies with the standard?)
 linux-koi8r|linux with koi8-r alternate character set, 
+       kbs=^H, kcub1=^H, kcud1=^J, 
        use=linux, use=klone+koi8acs, 
 
+# From:  Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
+mach|Mach Console, 
+       am, km, 
+       cols#80, it#8, lines#25, 
+       bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M, 
+       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, 
+       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
+       cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, 
+       el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J, 
+       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kdch1=\E[9, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf2=\EOQ, 
+       kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, 
+       kf9=\EOX, khome=\E[H, kich1=\E[@, kll=\E[F, knp=\E[U, 
+       kpp=\E[V, nel=^M^J, rev=\E[7m, rmso=\E[0m, sgr0=\E[0m, 
+       smso=\E[7m, 
+mach-bold|Mach Console with bold instead of underline, 
+       rmul=\E[0m, smul=\E[1m, 
+       use=mach, 
+
+# Entry for the latin1 and latin2 fonts
+linux-lat|linux with latin1 or latin2 alternate character set, 
+       acsc=+\020\,\021-\030.^Y0\333`\004a\013f\370g\361h\260i\316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u\215v\301w\302x\205y\363z\362{\343|\330}\234~\376, 
+       use=linux, 
+
 # SCO console and SOS-Syscons console for 386bsd
 # (scoansi: had unknown capabilities
 #      :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\
@@ -644,18 +673,38 @@ linux-koi8r|linux with koi8-r alternate character set,
 #      :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\
 # I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based
 # on the <smacs>=\E[12m  -- esr)
+#
+# klone+sgr-dumb is an error since the acsc does not match -TD
+#
+# In this description based on SCO's keyboard(HW) manpage list of default function key
+# values:
+#      F13-F24 are shifted F1-F12
+#      F25-F36 are control F1-F12
+#      F37-F48 are shift+control F1-F12
 scoansi|SCO Extended ANSI standard crt, 
        am, eo, xon, 
-       cols#80, it#8, lines#25, 
+       colors#8, cols#80, it#8, lines#25, pairs#64, 
+       acsc=0[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`ja0fxgqh2jYk?lZm@nEqDtCu4vAwBx3~y, 
        blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, 
        cub1=\E[D, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
        cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, 
-       ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S, kbs=^H, kcub1=\E[D, 
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[F, kf1=\E[M, 
-       kf10=\E[V, kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, 
-       kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, knp=\E[G, kpp=\E[I, 
-       ri=\E[T, 
-       use=klone+sgr-dumb, 
+       ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S, invis=\E[8m, kbeg=\E[E, 
+       kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, 
+       kcuu1=\E[A, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, 
+       kf12=\E[X, kf13=\E[Y, kf15=\E[a, kf16=\E[b, kf17=\E[c, 
+       kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, 
+       kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l, 
+       kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p, 
+       kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u, 
+       kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, 
+       kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], 
+       kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q, 
+       kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, 
+       kich1=\E[L, knp=\E[G, kpp=\E[I, op=\E[37;40m, rev=\E[7m, 
+       ri=\E[T, rmacs=\E[10m, rmso=\E[m, rmul=\E[m, 
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
+       sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m, 
+       sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m, 
 
 # This actually describes the generic SVr4 display driver for Intel boxes.
 # The <dim=\E[2m> isn't documented and therefore may not be reliable.
@@ -680,7 +729,7 @@ att6386|at386|386at|AT&T WGS 6386 console,
        knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S, rc=\E8, rev=\E[7m, 
        ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m, 
        sc=\E7, 
-       sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m, 
+       sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m, 
        sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m, 
        tbc=\E[2g, vpa=\E[%i%p1%dd, 
        use=klone+color, 
@@ -843,9 +892,40 @@ att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300,
        rmso=\E[m, rmul=\E[m, sgr0=\E[0;10m, smso=\E[7m, 
        smul=\E[4m, 
 
-# From: Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997
+# Sent by Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997, this is
+# from SGI's terminfo database.  SGI's entry shows F9-F12 with the codes
+# for the application keypad mode.  We have added iris-ansi-ap rather than
+# change the original to keypad mode.
+#
 # (iris-ansi: added rmam/smam based on init string -- esr)
-iris-ansi|IRIS emulating 40 line ANSI terminal (almost VT100), 
+#
+# This entry, and those derived from it, is used in xwsh (also known as
+# winterm).  Some capabilities that do not fit into the terminfo model
+# include the shift- and control-functionkeys:
+#
+# F1-F12 generate different codes when shift or control modifiers are used.
+# For example:
+#      F1              \E[001q
+#      shift F1        \E[013q
+#      control-F1      \E[025q
+#
+# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e.,
+# \EOP to \EOS.  The shifted and control modifiers still do the same thing.
+#
+# The cursor keys also have different codes:
+#      control-up      \E[162q
+#      control-down    \E[165q
+#      control-left    \E[159q
+#      control-right   \E[168q
+#
+#      shift-up        \E[161q
+#      shift-down      \E[164q
+#      shift-left      \E[158q
+#      shift-right     \E[167q
+#
+#      control-tab     \[072q
+#
+iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100), 
        am, 
        cols#80, it#8, lines#40, 
        bel=^G, bold=\E[1m, clear=\E[H\E[2J, 
@@ -859,18 +939,18 @@ iris-ansi|IRIS emulating 40 line ANSI terminal (almost VT100),
        kEND=\E[147q, kHOM=\E[143q, kLFT=\E[158q, kPRT=\E[210q, 
        kRIT=\E[167q, kSPD=\E[218q, kbs=^H, kcbt=\E[Z, kcub1=\E[D, 
        kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, 
-       kend=\E[146q, kent=^M, kf1=\E[001q, kf10=\EOQ, kf11=\EOR
-       kf12=\EOS, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q, 
-       kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q, 
-       kf9=\EOP, khome=\E[H, kich1=\E[139q, knp=\E[154q, 
-       kpp=\E[150q, kprt=\E[209q, krmir=\E[146q, kspd=\E[217q, 
-       nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\, rc=\E8
-       rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sc=\E7
-       sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m, 
+       kend=\E[146q, kent=^M, kf1=\E[001q, kf10=\E[010q
+       kf11=\E[011q, kf12=\E[012q, kf2=\E[002q, kf3=\E[003q, 
+       kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, 
+       kf8=\E[008q, kf9=\E[009q, khome=\E[H, kich1=\E[139q, 
+       knp=\E[154q, kpp=\E[150q, kprt=\E[209q, krmir=\E[146q, 
+       kspd=\E[217q, nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\
+       rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m
+       sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m, 
        tbc=\E[3g, 
 iris-ansi-ap|IRIS ANSI in application-keypad mode, 
-       is2=\E[?1l\E>\E[?7h, kf10=\E[010q, kf11=\E[011q, 
-       kf12=\E[012q, rmkx=\E>, smkx=\E=
+       is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q, 
+       kf11=\E[011q, kf12=\E[012q, kf9=\E[009q
        use=iris-ansi, 
 
 # From the man-page, this is a quasi-vt100 emulator that runs on SGI's IRIX
@@ -929,13 +1009,14 @@ ibmpcx|xenix|ibmx|IBM PC xenix console display,
 # handle this case with the <ich1> capability, and prefers <am> for better
 # optimization.  Bug: The <op> capability resets attributes.
 # From: Michael Hunter <mphunter@qnx.com> 30 Jul 1996
+# (removed: <sgr=%?%p1%t\E<%;%p2%t\E[%;%p3%t\E(%;%p4%t\E{%;%p6%t\E<%;,>)
 qnx|qnx4|qnx console, 
        daisy, km, mir, msgr, xhpa, xt, 
        colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8, 
        acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t\303u\264v\301w\302x\263, 
        bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ, 
        cnorm=\Ey1, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
-       cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, cvvis=\Ey2, 
+       cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2, 
        dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee, 
        il1=\EE, ind=^J, kBEG=\377\356, kCAN=\377\263, 
        kCMD=\377\267, kCPY=\377\363, kCRT=\377\364, 
@@ -978,11 +1059,19 @@ qnx|qnx4|qnx console,
        krmir=\377\313, krpl=\377\362, krst=\377\352, 
        ksav=\377\361, kslt=\377\247, kspd=\377\335, 
        ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER, 
-       rep=\Eg%p2%' '%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER, 
+       rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER, 
        rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d, 
-       setf=\E@%p1%Pf%gb%gf%d%d, 
-       sgr=%?%p1%t\E<%;%p2%t\E[%;%p3%t\E(%;%p4%t\E{%;%p6%t\E<%;, 
-       sgr0=\E}\E]\E>\E), smcup=\Ei, smso=\E(, smul=\E[, 
+       setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei, 
+       smso=\E(, smul=\E[, 
+
+# From: Federico Bianchi <bianchi@pc-arte2.arte.unipi.it>, 1 Jul 1998
+# (esr: commented out <scp> and <rmcup> to avoid warnings.)
+# (TD: derive from original qnx4 entry)
+qnxt2|qnx 2.15 serial terminal, 
+       am, 
+       civis@, cnorm@, cvvis@, dch1@, ich1@, kRES@, kRPL@, kUND@, kspd@, 
+       rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, 
+       use=qnx4, 
 
 #### NetBSD consoles
 #
@@ -994,15 +1083,15 @@ qnx|qnx4|qnx console,
 # the :Xs: flag. Then I split :is: into a size-independent <is1> and a
 # size-dependent <is2>.  Finally, I added <rmam>/<smam> -- esr)
 
-# NOTE: because the 386BSD "vi"/"elvis" seems to have a bug if
-# both <ich1> and <smir> are specified (an original VT220 
-# shows the same buggy behaviour!), <ich1> has been taken
-# out of this entry. for reference, it should be <ich1=\E[@>.
+# NOTE: <ich1> has been taken out of this entry. for reference, it should
+# be <ich1=\E[@>.  For discussion, see ICH/ICH1 VERSUS RMIR/SMIR below.
+# (esr: added <civis> and <cnorm> to resolve NetBSD Problem Report #4583)
 pcvtXX|pcvt vt200 emulator (DEC VT220), 
        am, km, mir, msgr, xenl, 
        it#8, vt#3, 
        acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~, 
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, 
+       bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
+       clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, 
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
        cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
@@ -1065,6 +1154,38 @@ pcvt50w|dec vt220 emulation with 50 lines and 132 cols,
        cols#132, lines#50, 
        is2=\E[1;50r\E[50;1H, use=pcvtXX, 
 
+# Terminfo entries to enable the use of the ncurses library in colour on a
+# NetBSD-arm32 console (only tested on a RiscPC).
+# Created by Dave Millen <dmill@globalnet.co.uk> 22.07.98
+# modified codes for setf/setb to setaf/setab, then to klone+color, corrected
+# typo in invis - TD
+arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480), 
+       am, bce, msgr, xenl, xon, 
+       cols#80, it#8, lines#30, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, 
+       clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, 
+       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, 
+       cuf=\E[%p1%dC, cuf1=\E[C$<2>, 
+       cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, 
+       cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, 
+       enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, 
+       invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H, 
+       kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, 
+       kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x, 
+       kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v, 
+       kf8=\E[l, kf9=\E[w, rc=\E8, rev=\E[6m$<2>, ri=\EM$<5>, 
+       rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>, 
+       rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, 
+       sc=\E7, 
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, 
+       sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, 
+       smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, 
+       use=ecma+sgr, use=klone+color, 
+
+arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768), 
+       cols#132, lines#50, use=arm100, 
+
 # NetBSD/x68k console vt200 emulator. This port runs on a 68K machine
 # manufactured by Sharp for the Japenese market.
 # From Minoura Makoto <minoura@netlaputa.or.jp>, 12 May 1996
@@ -1072,6 +1193,46 @@ x68k|x68k-ite|NetBSD/x68k ITE,
        cols#96, lines#32, 
        kclr=\E[9~, khlp=\E[28~, use=vt220, 
 
+# <tv@pobox.com>:
+# Entry for the DNARD OpenFirmware console, close to ANSI but not quite.
+#
+# (still unfinished, but good enough so far.)
+ofcons, 
+       bw, 
+       cols#80, lines#30, 
+       bel=^G, blink=\2337;2m, bold=\2331m, clear=^L, cr=^M, 
+       cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B, 
+       cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, 
+       cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P, 
+       dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K, 
+       flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL, 
+       il1=\233L, ind=^J, invis=\2338m, kbs=^H, kcub1=\233D, 
+       kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P, 
+       kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W, 
+       kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r, 
+       kf9=\2330p, knp=\233/, kpp=\233?, nel=^M^J, rev=\2337m, 
+       rmso=\2330m, rmul=\2330m, sgr0=\2330m, 
+
+# NetBSD "wscons" emulator in vt220 mode
+# These are micro-minimal and probably need to be redone for real
+# after the manner of the pcvt entries.
+wsvt25|NetBSD wscons in 25 line DEC VT220 mode, 
+       cols#80, lines#25, use=vt220, 
+
+wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta, 
+       km, 
+       cols#80, lines#25, use=vt220, 
+
+# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and 
+# DECstation/pmax.
+rcons|BSD rasterconsole, 
+       use=sun-il, 
+# Color version of above. Color currenly only provided by NetBSD.
+rcons-color|BSD rasterconsole with ANSI color, 
+       bce, 
+       colors#8, pairs#64, 
+       op=\E[m, setab=\E[4%dm, setaf=\E[3%dm, use=rcons, 
+
 #### FreeBSD console entries
 #
 # From: Andrey Chernov <ache@astral.msk.su> 29 Mar 1996
@@ -1097,22 +1258,23 @@ x68k|x68k-ite|NetBSD/x68k ITE,
 # Note that this disables standout with color.
 cons25w|ansiw|ansi80x25-raw|freebsd console (25-line raw mode), 
        am, bce, bw, eo, msgr, npc, 
-       colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64, 
+       colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64, 
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, 
-       cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, 
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, 
-       dim=\E[30;1m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, 
-       home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, 
-       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, 
-       indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D, 
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[F, 
-       kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf2=\E[N, 
-       kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, 
-       kf9=\E[U, khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I, 
-       nel=\E[E, op=\E[x, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, 
-       rmso=\E[m, rs1=\E[x\E[m\Ec, setab=\E[4%p1%dm, 
-       setaf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, 
+       cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, 
+       cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, 
+       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
+       cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, 
+       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, 
+       hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, ich1=\E[@, 
+       il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS, kb2=\E[E, 
+       kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, 
+       kcuu1=\E[A, kdch1=\177, kend=\E[F, kf1=\E[M, kf10=\E[V, 
+       kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, 
+       kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, 
+       kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rev=\E[7m, 
+       ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, rs1=\E[x\E[m\Ec, 
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m, 
+       smso=\E[7m, vpa=\E[%i%p1%dd, 
 cons25|ansis|ansi80x25|freebsd console (25-line ansi mode), 
        acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371, 
        use=cons25w, 
@@ -1199,30 +1361,34 @@ oldpc3|oldibmpc3|old IBM PC BSD/386 Console,
 # "stty rows NN", e.g. to use 24 lines.
 # (Color support from Kevin Rosenberg <kevin@cyberport.com>, 2 May 1996) 
 # Bug: The <op> capability resets attributes.
-bsdos|BSD/OS console, 
-       am, bw, eo, km, xon, 
-       colors#8, cols#80, it#8, lines#25, pairs#64, 
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M, 
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, 
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
-       cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[=8F, dl=\E[%p1%dM, 
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, 
-       il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, 
-       kcuu1=\E[A, khome=\E[H, kich1=\E[L, kll=\E[F, knp=\E[G, 
-       kpp=\E[I, nel=^M^J, op=\E[x, rc=\E8, rev=\E[7m, rmso=\E[0m, 
-       sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m, 
-       smso=\E[7m, 
-bsdos-bold|IBM PC BSD/386 Console with bold instead of underline, 
-       rmul=\E[0m, smul=\E[1m, 
-       use=bsdos, 
-
-# If you are BSDI, you want the following entries, for the moment.  
-# In release 2.0 they will probably phase out the pc3 and ibmpc3 names
-pc3|IBM PC BSD/386 Console, 
-       use=bsdos, 
-ibmpc3|pc3-bold|IBM PC BSD/386 Console with bold instead of underline, 
-       smul=\E[1m, 
-       use=bsdos-bold, 
+bsdos-pc-nobold|BSD/OS PC console w/o bold, 
+       am, eo, km, xon, 
+       cols#80, it#8, lines#25, 
+       bel=^G, clear=\Ec, cr=^M, cub=\E[%p1%dD, cub1=^H, 
+       cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
+       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
+       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, 
+       il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, 
+       kll=\E[F, knp=\E[G, kpp=\E[I, nel=^M^J, rc=\E8, sc=\E7, 
+       sgr=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;, 
+       use=klone+sgr, use=klone+color, 
+bsdos-pc|IBM PC BSD/OS Console, 
+       sgr=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, use=bsdos-pc-nobold, 
+
+# Old names for BSD/OS PC console used in releases before 4.1. 
+pc3|BSD/OS on the PC Console, 
+       use=bsdos-pc-nobold, 
+ibmpc3|pc3-bold|BSD/OS on the PC Console with bold instead of underline, 
+       use=bsdos-pc, 
+# BSD/OS on the SPARC 
+bsdos-sparc|Sun SPARC BSD/OS Console, 
+       use=sun, 
+        
+# BSD/OS on the PowerPC 
+bsdos-ppc|PowerPC BSD/OS Console, 
+       use=bsdos-pc, 
 
 #### DEC VT100 and compatibles
 #
@@ -1242,8 +1408,7 @@ ibmpc3|pc3-bold|IBM PC BSD/386 Console with bold instead of underline,
 # its name to Boundless Technologies; see http://www.boundless.com.
 #
 
-# (The <acsc>, <rmacs>, and <smacs> capabilities aren't in DEC's official
-# entry -- esr)
+# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
 vt52|dec vt52, 
        cols#80, it#8, lines#24, 
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
@@ -1908,6 +2073,83 @@ z340-nam|zstem vt340 terminal emulator 132col 42line (no automatic margins),
        rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, 
        use=z340, 
 
+# CRT is shareware.  It implements some xterm features, including mouse.
+crt|crt-vt220|CRT 2.3 emulating VT220, 
+       bce, msgr, 
+       colors#8, pairs#64, 
+       hts=\EH, op=\E[39;49m, setab=\E[4%p1%dm, 
+       setaf=\E[3%p1%dm, setb=\E[4%p1%dm, setf=\E[3%p1%dm, 
+       u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, 
+       use=vt220, 
+
+# This entry is for Tera Term Pro version 2.3, for MS-Windows 95/NT written by
+# T. Teranishi dated Mar 10, 1998.  It is a free software terminal emulator
+# (communication program) which supports:
+#
+#      - Serial port connections.
+#      - TCP/IP (telnet) connections.
+#      - VT100 emulation, and selected VT200/300 emulation.
+#      - TEK4010 emulation.
+#      - File transfer protocols (Kermit, XMODEM, ZMODEM, B-PLUS and
+#        Quick-VAN).
+#      - Scripts using the "Tera Term Language".
+#      - Japanese and Russian character sets.
+#
+# The program does not come with terminfo or termcap entries.  However, the
+# emulation (testing with vttest and ncurses) is reasonably close to vt100 (no
+# vt52 or doublesize character support; blinking is done with color).  Besides
+# the HPA, VPA extensions it also implements CPL and CNL.
+#
+# All of the function keys can be remapped.  This description shows the default
+# mapping, as installed.  Both vt100 PF1-PF4 keys and quasi-vt220 F1-F4 keys
+# are supported.  F13-F20 are obtained by shifting F3-F10.  The editing keypad
+# is laid out like vt220, rather than the face codes on the PC keyboard, i.e,
+#      kfnd    Insert
+#      kslt    Delete
+#      kich1   Home
+#      kdch1   PageUp
+#      kpp     End
+#      knp     PageDown
+#
+# ANSI colors are implemented, but cannot be combined with video attributes
+# except for reverse.
+#
+# No fonts are supplied with the program, so the acsc string is chosen to
+# correspond with the default Microsoft terminal font.
+#
+# Tera Term recognizes some xterm sequences, including those for setting and
+# retrieving the window title, and for setting the window size (i.e., using
+# "resize -s"), though it does not pass SIGWINCH to the application if the
+# user resizes the window with the mouse.
+teraterm|Tera Term Pro, 
+       km, xon@, 
+       ncv#43, vt@, 
+       acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
+       blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J, 
+       cnorm=\E[?25h, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
+       cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, 
+       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, 
+       flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG, 
+       il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, kf1=\E[11~, 
+       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, 
+       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, 
+       kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, 
+       kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, 
+       kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, 
+       kpp=\E[5~, kslt=\E[4~, op=\E[100m, rev=\E[7m, ri=\EM, 
+       rmso=\E[27m, rmul=\E[24m, sgr0=\E[m, smso=\E[7m, 
+       smul=\E[4m, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, 
+       vpa=\E[%i%p1%dd, 
+       use=klone+color, use=vt100, 
+
+# Tested with WinNT 4.0, the telnet application assumes the screensize is
+# 25x80.  This entry uses the 'Terminal' font, to get line-drawing characters.
+ms-vt100|MS telnet imitating dec vt100, 
+       lines#25, 
+       acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, 
+       tbc@, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\E[c, 
+       use=vt100, 
+
 #### X terminal emulators
 #
 # You can add the following line to your .Xdefaults to change the terminal type
@@ -1940,6 +2182,8 @@ x10term|vs100-x10|xterm terminal emulator (X10 window system),
        smso=\E[7m, smul=\E[4m, 
 # Compatible with the R5 xterm 
 # (from the XFree86 3.2 distribution, <blink=@> removed)
+# added khome/kend, rmir/smir, rmul/smul based on the R5 xterm code - TD
+# corrected typos in rs2 string - TD
 xterm-r5|xterm R5 version, 
        am, km, msgr, xenl, 
        cols#80, it#8, lines#24, 
@@ -1951,21 +2195,25 @@ xterm-r5|xterm R5 version,
        el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, 
        il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, 
        kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, 
-       kdl1=\E[31~, kel=\E[8~, kf0=\EOq, kf1=\E[11~, kf10=\E[21~, 
-       kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, kf3=\E[13~, 
-       kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, 
-       kf9=\E[20~, khome=\E[7~, kich1=\E[2~, kil1=\E[30~, 
-       knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM, 
-       rmkx=\E[?1l\E>, rmso=\E[m, 
-       rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, sc=\E7, 
+       kdl1=\E[31~, kel=\E[8~, kend=\E[4~, kf0=\EOq, kf1=\E[11~, 
+       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, 
+       kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, 
+       kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~, 
+       kil1=\E[30~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, 
+       rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, 
+       rmul=\E[m, 
+       rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H, 
+       sc=\E7, 
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, 
-       sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, tbc=\E[3g, 
+       sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, 
+       smul=\E[4m, tbc=\E[3g, 
 # Compatible with the R6 xterm
 # (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed)
+# added khome/kend - TD
 xterm-r6|xterm-old|xterm X11R6 version, 
        am, km, mir, msgr, xenl, 
        cols#80, it#8, lines#24, 
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M, 
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
@@ -1980,19 +2228,20 @@ xterm-r6|xterm-old|xterm X11R6 version,
        kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
        kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf5=\E[15~, 
        kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, 
-       kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, meml=\El
-       memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, 
+       kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~
+       meml=\El, memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, 
        rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, 
        rmso=\E[m, rmul=\E[m, 
        rs2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, sc=\E7, 
        sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, 
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, 
+       u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, 
 # This is the base xterm entry for the xterm supplied with XFree86 3.2 & up.
 # The name has been changed and some aliases have been removed.
 xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System), 
        am, bce, km, mir, msgr, xenl, 
        colors#8, cols#80, it#8, lines#24, pairs#64, 
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, 
        clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, 
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
@@ -2023,7 +2272,8 @@ xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, 
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h, 
        smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
-       tbc=\E[3g, vpa=\E[%i%p1%dd, 
+       tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, 
+       vpa=\E[%i%p1%dd, 
 
 # This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
 # codes for F1-F4 except while in VT220 mode.
@@ -2031,24 +2281,40 @@ xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System),
        kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 
        use=xterm-xf86-v32, 
 
-# This beta version will probably be released in XFree86 4.0 in 1998.
+# This version was released in XFree86 3.3.3 (November 1998).
 # Besides providing printer support, it exploits a new feature that allows
 # xterm to use terminfo-based descriptions with the titeInhibit resource.
-xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System), 
+xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System), 
        mc5i, 
-       mc0=\E[i, mc4=\E[4i, mc5=\E[5i, rmcup=\E[?1047l\E[?1048l, 
-       rs1=\Ec, smcup=\E[?1048h\E[?1047h, 
+       blink=\E[5m, ich1@, invis=\E[8m, 
+       is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kend=\E[4~, 
+       kfnd@, khome=\E[1~, kslt@, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, 
+       rmcup=\E[?1047l\E[?1048l, rs1=\Ec, 
+       rs2=\E[!p\E[?3;4l\E[4l\E>, 
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
+       smcup=\E[?1048h\E[?1047h, 
        use=xterm-xf86-v33, 
 
+# This beta version will probably be released in XFree86 4.0.
+xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System), 
+       ka1=\EOH, ka3=\E[5~, kb2=\EOE, kc1=\EOF, kc3=\E[6~, 
+       kdch1=\177, kend=\EOF, khome=\EOH, rmcup=\E[?1049l, 
+       smcup=\E[?1049h, 
+       use=xterm-xf86-v333, 
+
+xterm-xfree86|xterm-new|xterm terminal emulator (XFree86 4.0 Window System), 
+       use=xterm-xf86-v40, 
+
 # From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997
 xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1, 
        rmso=\E[m, rmul=\E[m, 
        use=xterm-xf86-v33, 
 
-# This is one of the variants from XFree86 3.3 (T.Dickey)
+# This is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey)
 xterm-16color|xterm with 16 colors like aixterm, 
        colors#16, ncv#32, pairs#256, 
-       setab@, setaf@, 
+       setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm, 
+       setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm, 
        setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m, 
        setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m, 
        use=xterm-xf86-v40, 
@@ -2065,9 +2331,9 @@ xterm-16color|xterm with 16 colors like aixterm,
 xterm-8bit|xterm terminal emulator 8-bit controls (X Window System), 
        am, bce, km, mc5i, mir, msgr, xenl, 
        colors#8, cols#80, it#8, lines#24, pairs#64, 
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
-       bel=^G, bold=\2331m, cbt=\233Z, civis=\233?25l
-       clear=\233H\2332J, cnorm=\233?25h, cr=^M, 
+       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z
+       civis=\233?25l, clear=\233H\2332J, cnorm=\233?25h, cr=^M, 
        csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H, 
        cud=\233%p1%dB, cud1=^J, cuf=\233%p1%dC, cuf1=\233C, 
        cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A, 
@@ -2075,36 +2341,39 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
        dl=\233%p1%dM, dl1=\233M, ech=\233%p1%dX, ed=\233J, 
        el=\233K, el1=\2331K, enacs=\E(B\E)0, 
        flash=\233?5h\233?5l, home=\233H, hpa=\233%i%p1%dG, 
-       ht=^I, hts=\210, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL, 
-       il1=\233L, ind=^J
+       ht=^I, hts=\210, ich=\233%p1%d@, il=\233%p1%dL, il1=\233L, 
+       ind=^J, invis=\2338m
        is2=\E7\E G\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>, 
        ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kbs=^H, 
        kc1=\217q, kc3=\217s, kcub1=\217D, kcud1=\217B, 
-       kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\217F
+       kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~
        kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~, 
        kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~, 
        kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~, 
        kf2=\23312~, kf20=\23334~, kf3=\23313~, kf4=\23314~, 
        kf5=\23315~, kf6=\23317~, kf7=\23318~, kf8=\23319~, 
-       kf9=\23320~, kfnd=\2331~, khome=\217H, kich1=\2332~
-       kmous=\233M, knp=\2336~, kpp=\2335~, kslt=\2334~
-       mc0=\233i, mc4=\2334i, mc5=\2335i, meml=\El, memu=\Em, 
-       op=\23339;49m, rc=\E8, rev=\2337m, ri=\215, rmacs=^O
-       rmam=\233?7l, rmcup=\2332J\233?47l\E8, rmir=\2334l
-       rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m, rs1=\Ec, 
+       kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M
+       knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i
+       meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m, 
+       ri=\215, rmacs=^O, rmam=\233?7l, rmcup=\233?1049l
+       rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m
+       rs1=\Ec, 
        rs2=\E7\E[62"p\E G\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>, 
        sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm, 
        setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, 
        setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, 
-       sgr=\2330%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, 
-       sgr0=\233m^O, smacs=^N, smam=\233?7h, smcup=\E7\233?47h, 
+       sgr=\2330%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
+       sgr0=\233m^O, smacs=^N, smam=\233?7h, smcup=\233?1049h, 
        smir=\2334h, smkx=\233?1h\E=, smso=\2337m, smul=\2334m, 
-       tbc=\2333g, vpa=\233%i%p1%dd, 
+       tbc=\2333g, u6=\233[%i%d;%dR, u7=\E[6n, u8=\233[?1;2c, 
+       u9=\E[c, vpa=\233%i%p1%dd, 
+
+xterm-24|vs100|xterms|xterm terminal emulator (X Window System), 
+       lines#24, use=xterm, 
 
-# This is xterm for ncurses. It mainly adds mappings for more high-half
-# characters.  Note that these will only work for fixed-width fonts.
-xterm|vs100|xterms|xterm terminal emulator (X Window System), 
-       acsc=++\,\,--..00``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+# This is xterm for ncurses.
+xterm|xterm terminal emulator (X Window System), 
+       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        kmous=\E[M, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, 
        use=xterm-r6, 
 
@@ -2115,17 +2384,18 @@ xterm|vs100|xterms|xterm terminal emulator (X Window System),
 xterm+sl|access X title line and icon name, 
        hs, 
        wsl#40, 
-       dsl=\E]0;\007, fsl=^G, tsl=\E]0;, 
+       dsl=\E]0;\007, fsl=^G, tsl=\E]0;, use=xterm, 
 xterm+sl-twm|access X title line (pacify twm-descended window managers), 
        hs, 
        wsl#40, 
-       dsl=\E]2;\007, fsl=^G, tsl=\E]2;, 
+       dsl=\E]2;\007, fsl=^G, tsl=\E]2;, use=xterm, 
 
 #
 # The following xterm variants don't depend on your base version
 #
+# xterm with bold instead of underline
 xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold, 
-       smso=\E[1m, 
+       smso=\E[7m, smul=\E[1m, 
        use=xterm, 
 # (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
 # (kterm should not invoke DEC Graphics as the alternate character set
@@ -2149,6 +2419,8 @@ xterm1|xterm terminal emulator ignoring the alternate screen buffer,
 # before ECMA-64 color support was folded into the main-line xterm release.
 # This entry is straight from color_xterm's maintainer.
 # From: Jacob Mandelson <jlm@ugcs.caltech.edu>, 09 Nov 1996
+# The README's with the distribution also say that it supports SGR 21, 24, 25
+# and 27, but they are not present in the terminfo or termcap.
 color_xterm|cx|cx100|color_xterm color terminal emulator for X, 
        am, km, mir, msgr, xenl, 
        colors#8, cols#80, it#8, lines#65, pairs#64, 
@@ -2176,6 +2448,15 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
        smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m, 
        smul=\E[4m, 
 
+# The 'nxterm' distributed with Redhat Linux is a slight rehack of
+# xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support
+# SGR 39 or 49.  SGR 0 does reset colors (along with everything else).  This
+# description is "compatible" with color_xterm, rxvt and XFree86 xterm, except
+# that each of those implements the home, end, delete keys differently.
+nxterm|xterm-color|generic color xterm, 
+       ncv@, 
+       op=\E[m, use=xterm-r6, use=klone+color, 
+
 # From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
 # Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
 # Notes:
@@ -2188,6 +2469,9 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
 #      ech=\E[%p1%dX,
 # but the latter does not work correctly.
 #
+# The distributed terminfo says it implements hpa and vpa, but they are not
+# implemented correctly, using relative rather than absolute positioning.
+#
 # rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM.
 # Since rxvt is not really compatible with xterm, it should be configured as
 # "rxvt" (monochrome) and "rxvt-color". 
@@ -2217,8 +2501,8 @@ rxvt-basic|rxvt terminal base (X Window System),
        kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, 
        kf9=\E[20~, kfnd=\E[1~, khome=\E[7~, kich1=\E[2~, 
        kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, rc=\E8, 
-       rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[?47l\E8, rmir=\E[4l
-       rmkx=\E>, rmso=\E[27m, rmul=\E[24m, 
+       rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8
+       rmir=\E[4l, rmkx=\E>, rmso=\E[27m, rmul=\E[24m, 
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, 
        rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>, 
        s0ds=\E(B, s1ds=\E(0, sc=\E7, sgr0=\E[0m\017, smacs=^N, 
@@ -2229,6 +2513,41 @@ rxvt|rxvt terminal emulator (X Window System),
        op=\E[39;49m, setab=\E[%p1%{40}%+%dm, 
        setaf=\E[%p1%{30}%+%dm, sgr0=\E[m\017, use=rxvt-basic, 
 
+# These (xtermc and xtermm) are distributed with Solaris.  They refer to a
+# variant of xterm which is apparently no longer supported, but are interesting
+# because they illustrate SVr4 curses mouse controls - T.Dickey
+xtermm|xterm terminal emulator (monocrome), 
+       am, km, mir, msgr, xenl, 
+       btns#3, cols#80, it#8, lines#24, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, blink=@, bold=\E[1m, clear=\E[H\E[2J, cr=^M, 
+       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D, 
+       cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
+       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
+       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, 
+       el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY, 
+       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, 
+       il=\E[%p1%dL, il1=\E[L, ind=^J, ka1=\EOq, ka3=\EOs, kb2=\EOr, 
+       kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB, 
+       kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kent=\EOM, kf0=\EOy, 
+       kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ, 
+       kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, 
+       kf9=\EOX, khome=\E[H, kmous=\E[^_, knp=\E[U, kpp=\E[V, 
+       rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM, rmacs=^O, 
+       rmcup=\E@0\E[?4r, rmso=\E[m, 
+       rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, 
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, 
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, 
+       sgr0=\E[m\017, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1, 
+       smso=\E[7m, tbc=\E[3g, 
+
+xtermc|xterm terminal emulator (color), 
+       colors#8, ncv#7, pairs#64, 
+       op=\E[100m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 
+       setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, 
+       setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, 
+       use=xtermm, 
+
 # From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
 # Here's a termcap entry I've been using for xterm_color, which comes
 # with BSD/OS 2.0, and the X11R6 contrib tape too I think.  Besides the
@@ -2259,7 +2578,7 @@ hpterm|X-hpterm|hp X11 terminal emulator,
        pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET, 
        rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, 
        rmul=\E&d@, 
-       sgr=\E&d%?%p7%t%'s'%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%'@'%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, 
+       sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, 
        sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB, 
        smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, 
 
@@ -2287,7 +2606,6 @@ xterms-sun|small (80x24) xterm with sunFunctionKeys true,
        cols#80, lines#24, use=xterm-sun, 
 
 # This is for the extensible terminal emulator on the X11R6 contrib tape.
-# (emu: I changed <setab>/<setaf> to <setb>/<setf> -- esr)
 emu|emu native mode, 
        mir, msgr, xon, 
        colors#15, cols#80, it#8, lines#24, pairs#64, vt#200, 
@@ -2308,11 +2626,11 @@ emu|emu native mode,
        kf7=\EF07, kf8=\EF08, kf9=\EF09, kfnd=\Efind, kich1=\Eins, 
        knp=\Enext, kpp=\Eprior, kslt=\Esel, oc=\Es0;\Er0;, 
        rev=\ES\ET, ri=\EF, rmacs=\0, rmir=\EX, rmso=\ES, rmul=\ES, 
-       rs2=\ES\Es0;\Er0;, setb=\Es%i%p1%d;, setf=\Er%i%p1%d;, 
-       sgr0=\ES, smacs=\0, smir=\EY, smso=\ES\ET, smul=\ES\EV
-       tbc=\Ej, 
+       rs2=\ES\Es0;\Er0;, setab=\Es%i%p1%d;, 
+       setaf=\Er%i%p1%d;, sgr0=\ES, smacs=\0, smir=\EY
+       smso=\ES\ET, smul=\ES\EV, tbc=\Ej, 
 
-######## MGR
+#### MGR
 #
 # MGR is a Bell Labs window system lighter-weight than X.
 # These entries describe MGR's xterm-equivalent. 
@@ -2380,7 +2698,7 @@ eterm|gnu emacs term.el terminal emulation,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\\E[J, 
+       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, 
        el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, 
        il=\E[%p1%dL, il1=\E[L, ind=^J, rev=\E[7m, 
        rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m, 
@@ -2397,22 +2715,22 @@ screen|VT 100/ANSI X3.64 virtual terminal,
        colors#8, cols#80, it#8, lines#24, pairs#64, 
        acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, 
-       clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, 
+       clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M, 
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, 
        cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, 
-       dl1=\E[M, ed=\E[J, el=\E[K, enacs=\E(B\E)0, flash=\Eg
-       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL
-       il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcub1=\EOD, kcud1=\EOB
-       kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kf1=\EOP, kf10=\E[21~
-       kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS
-       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
-       khome=\E[1~, kich1=\E[2~, kll=\E[4~, knp=\E[6~, kpp=\E[5~, 
-       nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l
-       rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m, rs2=\Ec, sc=\E7
-       sgr0=\E[m, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=
-       smso=\E[3m, smul=\E[4m, tbc=\E[3g, 
+       dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0
+       flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@
+       il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcub1=\EOD
+       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kf1=\EOP
+       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR
+       kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, 
+       kf9=\E[20~, khome=\E[1~, kich1=\E[2~, kll=\E[4~, knp=\E[6~, 
+       kpp=\E[5~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O
+       rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m
+       rs2=\Ec, sc=\E7, sgr0=\E[m, smacs=^N, smir=\E[4h
+       smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g, 
        use=ecma+color, 
 
 screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols, 
@@ -2448,6 +2766,90 @@ screen3|older VT 100/ANSI X3.64 virtual terminal,
        sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m, 
        smul=\E[4m, tbc=\E[3g, 
 
+# Francesco Potorti <F.Potorti@cnuce.cnr.it>:
+# NCSA telnet is one of the most used telnet clients for the Macintosh.  It has
+# been maintained until recently by the National Center for Supercomputer
+# Applications, and it is feature rich, stable and free.  It can be downloaded
+# from www.ncsa.edu.  This terminfo description file is based on xterm-vt220,
+# xterm+sl, and the docs at NCSA.  It works well.
+#
+# NCSA Telnet 2.6 for Macintosh in vt220 8-bit emulation mode
+# The terminal options should be set as follows:
+#         Xterm sequences ON
+#         use VT wrap mode ON
+#         use Emacs arrow keys OFF
+#         CTRL-COMND is Emacs meta ON
+#         8 bit mode ON
+#         answerback string: "ncsa-vt220-8"
+#         setup keys: all disabled
+#
+# Application mode is not used.
+#
+# Other special mappings:
+#      Apple           VT220
+#      HELP            Find
+#      HOME            Insert here
+#      PAGEUP          Remove
+#      DEL             Select
+#      END             Prev Screen
+#      PAGEDOWN        Next Screen
+#
+# Though it supports ANSI color, NCSA Telnet uses color to represent blinking
+# text.
+#
+# The status-line manipulation is a mapping of the xterm-compatible control
+# sequences for setting the window-title.  So you must use tsl and fsl in
+# pairs, since the latter ends the string that is loaded to the window-title.
+ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode, 
+       am, hs, km, mir, msgr, xenl, 
+       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
+       clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, 
+       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
+       cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
+       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
+       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, 
+       dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, 
+       flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH, 
+       ich=\E[%p1%d@, if=/usr/share/tabset/vt100, 
+       il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>, 
+       is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H, 
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~, 
+       kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~, 
+       kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, 
+       kf6=\E23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~, 
+       khome=\E[2~, knp=\E[6~, kpp=\E[3~, mc4=\E[4i, mc5=\E[5i, 
+       rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM, 
+       rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l, 
+       rmso=\E[27m, rmul=\E[24m, 
+       rs2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, sc=\E7, 
+       sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;, 
+       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7, 
+       smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, tsl=\E]0;, 
+       u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?62;1;6c, u9=\E[c, 
+ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, 
+       use=ncsa-m, use=klone+color, 
+ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, 
+       hs@, 
+       dsl@, fsl@, tsl@, use=ncsa, 
+ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode, 
+       hs@, 
+       dsl@, fsl@, tsl@, use=ncsa-m, 
+# alternate -TD:
+# The documented function-key mapping refers to the Apple Extended Keyboard
+# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6).  We use the VT220-style
+# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on
+# some keyboards and many applications require these as F1-F4.
+#
+ncsa-vt220|NCSA Telnet using vt220-compatible function keys, 
+       kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, 
+       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, 
+       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, 
+       kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~, 
+       kf8=\E[19~, kf9=\E[20~, 
+       use=ncsa, 
+
 #### Pilot Pro Palm-Top
 #
 # From: Jason Downs <downsj@downsj.com>, 15 Jun 1997 (Top Gun Telnet's author)
@@ -2459,7 +2861,7 @@ pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional,
        ind=^J, kbs=^H, kcub1=^H, kcud1=^J, knp=^L, kpp=^K, nel=\Em~\s, 
        rmso=\EB, smso=\Eb, 
 
-######## WORKSTATION CONSOLES
+######## COMMERCIAL WORKSTATION CONSOLES
 #
 
 #### Alpha consoles
@@ -2606,7 +3008,7 @@ psterm-fast|NeWS psterm fast version (flaky ctrl chars),
        rmso=^No, rmul=^Nu, sc=^], sgr0=^N*, smcup=^Ot, smir=^Oi, 
        smso=^Oo, smul=^Ou, tsl=^Ol, 
 
-#### NeXT Consoles
+#### NeXT consoles
 #
 # Use `glasstty' for the Workspace application
 #
@@ -2625,7 +3027,7 @@ nextshell|NeXT Shell application,
        bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, kbs=^H, kcub1=^H, 
        kcud1=^J, nel=^M^J, 
 
-### Sony NEWS workstations
+#### Sony NEWS workstations
 #
 
 # (news-unk: this had :KB=news: -- esr)
@@ -2696,9 +3098,6 @@ nwp512|news|nwp514|news40|vt100-bm|sony vt100 emulator 40 lines,
 #
 # (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr)
 nwp512-a|nwp514-a|news-a|news42|news40-a|sony vt100 emulator 42 line, 
-       
-       
-s, 
        lines#42, 
        is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8, use=news-old-unk, 
 #
@@ -2767,6 +3166,7 @@ nwp517-w|nwp-517-w|nwp-517 vt200 132 cols 50 rows,
 #
 
 # This ships with Sun's CDE in Solaris 2.5
+# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov <lav@video.yars.free.net>
 dtterm|CDE desktop terminal, 
        am, mir, msgr, xenl, xon, 
        colors#8, cols#80, it#8, lines#24, lm#0, pairs#64, 
@@ -2778,10 +3178,10 @@ dtterm|CDE desktop terminal,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
        dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, 
        dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, 
-       flash=\E[?5h$<200>\E[?5l, home=\E[H, ht=^I, hts=\EH, 
-       ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED
-       invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l, kbs=^H
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H, 
+       ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L
+       ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l
+       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
        kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, 
        kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
        kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
@@ -2796,7 +3196,7 @@ dtterm|CDE desktop terminal,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, 
        smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, 
 
-### Non-Unix Consoles
+#### Non-Unix Consoles
 #
 
 # Except for the "-emx" suffixes, these are as distributed with EMX 0.9b,
@@ -2866,6 +3266,19 @@ mono-emx|stupid monochrome ansi terminal with only one kind of emphasis,
        kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=^M^J, rev=\E[7m, 
        sgr0=\E[0m, 
 
+# Use this for cygwin32 (tested with beta 19.1)
+# underline is colored bright magenta
+# shifted kf1-kf12 are kf11-kf22
+cygwin|ansi emulation for cygwin32, 
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, 
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
+       kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, 
+       kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
+       khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmam@, smam@, 
+       use=ansi.sys, 
+
 # This entry fits the Windows NT console when the _POSIX_TERM environment
 # variable is set to 'on'.  While the Windows NT POSIX console is seldom used,
 # the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP
@@ -3048,7 +3461,7 @@ hp262x|HP 262x terminals,
        kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, 
        kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET, 
        krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, 
-       sgr=\E&d%'@'%?%p1%t%'B'%|%;%?%p2%t%'D'%|%;%?%p3%t%'B'%|%;%?%p4%t%'A'%|%;%c, 
+       sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%c, 
        sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, 
 
 # Note: no <home> on HPs since that homes to top of memory, not screen.
@@ -3255,7 +3668,7 @@ hp2645|hp45|HP 2645 series,
        ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, 
        kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB, 
        rmkx=\E&s0A, 
-       sgr=\E&d%'@'%?%p1%t%'B'%|%;%?%p2%t%'D'%|%;%?%p3%t%'B'%|%;%?%p4%t%'A'%|%;%?%p5%t%'H'%|%;%?%p6%t%'B'%|%;%c, 
+       sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c, 
        sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, 
        use=hpgeneric, 
 # You should use this terminal at 4800 baud or less.
@@ -3279,7 +3692,7 @@ hp2382a|hp2382|hewlett packard 2382a,
        acsc@, 
        pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s, 
        rmacs@, 
-       sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%'@'%+%e%'S'%;%e%?%ga%t%ga%'@'%+%e%'@'%;%;%c, 
+       sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c, 
        sgr0=\E&d@, smacs@, 
        use=hp+labels, use=scrhp, 
 
@@ -3307,7 +3720,7 @@ newhp|generic entry for new hewlett packard terminals,
        pfloc=\E&f1a%p1%dk0d%p2%l%dL%p2%s, 
        pfx=\E&f2a%p1%dk0d%p2%l%dL%p2%s, rev=\E&dB, ri=\ET, 
        rmacs=^O, rmir=\ER, rmso=\E&d@, rmul=\E&d@, rs1=\Eg, 
-       sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%'@'%+%e%'S'%;%e%?%ga%t%ga%'@'%+%e%'@'%;%;%c%?%p9%t\016%e\017%;, 
+       sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c%?%p9%t\016%e\017%;, 
        sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD, 
        tbc=\E3, 
        use=newhpkeyboard, 
@@ -3345,7 +3758,7 @@ hp2621b|hp 2621b with old style keyboard,
        lh#1, lm#48, lw#8, nlab#8, 
        kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, 
        kind=\ET, kll=\EF, kri=\ES, 
-       pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c%;%p2%s\E%'o'%p1%+%c\r, 
+       pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c%;%p2%s\E%{111}%p1%+%c\r, 
        smln=\E&jB, 
        use=hp2621, 
 
@@ -3491,7 +3904,7 @@ hp2|hpex2|hewlett-packard extended capabilities newer version,
        pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, 
        pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rmir=\ER, rmkx=\E&s0A, 
        rmln=\E&j@, rmso=\E&d@, rmul=\E&d@, 
-       sgr=\E&d%?%p7%t%'s'%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%'@'%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, 
+       sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, 
        sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smln=\E&jB, smso=\E&dB, 
        smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, 
 
@@ -3576,22 +3989,22 @@ hp700-wy|HP700/41 emulating wyse30,
        sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>, 
        smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c, 
 # (hp70092: added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr)
-hp70092|hp70092a|hp70092A|HP 700/92, 
+hp70092|hp70092a|hp70092A|70092|HP 700/92, 
        am, da, db, xhp, 
        cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, 
-       acsc=, bel=^G, blink=\E&dA, bold=\E&dB, cbt=\Ei
-       clear=\E&a0y0C\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC
-       cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH
-       dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL
-       kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC
-       kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep
-       kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew
-       khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF
-       knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, rev=\E&dB
-       ri=\ET, rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@
-       rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smacs=^N, smir=\EQ
-       smkx=\E&s1A, smln=\E&jB, smso=\E&dJ, smul=\E&dD, tbc=\E3
-       vpa=\E&a%p1%dY, 
+       acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA
+       bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, cub1=^H
+       cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA
+       dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I
+       hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED
+       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM
+       ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et
+       kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ
+       kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET
+       krmir=\ER, ktbc=\E3, rev=\E&dB, ri=\ET, rmacs=^O, rmir=\ER
+       rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, rmul=\E&d@
+       sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB
+       smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, 
 
 bobcat|sbobcat|HP 9000 model 300 console, 
        am, da, db, mir, xhp, 
@@ -3654,8 +4067,8 @@ dku7003|Honeywell Bull DKU 7003 all features described,
 # `diagnostic feature' that sending them a ^G while pin 22 (`Ring Indicator')
 # was being held to ground would trigger a send of the top line on the screen.
 # A quick fix might be to drop back to a cheesy 4-wire cable with pin 22
-# hanging in the air.
-#
+# hanging in the air. (Thanks to Eric Fischer, <eric@fudge.uchicago.edu>,
+# for clearing up this point.)
 
 adm1a|adm1|lsi adm1a, 
        am, 
@@ -3727,10 +4140,49 @@ adm11|LSI ADM-11,
        use=adm+sgr, 
 # From: Andrew Scott Beals <bandy@lll-crg.ARPA>
 # Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995
+# Supervisor mode info by Ari Wuolle, <awuolle@delta.hut.fi>, 27 Aug 1996
 # (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :".  This formerly had
 # <is2>=\Eq but that looked wrong; this <is2> is from Dave Yost <esquire!yost>
 # via BRL.  That entry asserted <xmc#1>, but I've left that out because 
 # neither earlier nor later ADMSs have it -- esr)
+#
+# You will need to get into the supervisor setup before you can set
+# baudrate etc. for your ADM-12+. Press Shift-Ctrl-Setup and you should
+# see a lot more setup options.
+# 
+# While in supervisor setup you can also use following codes:
+# 
+# Ctrl-P Personality character selections (configure for example what
+#        arrow keys send, if I recall correctly)
+# Ctrl-T tabs 1-80   use left&right to move and up to set and
+# Ctrl-V tabs 81-158 down to clear tab. Shift-Ctrl-M sets right margin at cursor
+# Ctrl-B Binary setup (probably not needed. I think that everything can
+#        be set using normal setup)
+# Ctrl-A Answerback mode (enter answerback message)
+# Ctrl-U User friendly mode (normal setup)
+# Ctrl-D Defaults entire setup and function keys from EPROM tables
+# Ctrl-S Save both setup and functions keys. Takes from 6 to 10 seconds.
+# Ctrl-R Reads both setup and functions keys from NVM.
+# Shift-Ctrl-X Unlock keyboard and cancel received X-OFF status
+# 
+# ADM-12+ supports hardware handshaking, but it is DTR/CTS as opposed to
+# RTS/CTS used nowadays with virtually every modem and computer. 19200
+# bps works fine with hardware flow control.
+# 
+# The following null-modem cable should fix this and enable you to use
+# RTS/CTS handshaking (which Linux supports, use CRTSCTS setting). Also
+# set ADM-12+ for DTR handshaking from supervisor setup.
+# 
+# PC Serial   ADM-12+
+#  --------   -------
+#         2 - 3
+#         3 - 2
+#         4 - 5
+#         5 - 20
+#       6,8 - 4
+#         7 - 7
+#        20 - 6,8
+#
 adm12|lsi adm12, 
        am, mir, 
        cols#80, it#8, lines#24, 
@@ -3968,8 +4420,13 @@ adm1178|1178|lsi adm1178,
 
 #### Prime
 #
-# Yes, Prime makes terminals.  These entries were posted by Kevin J. Cummings
-# <cummings@primerd.Prime.COM> on 14 Dec 1992 and lightly edited by esr.
+# Yes, Prime made terminals.  These entries were posted by Kevin J. Cummings
+# <cummings@primerd.prime.com> on 14 Dec 1992 and lightly edited by esr.
+# Prime merged with ComputerVision in the late 1980s; you can reach them at:
+#
+#      ComputerVision Services
+#      500 Old Connecticut Path
+#      Framingham, Mass.
 #
 
 # Standout mode is dim reverse-video.
@@ -3978,12 +4435,13 @@ pt100|pt200|wren|fenix|prime pt100/pt200,
        cols#80, it#8, lines#24, 
        cbt=\E[Z, clear=\E?, cr=^M, cub=\E[%p1%dD, cub1=^H, 
        cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C, 
-       cup=\E0%p1%'!'%+%c%p2%'!'%+%c, cuu=\E[%p1%dA, cuu1=\EM, 
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[M, ed=\E[J\E[r, 
-       el=\E[K\E[t, flash=\E$$<200/>\E$P, home=\E$B, ht=^I, 
-       il1=\E[L\E[t, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, 
-       kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=^M^J, rmcup=, 
-       rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, 
+       cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA, 
+       cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[M, 
+       ed=\E[J\E[r, el=\E[K\E[t, flash=\E$$<200/>\E$P, 
+       home=\E$B, ht=^I, il1=\E[L\E[t, ind=^J, kbs=^H, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=^M^J, 
+       rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m, 
+       sgr0=\E[m, 
        smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q, 
        smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m, 
 pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode, 
@@ -4024,6 +4482,9 @@ pt250w|Prime PT250 in 132-column mode,
 # model is the qvt520, which is vt420-compatible.
 #
 # There are some ancient printing Qume terminals under `Daisy Wheel Printers'
+#
+# If you inherit a Qume without docs, try Ctrl-Shift-Setup to enter its
+# setup mode.  Shift-s should be a configuration save to NVRAM.
 
 qvt101|qvt108|qume qvt 101 and QVT 108, 
        xmc#1, use=qvt101+, 
@@ -4412,7 +4873,7 @@ tvi924|televideo tvi924,
        kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, khome=^^, 
        kich1=\EQ, kil1=\EE, lf0=F1, lf1=F2, lf10=F11, lf2=F3, lf3=F4, 
        lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, 
-       pfkey=\E|%p1%'1'%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef, use=adm+sgr, 
+       pfkey=\E|%p1%{49}%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef, use=adm+sgr, 
 
 # TVI925 DIP switches.  In each of these, D = Down and U = Up,
 #
@@ -4801,7 +5262,7 @@ tvi970-2p|televideo 970 with using 2 pages of memory,
 # padding is needed, but adapted from the tvi920c termcap.  The <smso> and 
 # <smul> strings are klutzy, but at least use no screen space.
 # (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:".  I wish we knew <rmam>,
-# its absence means <smam>=\Ev isn't save to use. -- esr)
+# its absence means <smam>=\Ev isn't safe to use. -- esr)
 # From: Gene Rochlin <armsis@amber.berkeley.edu> 9/19/84. 
 # The <ed>/<kf0>/<kf1>/<khome>/<mc4>, and <mc5> caps are from BRL, which says:
 # F1 and F2 should be programmed as ^A and ^B; required for UNIFY.
@@ -4823,8 +5284,8 @@ tvi9065|televideo 9065,
        blink=\EG2, bold=\EG\,, cbt=\EI, civis=\E.0, clear=^Z, 
        cnorm=\E.3, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 
        cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L, 
-       cup=\E=%p1%' '%+%c%p2%' '%+%c, cuu=\E[%p1%dA, cuu1=^K
-       cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp, 
+       cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA
+       cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp, 
        dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY, 
        el=\ET, flash=\Eb$<15>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1, 
        ich=\E[%p1%d@, if=/usr/share/tabset/stdcrt, 
@@ -4837,10 +5298,10 @@ tvi9065|televideo 9065,
        kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, 
        kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, ll=\E[25;1H, 
        mc0=\E[0;0i, mc4=\Ea, mc5=\E`, nel=^M^J, 
-       pfkey=\E|%p1%'0'%+%c3%p2%s\031, 
-       pfloc=\E|%p1%'0'%+%c2%p2%s\031, 
-       pfx=\E|%p1%'0'%+%c1%p2%s\031, 
-       pln=\E_%p1%'?'%+%c%p2%s\r, prot=\E&, 
+       pfkey=\E|%p1%{48}%+%c3%p2%s\031, 
+       pfloc=\E|%p1%{48}%+%c2%p2%s\031, 
+       pfx=\E|%p1%{48}%+%c1%p2%s\031, 
+       pln=\E_%p1%{63}%+%c%p2%s\r, prot=\E&, 
        rep=\E[%p2%db%p1%c, rev=\EG4, 
        rf=/usr/share/tabset/stdcrt, ri=\Ej, rin=\E[%p1%dT, 
        rmacs=\E%, rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H, 
@@ -4899,7 +5360,7 @@ vi50adm|visual 50 in adm3a mode,
 vi55|Visual 55, 
        am, mir, msgr, 
        cols#80, it#8, lines#24, 
-       clear=\Ev, csr=\E_%p1%'A'%+%c%p2%'A'%+%c, cub1=^H, 
+       clear=\Ev, csr=\E_%p1%{65}%+%c%p2%{65}%+%c, cub1=^H, 
        cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, 
        cuu1=\EA, dch1=\Ew, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, 
        il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, kcub1=\ED, 
@@ -5057,8 +5518,8 @@ wy30|wyse30|Wyse 30,
        kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, 
        kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=^^, kich1=\EQ, 
        kil1=\EE, knp=\EK, kpp=\EJ, krpl=\Er, ll=^^^K, mc0=\EP, mc4=^T, 
-       mc5=^X, nel=^M^J, pfx=\Ez%p1%'?'%+%c%p2%s\177, 
-       pln=\Ez%p1%'/'%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>, 
+       mc5=^X, nel=^M^J, pfx=\Ez%p1%{63}%+%c%p2%s\177, 
+       pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>, 
        rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(, 
        sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, 
        sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10, 
@@ -5073,7 +5534,7 @@ wy30-mc|wyse30-mc|wyse 30 with magic cookies,
        ma@, xmc#1, 
        blink=\EG2, dim=\EGp, prot=\EG0\E), rmacs=\EG0\EH\003, 
        rmcup=\EG0, rmso=\EG0, 
-       sgr=\EG%'0'%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, 
+       sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, 
        sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=, 
        smso=\EG4, use=wy30, 
        use=adm+sgr, 
@@ -5110,8 +5571,8 @@ wy50|wyse50|Wyse 50,
        kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, 
        kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, 
        ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J, 
-       pfx=\Ez%p1%'?'%+%c%p2%s\177, 
-       pln=\Ez%p1%'/'%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E), 
+       pfx=\Ez%p1%{63}%+%c%p2%s\177, 
+       pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E), 
        ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(, 
        sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, 
        sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10, 
@@ -5130,7 +5591,7 @@ wy50-mc|wyse50-mc|wyse 50 with magic cookies,
        ma@, xmc#1, 
        blink=\EG2, dim=\EGp, prot=\EG0\E), rev=\EG4, 
        rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0, 
-       sgr=\EG%'0'%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, 
+       sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, 
        sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=, 
        smso=\EGt, use=wy50, 
        use=adm+sgr, 
@@ -5142,6 +5603,7 @@ wy50-w|wyse50-w|wyse 50 132-column,
 wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell, 
        bel@, 
        use=wy50-w, 
+
 #
 #      The Wyse 350 is a Wyse 50 with color.
 #      Unfortunately this means that it has magic cookies.
@@ -5184,11 +5646,11 @@ wy350|wyse350|Wyse 350,
        kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, 
        kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, 
        ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J, oc=\E%?, op=\EG0, 
-       pfx=\Ez%p1%'?'%+%c%p2%s\177, 
-       pln=\Ez%p1%'/'%+%c%p2%s\r, prot=\EG0\E), ri=\Ej, 
+       pfx=\Ez%p1%{63}%+%c%p2%s\177, 
+       pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\EG0\E), ri=\Ej, 
        rmacs=\EG0\EH\003, rmir=\Er, rmln=\EA11, setb=, 
-       setf=%?%p1%{0}%=%t%{76}%e%p1%{1}%=%t%{64}%e%p1%{2}%=%t%{8}%e%p1%{3}%=%t%{72}%e%p1%{4}%=%t%{4}%e%p1%{5}%=%t%{68}%e%p1%{6}%=%t%{12}%e%p1%{7}%=%t%{0}%;%PC\EG%gC%gA%+%'0'%+%c, 
-       sgr=%{0}%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;%PA\EG%?%gC%t%gC%e%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p5%t%{64}%|%;%;%gA%+%'0'%+%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, 
+       setf=%?%p1%{0}%=%t%{76}%e%p1%{1}%=%t%{64}%e%p1%{2}%=%t%{8}%e%p1%{3}%=%t%{72}%e%p1%{4}%=%t%{4}%e%p1%{5}%=%t%{68}%e%p1%{6}%=%t%{12}%e%p1%{7}%=%t%{0}%;%PC\EG%gC%gA%+%{48}%+%c, 
+       sgr=%{0}%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;%PA\EG%?%gC%t%gC%e%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p5%t%{64}%|%;%;%gA%+%{48}%+%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, 
        sgr0=\EG0\E(\EH\003%{0}%PA%{0}%PC, smacs=\EG0\EH\002, 
        smir=\Eq, smln=\EA10, tbc=\E0, tsl=\EF, 
        use=adm+sgr, 
@@ -5241,13 +5703,13 @@ wy120|wyse120|wy150|wyse150|Wyse 120/150,
        kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, 
        kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K, 
        mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>, 
-       pfloc=\EZ2%p1%'?'%+%c%p2%s\177, 
-       pfx=\EZ1%p1%'?'%+%c%p2%s\177, 
-       pln=\Ez%p1%'/'%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, 
+       pfloc=\EZ2%p1%{63}%+%c%p2%s\177, 
+       pfx=\EZ1%p1%{63}%+%c%p2%s\177, 
+       pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, 
        rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11, 
        rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>, 
        rs3=\EwG\Ee($<100>, 
-       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%'0'%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
+       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
        sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, 
        smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, 
        tbc=\E0, tsl=\EF, 
@@ -5324,13 +5786,13 @@ wy60|wyse60|Wyse 60,
        kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, 
        kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K, 
        mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>, 
-       pfloc=\EZ2%p1%'?'%+%c%p2%s\177, 
-       pfx=\EZ1%p1%'?'%+%c%p2%s\177, 
-       pln=\Ez%p1%'/'%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, 
+       pfloc=\EZ2%p1%{63}%+%c%p2%s\177, 
+       pfx=\EZ1%p1%{63}%+%c%p2%s\177, 
+       pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, 
        rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er, 
        rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>, 
        rs2=\EeG$<150>, rs3=\EwG\Ee($<200>, 
-       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%'0'%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
+       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
        sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, 
        smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, 
        tbc=\E0, tsl=\EF, 
@@ -5418,6 +5880,99 @@ wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell,
 wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell, 
        bel@, 
        use=wy99gt-w, 
+
+# Can't set tabs! Other bugs (ANSI mode only):
+# - can't redefine function keys (anyway, key redefinition in ANSI mode
+#   is too much complex to be described);
+# - meta key can't be described (the terminal forgets it when reset);
+# The xon-xoff handshaking can't be disabled while in ansi personality, so
+# emacs can't work at speed greater than 9600 baud.  No padding is needed at
+# this speed.
+#   dch1 has been commented out because it causes annoying glittering when
+# vi deletes one character at the beginning of a line with tabs in it.
+#   dch makes sysgen(1M) have a horrible behaviour when deleting
+# a screen and makes screen(1) behave badly, so it is disabled too. The nice
+# thing is that vi goes crazy if smir-rmir are present and both dch-dch1 are
+# not, so smir and rmir are commented out as well.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard), 
+       am, km, mc5i, mir, msgr, xenl, 
+       cols#80, it#8, lines#25, vt#3, 
+       acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~, 
+       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, 
+       clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=^M, 
+       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<1>, 
+       cub1=\010$<1>, cud=\E[%p1%dB, cud1=\ED, 
+       cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>, 
+       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, 
+       cvvis=\E[34l\E[?25h, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, 
+       ech=\E[%p1%dX, ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>, 
+       enacs=\E)0, flash=\E[?5h$<30/>\E[?5l, home=\E[H, 
+       hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, 
+       il1=\E[L, ind=\n$<1>, invis=\E[8m, 
+       is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i, 
+       kbs=^H, kcbt=\E[z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, 
+       kcuu1=\EOA, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, 
+       kf12=\E[24~, kf17=\E[K, kf18=\E[31~, kf19=\E[32~, kf2=\EOQ, 
+       kf20=\E[33~, kf21=\E[34~, kf22=\E[35~, kf23=\E[1~, 
+       kf24=\E[2~, kf3=\EOR, kf4=\EOS, kf5=\E[M, kf6=\E[17~, 
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, ll=\E[24E, mc0=\E[?19h, 
+       mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8, 
+       rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, 
+       rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m, 
+       rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E\E[4i, 
+       sc=\E7, 
+       sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;, 
+       sgr0=\E[m\017\E["q, smacs=^N, smam=\E[?7h, smir=\E[4h, 
+       smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, 
+
+#   This is the american terminal. Here tabs work fine.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard), 
+       hts=\EH, is3=\E[?5l, rs3=\E[?5l, tbc=\E[3g, 
+       use=wy99-ansi, 
+
+# This terminal (firmware version 02) has a lot of bugs:
+# - can't set tabs;
+# - other bugs in ANSI modes (see above).
+# This description disables handshaking when using cup. This is because
+# GNU emacs doesn't like Xon-Xoff handshaking. This means the terminal
+# cannot be used at speeds greater than 9600 baud, because at greater
+# speeds handshaking is needed even for character sending. If you use
+# DTR handshaking, you can use even greater speeds.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard), 
+       am, bw, hs, km, mc5i, mir, msgr, xon, 
+       cols#80, it#8, lines#25, wsl#46, 
+       acsc='x+y.wI~_vj(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G, 
+       blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032, 
+       cnorm=\E`4\E`1, cr=^M, cub1=^H, cud1=\Ej, cuf1=^L, 
+       cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, 
+       cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r, 
+       ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>, 
+       flash=\E\^1$<30/>\E\^0, fsl=^M, home=^^, ht=^I, il1=\EE, 
+       ind=^J, invis=\EG3, 
+       is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\EcD\024, 
+       ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, 
+       kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, 
+       kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r, 
+       kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r, 
+       kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r, 
+       kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, 
+       kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#, 
+       nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed., 
+       rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30, 
+       rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024, 
+       sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t%{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?%p9%t\EcE%e\EcD%;, 
+       sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30, 
+       smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF, 
+
+# This is the american terminal. Here tabs work.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard), 
+       hts=\E1, tbc=\E0, 
+       use=wy99f, 
+
 #
 #      The Wyse 160 is combination of the WY-60 and the WY-99gt.
 #      The reset strings are slow and the pad times very depending
@@ -5458,13 +6013,13 @@ wy160|wyse160|Wyse 160,
        kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, 
        kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K, 
        mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<1>, 
-       pfloc=\EZ2%p1%'?'%+%c%p2%s\177, 
-       pfx=\EZ1%p1%'?'%+%c%p2%s\177, 
-       pln=\Ez%p1%'/'%+%c%p2%s\r, prot=\E), ri=\Ej$<1>, 
+       pfloc=\EZ2%p1%{63}%+%c%p2%s\177, 
+       pfx=\EZ1%p1%{63}%+%c%p2%s\177, 
+       pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<1>, 
        rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er, 
        rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>, 
        rs2=\E`\:$<100>, rs3=\EwG\Ee($<140>, 
-       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%'0'%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
+       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
        sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, 
        smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, 
        tbc=\E0, tsl=\EF, 
@@ -5728,13 +6283,13 @@ wy325|wyse325|Wyse epc,
        kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, 
        kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K, 
        mc0=\EP, mc4=^T, mc5=\Ed#, 
-       pfloc=\EZ2%p1%'?'%+%c%p2%s\177, 
-       pfx=\EZ1%p1%'?'%+%c%p2%s\177, 
-       pln=\Ez%p1%'/'%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, 
+       pfloc=\EZ2%p1%{63}%+%c%p2%s\177, 
+       pfx=\EZ1%p1%{63}%+%c%p2%s\177, 
+       pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, 
        rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11, 
        rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>, 
        rs3=\EwG\Ee($<100>, 
-       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%'0'%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
+       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
        sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, 
        smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, tbc=\E0, 
        tsl=\EF, 
@@ -7237,6 +7792,122 @@ att630|AT&T 630 windowing terminal,
 att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines, 
        lines#24, use=att630, 
 
+# This is the att700 entry for 700 native emulation of the AT&T 700
+# terminal.  Comments are relative to changes from the 605V2 entry and
+# att730 on which the entry is based.  Comments show the terminfo
+# capability name, termcap name, and description.
+#
+# Here is what's going onm in the init string:
+#      ESC [ 50;4|     set 700 native mode (really is 605)
+# x    ESC [ 56;ps|    set lines to 24: ps=0; 40: ps=1 (plus status line)
+#      ESC [ 53;0|     set GenFlow to Xon/Xoff
+#      ESC [ 8 ;0|     set CR on NL 
+# x    ESC [ ? 3 l/h   set workspace: 80 col(l); 132 col(h)
+#      ESC [ ? 4 l     jump scroll 
+#      ESC [ ? 5 l/h   video: normal (l); reverse (h)
+#      ESC [ ?13 l     Labels on
+#      ESC [ ?15 l     parity check = no
+#      ESC [ 13 l      monitor mode off
+#      ESC [ 20 l      LF on NL (not CRLF on NL)
+#      ESC [ ? 7 h     autowrap on
+#      ESC [ 12 h      local echo off
+#      ESC ( B         GO = ASCII
+#      ESC ) 0         G1 = Special Char & Line Drawing
+#      ESC [ ? 31 l    Set 7 bit controls
+#
+# Note: Most terminals, especially the 600 family use Reverse Video for
+# standout mode.  DEC also uses reverse video.  The VT100 uses bold in addition
+# Assume we should stay with reverse video for 70..  However, the 605V2 exits
+# standout mode with \E[m (all normal attributes).  The 730 entry simply
+# exits reverse video which would leave other current attributes intact.  It
+# was assumed the 730 entry to be more correct so rmso has changed.  The
+# 605V2 has no sequences to turn individual attributes off, thus its setting
+# and the rmso/smso settings from the 730.
+#
+# Note: For the same reason as above in rmso I changed exit under-score mode
+# to specifically turn off underscore, rather than return to all normal 
+# attributes
+#
+# Note: The following pkey_xmit is taken from the 605V2 which contained the
+# capability as pfxl.  It was changed here to pfx since pfxl
+# will only compile successfully with Unix 4.0 tic.  Also note that pfx only
+# allows strings to be parameters and label values must be programmed as
+# constant strings.  Supposedly the pfxl of Version 4.0 allows both labels
+# and strings to be parameters.  The 605V2 pfx entry should be examined later
+# in this regard. For reference the 730 pfxl entry is shown here for comparison
+# 730 pfx entry:
+#     pfxl=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq\s\s\s
+# SYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s,
+#
+# (for 4.0 tic)
+#     pfxl=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t   F%p1%1d           %;%p2%s,
+#
+# (for <4.0 tic)
+#     pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t   F%p1%1d           %;%p2%s,
+#
+# From the AT&T 705 Multi-tasking terminal user's guide Page 8-8,8-9
+#
+# Port1 Interface
+#
+# modular 10 pin Connector
+# Left side       Right side
+# Pin 1 2 3 4 5 6 7 8 9 10
+#
+#        Key (notch) at bottom
+#
+# Pin    1 DSR
+#        3 DCD
+#        4 DTR
+#        5 Sig Ground
+#        6 RD
+#        7 SD
+#        8 CTS
+#        9 RTS
+#        10 Frame Ground
+#
+# The manual is 189 pages and is loaded with details about the escape codes,
+# etc..... Available from AT&T CIC 800-432-6600...
+# ask for Document number 999-300-660..
+#
+att700|AT&T 700 24x80 column display w/102key keyboard, 
+       am, eslok, hs, mir, msgr, xenl, xon, 
+       cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, 
+       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
+       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, 
+       clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, 
+       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
+       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, 
+       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
+       cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, 
+       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, 
+       enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4, 
+       fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, 
+       il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m, 
+       is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0\E[?31l\E[0m\017, 
+       is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z, 
+       kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, 
+       kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, 
+       kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, 
+       kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, 
+       kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq, 
+       kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu, 
+       kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu, 
+       kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, 
+       kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, 
+       kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, 
+       kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H, 
+       mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE, 
+       pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t   F%p1%1d           %;%p2%s, 
+       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, 
+       rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, rmacs=^O, 
+       rmir=\E[4l, rmln=\E[2p, rmso=\E[27m, rmul=\E[24m, 
+       rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|, sc=\E7, 
+       sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 
+       sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p, smso=\E[7m, 
+       smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g, 
+       tsl=\E7\E[99;%i%p1%dx, 
+
 # This entry was modified 3/13/90 by JWE.
 # fixes include additions of <enacs>, correcting <rep>, and modification
 # of <kHOM>.  (See comments below)
@@ -7493,7 +8164,7 @@ att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines,
 tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines, 
        lines#22, use=att505, 
 #
-# -------------------- TERMINFO FILE CAN BE SPLIT HERE -----------------------
+#### ------------------ TERMINFO FILE CAN BE SPLIT HERE ---------------------
 # This cut mark helps make life less painful for people running ncurses tic
 # on machines with relatively little RAM.  The file can be broken in half here
 # cleanly and compiled in sections -- no `use' references cross this cut
@@ -7723,7 +8394,7 @@ annarbor4080|aa4080|ann arbor 4080,
        am, 
        cols#80, lines#40, 
        bel=^G, clear=\014$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=^_, 
-       cup=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t%{12}%+%;%'@'%+%c, 
+       cup=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t%{12}%+%;%{64}%+%c, 
        cuu1=^N, home=^K, ht=^I, hts=^]^P1, ind=^J, kbs=^^, kcub1=^H, 
        kcud1=^J, kcuf1=^_, kcuu1=^N, khome=^K, tbc=^\^P^P, 
 
@@ -7963,6 +8634,7 @@ aaa-rv-unk|ann arbor unknown type,
 #      Hauppauge, NY 11788-3762
 #      Vox: (800)-231-5445
 #      Fax: (516)-342-7378
+#      Web: http://boundless.com
 #
 # Their voice mail used to describe the place as "SunRiver (formerly ADDS)". 
 # In 1995 Boundless acquired DEC's terminals business.  
@@ -8031,7 +8703,7 @@ vp3a+|viewpoint3a+|adds viewpoint 3a+,
        cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, 
        ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=^J, kbs=^H, kcub1=^H, 
        kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, nel=^M^J, rmso=\E(, 
-       sgr=\E0%'@'%?%p1%tQ%|%;%?%p2%t%'`'%|%;%?%p3%tP%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%?%p7%tD%|%;%c\E), 
+       sgr=\E0%{64}%?%p1%tQ%|%;%?%p2%t%{96}%|%;%?%p3%tP%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%?%p7%tD%|%;%c\E), 
        sgr0=\E(, smso=\E0Q\E), 
 vp60|viewpoint60|addsvp60|adds viewpoint60, 
        use=regent40, 
@@ -8065,7 +8737,7 @@ adds980|a980|adds consul 980,
        am, 
        cols#80, lines#24, 
        bel=^G, clear=\014$<1>\013@, cr=^M, cub1=^H, cud1=^J, 
-       cuf1=\E^E01, cup=\013%p1%'@'%+%c\E\005%p2%2d, 
+       cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d, 
        dl1=\E\017$<13>, il1=\E\016$<13>, ind=^J, kf0=\E0, kf1=\E1, 
        kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, 
        kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N, 
@@ -8136,7 +8808,7 @@ cit101e|C. Itoh CIT-101e,
 # Background: light; Keyclicks: silent; Auto wraparound: on; CRT saver:
 # on.  I also set up mine for parity (but you may not need it).  Then 
 # save the setup with ^S.
-# 
+# (cit101e-rv: added empty <rmcup> to suppress a tic warning. --esr)
 cit101e-rv|Citoh CIT-101e (sets reverse video), 
        am, eo, mir, msgr, xenl, xon, 
        cols#80, it#8, lines#24, 
@@ -8152,11 +8824,11 @@ cit101e-rv|Citoh CIT-101e (sets reverse video),
        is2=\E<\E>\E[?1l\E[?3l\E[?4l\E[?5h\E[?7h\E[?8h\E[3g\E[>5g\E(B\E[m\E[20l\E[1;24r\E[24;1H, 
        kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
        kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, 
-       rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmir=\E[4l, rmso=\E[m
-       rmul=\E[m, rs1=\Ec\E[?7h\E[>5g, sc=\E7, sgr0=\E[m
-       smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h, smso=\E[7m
-       smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n
-       u8=\E[?6c, u9=\E[c, 
+       rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmcup=, rmir=\E[4l
+       rmso=\E[m, rmul=\E[m, rs1=\Ec\E[?7h\E[>5g, sc=\E7
+       sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h
+       smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR
+       u7=\E[6n, u8=\E[?6c, u9=\E[c, 
 cit101e-n|CIT-101e w/o am, 
        am@, 
        cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J, use=cit101e, 
@@ -8864,11 +9536,184 @@ contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321,
 # the terminals group at Data General was shut down in 1991; all these
 # terminals have thus been discontinued.
 #
+# DG terminals have function keys that respond to the SHIFT and CTRL keys,
+# e.g., SHIFT-F1 generates a different code from F1.  To number the keys
+# sequentially, first the unmodified key codes are listed as F1 through F15. 
+# Then their SHIFT versions are listed as F16 through F30, their CTRL versions
+# are listed as F31 through F45, and their CTRL-SHIFT versions are listed as
+# F46 through F60.  This is done in the private "includes" below whose names
+# start with "dgkeys+".
+#
+# DG terminals generally support 8 bit characters.  For each of these terminals
+# two descriptions are supplied:
+#      1) A default description for 8 bits/character communications, which
+#         uses the default DG international character set and keyboard codes.
+#      2) A description with suffix "-7b" for 7 bits/character communications.
+#         This description must use the NON-DEFAULT native keyboard language.
+
+# Unmodified fkeys (kf1-kf11), Shift fkeys (kf12-kf22), Ctrl fkeys (kf23-kf33),
+# Ctrl/Shift fdkeys (kf34-kf44).
+
+dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys, 
+       ka1=\233020z, ka3=\233021z, kc1=\233022z, kc3=\233023z, 
+       kclr=\2332J, kcub1=\233D, kcud1=\233B, kcuf1=\233C, 
+       kcuu1=\233A, kel=\233K, kf1=\233001z, kf10=\233010z, 
+       kf11=\233011z, kf12=\233012z, kf13=\233013z, 
+       kf14=\233014z, kf15=\233000z, kf16=\233101z, 
+       kf17=\233102z, kf18=\233103z, kf19=\233104z, 
+       kf2=\233002z, kf20=\233105z, kf21=\233106z, 
+       kf22=\233107z, kf23=\233108z, kf24=\233109z, 
+       kf25=\233110z, kf26=\233111z, kf27=\233112z, 
+       kf28=\233113z, kf29=\233114z, kf3=\233003z, 
+       kf30=\233100z, kf31=\233201z, kf32=\233202z, 
+       kf33=\233203z, kf34=\233204z, kf35=\233205z, 
+       kf36=\233206z, kf37=\233207z, kf38=\233208z, 
+       kf39=\233209z, kf4=\233004z, kf40=\233210z, 
+       kf41=\233211z, kf42=\233212z, kf43=\233213z, 
+       kf44=\233214z, kf45=\233200z, kf46=\233301z, 
+       kf47=\233302z, kf48=\233303z, kf49=\233304z, 
+       kf5=\233005z, kf50=\233305z, kf51=\233306z, 
+       kf52=\233307z, kf53=\233308z, kf54=\233309z, 
+       kf55=\233310z, kf56=\233311z, kf57=\233312z, 
+       kf58=\233313z, kf59=\233314z, kf6=\233006z, 
+       kf60=\233300z, kf7=\233007z, kf8=\233008z, kf9=\233009z, 
+       khome=\233H, kprt=\233i, 
+
+dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys, 
+       ka1=\E[020z, ka3=\E[021z, kc1=\E[022z, kc3=\E[023z, 
+       kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kel=\E[K, kf1=\E[001z, kf10=\E[010z, kf11=\E[011z, 
+       kf12=\E[012z, kf13=\E[013z, kf14=\E[014z, kf15=\E[000z, 
+       kf16=\E[101z, kf17=\E[102z, kf18=\E[103z, kf19=\E[104z, 
+       kf2=\E[002z, kf20=\E[105z, kf21=\E[106z, kf22=\E[107z, 
+       kf23=\E[108z, kf24=\E[109z, kf25=\E[110z, kf26=\E[111z, 
+       kf27=\E[112z, kf28=\E[113z, kf29=\E[114z, kf3=\E[003z, 
+       kf30=\E[100z, kf31=\E[201z, kf32=\E[202z, kf33=\E[203z, 
+       kf34=\E[204z, kf35=\E[205z, kf36=\E[206z, kf37=\E[207z, 
+       kf38=\E[208z, kf39=\E[209z, kf4=\E[004z, kf40=\E[210z, 
+       kf41=\E[211z, kf42=\E[212z, kf43=\E[213z, kf44=\E[214z, 
+       kf45=\E[200z, kf46=\E[301z, kf47=\E[302z, kf48=\E[303z, 
+       kf49=\E[304z, kf5=\E[005z, kf50=\E[305z, kf51=\E[306z, 
+       kf52=\E[307z, kf53=\E[308z, kf54=\E[309z, kf55=\E[310z, 
+       kf56=\E[311z, kf57=\E[312z, kf58=\E[313z, kf59=\E[314z, 
+       kf6=\E[006z, kf60=\E[300z, kf7=\E[007z, kf8=\E[008z, 
+       kf9=\E[009z, khome=\E[H, kprt=\E[i, 
+
+dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys, 
+       kclr=^L, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kel=^K, 
+       kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^a, kf13=^^b, kf14=^^c, 
+       kf15=^^d, kf16=^^e, kf17=^^f, kf18=^^g, kf19=^^h, kf2=^^r, 
+       kf20=^^i, kf21=^^j, kf22=^^k, kf23=^^1, kf24=^^2, kf25=^^3, 
+       kf26=^^4, kf27=^^5, kf28=^^6, kf29=^^7, kf3=^^s, kf30=^^8, 
+       kf31=^^9, kf32=^^\:, kf33=^^;, kf34=^^!, kf35=^^", kf36=^^#, 
+       kf37=^^$, kf38=^^%, kf39=^^&, kf4=^^t, kf40=^^', kf41=^^(, 
+       kf42=^^), kf43=^^*, kf44=^^+, kf5=^^u, kf6=^^v, kf7=^^w, 
+       kf8=^^x, kf9=^^y, khome=^H, 
+
+dgkeys+15|Private entry describing 15 DG mode special keys, 
+       kHOM=^^^H, kLFT=^^^Y, kRIT=^^^X, ka1=^^\\, ka3=^^], kc1=^^\^, 
+       kc3=^^_, kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^|, kf13=^^}, 
+       kf14=^^~, kf15=^^p, kf16=^^a, kf17=^^b, kf18=^^c, kf19=^^d, 
+       kf2=^^r, kf20=^^e, kf21=^^f, kf22=^^g, kf23=^^h, kf24=^^i, 
+       kf25=^^j, kf26=^^k, kf27=^^l, kf28=^^m, kf29=^^n, kf3=^^s, 
+       kf30=^^`, kf31=^^1, kf32=^^2, kf33=^^3, kf34=^^4, kf35=^^5, 
+       kf36=^^6, kf37=^^7, kf38=^^8, kf39=^^9, kf4=^^t, kf40=^^\:, 
+       kf41=^^;, kf42=^^<, kf43=^^=, kf44=^^>, kf45=^^0, kf46=^^!, 
+       kf47=^^", kf48=^^#, kf49=^^$, kf5=^^u, kf50=^^%, kf51=^^&, 
+       kf52=^^', kf53=^^(, kf54=^^), kf55=^^*, kf56=^^+, kf57=^^\,, 
+       kf58=^^-, kf59=^^., kf6=^^v, kf60=^^\s, kf7=^^w, kf8=^^x, 
+       kf9=^^y, 
+
+# Data General color terminals use the "Tektronix" color model.  The total
+# number of colors varies with the terminal model, as does support for
+# attributes used in conjunction with color.
+
+# Removed u7, u8 definitions since they conflict with tack:
+#              Preserve user-defined colors in at least some cases.
+#      u7=^^Fh,
+#              Default is ACM mode.
+#      u8=^^F}20^^Fi^^F}21,
+#
+dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode, 
+       bce, 
+       colors#16, ncv#53, pairs#256, 
+       op=\036Ad\036Bd, 
+       setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, 
+       setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, 
+       setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c, 
+
+dg+fixed|Fixed color info for DG D430C terminals in DG mode, 
+       use=dgunix+fixed, 
+
+# Video attributes are coordinated using static variables set by "sgr", then
+# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings. 
+# (D=dim, U=underline, B=blink, R=reverse.)
+dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode, 
+       bce, 
+       colors#8, ncv#16, pairs#64, 
+       op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m, 
+       setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, 
+       setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, 
+       setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, 
+       setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, 
+
+dg+color|Color info for Data General D470C terminals in ANSI mode, 
+       colors#16, ncv#53, pairs#256, 
+       setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, 
+       setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, 
+       setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, 
+       setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, 
+       use=dg+color8, 
+
+dgmode+color8|Color info for Data General D220/D230C terminals in DG mode, 
+       bce, 
+       colors#8, ncv#16, pairs#64, 
+       op=\036Ad\036Bd, 
+       setab=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c, 
+       setaf=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c, 
+       setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c, 
+
+dgmode+color|Color info for Data General D470C terminals in DG mode, 
+       colors#16, pairs#256, 
+       setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, 
+       setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, 
+       use=dgmode+color8, 
+
+dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode, 
+       bce, ccc, 
+       colors#52, ncv#53, pairs#26, 
+       initp=\036RG0%p1%02X%p2%{256}%*%{1001}%/%02X%p3%{256}%*%{1001}%/%02X%p4%{256}%*%{1001}%/%02X%p5%{256}%*%{1001}%/%02X%p6%{256}%*%{1001}%/%02X%p7%{256}%*%{1001}%/%02X, 
+       oc=\036RG01A00FF00000000\036RG01B00000000FF00\036RG01C007F00000000\036RG01D000000007F00, 
+       op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D, 
+       scp=\036RG2%p1%02X, 
+
+# Colors are in the order:  normal, reverse, dim, dim + reverse.
+dg+ccc|Configurable color info for DG D430C terminals in DG mode, 
+       bce, ccc, 
+       colors#52, ncv#53, pairs#26, 
+       initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c, 
+       oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?00000000\036RG01=000000007?00, 
+       op=\036RF4831\:\036RF2>31;\036RF1=31<\036RF3?31=, 
+       scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c, 
+
+# The generic DG terminal type (an 8-bit-clean subset of the 6053)
+# Initialization string 1 sets:
+#      ^R              - vertical scrolling enabled
+#      ^C              - blinking enabled
+dg-generic|Generic Data General terminal in DG mode, 
+       am, bw, msgr, xon, 
+       cols#80, lines#24, 
+       bel=^G, blink=^N, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X, 
+       cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=^J, is1=^R^C, 
+       mc0=^Q, nel=^J, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\, 
+       smul=^T, 
+       use=dgkeys+11, 
 
 # According to the 4.4BSD termcap file, the dg200 <cup> should be the
 # termcap equivalent of \020%p2%{128}%+%c%p1%{128}%+%c (in termcap
 # notation that's "^P%r%+\200%+\200").  Those \200s are suspicious,
 # maybe they were originally nuls (which would fit).
+
 dg200|data general dasher 200, 
        am, bw, 
        cols#80, lines#24, 
@@ -8878,6 +9723,7 @@ dg200|data general dasher 200,
        kf2=^^r, kf3=^^s, kf4=^^t, kf5=^^u, kf6=^^v, kf7=^^w, kf8=^^x, 
        kf9=^^y, khome=^H, lf0=f10, nel=^J, rmso=^^E, rmul=^U, 
        smso=^^D, smul=^T, 
+
 # Data General 210/211 (and 410?)      from Lee Pearson (umich!lp) via BRL
 dg210|dg-ansi|Data General 210/211, 
        am, 
@@ -8927,7 +9773,7 @@ dg460-ansi|Data General Dasher 460 in ANSI-mode,
 # This also matches a posted description of something called a `Dasher 100'
 # so there's a dg100 alias here. 
 # (dg6053: the 4.4BSD file had <cub1=^H>, <cud1=^J>, <cuf1=^S>. -- esr) 
-dg6053|dg100|data general 6053, 
+dg6053-old|dg100|data general 6053, 
        am, bw, ul, 
        cols#80, lines#24, 
        bel=^G, clear=^L, cnorm=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X, 
@@ -8937,6 +9783,478 @@ dg6053|dg100|data general 6053,
        kf7=^^x, kf8=^^y, kf9=^^z, khome=^H, rmcup=^L, rmso=\0^^E, 
        rmul=^U, smcup=^L^R, smso=\0\0\0\0\0\036D, smul=^T, 
 
+# (Some performance can be gained over the generic DG terminal type)
+dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053, 
+       xon@, 
+       home=^P\0\0, ll=^P\0^W, use=dg-generic, 
+
+# Like 6053, but adds reverse video and more keypad and function keys.
+d200|d200-dg|Data General DASHER D200, 
+       bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^], 
+       sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;, 
+       sgr0=\017\025\035\036E, smso=^^D^\, 
+       use=dgkeys+15, use=dg6053, 
+
+# DASHER D210 series terminals in ANSI mode.
+#      Reverse video, no insert/delete character/line, 7 bits/character only.
+#
+# Initialization string 1 sets:
+#      <0              - scrolling enabled
+#      <1              - blink enabled
+#      <4              - print characters regardless of attributes
+d210|d214|Data General DASHER D210 series, 
+       am, bw, msgr, xon, 
+       cols#80, lines#24, 
+       bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=^M, 
+       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, 
+       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
+       cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K, 
+       el1=\E[1K, home=\E[H, ind=^J, is1=\E[<0;<1;<4l, 
+       ll=\E[H\E[A, nel=^J, rev=\E[7m, rmso=\E[m, rmul=\E[m, 
+       sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m, 
+       sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, 
+       use=dgkeys+7b, 
+
+# DASHER D210 series terminals in DG mode.
+# Like D200, but adds clear to end-of-screen and needs XON/XOFF.
+d210-dg|d214-dg|Data General DASHER D210 series in DG mode, 
+       xon, 
+       ed=^^FF, use=d200-dg, 
+
+# DASHER D211 series terminals in ANSI mode.
+# Like the D210, but with 8-bit characters and local printer support.
+#
+# Initialization string 2 sets:
+#      \E[2;1;1;1v
+#              2;1     - 8 bit operations
+#              1;1     - 8 bit (international) keyboard language
+#      \E(B            - default primary character set (U.S. ASCII)
+#      \E)4            - default secondary character set (international)
+#      ^O              - primary character set
+#
+d211|d215|Data General DASHER D211 series, 
+       km, 
+       is2=\E[2;1;1;1v\E(B\E)4\017, mc0=\E[i, use=dgkeys+8b, use=d210, 
+
+# Initialization string 2 sets:
+#      \E[2;0;1;0v
+#              2;0     - 7 bit operations
+#              1;0     - 7 bit (native) keyboard language
+#      \E(0            - default character set (the keyboard native language)
+#      ^O              - primary character set
+d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode, 
+       km@, 
+       is2=\E[2;0;1;0v\E(0\017, use=dgkeys+7b, use=d211, 
+
+# Like the D210 series, but adds support for 8-bit characters.
+#
+# Reset string 2 sets:
+#      ^^N     - secondary character set
+#      ^^FS0>  - 8 bit international character set
+#      ^^O     - primary character set
+#      ^^FS00  - default character set (matching the native keyboard language)
+#
+d211-dg|d215-dg|Data General DASHER D211 series in DG mode, 
+       km, 
+       rs2=\036N\036FS0>\036O\036FS00, use=d210-dg, 
+
+d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode, 
+       use=d211-dg, 
+
+# Enhanced DG mode with changes to be more UNIX compatible.
+d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode, 
+       mc5i, 
+       it#8, 
+       acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI, 
+       clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA, 
+       el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=^J, 
+       is1=\022\003\036P@1, is3=\036Fz0, kHOM=^^Pf, kLFT=^^Pd, 
+       kPRT=^^P1, kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB, 
+       kcuf1=^^PC, kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0, 
+       mc0=\036F?9, mc4=^^Fa, mc5=^^F`, rmacs=\036FS00, 
+       rs2=\036N\036FS0E\036O\036FS00, 
+       sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;\036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;, 
+       sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11, 
+       vpa=\020\177%p1%c, 
+       use=dgkeys+15, use=d216-dg, 
+d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines, 
+       lines#25, 
+       is3=\036Fz2, use=d216+, 
+
+d217-unix|Data General DASHER D217 in DG-UNIX mode, 
+       use=d216-unix, 
+d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines, 
+       use=d216-unix-25, 
+
+# DASHER D220 color terminal in ANSI mode.
+# Like the D470C but with fewer colors and screen editing features.
+#
+# Initialization string 1 sets:
+#      \E[<0;<1;<4l
+#              <0      - scrolling enabled
+#              <1      - blink enabled
+#              <4      - print characters regardless of attributes
+#      \E[m            - all attributes off
+# Reset string 1 sets:
+#      \Ec             - initial mode defaults (RIS)
+#
+d220|Data General DASHER D220, 
+       mc5i@, 
+       dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec, use=dg+color8, use=d470c, 
+
+d220-7b|Data General DASHER D220 in 7 bit mode, 
+       mc5i@, 
+       dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec, use=dg+color8, use=d470c-7b, 
+
+# Initialization string 3 sets:
+#      - default cursor (solid rectangle)
+# Reset string 2 sets:
+#      ^^N     - secondary character set
+#      ^^FS0>  - 8 bit international character set
+#      ^^O     - primary character set
+#       ^^FS00  - default character set (matching the native keyboard language)
+#
+d220-dg|Data General DASHER D220 color terminal in DG mode, 
+       mc5i@, 
+       dl1@, home@, il1@, is2@, is3=\036FQ2, ll@, mc4@, mc5@, rs1@, 
+       rs2=\036N\036FS0>\036O\036FS00, 
+       use=dgmode+color8, use=d470c-dg, 
+
+# DASHER D230C color terminal in ANSI mode.
+# Like the D220 but with minor ANSI compatibility improvements.
+#
+d230c|d230|Data General DASHER D230C, 
+       blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=^M^J, 
+       rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m, 
+       sgr=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e%{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;, 
+       sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m, 
+       smul=\E[4;50m, 
+       use=dgkeys+7b, use=d220, 
+
+d230c-dg|d230-dg|Data General DASHER D230C in DG mode, 
+       use=d220-dg, 
+
+# DASHER D400/D450 series terminals.
+# These add intelligent features like insert/delete to the D200 series.
+#
+# Initialization string 2 sets:
+#      ^^FQ2           - default cursor (solid rectangle)
+#      ^^FW            - character protection disabled
+#      ^^FJ            - normal (80 column) mode
+#      ^^F\^           - horizontal scrolling enabled (for alignment)
+#      ^^FX004?        - margins at columns 0 and 79
+#      ^^F]            - horizontal scrolling disabled
+#      ^^O             - primary character set
+#      ^^FS00          - default character set (the keyboard native language)
+#      - (should reset scrolling regions, but that glitches the screen)
+# Reset string 1 sets:
+#      ^^FA            - all terminal defaults except scroll rate
+# Reset string 2 sets:
+#      ^^F]            - horizontal scrolling disabled
+#      ^^FT0           - jump scrolling
+#
+d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series, 
+       mc5i, 
+       acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\036FQ0, 
+       cnorm=\036FQ2, dch1=^^K, dl1=^^FI, 
+       enacs=\036N\036FS11\036O, home=^^FG, hpa=\020%p1%c\177, 
+       ich1=^^J, il1=^^FH, 
+       is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O\036FS00, 
+       ll=\036FG\027, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O, 
+       rs1=^^FA, rs2=\036F]\036FT0, 
+       sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;, 
+       sgr0=\017\025\035\036E\036O, smacs=^^N, 
+       vpa=\020\177%p1%c, use=d210-dg, 
+
+# DASHER D410/D460 series terminals in ANSI mode.
+# These add a large number of intelligent terminal features.
+#
+# Initialization string 1 sets:
+#      \E[<0;<1;<2;<4l
+#              <0      - scrolling enabled
+#              <1      - blink enabled
+#              <2      - horizontal scrolling enabled (for alignment)
+#              <4      - print characters regardless of attributes
+#      \E[5;0v         - normal (80 column) mode
+#      \E[1;1;80w      - margins at columns 1 and 80
+#      \E[1;6;<2h
+#              1       - print all characters even if protected
+#              6       - character protection disabled
+#              <2      - horizontal scrolling disabled
+#      - (should reset scrolling regions, but that glitches the screen)
+#
+# Initialization string 2 sets:
+#      \E[3;2;2;1;1;1v
+#              3;2     - default cursor (solid rectangle)
+#              2;1     - 8 bit operations
+#              1;1     - international keyboard language
+#      \E(B            - default primary character set (U.S. ASCII)
+#      \E)4            - default secondary character set (international)
+#      ^O              - primary character set
+#
+#      Reset string 1 sets:
+#      \Ec             - initial mode defaults (RIS)
+#      \E[<2h          - horizontal scrolling disabled
+#
+# Reset string 2 sets:
+#      \E[4;0;2;1;1;1v
+#              4;0     - jump scrolling
+#              2;1     - 8 bit operations
+#              1;1     - 8 bit (international) keyboard language
+#      \E(B            - default primary character set (U.S. ASCII)
+#      \E)4            - default secondary character set (international)
+#
+d410|d411|d460|d461|Data General DASHER D410/D460 series, 
+       mc5i, 
+       acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v, 
+       cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, 
+       dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 
+       is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h, 
+       is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i, 
+       ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h, 
+       rs2=\E[4;0;2;1;1;1v\E(B\E)4, 
+       sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m\E)%?%p9%t6\016%e4\017%;, 
+       sgr0=\E[m\E)4\017, smacs=\E)6\016, 
+       use=d211, 
+
+# Initialization string 2 sets:
+#      \E[3;2;2;0;1;0v
+#              3;2     - default cursor (solid rectangle)
+#              2;0     - 7 bit operations
+#              1;0     - 7 bit (native) keyboard language
+#      \E(0            - default character set (the keyboard native language)
+#      ^O              - primary character set
+#
+# Reset string 2 sets:
+#      \E[4;0;2;0;1;0v
+#              4;0     - jump scrolling
+#              2;0     - 7 bit operations
+#              1;0     - 7 bit (native) keyboard language
+#      \E(0            - default character set (the keyboard native language)
+#
+d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode, 
+       km@, 
+       enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O, 
+       rs2=\E[4;0;2;0;1;0v\E(0, 
+       sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m%?%p9%t\016%e\017%;, 
+       sgr0=\E[m\017, smacs=^N, 
+       use=dgkeys+7b, use=d410, 
+
+d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode, 
+       km, 
+       enacs@, rmacs=\036FS00, 
+       sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;, 
+       sgr0=\017\025\035\036E\036FS00, smacs=\036FS11, 
+       use=d400-dg, 
+
+# DASHER D410/D460 series terminals in wide (126 columns) ANSI mode.
+#
+# Initialization string 1 sets:
+#      \E[<0;<1;<2;<4l
+#              <0      - scrolling enabled
+#              <1      - blink enabled
+#              <2      - horizontal scrolling enabled (for alignment)
+#              <4      - print characters regardless of attributes
+#      \E[5;1v         - compressed (135 column) mode
+#      \E[1;1;126      - margins at columns 1 and 126
+#      \E[1;6;<2h
+#              1       - print all characters even if protected
+#              6       - character protection disabled
+#              <2      - horizontal scrolling disabled
+#      - (should reset scrolling regions, but that glitches the screen)
+#
+# Reset string 1 sets:
+#      \Ec             - initial mode defaults (RIS)
+#      \E[5;1v         - compressed (135 column) mode
+#      \E[1;1;126w     - margins at columns 1 and 126
+#      \E[<2h          - horizontal scrolling disabled
+#
+d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode, 
+       cols#126, 
+       is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h, 
+       rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, 
+       use=d410, 
+
+d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode, 
+       cols#126, 
+       is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h, 
+       rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, 
+       use=d410-7b, 
+
+d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode, 
+       use=d410-dg, 
+
+# These add intelligent features like scrolling regions.
+d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode, 
+       civis=\036FQ0, clear=^^FE, cnorm=\036FQ5, 
+       cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI, 
+       home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH, 
+       is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O\036FS00, 
+       ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I, 
+       rs1=\036FA\036FT0, rs2=\036P@1, sc=\036F}10, 
+       vpa=\036FPFF%p1%2.2X, 
+       wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X, use=d216+, 
+d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode, 
+       cols#132, 
+       is2=\036FQ5\036FW\036FK\036F\^\036FX0083\036O\036FS00, 
+       rs2=\036P@1\036FK\036FX0083, 
+       wind=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2%>%t001%;\036FX%p3%2.2X%p4%2.2X, use=d412-unix, 
+d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines, 
+       lines#25, 
+       is3=\036Fz2, 
+       wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X, use=d462+, 
+d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line, 
+       eslok, hs, 
+       clear=\036FG\036PH, fsl=\036F}01\022, 
+       is3=\036Fz2\036F}00\036FB180000\036F}01, ll@, 
+       tsl=\036F}00\036FP%p1%2.2X18\036PG, 
+       wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X, use=d462+, 
+
+#      Relative cursor motions are confined to the current window,
+#      which is not what the scrolling region specification expects.
+#      Thus, relative vertical cursor positioning must be deleted.
+d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region, 
+       csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;, 
+       cud1@, cuu1@, ll@, 
+       use=d462+, 
+
+d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode, 
+       use=d412-unix, 
+d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode, 
+       use=d412-unix-w, 
+d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines, 
+       use=d412-unix-25, 
+d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line, 
+       use=d412-unix-s, 
+d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region, 
+       use=d412-unix-sr, 
+
+d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode, 
+       use=d413-unix, 
+d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode, 
+       use=d413-unix-w, 
+d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines, 
+       use=d413-unix-25, 
+d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line, 
+       use=d413-unix-s, 
+d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region, 
+       use=d413-unix-sr, 
+
+d430c-dg|d430-dg|Data General D430C in DG mode, 
+       use=d413-dg, use=dg+fixed, 
+d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors, 
+       use=d413-dg, use=dg+ccc, 
+
+d430c-unix|d430-unix|Data General D430C in DG-UNIX mode, 
+       use=d413-unix, use=dgunix+fixed, 
+d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode, 
+       use=d413-unix-w, use=dgunix+fixed, 
+d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines, 
+       use=d413-unix-25, use=dgunix+fixed, 
+d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line, 
+       use=d413-unix-s, use=dgunix+fixed, 
+d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region, 
+       use=d413-unix-sr, use=dgunix+fixed, 
+d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors, 
+       use=d413-unix, use=dgunix+ccc, 
+d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors, 
+       use=d413-unix-w, use=dgunix+ccc, 
+d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors, 
+       use=d413-unix-25, use=dgunix+ccc, 
+d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors, 
+       use=d413-unix-s, use=dgunix+ccc, 
+d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors, 
+       use=d413-unix-sr, use=dgunix+ccc, 
+
+# DASHER D470C color terminal in ANSI mode.
+# Like the D460 but with 16 colors and without a compressed mode.
+#
+# Initialization string 1 sets:
+#      \E[<0;<1;<2;<4l
+#              <0      - scrolling enabled
+#              <1      - blink enabled
+#              <2      - horizontal scrolling enabled (for alignment)
+#              <4      - print characters regardless of attributes
+#      \E[1;1;80w      - margins at columns 1 and 80
+#      \E[1;6;<2h
+#              1       - print all characters even if protected
+#              6       - character protection disabled
+#              <2      - horizontal scrolling disabled
+#      - (should reset scrolling regions, but that glitches the screen)
+#
+d470c|d470|Data General DASHER D470C, 
+       is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, 
+       sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;, 
+       use=dg+color, use=d460, 
+
+d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode, 
+       is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, 
+       sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm%?%p9%t\016%e\017%;, 
+       use=dg+color, use=d460-7b, 
+
+# Initialization string 2 sets:
+#      ^^FQ2           - default cursor (solid rectangle)
+#      ^^FW            - character protection disabled
+#      ^^F\^           - horizontal scrolling enabled (for alignment)
+#      ^^FX004?        - margins at columns 0 and 79
+#      ^^F]            - horizontal scrolling disabled
+#      ^^O             - primary character set
+#      ^^FS00          - default character set (the keyboard native language)
+#      - (should reset scrolling regions, but that glitches the screen)
+#
+d470c-dg|d470-dg|Data General DASHER D470C in DG mode, 
+       is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O\036FS00, 
+       use=dgmode+color, use=d460-dg, 
+
+# DASHER D555 terminal in ANSI mode.
+# Like a D411, but has an integrated phone.
+d555|Data General DASHER D555, 
+       use=d411, 
+d555-7b|Data General DASHER D555 in 7-bit mode, 
+       use=d411-7b, 
+d555-w|Data General DASHER D555 in wide mode, 
+       use=d411-w, 
+d555-7b-w|Data General DASHER D555 in wide 7-bit mode, 
+       use=d411-7b-w, 
+d555-dg|Data General DASHER D555 series in DG mode, 
+       use=d411-dg, 
+
+# DASHER D577 terminal in ANSI mode.
+# Like a D411, but acts as a keyboard for serial printers ("KSR" modes).
+d577|Data General DASHER D577, 
+       use=d411, 
+d577-7b|Data General DASHER D577 in 7-bit mode, 
+       use=d411-7b, 
+d577-w|Data General DASHER D577 in wide mode, 
+       use=d411-w, 
+d577-7b-w|Data General DASHER D577 in wide 7-bit mode, 
+       use=d411-7b-w, 
+
+d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode, 
+       use=d411-dg, 
+
+# DASHER D578 terminal.
+# Like a D577, but without compressed mode; like a D470C in this respect.
+#
+# Initialization string 1 sets:
+#      \E[<0;<1;<2;<4l
+#              <0      - scrolling enabled
+#              <1      - blink enabled
+#              <2      - horizontal scrolling enabled (for alignment)
+#              <4      - print characters regardless of attributes
+#      \E[1;1;80w      - margins at columns 1 and 80
+#      \E[1;6;<2h
+#              1       - print all characters even if protected
+#              6       - character protection disabled
+#              <2      - horizontal scrolling disabled
+#      - (should reset scrolling regions, but that glitches the screen)
+#
+d578|Data General DASHER D578, 
+       is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577, 
+d578-7b|Data General DASHER D578 in 7-bit mode, 
+       is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, 
+       use=d577-7b, 
+
 #### Datamedia (dm)
 #
 # Datamedia was headquartered in Nashua, New Hampshire in 1993.
@@ -8954,7 +10272,7 @@ dg6053|dg100|data general 6053,
 # only company and no longer make terminals.  However, the operator there
 # told me that she had once spoken to a customer looking for Datamedia
 # terminals who'd mentioned a Datamedia in New Jersey.  This is backed up
-# by comp.terminals poosting describing the ID plate on the back of a
+# by comp.terminals posting describing the ID plate on the back of a
 # "Datamedia 3000" terminal.  Was this an earlier incarnation of Axent?
 # Inquiring minds want to know...
 #
@@ -9068,9 +10386,9 @@ dt80-sas|Datamedia DT803/DTX for SAS usage,
        cols#80, lines#24, 
        acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, 
        bel=^G, clear=^L, cr=^M, 
-       csr=\E=%p1%' '%+%c%' '%c\E#1\E=%p2%' '%+%c%' '%c\E#2, 
+       csr=\E=%p1%{32}%+%c%{32}%c\E#1\E=%p2%{32}%+%c%{32}%c\E#2, 
        cub1=^H, cud1=\EB, cuf1=^\, 
-       cup=\E=%p2%' '%+%c%p1%' '%+%c, cuu1=^_, dl1=\EM, ed=^K, 
+       cup=\E=%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, dl1=\EM, ed=^K, 
        el=^], ff=^L, home=^Y, ht=^I, hts=\E'1, il1=\EL, ind=\EB, 
        is2=\E)0\E<\EP\E'0\E$2, kclr=^L, kcub1=^H, kcud1=^J, 
        kcuf1=^\, kcuu1=^_, ked=^K, kel=^], khome=^Y, mc4=^O, mc5=^N, 
@@ -9503,9 +10821,10 @@ ha8686|harris 8686,
 
 #### Hazeltine
 #
-# Hazeltine appears to be out of the business now (1995).  These guys were 
-# co-owners of the Terminal Brain Damage Hall Of Fame along with Harris.
-# They have a hazeltine.com domain and can be reached at:
+# Hazeltine appears to be out of the terminal business as of 1995.  These
+# guys were co-owners of the Terminal Brain Damage Hall Of Fame along with
+# Harris. They have a hazeltine.com domain (but no web page there ) and can
+# be reached at:
 #
 #      Hazeltine
 #      450 East Pulaski Road
@@ -9519,6 +10838,10 @@ ha8686|harris 8686,
 #      P.O. Box 2076
 #      Fairfield, NJ 07007-2078
 #
+# They're now (1998) a subsidiary of General Electric, operating under the
+# marque "GEC-Marconi Hazeltine" and doing military avionics.  Web page
+# at <http://www.gec.com/cpd/1ncpd.htm#1.55>.
+#
 
 # Since <cuf1> is blank, when you want to erase something you
 # are out of luck.  You will have to do ^L's a lot to
@@ -9544,7 +10867,7 @@ hz1500|hazeltine 1500,
        am, hz, 
        cols#80, lines#24, 
        bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, 
-       cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%'`'%+%c%p1%'`'%+%c, 
+       cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c, 
        cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R, 
        il1=~\032$<40>, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^P, 
        kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_, 
@@ -9657,23 +10980,18 @@ ibm327x|line mode IBM 3270 style,
        gn, 
        clear=^M^J, el=^M, home=^M, 
 
-# Beware! The 3101 entry IBM shipped with AIX 3 is *wrong*.  Losers...
-# From: J.B. Nicholson-Owens <jeffo@uiuc.edu> 8 Mar 94
-# (ibm3101: <if=/usr/share/tabset/ibm3101> removed, no such file -- esr)
 ibm3101|i3101|IBM 3101-10, 
        am, xon, 
        cols#80, lines#24, 
        bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, 
-       el=\EI, home=\EH, ht=^I, hts=\E0, ind=^J, kbs=^H, kcub1=\ED, 
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\E1, 
-#   Received from the IBM terminals division (given to DRB)
-#   June 1988 for PS/2 OS 2.2.3 cut
-ibm3151|i3151|IBM 3151, 
-       rmso=\E4@, rmul=\E4@, 
-       sgr=\E4%{64}%?%p1%{0}%>%p1%{4}%<%&%t%{8}%|%;%?%p1%{7}%=%t%{16}%|%;%?%p2%t%{1}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%c, 
-       sgr0=\E4@, smso=\E4A, smul=\E4B, 
-       use=ibm3163, 
+       el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB, 
+       kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH, 
+ibm3151|IBM 3151 display, 
+       is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B, 
+       sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;, 
+       sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, 
+       use=ibm3162, 
 # From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992 
 # I've commented out or translated some IBM extensions.
 ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display, 
@@ -9685,32 +11003,63 @@ ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
        cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, ind=^J, 
        invis=\E4P, kbs=^H, kcbt=\E2, kclr=\EL\r, kctab=\E1, 
        kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EQ, 
-       kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r, kf10=\Ej\r, 
+       kdl1=\EO, ked=\EJ, kel=\EI, kend=\E2, kf1=\Ea\r, kf10=\Ej\r, 
        kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r, kf14=\E!b\r, 
        kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r, kf18=\E!f\r, 
        kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r, kf21=\E!i\r, 
        kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r, kf3=\Ec\r, 
        kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r, kf8=\Eh\r, 
        kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010, kil1=\EN, 
-       ktbc=\E 1, rev=\E4A, rmcup=\E>A, rmso=\E4@, rmul=\E4@, 
-       sgr=\E4%'@'%?%p1%t%'A'%|%;%?%p2%t%'B'%|%;%?%p3%t%'A'%|%;%?%p4%t%'D'%|%;%?%p5%t%'@'%|%;%?%p6%t%'H'%|%;%?%p7%t%'P'%|%;%c%?%p9%t\E>A%e\E<@%;, 
+       knp=\EI, kpp=\EL, ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A, 
+       rmcup=\E>A, rmso=\E4@, rmul=\E4@, 
+       sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E<@%;, 
        sgr0=\E4@\E<@, smcup=\E>A, smso=\E4A, smul=\E4B, 
 
-# How the 3164 sgr string works:
-#      %{32}           # push space for no special video characteristics
-#      %?%p2%t%{1}%|%; # if p2 set, then OR the 1 bit for reverse
-#      %?%p3%t%{4}%|%; # if p3 set, then OR the 4 bit for blink
-#      %?%p4%t%{2}%|%; # if p4 set, then OR the 2 bit for underline
-#      %c              # pop Pa1
-#      %{39}%p1%-      # calculate 32 + (7 - p1) for foreground
-#      %c              # pop Pa2 
-#      %{64}           # use only black background for now
-#      %c              # pop Pa3
+ibm3161-C|IBM 3161-C NLS terminal using cartridge, 
+       rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, 
+       use=ibm3161, 
+ibm3162|IBM 3162 display, 
+       blink=\E4$a, bold=\E4(a, il1=\EN, invis=\E40a, rev=\E4!a, 
+       rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a, 
+       use=ibm3161-C, 
+
 ibm3164|i3164|IBM 3164, 
-       blink=\E4D, bold=\E4H, 
-       sgr=\E4%{32}%?%p2%t%{1}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%c%{39}%p1%-%c%{64}%c, 
-       sgr0=\E4@, 
-       use=ibm3163, 
+       msgr, 
+       colors#8, pairs#64, 
+       rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A, 
+       setb=\E4  %p1%{64}%+%c, 
+       setf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@, 
+       smcup=\E!9/N\E>B, use=ibm3161, 
+
+ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display, 
+       am, bw, msgr, xon, 
+       cols#80, it#8, lines#25, 
+       acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, 
+       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=^M, 
+       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, 
+       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
+       cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM, 
+       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, 
+       hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\E[S, 
+       indn=\E[%p1%dS, invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z, 
+       kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, 
+       kcuu1=\E[A, kdch1=\E[P, ked=\E[148q, kel=\E[142q, 
+       kend=\E[146q, kf0=\E[010q, kf1=\E[001q, kf10=\E[010q, 
+       kf11=\E[011q, kf12=\E[012q, kf13=\E[013q, kf14=\E[014q, 
+       kf15=\E[015q, kf16=\E[016q, kf17=\E[017q, kf18=\E[018q, 
+       kf19=\E[019q, kf2=\E[002q, kf20=\E[020q, kf21=\E[021q, 
+       kf22=\E[022q, kf23=\E[023q, kf24=\E[024q, kf25=\E[025q, 
+       kf26=\E[026q, kf27=\E[027q, kf28=\E[028q, kf29=\E[029q, 
+       kf3=\E[003q, kf30=\E[030q, kf31=\E[031q, kf32=\E[032q, 
+       kf33=\E[033q, kf34=\E[034q, kf35=\E[035q, kf36=\E[036q, 
+       kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, 
+       kf8=\E[008q, kf9=\E[009q, khome=\E[H, kich1=\E[139q, 
+       kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q, 
+       kri=\E[155q, krmir=\E[4l, rc=\E[u, rev=\E[7m, ri=\E[T, 
+       rin=\E[%p1%dT, rmir=\E[4l, rmso=\E[m, rmul=\E[m, rs2=\Ec, 
+       sc=\E[s, 
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m, 
+       sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m, 
 
 ibmaed|IBM Experimental display, 
        am, eo, msgr, 
@@ -9724,7 +11073,7 @@ ibm-apl|apl|IBM apl terminal simulator,
        lines#25, use=dm1520, 
 # (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'.  
 # Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr)
-ibmmono|ibm5151|IBM workstation monochrome, 
+ibmmono|IBM workstation monochrome, 
        eslok, hs, 
        bold=\EZ, dl1=\EM, dsl=\Ej\EY8 \EI\Ek, fsl=\Ek, il1=\EL, 
        invis=\EF\Ef0;\Eb0;, kbs=^H, kf0=\E<, kf1=\ES, kf2=\ET, 
@@ -9732,10 +11081,13 @@ ibmmono|ibm5151|IBM workstation monochrome,
        khome=\EH, kich1=\0, kind=\EE, knp=\EE, kpp=\Eg, kri=\EG, 
        lf0=f10, rev=\Ep, ri=\EA, rmso=\Ez, rmul=\Ew, 
        sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo, use=ibm3101, 
-ibmega|ibm5154|IBM Enhanced Color Display, 
+ibmega|IBM Enhanced Color Display, 
        cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, 
        nel=^M^J, 
        use=ibmmono, 
+ibm5154|IBM 5154 Color display, 
+       colors#8, pairs#64, 
+       bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, 
 ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline, 
        rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;, 
        use=ibmmono, 
@@ -9748,75 +11100,77 @@ ibmvga|IBM VGA display,
        nel=^M^J, 
        use=ibmega, 
 # ibmapa* and ibmmono entries come from ACIS 4.3 distribution
-rtpc|ibmapa16|ibm6155|IBM 6155 Extended Monochrome Graphics Display, 
+rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display, 
        lines#32, 
        dsl=\Ej\EY@ \EI\Ek, tsl=\Ej\EY@%+ \Eo, use=ibmmono, 
+ibm6155|IBM 6155 Black & White display, 
+       blink@, bold@, use=ibm5151, 
 # Advanced Monochrome (6153) and Color (6154) Graphics Display:
-ibmapa8c|ibmapa8|ibm6154|ibm6153|IBM 6153/4 Advanced Graphics Display, 
+ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display, 
        lines#31, 
        dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmmono, 
 ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display, 
        lines#31, 
        dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmega-c, 
-# From: Marc Pawliger <marc@ibminet.awdpa.ibm.com>
-# also in /usr/lpp/bos/bsdsysadmin.
-# (hft-c: this entry had :kb=\E[D:kf=\E[C: on the line with ku/kd/kh; this was
-# pretty obviously mislabeled for :le: and :nd:; also ":ul=\E[4m:" was clearly
-# a typo for ":us=\E[4m:"; also ":el=\E[K:" was a typo for ":ce=\E[K:".
-# I also added <rmam>/<smam> based on the terminal reset string.
-# There was an unknown boolean ":ht:" which I assume was meant to set hardware
-# tabs, so I have inserted it#8. Finally, :ac=^N: paired with the :ae: looked
-# like a typo for :as=^N:; finally, added empty <acsc> to quiet tic -- esr)
-ibm8512|ibm8513|hft-c|IBM High Function Terminal, 
+ibm6154|IBM 6154 Color displays, 
+       blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, 
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m, 
+       sgr0=\E[0;10m, 
+       use=ibm5154, 
+ibm6153|IBM 6153 Black & White display, 
+       blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, 
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m, 
+       sgr0=\E[0;10m, 
+       use=ibm5151, 
+ibm6153-90|IBM 6153 Black & White display, 
+       cols#90, lines#36, 
+       blink@, bold@, use=ibm5151, 
+ibm6153-40|IBM 6153 Black & White display, 
+       cols#40, lines#12, use=ibm6153-90, 
+ibm8512|ibm8513|IBM color VGA Terminal, 
        am, mir, msgr, 
        cols#80, it#8, lines#25, 
-       acsc=, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cub1=\E[D, 
-       cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, 
-       home=\E[H, il=\E[%p1%dL, il1=\E[L, is2=\Eb\E[m\017\E[?7h, 
-       kcud1=\E[B, kcuu1=\E[A, kf0=\E[010q, kf1=\E[001q, 
-       kf2=\E[002q, kf3=\E[003q, kf4=\E[004q, kf5=\E[005q, 
-       kf6=\E[006q, kf7=\E[007q, kf8=\E[008q, kf9=\E[009q, 
-       khome=\E[H, rc=\E[u, rev=\E[7m, rmacs=^O, rmam=\E[?7l, 
-       rmcup=\E[20h, rmdc=\E[4l, rmir=\E[4l, rmso=\E[m, rmul=\E[m, 
+       acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m, 
+       clear=\E[H\E[2J, cub1=\E[D, cud1=^J, cuf1=\E[C, 
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, 
+       ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL, 
+       il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A, 
+       kf0=\E[010q, kf1=\E[001q, kf2=\E[002q, kf3=\E[003q, 
+       kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, 
+       kf8=\E[008q, kf9=\E[009q, khome=\E[H, rc=\E[u, rev=\E[7m, 
+       rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l, 
+       rmir=\E[4l, rmso=\E[m, rmul=\E[m, 
        rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m, 
        smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb, 
        smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m, 
-hft|AIWS High Function Terminal, 
-       am, xon, 
-       cols#80, lines#25, 
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=^M, 
-       cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
-       cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, 
-       ht=^I, ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, kbs=^H, 
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
-       kf1=\E[001q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q, 
-       kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q, 
-       kf9=\E[009q, khome=\E[H, knp=\E[153q, kpp=\E[159q, 
-       ktbc=\E[010q, rev=\E[7m, rmir=\E6, rmso=\E[m, rmul=\E[m, 
-       sgr0=\E[m, smir=\E6, smso=\E[7m, smul=\E[4m, 
+       use=ibm8503, 
+hft-c|HFT with Color, 
+       colors#8, pairs#64, 
+       acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0, 
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B, 
+       use=ibm5151, 
+hft-c-old|HFT with Color PC850, 
+       colors#8, pairs#64, 
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, 
 ibm-system1|system1|ibm system/1 computer, 
        am, xt, 
        cols#80, lines#24, 
        bel=^G, clear=^Z, cub1=^H, cuf1=^\, 
        cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K, 
        ind=^J, 
-
-# From: <pryor@math.berkeley.edu>
-ibm5081|ibmmpel|IBM 5081 1024x1024 256/4096 color display, 
-       eslok, hs, 
-       lines#33, 
-       dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo, use=ibmmono, 
-ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 enhanced color display, 
+ibm5081|hft|IBM Megapel Color display, 
+       acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B, 
+       s1ds=\E(0, sgr0=\E[0m\E(B, 
+       use=ibm5154, 
+ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display, 
        eslok, hs, 
        lines#33, 
        dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo, use=ibmega-c, 
-ibm8514|IBM 8514 color display, 
+ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display, 
+       use=hft-c, 
+ibm8514|IBM 8514/a color VGA display, 
        eslok, hs, 
-       lines#41, 
-       cr=^M, cud1=^J, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=^J, 
-       kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, tsl=\Ej\EYI%+ \Eo, 
-       use=ibmega, 
+       dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft, 
 ibm8514-c|IBM 8514 color display with standout and underline, 
        eslok, hs, 
        lines#41, 
@@ -9825,10 +11179,17 @@ ibm8514-c|IBM 8514 color display with standout and underline,
        use=ibmega-c, 
 
 #
-# AIX entries.  IBM ships these with AIX 3. 
+# AIX entries.  IBM ships these with AIX 3.2.5. 
 # AIX extension caps are commented out,
 # except for box1 which has been translated to an <acsc> string.
 #
+aixterm|IBM Aixterm Terminal Eemulator, 
+       eslok, hs, 
+       acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E, 
+       fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0, 
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m, 
+       sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, 
+       use=ibm6154, 
 aixterm-m|IBM AIXterm Monochrome Terminal Emulator, 
        eslok, hs, 
        acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E, 
@@ -9842,6 +11203,8 @@ aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, 
        tsl=\E[?%p1%dT, 
        use=ibm6153, 
+jaixterm|IBM Kanji Aixterm Terminal Eemulator, 
+       acsc@, use=aixterm, 
 jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator, 
        acsc@, 
        use=aixterm-m, 
@@ -9878,6 +11241,285 @@ infoton,
        bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y, cuu1=^\, 
        ed=^K, ind=^J, ll=^H^\, 
 
+# The ICL6402 was actually the Kokusai Display System 6402.
+# The 6404 was the KDS7372 (color version of the 6402).
+# 
+# ICL6404 control codes follow:
+#
+#code            function
+#~~~~~~~~~~~     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#ctrl-A          set SOM position at cursor position
+#ctrl-G          Bell
+#ctrl-H          Backspace
+#ctrl-I          Horiz tab
+#ctrl-J          Linefeed
+#ctrl-K          Cursor up
+#ctrl-L          Cursor right
+#ctrl-M          Carriage return
+#ctrl-N          Disable xon/xoff to host
+#ctrl-O          Enable xon/xoff to host
+#ctrl-R          Enable bidirectional mode
+#ctrl-T          Disable bidirectional mode
+#ctrl-V          Cursor down
+#ctrl-Z          Clear unprotected data to insert char
+#ctrl-^          Cursor home
+#ctrl-_          Newline
+#
+#ESC             lead-in char for multiple character command
+#
+#ESC space R     execute power on sequence
+#ESC ! p1 p2     define scroll region:
+#                p1 = scroll top    line:  20h - 37h
+#                p1 = scroll bottom line:  20h - 37h
+#ESC "           unlock keyboard
+#ESC #           lock keyboard
+#ESC $           Semi-graphics mode on
+#ESC %           Semi-graphics mode off
+#ESC &           protect mode on
+#ESC '           protect mode off
+#ESC (           write protect mode off (full intensity)
+#ESC )           write protect mode on (half intensity)
+#
+#ESC *           clear screen
+#ESC +           clear unprotected data to insert char
+#ESC ,           clear unprotected data to half intensity spaces
+#ESC - p1 p2 p3 p4     address cursor to page, row, column:
+#                      p1 = page number  0 - 3
+#                      p2 = row          20h - 7fh
+#                      p3 = column (lo)  20h - 7fh
+#                      p4 = column (hi)  20h - 21h (only 132 col)
+#ESC . p1        set cursor style:
+#                p1 = 0  invisible cursor
+#                p1 = 1  block blinking cursor
+#                p1 = 2  block steady cursor
+#                p1 = 3  underline blinking cursor
+#                p1 = 4  underline steady cursor
+#ESC /           transmit cursor location (page, row, column)
+#ESC 0 p1 p2 p3 p4     program edit key:
+#                      p1 = edit key code: '@'-'S', '`'-'s'
+#                      p2 p3 p4 = program data (3 bytes)
+#
+#ESC 1           set tab
+#ESC 2           clear tab at cursor
+#ESC 3           clear all tabs
+#ESC 4           send unprotect line to cursor
+#ESC 5           send unprotect page to cursor
+#ESC 6           send line to cursor
+#ESC 7           send page to cursor
+#ESC 8 n         set scroll mode:
+#                n = 0   set jump scroll
+#                n = 1   set smooth scroll
+#ESC 9 n         control display:
+#                n = 0   display off
+#                n = 1   display on
+#ESC :           clear unprotected data to null
+#ESC ;           clear unprotected data to insert char
+#
+#ESC <           keyclick on
+#ESC = p1 p2     address cursor to row, column
+#                p1 = row          20h - 7fh
+#                p2 = column (lo)  20h - 7fh
+#                p3 = column (hi)  20h - 21h (only 132 col)
+#ESC >           keyclick off
+#ESC ?           transmit cursor location (row, column)
+#
+#ESC @           copy print mode on
+#ESC A           copy print mode off
+#ESC B           block mode on
+#ESC C           block mode off (conversation mode)
+#ESC D F         set full duplex
+#ESC D H         set half duplex
+#ESC E           line insert
+#ESC F p1 p2     set page colour (p1 = f/grnd, p2 = b/grnd)
+#                0 = black, 1 = red,     2 = green, 3 = yellow
+#                4 = blue,  5 = magenta, 6 = cyan,  7 = white
+#ESC G n         set serial field attribute (n = 30h - 3Fh)
+#ESC H n         full graphics mode:
+#                n = 0  exit full graphics mode
+#                n = 1  enter full graphics mode
+#ESC I           back tab
+#ESC J           back page
+#ESC K           forward page
+#
+#ESC L           unformatted page print
+#ESC M L         move window left  (132 col mode only)
+#ESC M R         move window right (132 col mode only)
+#ESC N           set page edit (clear line edit)
+#ESC O           set line edit (clear page edit)
+#ESC P           formatted page print
+#ESC Q           character insert
+#ESC R           line delete
+#ESC S           send message unprotected only
+#ESC T           erase line to insert char
+#ESC U           set monitor mode   (see ESC X, ESC u)
+#
+#ESC V n         select video attribute mode:
+#                n = 0   serial field attribute mode
+#                n = 1   parallel character attribute mode
+#ESC V 2 n       define line attribute:
+#                n = 0   single width single height
+#                n = 1   single width double height
+#                n = 2   double width single height
+#                n = 3   double width double height
+#ESC V 3 n       select character font:
+#                n = 0   system font
+#                n = 1   user defined font
+#ESC V 4 n       select screen mode:
+#                n = 0   page screen mode
+#                n = 1   virtual screen mode
+#ESC V 5 n       control mouse mode:
+#                n = 0   disable mouse
+#                n = 1   enable sample mode
+#                n = 2   send mouse information
+#                n = 3   enable request mode
+#ESC W           character delete
+#ESC X           clear monitor mode (see ESC U, ESC u)
+#ESC Y           erase page to insert char
+#
+#ESC Z n         send user/status line:
+#                n = 0   send user line
+#                n = 1   send status line
+#                n = 2   send terminal ID
+#ESC [ p1 p2 p3  set character attribute (parallel char mode):
+#                p1: 0 = normal
+#                    1 = blank
+#                    2 = blink
+#                    3 = blink blank (= blank)
+#                    4 = reverse
+#                    5 = reverse blank
+#                    6 = reverse blink
+#                    7 = reverse blink blank (= reverse blank)
+#                    8 = underline
+#                    9 = underline blank
+#                    : = underline blink
+#                    ; = underline blink blank
+#                    < = reverse underline
+#                    = = reverse underline blank
+#                    > = reverse underline blink
+#                    ? = reverse underline blink blank
+#                p2, p3: f/grnd, b/grnd colour
+#                (see ESC F for colours)
+#                use ZZ for mono, eg.
+#                    ESC [ 0 Z Z for normal
+#                    ESC [ 4 Z Z for inverse etc.
+#
+#ESC \ n         set page size:
+#                n = 1   24 lines/page
+#                n = 2   48 lines/page
+#                n = 3   72 lines/page
+#                n = 4   96 lines/page
+#ESC ] n         set Wordstar mode:
+#                n = 0   normal (KDS7372) mode
+#                n = 1   Wordstar mode
+#
+#ESC b           set foreground colour screen
+#
+#ESC c n         enter self-test mode:
+#                n = 0   exit self test mode
+#                n = 1   ROM test
+#                n = 2   RAM test
+#                n = 3   NVRAM test
+#                n = 4   screen display test
+#                n = 5   main/printer port test
+#                n = 6   mouse port test
+#                n = 7   graphics board test
+#                n = 8   graphics memory test
+#                n = 9   display all 'E'
+#                n = :   display all 'H'
+#ESC d           set background colour screen
+#
+#ESC e n         program insert char (n = insert char)
+#ESC f text CR   load user status line with 'text'
+#
+#ESC g           display user status line on 25th line
+#ESC h           display system status line on 25th line
+#ESC i           tab
+#ESC j           reverse linefeed
+#ESC k n         duplex/local edit mode:
+#                n = 0   duplex edit mode
+#                n = 1   local edit mode
+#ESC l n         select virtual screen:
+#                n = 0   screen 1
+#                n = 1   screen 2
+#ESC m           save current config to NVRAM
+#ESC n p1        select display screen:
+#                p1 = 0  screen 1
+#                p1 = 1  screen 2
+#                p1 = 2  screen 3
+#                p1 = 3  screen 4
+#ESC o p1 p2     set characters/line and attribute:
+#                p1 = 0  80 chars/line
+#
+#ESC o p1 p2     set characters/line and attribute:
+#                p1 = 0  80 chars/line
+#                p1 = 1  132 chars/line
+#                p2 = 0  single width single height
+#                p2 = 1  single width double height
+#                p2 = 2  double width single height
+#                p2 = 3  double width double height
+#
+#ESC q           insert mode on
+#ESC r           edit mode on
+#ESC s           send message all
+#ESC t           erase line to null
+#ESC u           clear monitor mode (see ESC U, ESC X)
+#ESC v           autopage mode on
+#ESC w           autopage mode off
+#ESC x p1 p2 p3  define delimiter code...
+#ESC y           erase page to null
+#
+#ESC z 2 p1 p2 p3 p4   draw quadrangle:
+#                      p1 = starting row
+#                      p2 = starting column
+#                      p3 = end row
+#                      p4 = end column
+#
+#ESC { p1 p2 p3 p4     configure main port
+#                      (baud, stop bits, parity, word length)
+#
+#ESC | p1 p2 text Ctrl-Y    program function key with 'text':
+#                        p1 = function key code:
+#                             '1' - ';'  normal f1- f11
+#                             '<' - 'F'  shifted f1 - f11
+#                        p2 = program mode:
+#                             1 = FDX
+#                             2 = LOC
+#                             3 = HDX
+#                        Ctrl-Y = terminator
+#                        (use Ctrl-P to escape ^P, ^Y )
+#
+#ESC } p1 p2 p3 p4     configure printer port
+#                      (baud, stop bits, parity, word length)
+#ESC ~           send system status
+#
+# Codes and info from Peter Disdale <pete@pdlmail.demon.co.uk> 12 May 1997
+#
+# Entry is by esr going solely on above information and is UNTESTED.
+# This actually looks a lot like a Televideo 9xx.
+# This entry uses page 0 and is monochrome; I'm not brave enough to try
+# to make color work without a test terminal.  The <am> capability is a guess.
+# The initialization string sets conversation mode, blinking underline cursor,
+# full duplex, parallel attribute mode, display user status line, white
+# foreground, black background, normal highlight.
+#
+icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372, 
+       am, hs, 
+       cols#80, lines#24, 
+       bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*, 
+       cnorm=\E.3, cr=^M, 
+       csr=\E!%+%p1%{32}%+%p2%{32} cud1=\026, cuf1=^L, 
+       cup=\E=%p1%{32}%+%c%p2%{80}%m%{32}%+%c%p2%{80}%>%{32}%+%c, 
+       cuu1=^K, cvvis=\E.1, dch=\EW, dl1=\ER, home=^^, ht=^I, hts=\E1, 
+       il1=\EE, invis=\E[1ZZ, is1=\EC\E.3\EDF\EV1\Eg\E[0ZZ, 
+       nel=^_, rev=\E[4ZZ, rmir=\Er, 
+       rmso=\E[%gh%{4}%^%Ph%gh%dZZ, 
+       rmul=\E[%gh%{8}%^%Ph%gh%dZZ, rs2=\Eo1, 
+       sgr=\E[%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;ZZ, 
+       sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3, 
+icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols, 
+       rs2=\Eo1, 
+       use=icl6404, 
+
 #### Interactive Systems Corp
 #
 # ISC used to sell OEMed and customized hardware to support ISC UNIX.
@@ -9918,6 +11560,19 @@ intext2|intextii|INTERACTIVE modified owl 1251,
 
 #### Kimtron (abm, kt)
 #
+# Kimtron seems to be history, but as March 1998 these people are still 
+# offering repair services for Kimtron equipment:
+#
+#    Com/Pair Monitor Service
+#    1105 N. Cliff Ave.
+#    Sioux Falls, South Dakota 57103
+#     
+#    WATS voice:  1-800/398-4946
+#    POTS   fax: +1 605/338-8709
+#    POTS voice: +1 605/338-9650
+#         Email: <compair@sd.cybernex.net>
+#  Internet/Web: <http://www.com-pair.com>
+#
 # Kimtron entries include (undocumented) codes for: enter dim mode,
 # enter bold mode, enter reverse mode, turn off all attributes.
 #
@@ -10085,10 +11740,10 @@ prism2|MDC Prism-2,
        am, bw, msgr, 
        cols#80, lines#24, 
        bel=^G, clear=\014$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=^F, 
-       cup=\013%p1%' '%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, 
+       cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, 
        cuu1=^Z, ed=\EJ, el=\EK, home=^A, 
        hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, 
-       ind=^J, kbs=^H, khome=^A, vpa=\013%p1%' '%+%c, 
+       ind=^J, kbs=^H, khome=^A, vpa=\013%p1%{32}%+%c, 
 
 # p4: Prism-4
 # -----------
@@ -10105,15 +11760,15 @@ prism4|p4|P4|MDC Prism-4,
        cols#80, lines#24, wsl#72, xmc#1, 
        bel=^G, blink=^CB, civis=^]\344, clear=\014$<20>, 
        cnorm=^]\342, cr=^M, cub1=^H, cud1=^J, cuf1=^F, 
-       cup=\013%p1%' '%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, 
+       cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, 
        cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK, 
        fsl=^]\345, home=^A, 
        hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, 
        ind=^J, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER, 
        rev=^CD, rmso=^C\s, rmul=^C\s, 
-       sgr=\003%'@'%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;, 
+       sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;, 
        sgr0=^C\s, smso=^CD, smul=^CP, tsl=^]\343, 
-       vpa=\013%p1%' '%+%c, 
+       vpa=\013%p1%{32}%+%c, 
 
 # p5: Prism-5
 # -----------
@@ -10338,7 +11993,7 @@ act4|microterm|microterm act iv,
        am, 
        cols#80, lines#24, 
        bel=^G, clear=\014$<12/>, cr=^M, cub1=^H, cud1=^K, cuf1=^X, 
-       cup=\024%p1%{24}%+%c%p2%p2%?%'/'%>%t%'0'%+%;%'P'%+%c, 
+       cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c, 
        cuu1=^Z, dch1=\004$<.1*/>, dl1=\027$<2.3*/>, 
        ed=\037$<2.2*/>, el=\036$<.1*/>, home=^], 
        il1=\001<2.3*/>, ind=^J, kcub1=^H, kcud1=^K, kcuf1=^X, 
@@ -10361,7 +12016,7 @@ mime|mime1|mime2|mimei|mimeii|microterm mime1,
        am, 
        cols#80, it#8, lines#24, vt#9, 
        bel=^G, clear=^]^C, cr=^M, cub1=^H, cud1=^J, cuf1=^X, 
-       cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%'0'%+%;%'P'%+%c, 
+       cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c, 
        cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>, 
        il1=\001$<80>, ind=^J, is2=^S\E^Q, kcub1=^H, kcud1=^K, 
        kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U, 
@@ -10469,6 +12124,494 @@ ergo4000|microterm ergo 4000,
 # There is an NCR4103 terminal that's just a re-badged Wyse-50.
 #
 
+# The following vendor-supplied termcaps were captured from the Boundless
+# Technologies site, 8 March 1998.  I removed all-upper-case names that were
+# identical, except for case, to lower-case ones.  I also uncommented the acsc
+# capabilities.X
+#
+# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a
+# DEC vt200/300 with color capabilities added.
+ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard, 
+       colors#8, pairs#64, 
+       op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ncr260vt300an, 
+# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a
+# DEC vt200/300 with color capabilities added.
+ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard, 
+       colors#8, pairs#64, 
+       op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ncr260vt300wan, 
+# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a DEC 
+# vt200/300 with color capabilities added.
+ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard, 
+       colors#8, pairs#64, 
+       op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ncr260vt300pp, 
+# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a
+# DEC vt200/300 with color capabilities added.
+ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode, 
+       colors#8, pairs#64, 
+       op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ncr260vt300wpp, 
+# This definition for ViewPoint supports several attributes.  This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies.  The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. 
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed. 
+# Mapping to ASCII character set ('acsc' capability) can also be 
+# restored if needed.
+ncr260vppp|NCR 2900_260 viewpoint, 
+       am, bw, hs, km, mc5i, mir, msgr, xon, 
+       cols#80, lines#24, nlab#32, xmc#1, 
+       acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, 
+       cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5, 
+       cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>, 
+       cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>, 
+       cvvis=\E`5, dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, 
+       ed=\Ek$<2>, el=\EK$<2>, fsl=^M, home=\036$<2>, ht=^I, 
+       hts=\E1, il1=\EM$<2>, ind=\n$<2>, invis=\EG1, 
+       is2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, 
+       kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ, 
+       kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=^J, kcuf1=^F, 
+       kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B\:\r, 
+       kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r, 
+       kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r, 
+       kf20=^B$\r, kf21=\002%^M, kf22=^B&\r, kf23=^B'\r, 
+       kf24=^B(\r, kf25=^B)\r, kf26=^B*\r, kf27=^B+\r, 
+       kf28=^B\,\r, kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r, 
+       kf32=^B0\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r, 
+       kf8=^B8\r, kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ, 
+       kprt=\EP, ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R, 
+       mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>, 
+       nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003, 
+       rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, 
+       rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, 
+       sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq, 
+       smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF, 
+ncr260vpwpp|NCR 2900_260 viewpoint wide mode, 
+       cols#132, 
+       cup=\Ea%i%p1%dR%p2%dC$<30>, 
+       is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, 
+       rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, 
+       use=ncr260vppp, 
+ncr260vt100an|NCR 2900_260 vt100 with ansi kybd, 
+       am, hs, mir, msgr, xenl, xon, 
+       cols#80, lines#24, nlab#32, 
+       acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, 
+       blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
+       clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, 
+       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>, 
+       cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, 
+       cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, 
+       cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, 
+       cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, 
+       dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, 
+       ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>, 
+       fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I, 
+       hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, 
+       il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>, 
+       invis=\E[8m, 
+       is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, 
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
+       kdch1=\E[3~, kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, 
+       kf4=\EOS, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, 
+       kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>, rc=\E8, 
+       rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l, 
+       rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m, 
+       rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       sc=\E7, 
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>, 
+       sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h, 
+       smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g, 
+       tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, 
+ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd, 
+       cols#132, 
+       cup=\E[%i%p1%d;%p2%dH$<30>, 
+       is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       use=ncr260vt100an, 
+ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd, 
+       is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, 
+       kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~, 
+       lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, 
+       rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       smkx=\E=, 
+       use=ncr260vt100an, 
+ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+  kybd, 
+       cols#132, 
+       cup=\E[%i%p1%d;%p2%dH$<30>, 
+       is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       use=ncr260vt100pp, 
+ncr260vt200an|NCR 2900_260 vt200 with ansi kybd, 
+       am, hs, mir, msgr, xenl, xon, 
+       cols#80, lines#24, nlab#32, 
+       acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, 
+       blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
+       clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, 
+       csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>, 
+       cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, 
+       cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, 
+       cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, 
+       cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, 
+       dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, 
+       ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, 
+       fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, 
+       ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, 
+       ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, 
+       is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, 
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
+       kdch1=\E[3~, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\E[21~, 
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
+       kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf21=\E[31~, 
+       kf22=\E[32~, kf23=\E[33~, kf24=\E[34~, kf25=\E[35~, 
+       kf26=\E[1~, kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR, 
+       kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, 
+       kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, 
+       kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, 
+       kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, 
+       mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, 
+       ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, 
+       rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, 
+       rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       sc=\E7, 
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>, 
+       sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h, 
+       smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
+       tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, 
+ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd, 
+       cols#132, 
+       cup=\E[%i%p1%d;%p2%dH$<30>, 
+       is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, 
+       rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, 
+       use=ncr260vt200an, 
+ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd, 
+       ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, 
+       kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
+       lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=, 
+       use=ncr260vt200an, 
+ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+  kybd, 
+       cols#132, 
+       cup=\E[%i%p1%d;%p2%dH$<30>, 
+       is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       use=ncr260vt200pp, 
+ncr260vt300an|NCR 2900_260 vt300 with ansi kybd, 
+       am, hs, mir, msgr, xenl, xon, 
+       cols#80, lines#24, nlab#32, 
+       acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, 
+       blink=\E[5m, bold=\E[1m, civis=\E[?25l, 
+       clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, 
+       csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>, 
+       cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, 
+       cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, 
+       cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, 
+       cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, 
+       dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, 
+       ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, 
+       fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, 
+       ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, 
+       ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, 
+       is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, 
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
+       kdch1=\E[3~, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\E[21~, 
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, 
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, 
+       kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf21=\E[31~, 
+       kf22=\E[32~, kf23=\E[33~, kf24=\E[34~, kf25=\E[35~, 
+       kf26=\E[1~, kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR, 
+       kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, 
+       kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, 
+       kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, 
+       kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, 
+       mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, 
+       ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, 
+       rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, 
+       rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       sc=\E7, 
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>, 
+       sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h, 
+       smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, 
+       tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, 
+ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd, 
+       cols#132, 
+       cup=\E[%i%p1%d;%p2%dH$<30>, 
+       is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>, 
+       rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>, 
+       use=ncr260vt300an, 
+ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd, 
+       ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, 
+       kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, 
+       lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=, 
+       use=ncr260vt300an, 
+NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+  kybd, 
+       cols#132, 
+       cup=\E[%i%p1%d;%p2%dH$<30>, 
+       is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, 
+       use=ncr260vt300pp, 
+# This terminfo file contains color capabilities for the Wyse325 emulation of 
+# the NCR 2900/260C color terminal.  Because of the structure of the command
+# (escape sequence) used to set color attributes, one of the fore/background
+# colors must be preset to a given value. I have set the background color to
+# black.  The user can change this setup by altering the last section of the
+# 'setf' definition.  The escape sequence to set color attributes is 
+#              ESC d y <foreground_color> <background_color> 1  
+# In addition, the background color can be changed through the desk accessories.
+# The capablitiy 'op' sets colors to green on black (default combination).  
+#
+# NOTE:  The NCR Unix System Administrator's Shell will not function properly
+#          if the 'pairs' capability is defined. Un-Comment the 'pairs'
+#          capability and recompile if you wish to have it included. 
+#
+ncr260wy325pp|NCR 2900_260 wyse 325, 
+       am, bw, hs, km, mc5i, mir, msgr, xon, 
+       colors#16, cols#80, lines#24, ncv#33, nlab#32, 
+       acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, 
+       cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=^M, 
+       cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, 
+       cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>, 
+       cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c, 
+       ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<5>, ht=^I, 
+       hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1, 
+       is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ, 
+       kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, 
+       kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET, 
+       kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, 
+       kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, 
+       kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, 
+       kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, 
+       kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r, kf30=^Am\r, kf31=^An\r, 
+       kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, 
+       kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, 
+       kprt=\EP, mc0=\EP, mc4=^T, mc5=^R, 
+       mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>, 
+       nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0, 
+       rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, 
+       rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       setb=\s, 
+       setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}%e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=%t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>, 
+       sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/, 
+       smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0, 
+       tsl=\EF, 
+ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode, 
+       cols#132, 
+       cup=\Ea%i%p1%dR%p2%dC$<30>, 
+       is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       use=ncr260wy325pp, 
+# This definition for Wyse 350 supports several attributes.  This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies.  The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. 
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed. 
+# Mapping to ASCII character set ('acsc' capability) can also be 
+# restored if needed.
+# In addition, color capabilities have been added to this file.  The drawback,
+# however, is that the background color has to be black.  The foreground colors
+# are numbered 0 through 15.  
+#
+# NOTE:  The NCR Unix System Administrator's Shell does not function properly
+#          with the 'pairs' capability defined as below.  If you wish to
+#          have it included, Un-comment it and recompile (using 'tic'). 
+#
+ncr260wy350pp|NCR 2900_260 wyse 350, 
+       am, bw, hs, km, mc5i, mir, msgr, xon, 
+       colors#16, cols#80, lines#24, ncv#33, nlab#32, xmc#1, 
+       acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, 
+       cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, 
+       cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, 
+       cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>, 
+       cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c, 
+       ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<10>, ht=^I, 
+       hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1, 
+       is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H, 
+       kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L, 
+       kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, 
+       kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, 
+       kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, 
+       kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, 
+       kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, 
+       kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r, 
+       kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, 
+       khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, 
+       mc0=\EP$<10>, mc4=^T, mc5=^R, 
+       mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>, 
+       nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0, 
+       rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, 
+       rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       setb=\s, 
+       setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}%e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t%{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1%{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>, 
+       sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/, 
+       smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0, 
+       tsl=\EF, 
+ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode, 
+       cols#132, 
+       cup=\Ea%i%p1%dR%p2%dC$<30>, 
+       is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, 
+       rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, 
+       use=ncr260wy350pp, 
+# This definition for Wyse 50+ supports several attributes.  This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies.  The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. 
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed. 
+# Mapping to ASCII character set ('acsc' capability) can also be 
+# restored if needed.
+# (ncr260wy50+pp: originally contained commented-out 
+# <acsc=j5k3l2m1n8q:t4u9v=w0x6>, as well as the commented-out one there -- esr)
+ncr260wy50+pp|NCR 2900_260 wyse 50+, 
+       am, bw, hs, km, mc5i, mir, msgr, xon, 
+       cols#80, lines#24, nlab#32, xmc#1, 
+       acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, 
+       cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, 
+       cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, 
+       cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>, 
+       cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c, 
+       ed=\EY$<5>, el=\ET$<5>, fsl=^M, home=\036$<10>, 
+       ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>, 
+       invis=\EG1, 
+       is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H, 
+       kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L, 
+       kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, 
+       kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, 
+       kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, 
+       kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, 
+       kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, 
+       kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r, 
+       kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, 
+       khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, 
+       mc0=\EP$<10>, mc4=^T, mc5=^R, 
+       mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>, 
+       nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed., 
+       rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, 
+       rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq, 
+       smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF, 
+ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode, 
+       cols#132, 
+       cup=\Ea%i%p1%dR%p2%dC$<30>, 
+       is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, 
+       rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, 
+       use=ncr260wy50+pp, 
+ncr260wy60pp|NCR 2900_260 wyse 60, 
+       am, bw, hs, km, mc5i, mir, msgr, xon, 
+       cols#80, lines#24, nlab#32, 
+       acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, 
+       cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, 
+       cr=^M, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, 
+       cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>, 
+       cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c, 
+       ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<25>, 
+       ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>, 
+       invis=\EG1, 
+       is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ, 
+       kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK, 
+       kcbt=\EI$<15>, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, 
+       kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, 
+       kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, 
+       kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, 
+       kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, 
+       kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r, 
+       kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r, 
+       kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, 
+       kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, mc0=\EP, mc4=^T, mc5=^R, 
+       mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>, 
+       nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed., 
+       rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, 
+       rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/, 
+       smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>, 
+       tsl=\EF, 
+ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode, 
+       cols#132, 
+       cup=\Ea%i%p1%dR%p2%dC$<30>, 
+       is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, 
+       use=ncr260wy60pp, 
+ncr160vppp|NCR 2900_160 viewpoint, 
+       use=ncr260vppp, 
+ncr160vpwpp|NCR 2900_160 viewpoint wide mode, 
+       use=ncr260vpwpp, 
+ncr160vt100an|NCR 2900_160 vt100 with ansi kybd, 
+       use=ncr260vt100an, 
+ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd, 
+       use=ncr260vt100pp, 
+ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd, 
+       use=ncr260vt100wan, 
+ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+  kybd, 
+       use=ncr260vt100wpp, 
+ncr160vt200an|NCR 2900_160 vt200 with ansi kybd, 
+       use=ncr260vt200an, 
+ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd, 
+       use=ncr260vt200pp, 
+ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd, 
+       use=ncr260vt200wan, 
+ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+  kybd, 
+       use=ncr260vt200wpp, 
+ncr160vt300an|NCR 2900_160 vt300 with ansi kybd, 
+       use=ncr260vt300an, 
+ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd, 
+       use=ncr260vt300pp, 
+ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd, 
+       use=ncr260vt300wan, 
+ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+  kybd, 
+       use=ncr260vt300wpp, 
+ncr160wy50+pp|NCR 2900_160 wyse 50+, 
+       use=ncr260wy50+pp, 
+ncr160wy50+wpp|NCR 2900_160 wyse 50+ wide mode, 
+       use=ncr260wy50+wpp, 
+ncr160wy60pp|NCR 2900_160 wyse 60, 
+       use=ncr260wy60pp, 
+ncr160wy60wpp|NCR 2900_160 wyse 60 wide mode, 
+       use=ncr260wy60wpp, 
+ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal, 
+       am, hs, mc5i, mir, msgr, xon, 
+       cols#80, it#8, lines#24, nlab#32, 
+       acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~, 
+       bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>, 
+       clear=\E[2J\E[1;1H$<300>, cr=^M, 
+       csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>, 
+       cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>, 
+       cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>, 
+       cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>, 
+       cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>, 
+       dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>, 
+       ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>, 
+       enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>, 
+       ht=^I, hts=\EH, il=\E[%p1%dL$<80>, il1=\E[B\E[L$<80>, 
+       ind=\ED, 
+       is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>, 
+       kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kbs=^H, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=^M, kf1=\EOP, 
+       kf2=\EOQ, kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE, 
+       rc=\E8, rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>, 
+       rmir=\E[4l$<80>, rmso=\E[0m$<30>, rmul=\E[0m$<30>, 
+       rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>, 
+       sc=\E7, 
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>, 
+       sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>, 
+       smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>, 
+       tsl=\E[>+1$<70>, 
+ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal, 
+       cols#132, 
+       is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>, 
+       rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>, 
+       use=ncrvt100an, 
+#
+# Vendor-supplied NCR termcaps end here
+
 # NCR7900 DIP switches:
 #
 # Switch A:
@@ -10515,13 +12658,13 @@ ncr7900i|ncr7900|ncr 7900 model 1,
        is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=^J, kcuf1=^F, 
        kcuu1=^Z, khome=^A, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=\E0@, 
        rmul=\E0@, 
-       sgr=\E0%p5%'@'%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c, 
+       sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c, 
        sgr0=\E0@, smso=\E0Q, smul=\E0`, 
 ncr7900iv|ncr 7900 model 4, 
        am, bw, eslok, hs, 
        cols#80, lines#24, 
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 
-       cup=\013%p1%'@'%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1, 
+       cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1, 
        fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=^J, kbs=^H, 
        kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET, 
        kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, 
@@ -10537,9 +12680,9 @@ ncr7901|ncr 7901 model,
        hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, ind=^J, 
        is2=\E4^O, kclr=^L, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, 
        khome=^H, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=^O, rmul=^O, 
-       sgr=\E0%p5%'@'%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c\016, 
+       sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c\016, 
        sgr0=^O, smso=\E0Q\016, smul=\E0`\016, 
-       vpa=\013%p1%'@'%+%c, 
+       vpa=\013%p1%{64}%+%c, 
 
 #### Perkin-Elmer (Owl)
 #
@@ -11238,8 +13381,8 @@ scanset|sc410|sc415|Tymshare Scan Set,
 #
 # If you saw a Byte Magazine cover with a terminal on it during the early
 # 1980s, it was probably one of these.  Carl Helmers liked them because
-# they could crank 19.2 and were cheap (that is, until he tried to program
-# one...)
+# they could crank 19.2 and were cheap (that is, he liked them until he tried
+# to program one...)
 #
 
 # Missing in vc303a and vc303 descriptions:  they scroll 2 lines at a time
@@ -11308,13 +13451,32 @@ kaypro|kaypro2|kaypro II,
        el=^X, home=^^, il1=\EE, ind=^J, kcud1=^J, kcuf1=^L, kcuu1=^K, 
 
 # From IBM, Thu May  5 19:35:27 1983
-# (ibmpc: commented out <smir>=\200R because we don't know <rmir> -- esr)
-ibmpc|ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS), 
+# (commented out <smir>=\200R because we don't know <rmir> -- esr)
+ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS), 
        am, 
        cols#80, lines#24, 
        bel=^G, clear=^L^K, cr=^M^^, cub1=^], cud1=^J, cuf1=^\, 
        cuu1=^^, home=^K, ind=\n$<10>, kcud1=^_, 
 
+ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX, 
+       am, bw, eo, hs, km, msgr, ul, 
+       cols#80, it#8, lines#24, 
+       acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, 
+       bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M, 
+       cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, 
+       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, 
+       cuu=\E[%p1%dA, cuu1=\E[A, ech=\E[%p1%dX, ed=\E[J, el=\E[K, 
+       home=\E[H, hpa=\E[%i%p1%dG, ind=\E[S\E[B, 
+       indn=\E[%p1%dS\E[%p1%dB, invis=\E[30;40m, kbs=^H, 
+       kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 
+       kdch1=\177, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241, 
+       kf3=\242, kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247, 
+       kf9=\250, khome=\E[H, kich1=\E[^H, knp=\E[U, ll=\E[24;1H, 
+       nel=^M, rev=\E[7m, ri=\E[T\E[A, rin=\E[%p1%dT\E[%p1%dA, 
+       rmso=\E[m, rmul=\E[m, 
+       sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, 
+       sgr0=\E[m, smso=\E[7m, smul=\E[4m, 
+
 #### Apple II
 #
 # Apple II firmware console first, then various 80-column cards and 
@@ -11680,6 +13842,12 @@ amiga-h|Hans Verkuil's Amiga ANSI,
        rmul=\2330m, rs1=\Ec, sgr0=\2330m, smacs=^N, smcup=\233?7l, 
        smso=\2337m, smul=\2334m, 
 
+# From: Henning 'Faroul' Peters <Faroul@beyond.kn-bremen.de>, 25 Sep 1999
+amiga-8bit|Amiga ANSI using 8-bit controls, 
+       acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L, 
+       ind=\204, indn@, ri=\215, rin@, 
+       use=amiga-h, 
+
 # Commodore B-128 microcomputer from Doug Tyrol <det@HEL-ACE.ARPA>
 #      I'm trying to write a termcap for a commodore b-128, and I'm
 # having a little trouble. I've had to map most of my control characters
@@ -11738,7 +13906,7 @@ osborne|osborne1|osborne I in 80-column mode,
        cols#80, lines#24, 
        clear=^Z, cub1=\010$<4>, cud1=^J, cuf1=^L, 
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, 
-       dch1=\\EW$<4/>, dl1=\ER, el=\ET, il1=\EE, is2=^Z, kbs=^H, 
+       dch1=\EW$<4/>, dl1=\ER, el=\ET, il1=\EE, is2=^Z, kbs=^H, 
        kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmir=, rmso=\E), 
        rmul=\Em, smir=\EQ, smso=\E(, smul=\El, 
 #
@@ -11918,6 +14086,46 @@ m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'infor
        smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A, 
        u6=\E[%i%d;%dR, u7=\E[6n, 
 
+# From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998
+#
+minitel1|minitel 1, 
+       am, bw, eslok, hs, hz, msgr, 
+       colors#8, cols#40, lines#24, pairs#8, 
+       acsc=+.\,\,./f0g1, bel=^G, blink=\EH, civis=^T, clear=^L, 
+       cnorm=^Q, cr=^M, cub1=^H, cud1=^J, cuf1=^I, 
+       cup=\037%p1%{65}%+%c%p2%{65}%+%c, cuu1=^K, el=^X, 
+       enacs=^Y, fsl=^J, home=^^, ind=^J, 
+       is2=\E;`ZQ\E\:iC\E\:iE\021, nel=^M^J, op=\EG, 
+       rep=%p1%c\022%p2%{63}%+%c, rev=\E], ri=^K, rmso=\E\\, 
+       setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;, 
+       sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;, 
+       sgr0=\EI\E\\, smso=\E], tsl=\037@%p1%{65}%+%c, 
+# is2=Fnct TE, Fnct MR, Fnct CM et pour finir: curseur ON.
+minitel1b|minitel 1-bistandard (in 40cols mode), 
+       mir, 
+       cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, 
+       cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, 
+       dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L, 
+       is1=\E;iYA\E;jYC, kclr=\E[2J, kctab=^I, kcub1=\E[D, 
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, 
+       kel=^X, khome=\E[H, kich1=\E[4h, kil1=\E[L, rmir=\E[4l, 
+       smir=\E[4h, smkx=\E;iYA\E;jYC, 
+       use=minitel1, 
+# <rmkx> posait des problemes (logout en sortant de vi).
+minitel1b-80|minitel 1-bistandard (standard teleinformatique), 
+       am@, bw@, hz@, 
+       colors@, cols#80, it#8, pairs@, 
+       blink=\E[5m, bold=\E[1m, civis=\037@A\024\n, 
+       clear=\E[H\E[2J, cnorm=\037@A\021\n, cuf1=\E[C, 
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, 
+       ht=^I, ind=\ED, is1@, is2@, kent=\EOM, kf0=\EOp, kf1=\EOq, 
+       kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw, 
+       kf8=\EOx, kf9=\EOy, nel=\EE, op@, rc=\E8, rep@, rev=\E[7m, 
+       ri=\EM, rmkx@, rmso=\E[27m, rmul=\E[24m, sc=\E7, setf@, 
+       sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, 
+       sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, 
+       use=minitel1b, 
+
 ######## OBSOLETE VDT TYPES
 #
 # These terminals are *long* dead -- these entries are retained for
@@ -12286,7 +14494,7 @@ delta|dd5000|delta data 5000,
        am, 
        cols#80, lines#27, 
        bel=^G, clear=^NR, cub1=^H, cud1=^J, cuf1=^Y, 
-       cup=\017%p1%p1%{16}%m%{2}%*%-%'9'%+%c%p2%p2%{16}%m%{2}%*%-%'9'%+%c, 
+       cup=\017%p1%p1%{16}%m%{2}%*%-%{57}%+%c%p2%p2%{16}%m%{2}%*%-%{57}%+%c, 
        cuu1=^Z, dch1=^NV, el=^NU, home=^NQ, ind=^J, 
 
 #### Digital Data Research (ddr)
@@ -13528,11 +15736,9 @@ versaterm|versaterm vt100 emulator for the macintosh,
 
 # From: Rick Thomas <ihnp4!btlunix!rbt>
 # (xtalk: I added <rmam>/<smam> based on the init string.
-# I also removed <xmc#1> and the trailing \s characters from the highlight
-# changers, I don't believe these on a VT100-emulating PC display -- esr)
 xtalk|IBM PC with xtalk communication program (versions up to 3.4), 
        am, mir, msgr, xon, 
-       cols#80, it#8, lines#24, vt#3, 
+       cols#80, it#8, lines#24, vt#3, xmc#1, 
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
        bel=^G, clear=\E[H\E[J$<50>, cr=^M, cub=\E[%p1%dD, cub1=^H, 
        cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C$<2>, 
@@ -13544,9 +15750,9 @@ xtalk|IBM PC with xtalk communication program (versions up to 3.4),
        kcuu1=\EOA, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\EOx, 
        kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, kf6=\EOu, kf7=\EOv, 
        kf8=\EOl, kf9=\EOw, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, 
-       rmkx=\E[?1l\E>, rmso=\E[m, 
+       rmkx=\E[?1l\E>, rmso=\E[m\s
        rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m, 
-       smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, 
+       smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s
        tbc=\E[3g, 
 
 # The official PC terminal emulator program of the AT&T Product Centers.
@@ -13707,7 +15913,7 @@ dwk|dwk-vt|dwk terminal,
        cols#80, it#8, lines#24, 
        acsc=+\^\,Q-S.M0\177`+a\:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~_, 
        bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, 
-       cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, dch1=\EP, 
+       cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, 
        ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=^J, kbs=\177, 
        kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee, 
        kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5, 
@@ -13766,13 +15972,13 @@ opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
        kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, 
        kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, 
        mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>, 
-       pfloc=\EZ2%p1%'?'%+%c%p2%s\177, 
-       pfx=\EZ1%p1%'?'%+%c%p2%s\177, 
-       pln=\Ez%p1%'/'%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, 
+       pfloc=\EZ2%p1%{63}%+%c%p2%s\177, 
+       pfx=\EZ1%p1%{63}%+%c%p2%s\177, 
+       pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, 
        rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11, 
        rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>, 
        rs3=\EwG\Ee($<150>, 
-       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%'0'%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
+       sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, 
        sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/, 
        smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177, 
        smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(, 
@@ -13784,11 +15990,10 @@ teletec|Teletec Datascreen,
        bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^K, 
        home=^^, ind=^J, 
 # From: Mark Dornfeld <romwa@ucbvax.berkeley.edu>
-#              This termcap is for the LANPAR Technologies VISION 3220
-#      terminal.  The function key definitions k0-k5 represent the
-#      edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN,
-#      NEXT SCREEN. The key definitions k6-k9 represent the PF1 to
-#      PF4 keys.
+# This description is for the LANPAR Technologies VISION 3220
+# terminal from 1984/85.  The function key definitions k0-k5 represent the
+# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN,
+# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to PF4 keys.
 # (v3220: removed obsolete ":kn#10:",
 # I added <rmam>/<smam> based on the init string -- esr)
 v3220|LANPAR Vision II model 3220/3221/3222, 
@@ -14733,7 +16938,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #        that it was messing up someone's 3270 emulator.
 #      * Added some longname fields in order to avoid warning messages from
 #        older tic implementations.
-#      * According to ctrlseqs.ms, xterm has a full vt100 graphics set.  Use
+#      * According to ctlseqs.ms, xterm has a full vt100 graphics set.  Use
 #        it! (This gives us pi, greater than, less than, and a few more.)
 #      * Freeze for ncurses-1.9.6 release.
 # 9.10.1 (Sat Oct 21 22:18:09 EDT 1995):
@@ -14972,16 +17177,21 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #      * Removed rmir/smir from tv92B.
 #
 # 10.2.0 (Sat Feb 28 12:47:36 EST 1998):
-#      * Added Thomas Dickey's acsc string for linux.
-#      * Merged in BeOS, iris-color, hds200, xterm-xf86-v40, xterm-8bit,
-#        and emx entries.
+#      * add hds200 description (Walter Skorski)
+#      * add beterm entry (Fred Fish)
+#      * add Thomas Dickey's xterm-xf86-v40, xterm-8bit, xterm-16color,
+#        iris-color entries.
+#      * add emx entries.
 #      * Replaced unixpc entry with Benjamin Sittler's corrected version.
 #      * Replaced xterm/rxvt/emu/syscons entries with Thomas Dickey's
 #        versions.
+#      * remove sgr string from qnx based on report by Xiaodan Tang
 #      * Added u8/u9, removed rmul/smul from sun-il.
-#      * 4.2 tic allows us to use \0 instead of \200 now.
+#      * 4.2 tic displays \0 rather than \200.
+#      * add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc,
+#        apparently based on cp-866).
 #      * Merged in Pavel Roskin's acsc for linux-koi8
-#      * Corrected some erroneous \\\s to \.
+#      * Corrected some erroneous \\'s to \.
 #      * 4.2 ncurses has been changed to use setaf/setab, consistent w/SysV.
 #      * II -> ii in pcvtXX, screen, xterm.
 #      * Removed \n chars following ANSI escapes in sgr & friends.
@@ -14992,10 +17202,154 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #      * Added Sony NEWS workstation entries and cit101e-rv.
 #      * Reverted `amiga'; to Kent Polk's version, as I'm told
 #        the Verkuil entry messes up with Amiga Telnet.
+# 10.2.1 (Sun Mar  8 18:32:04 EST 1998):
+#      * Corrected attributions in 10.2.0 release notes.
+#      * Scanned the Shuford archive for new terminfos and information.
+#      * Removed sgr from qnx entry (Thomas Dickey).
+#      * Added entries for ICL and Kokusai Data Systems terminals.
+#      * Incorporated NCR terminfos from the Boundless Technology FTP site.
+#      * Incorporated att700 from the Boundless Technology FTP site.
+#      * Miscellaneous contact-address and Web-page updates.
+#
+# 1998/5/9
+#      * add nxterm and xterm-color terminfo description (request by Cristian
+#        Gafton <gafton@redhat.com>).
+#      * modify rxvt terminfo description to clear alternate screen before
+#        switching back to normal screen, for compatibility with applications
+#        which use xterm (reported by Manoj Kasichainula <manojk@io.com>).
+#      * modify linux terminfo description to reset color palette (reported
+#        by Telford Tendys <telford@eng.uts.edu.au>).
+#
+# 1998/7/4
+#      * merge changes from current XFree86 xterm terminfo descriptions.
+#
+# 1998/7/25
+#      * Added minitel1 entries from Alexander Montaron.
+#      * Added qnxt2 from Federico Bianchi.
+#      * Added arm100 terminfo entries from Dave Millen.
+#
+# 1998/8/6
+#      * Added ncsa telnet entries from Francesco Potorti
+#
+# 1998/8/15
+#      * modify ncsa telnet entry to reflect color, other capabilities based on
+#        examination of the source code - T.Dickey.
+#
+# 1998/8/22
+#      * Corrected some erroneous \\'s to \ (eterm, osborne) - TD.
+#
+# 1998/8/29
+#      * Added Francesco Potorti's tuned Wyse 99 entries.
+#      * dtterm enacs correction from Alexander V. Lukyanov.
+#      * Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version.
+#      * correct a typo in icl6404 entry.
+#      * add xtermm and xtermc
+#
+# 1998/9/26
+#      * format most %'char' sequences to %{number}
+#      * adapt IBM AIX 3.2.5 terminfo - T.Dickey
+#      * merge Data General terminfo from Hasufin <hasufin@vidnet.net> - TD
+#
+# 1998/10/10
+#      * update xterm-xfree86 to current (patch 84), for is2/rs2 changes - TD
+#      * correct initialization string in xterm-r5, add misc other features
+#        to correspond with xterm patch 84 - TD
+#
+# 1998/12/19
+#      * update xterm-xfree86 to current (patch 90), smcur/rmcur changes - TD
+#      * add Mathew Vernon's mach console entries
+#      * corrections for ncsa function-keys (report by Larry Virden)
+#
+# 1998/12/19
+#      * change linux to use ncv#2, since underline does not work with color - TD
+#
+# 1999/1/9
+#      * add kbt to iris-ansi, document other shift/control functionkeys - TD
+#      * correct iris-ansi and iris-ansi-ap with respect to normal vs keypad
+#        application modes, change kent to use the correct keypad code - TD
+#
+# 1999/1/10
+#      * add entry for Tera Term - TD
+#
+# 1999/1/23
+#      * minor improvements for teraterm entry - TD
+#      * rename several entries used by BSDI: bsdos to bsdos-pc-nobold,
+#        and bsdos-bold to bsdos-pc (Jeffrey C Honig)
+#
+# 1999/2/20
+#      * resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in
+#        xterm and ncsa entries by removing the unneeded ones.  Note that
+#        some entries will return kend & khome versus kslt and kfnd, for
+#        PC-style keyboards versus strict vt220 compatiblity - TD
+#
+# 1999/3/13
+#      * adjust xterm-xfree86 khome/kend to match default PC-style keyboard
+#        tables - TD
+#      * add 'crt' entry - TD
+#      * correct typos in 'linux-c' entry - TD
+#
+# 1999/3/14
+#      * update entries for BSD/OS console to use klone+sgr and klone+color
+#        (Jeffrey C Honig)
+#
+# 1999/3/27
+#      * adjust xterm-xfree86 miscellaneous keypad keys, as per patch #94 - TD.
+#
+# 1999/4/10
+#      * add linux-lat, from RedHat patches to ncurses 4.2
+#
+# 1999/4/17
+#      * add complete set of default function-key definitions for scoansi - TD.
+#
+# 1999/7/3
+#      * add cnorm, cvvis for Linux 2.2 kernels
+#
+# 1999/7/24
+#      * add kmous to xterm-r5 -TD
+#      * correct entries xterm+sl and xterm+sl-twm, which were missing the
+#        parent "use" clause -TD
+#
+# 1999/7/31
+#      * corrected cnorm, added el1 in 'screen' description -TD
+#
+# 1999/8/14
+#      * add ms-vt100 -TD
+#
+# 1999/8/21
+#      * corrections to beterm entry -TD
+#
+# 1999/8/28
+#      * add cygwin entry -TD
+#
+# 1999/9/4
+#      * minor corrections for beterm entry -TD
+#
+# 1999/9/18
+#      * add acsc string to HP 70092 terminfo entry -Joerg Wunsch
+#
+# 1999/9/25
+#      * add amiga-8bit entry
+#      * add console entries from NetBSD: ofcons, wsvt25, wsvt25m, rcons,
+#        rcons-color, based on
+#        ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/termcap/termcap.src
+#      * add alias for iris-ansi-net
+#
+# 1999/10/2
+#      * corrected scoansi entry's acsc, some function keys, add color -TD
+#
+# 1999/10/23
+#      * add cnorm, cvvis to cons25w, and modify ncv to add 'dim' -TD
+#      * reorder ncsa entries to make ncsa-vt220 use the alternate function
+#        key mapping, leaving Potorti's entries more like he named them -TD
+#      * remove enter/exit am-mode from cygwin -TD
 #
-# The following sets edit modes for GNU EMACS
+# The following sets edit modes for GNU EMACS.
 # Local Variables:
 # fill-prefix:"\t"
 # fill-column:75
+# comment-column:0
+# comment-start-skip:"^#+"
+# comment-start:"# "
+# compile-command:"tic -c terminfo.master"
 # End:
 ######## SHANTIH!  SHANTIH!  SHANTIH!
index c35933bdb23a6153ea1c75980356505f520a5a76..e22d414fbd17d8cc698f04b4fb677c5197846fd9 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: mk-1st.awk,v 1.35 1998/02/11 12:13:53 tom Exp $
+# $Id: mk-1st.awk,v 1.39 1998/05/09 21:54:02 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -39,7 +39,7 @@
 #      depend (optional dependencies for all objects, e.g, ncurses_cfg.h)
 #      subset ("none", "base", "base+ext_funcs" or "termlib")
 #      target (cross-compile target, if any)
-#      DoLinks ("yes" or "no", flag to add symbolic links)
+#      DoLinks ("yes", "reverse" or "no", flag to add symbolic links)
 #      rmSoLocs ("yes" or "no", flag to add extra clean target)
 #      overwrite ("yes" or "no", flag to add link to libcurses.a
 #
 #
 function symlink(src,dst) {
                if ( src != dst ) {
-                       printf "rm -f %s; ", dst
-                       printf "$(LN_S) %s %s; ", src, dst
+                       if ( DoLinks == "reverse" ) {
+                               printf "rm -f %s; ", src
+                               printf "$(LN_S) %s %s; ", dst, src
+                       } else {
+                               printf "rm -f %s; ", dst
+                               printf "$(LN_S) %s %s; ", src, dst
+                       }
                }
        }
 function sharedlinks(directory, add) {
                if ( end_name != lib_name ) {
-                       abi_name = sprintf("%s.$(ABI_VERSION)", lib_name);
+                       if ( DoLinks == "yes" ) {
+                               abi_name = sprintf("%s.$(ABI_VERSION)", lib_name);
+                       } else {
+                               abi_name = end_name;
+                       }
                        if (add) {
                                printf "\tcd %s && (", directory
-                               symlink(end_name, abi_name);
+                               if ( abi_name != end_name ) {
+                                       symlink(end_name, abi_name);
+                               }
                                symlink(abi_name, lib_name);
                                printf ")\n"
                        } else {
-                               printf "\t-@rm -f %s/%s\n", directory, abi_name
+                               if ( abi_name != end_name ) {
+                                       printf "\t-@rm -f %s/%s\n", directory, abi_name
+                               }
                                printf "\t-@rm -f %s/%s\n", directory, lib_name
                        }
                }
        }
 function removelinks() {
                if ( end_name != lib_name ) {
-                       printf "\trm -f ../lib/%s ../lib/%s\n", abi_name, end_name
-               }
-       }
-function installed_name() {
-               if ( DO_LINKS == "yes" ) {
-                       return sprintf("%s.$(REL_VERSION)", lib_name);
-               } else {
-                       return lib_name;
+                       if ( abi_name != end_name ) {
+                               printf "\t-rm -f ../lib/%s\n", abi_name
+                       }
+                       printf "\t-rm -f ../lib/%s\n", end_name
                }
        }
 BEGIN  {
@@ -137,12 +146,20 @@ END       {
                        {
                                if ( DoLinks == "yes" ) {
                                        end_name = sprintf("%s.$(REL_VERSION)", lib_name);
+                               } else if ( DoLinks == "reverse") {
+                                       tmp_name = sprintf("%s.$(ABI_VERSION)", lib_name);
+                                       end_name = lib_name;
+                                       lib_name = tmp_name;
                                } else {
                                        end_name = lib_name;
                                }
                                printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
                                print  "\t-@rm -f $@"
-                               printf "\t$(MK_SHARED_LIB) $(%s_OBJS)\n", OBJS
+                               if ( subset == "termlib") {
+                                       printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(TINFO_LIST)\n", OBJS
+                               } else {
+                                       printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(SHLIB_LIST)\n", OBJS
+                               }
                                sharedlinks("../lib", 1)
                                print  ""
                                if ( end_name != lib_name ) {
@@ -153,15 +170,19 @@ END       {
                                print  "install.libs \\"
                                printf "install.%s :: $(INSTALL_PREFIX)$(libdir) ../lib/%s\n", name, end_name
                                printf "\t@echo installing ../lib/%s as $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, end_name
-                               printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s \n", end_name
-                               printf "\t$(INSTALL_LIB) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, end_name
+                               if ( DoLinks == "reverse") {
+                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name
+                                       printf "\t$(INSTALL_LIB) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, lib_name
+                               } else {
+                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s \n", end_name
+                                       printf "\t$(INSTALL_LIB) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, end_name
+                               }
                                sharedlinks("$(INSTALL_PREFIX)$(libdir)", 1)
                                if ( overwrite == "yes" && name == "ncurses" )
                                {
                                        ovr_name = sprintf("libcurses%s", suffix)
-                                       printf "\t@echo linking %s to %s\n", ovr_name, lib_name
-                                       printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s \n", ovr_name
-                                       printf "\t(cd $(INSTALL_PREFIX)$(libdir) && $(LN_S) %s %s)\n", lib_name, ovr_name
+                                       printf "\t@echo linking %s to %s\n", lib_name, ovr_name
+                                       printf "\tcd $(INSTALL_PREFIX)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, lib_name, ovr_name
                                }
                                if ( ldconfig != "" ) {
                                        printf "\t- test -z \"$(INSTALL_PREFIX)\" && %s\n", ldconfig
@@ -232,22 +253,21 @@ END       {
                        }
                        print ""
                        print "clean ::"
-                       printf "\trm -f ../lib/%s\n", lib_name
+                       printf "\t-rm -f ../lib/%s\n", lib_name
                        print ""
                        print "mostlyclean::"
-                       printf "\trm -f $(%s_OBJS)\n", OBJS
+                       printf "\t-rm -f $(%s_OBJS)\n", OBJS
                        print ""
                        print "clean ::"
-                       printf "\trm -f $(%s_OBJS)\n", OBJS
                        removelinks();
                }
                else if ( found == 2 )
                {
                        print ""
                        print "mostlyclean::"
-                       printf "\trm -f $(%s_OBJS)\n", OBJS
+                       printf "\t-rm -f $(%s_OBJS)\n", OBJS
                        print ""
                        print "clean ::"
-                       printf "\trm -f $(%s_OBJS)\n", OBJS
+                       printf "\t-rm -f $(%s_OBJS)\n", OBJS
                }
        }
index 9240b4707a1b1dd15133f2d5d5ff024dc8745801..2d998b0c5c3dae336388be80930773337c7ea99b 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: mk-2nd.awk,v 1.10 1998/02/11 12:13:53 tom Exp $
+# $Id: mk-2nd.awk,v 1.11 1998/10/17 21:54:21 Alexander.V.Lukyanov Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -89,9 +89,12 @@ BEGIN        {
                                        atsign="@"
                                        printf "\t@echo 'compiling %s (%s)'\n", $1, model
                                }
-                               if ( $3 == "." || srcdir == "." )
-                                       printf "\t%scd ../%s; $(%s) $(CFLAGS_%s) -c ../%s/%s%s", atsign, model, compile, MODEL, name, $1, suffix
-                               else
+                               if ( $3 == "." || srcdir == "." ) {
+                                       dir = $3 "/"
+                                       sub("^\\$\\(srcdir\\)/","",dir);
+                                       sub("^\\./","",dir);
+                                       printf "\t%scd ../%s; $(%s) $(CFLAGS_%s) -c ../%s/%s%s%s", atsign, model, compile, MODEL, name, dir, $1, suffix
+                               } else
                                        printf "\t%scd ../%s; $(%s) $(CFLAGS_%s) -c %s/%s%s", atsign, model, compile, MODEL, $3, $1, suffix
                        } else {
                                printf "%s", $1
diff --git a/ncurses/MKkeyname.awk b/ncurses/MKkeyname.awk
deleted file mode 100644 (file)
index 98ea404..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# $Id: MKkeyname.awk,v 1.12 1997/11/15 22:16:55 tom Exp $
-BEGIN {
-       print "/* generated by MKkeyname.awk */"
-       print ""
-       print "#include <ncurses_cfg.h>"
-       print "#include <stdlib.h>"
-       print "#include <string.h>"
-       print "#include <curses.h>"
-       print "#include <term.h>"
-       print ""
-       print "struct kn {"
-       print "\tconst char *name;"
-       print "\tint code;"
-       print "};"
-       print ""
-       print "const struct kn key_names[] = {"
-}
-
-/^[^#]/ {
-#      printf "\t{ \"%s\",%*s%s },\n", $1, 16-length($1), " ", $1;
-       printf "\t{ \"%s\",%s },\n", $1, $1;
-       }
-
-END {
-       print "};"
-       print ""
-       print "const char *keyname(int c)"
-       print "{"
-       print "int i, size = sizeof(key_names)/sizeof(struct kn);"
-       print "static char name[5];"
-       print "char *p;"
-       print ""
-       print "\tfor (i = 0; i < size; i++)"
-       print "\t\tif (key_names[i].code == c)"
-       print "\t\t\treturn key_names[i].name;"
-       print "\tif (c >= 256) return \"UNKNOWN KEY\";"
-       print "\tp = name;"
-       print "\tif (c >= 128) {"
-       print "\t\tstrcpy(p, \"M-\");"
-       print "\t\tp += 2;"
-       print "\t\tc -= 128;"
-       print "\t}"
-       print "\tif (c < 0)"
-       print "\t\tsprintf(p, \"%d\", c);"
-       print "\telse if (c < 32)"
-       print "\t\tsprintf(p, \"^%c\", c + '@');"
-       print "\telse if (c == 127)"
-       print "\t\tstrcpy(p, \"^?\");"
-       print "\telse"
-       print "\t\tsprintf(p, \"%c\", c);"
-       print "\treturn name;"
-       print "}"
-       print "" 
-}
index 132b98ea814bca557442bc7a9834824818666522..bed5ee95d2c238478a5ff977dd1033c2a87525f1 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.46 1998/02/11 12:13:57 tom Exp $
+# $Id: Makefile.in,v 1.63 1999/09/01 22:35:53 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -84,7 +84,7 @@ CPPFLAGS      = -I../ncurses -I$(srcdir) @CPPFLAGS@ \
 
 CCFLAGS                = $(CPPFLAGS) $(CFLAGS)
 
-HOSTCC         = @CC@
+HOSTCC         = @BUILD_CC@
 HOSTCCFLAGS    = @CFLAGS@ $(CPPFLAGS)
 HOSTLDFLAGS    = @LDFLAGS@ @LIBS@
 
@@ -98,8 +98,12 @@ CFLAGS_DEFAULT       = $(CFLAGS_@DFT_UPR_MODEL@)
 LINK           = $(CC)
 LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
 
-SHLIB_LIST     = @SHLIB_LIST@
+SHLIB_DIRS     = -L../lib -L$(libdir)
+SHLIB_LIST     = $(SHLIB_DIRS) @SHLIB_LIST@
+TINFO_LIST     = $(SHLIB_DIRS) @TINFO_LIST@
+
 MK_SHARED_LIB  = @MK_SHARED_LIB@
+
 REL_VERSION    = @cf_cv_rel_version@
 ABI_VERSION    = @cf_cv_abi_version@
 
@@ -118,7 +122,7 @@ AUTO_SRC = \
        ./comp_captab.c \
        ./expanded.c \
        ./fallback.c \
-       keys.tries \
+       init_keytry.h \
        ./lib_keyname.c \
        ./lib_gen.c \
        ./codes.c \
@@ -126,7 +130,7 @@ AUTO_SRC = \
        ./unctrl.c
 
 TEST_DEPS      = @LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
-TEST_ARGS      = -L../lib -lncurses
+TEST_ARGS      = -L../lib -lncurses@DFT_ARG_SUFFIX@
 TEST_LDFLAGS   = @LD_MODEL@ $(TEST_ARGS) @LIBS@ @EXTRA_LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@
 
 TEST_PROGS = \
@@ -135,6 +139,11 @@ TEST_PROGS = \
        hashmap$x \
        lib_mvcur$x
 
+base   = $(srcdir)/base
+serial = $(srcdir)/tty
+tinfo  = $(srcdir)/tinfo
+trace  = $(srcdir)/trace
+
 ################################################################################
 all ::         $(AUTO_SRC) ../lib $(LIBRARIES)
 
@@ -145,49 +154,49 @@ $(INSTALL_PREFIX)$(libdir) :
 
 ../lib : ; mkdir $@
 
-./fallback.c : $(srcdir)/MKfallback.sh
-       sh $(srcdir)/MKfallback.sh $(FALLBACK_LIST) >$@
+./fallback.c : $(tinfo)/MKfallback.sh
+       sh $(tinfo)/MKfallback.sh $(FALLBACK_LIST) >$@
 
-./lib_gen.c : $(srcdir)/MKlib_gen.sh ../include/curses.h
-       sh $(srcdir)/MKlib_gen.sh "$(CPP)" "$(AWK)" <../include/curses.h >$@
+./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
+       sh $(base)/MKlib_gen.sh "$(CPP)" "$(AWK)" <../include/curses.h >$@
 
-../include/nomacros.h : $(srcdir)/MKlib_gen.sh ../include/curses.h
-       sh $(srcdir)/MKlib_gen.sh "$(CPP)" "$(AWK)" <../include/curses.h | \
+../include/nomacros.h : $(base)/MKlib_gen.sh ../include/curses.h
+       sh $(base)/MKlib_gen.sh "$(CPP)" "$(AWK)" <../include/curses.h | \
                fgrep undef >$@
 
-keys.tries: make_keys$x $(srcdir)/keys.list 
-       ./make_keys $(srcdir)/keys.list > keys.tries
+init_keytry.h: make_keys$x $(tinfo)/keys.list
+       ./make_keys $(tinfo)/keys.list > $@
 
 make_keys$x : \
-               $(srcdir)/make_keys.c \
+               $(tinfo)/make_keys.c \
                ./names.c
-       $(HOSTCC) -o $@ $(HOSTCCFLAGS) $(srcdir)/make_keys.c $(HOSTLDFLAGS)
+       $(HOSTCC) -o $@ $(HOSTCCFLAGS) $(tinfo)/make_keys.c $(HOSTLDFLAGS)
 
 make_hash$x : \
-               $(srcdir)/comp_hash.c \
+               $(tinfo)/comp_hash.c \
                ../include/hashsize.h
-       $(HOSTCC) -o $@ $(HOSTCCFLAGS) -DMAIN_PROGRAM $(srcdir)/comp_hash.c $(HOSTLDFLAGS)
+       $(HOSTCC) -o $@ $(HOSTCCFLAGS) -DMAIN_PROGRAM $(tinfo)/comp_hash.c $(HOSTLDFLAGS)
 
-./expanded.c : $(srcdir)/MKexpanded.sh
-       sh $(srcdir)/MKexpanded.sh "$(CPP)" $(CPPFLAGS)
+./expanded.c : $(serial)/MKexpanded.sh
+       sh $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
 
 ./comp_captab.c: \
                make_hash$x \
                ../include/hashsize.h \
-               $(srcdir)/MKcaptab.awk
-       sh $(srcdir)/MKcaptab.awk $(AWK) $(srcdir)/../include/Caps > $@
+               $(tinfo)/MKcaptab.awk
+       sh $(tinfo)/MKcaptab.awk $(AWK) $(srcdir)/../include/Caps > $@
 
-./lib_keyname.c: $(srcdir)/keys.list $(srcdir)/MKkeyname.awk
-       $(AWK) -f $(srcdir)/MKkeyname.awk $(srcdir)/keys.list > $@
+./lib_keyname.c: $(tinfo)/keys.list $(base)/MKkeyname.awk
+       $(AWK) -f $(base)/MKkeyname.awk $(tinfo)/keys.list > $@
 
-./names.c ./codes.c: $(srcdir)/MKnames.awk
-       $(AWK) -f $(srcdir)/MKnames.awk $(srcdir)/../include/Caps
+./names.c ./codes.c: $(tinfo)/MKnames.awk
+       $(AWK) -f $(tinfo)/MKnames.awk $(srcdir)/../include/Caps
        cat namehdr boolnames boolfnames numnames numfnames strnames strfnames nameftr >./names.c
        cat namehdr boolcodes numcodes strcodes codeftr >./codes.c
        -rm -f namehdr nameftr codeftr boolnames boolfnames boolcodes numnames numfnames numcodes strnames strfnames strcodes
 
-./unctrl.c: $(srcdir)/MKunctrl.awk
-       echo | $(AWK) -f $(srcdir)/MKunctrl.awk >$@
+./unctrl.c: $(base)/MKunctrl.awk
+       echo | $(AWK) -f $(base)/MKunctrl.awk >$@
 
 tags:
        ctags *.[ch]
@@ -201,8 +210,8 @@ mostlyclean ::
 
 clean :: mostlyclean
        -rm -f $(AUTO_SRC)
-       -rm -f make_keys
-       -rm -f make_hash
+       -rm -f make_keys$x
+       -rm -f make_hash$x
 
 distclean :: clean
        -rm -f Makefile
@@ -218,21 +227,21 @@ realclean :: distclean
 # These rules build test-programs for the modules that have test-drivers
 test_progs : $(TEST_PROGS)
 
-captoinfo$x : $(srcdir)/captoinfo.c $(TEST_DEPS)
-       @ECHO_LINK@ $(CC) -o $@ $(CCFLAGS) -DMAIN $(srcdir)/captoinfo.c $(TEST_LDFLAGS)
+captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS)
+       @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS)
 
-hardscroll$x : $(srcdir)/hardscroll.c $(TEST_DEPS)
-       @ECHO_LINK@ $(CC) -o $@ $(CCFLAGS) -DSCROLLDEBUG $(srcdir)/hardscroll.c $(TEST_LDFLAGS)
+hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS)
+       @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS)
 
-hashmap$x : $(srcdir)/hashmap.c $(TEST_DEPS)
-       @ECHO_LINK@ $(CC) -o $@ $(CCFLAGS) -DHASHDEBUG $(srcdir)/hashmap.c $(TEST_LDFLAGS)
+hashmap$x : $(serial)/hashmap.c $(TEST_DEPS)
+       @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(TEST_LDFLAGS)
 
-lib_mvcur$x : $(srcdir)/lib_mvcur.c $(TEST_DEPS) \
+lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \
                ../@DFT_OBJ_SUBDIR@/dump_entry.o
-       @ECHO_LINK@ $(CC) -o $@ $(CCFLAGS) -DNCURSES_TEST -I$(srcdir)/../progs $(srcdir)/lib_mvcur.c ../@DFT_OBJ_SUBDIR@/dump_entry.o $(TEST_LDFLAGS)
+       @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../@DFT_OBJ_SUBDIR@/dump_entry.o $(TEST_LDFLAGS)
 
 ../@DFT_OBJ_SUBDIR@/dump_entry.o:
-       cd ../progs && $(MAKE) ../@DFT_OBJ_SUBDIR@/dump_entry.o:
+       cd ../progs && $(MAKE) ../@DFT_OBJ_SUBDIR@/dump_entry.o
 
 ###############################################################################
 # The remainder of this file is automatically generated during configuration
index be4b8b0046dc76fc755903bbcb0aaa884a44c0ee..aade721a2e6e6abfda58ba7f9345cf0bc23c2a24 100644 (file)
@@ -1,19 +1,2 @@
 For discussion of the package internals, see hackguide.html in the misc
 directory.
-
-Here are some -D options you might need to compile with.
-The 'configure' script gets most other definitions right automatically.
-  
--DHAVE_SIGACTION       if the sigaction function is present
-
--DHAVE_USLEEP          if the usleep function is present
-
--DSVR4_ACTION          if (e.g., svr4) you need _POSIX_SOURCE to have sigaction
-
--DSVR4_TERMIO          if (e.g., svr4) you need _POSIX_SOURCE to have termio
-
--DOPT_MVCUR            if you want mvcur() to cost its actions or you have a
-                       terminal that doesn't have direct cursor addressing.
-
-There are several problems with strict POSIX systems so extra flags
-or #define's may be needed.
index efa3df223170f636eda7b56be5b9947f79d775dc..9b5a31a85a2f965a2e9855f3f1fc65b9966d19f8 100644 (file)
@@ -32,7 +32,7 @@
  ****************************************************************************/
 
 /*
- * $Id: SigAction.h,v 1.4 1998/02/11 12:13:55 tom Exp $
+ * $Id: SigAction.h,v 1.5 1999/06/19 23:00:54 tom Exp $
  *
  * This file exists to handle non-POSIX systems which don't have <unistd.h>,
  * and usually no sigaction() nor <termios.h>
 #ifndef _SIGACTION_H
 #define _SIGACTION_H
 
+#ifndef HAVE_SIGACTION
+#define HAVE_SIGACTION 0
+#endif
+
+#ifndef HAVE_SIGVEC
+#define HAVE_SIGVEC 0
+#endif
+
 #if HAVE_SIGACTION
 
 #if !HAVE_TYPE_SIGACTION
diff --git a/ncurses/base/MKkeyname.awk b/ncurses/base/MKkeyname.awk
new file mode 100644 (file)
index 0000000..aaeb474
--- /dev/null
@@ -0,0 +1,74 @@
+# $Id: MKkeyname.awk,v 1.17 1999/02/18 11:18:06 tom Exp $
+##############################################################################
+# Copyright (c) 1999 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.                                                             #
+##############################################################################
+BEGIN {
+       print "/* generated by MKkeyname.awk */"
+       print ""
+       print "#include <ncurses_cfg.h>"
+       print "#include <stdlib.h>"
+       print "#include <string.h>"
+       print "#include <curses.h>"
+       print "#include <tic.h>"
+       print ""
+       print "const struct kn _nc_key_names[] = {"
+}
+
+/^[^#]/ {
+       printf "\t{ \"%s\", %s },\n", $1, $1;
+       }
+
+END {
+       printf "\t{ 0, 0 }};\n"
+       print ""
+       print "NCURSES_CONST char *keyname(int c)"
+       print "{"
+       print "int i;"
+       print "static char name[20];"
+       print "char *p;"
+       print ""
+       print "\tfor (i = 0; _nc_key_names[i].name != 0; i++)"
+       print "\t\tif (_nc_key_names[i].code == c)"
+       print "\t\t\treturn (NCURSES_CONST char *)_nc_key_names[i].name;"
+       print "\tif (c >= 256) return \"UNKNOWN KEY\";"
+       print "\tp = name;"
+       print "\tif (c >= 128) {"
+       print "\t\tstrcpy(p, \"M-\");"
+       print "\t\tp += 2;"
+       print "\t\tc -= 128;"
+       print "\t}"
+       print "\tif (c < 0)"
+       print "\t\tsprintf(p, \"%d\", c);"
+       print "\telse if (c < 32)"
+       print "\t\tsprintf(p, \"^%c\", c + '@');"
+       print "\telse if (c == 127)"
+       print "\t\tstrcpy(p, \"^?\");"
+       print "\telse"
+       print "\t\tsprintf(p, \"%c\", c);"
+       print "\treturn (NCURSES_CONST char *)name;"
+       print "}"
+}
similarity index 97%
rename from ncurses/MKunctrl.awk
rename to ncurses/base/MKunctrl.awk
index 5fef6682ef276f9d8d61322a799a5e6f7dc9fbb3..0f4419242a9957b4b26c92765eed22ffc476c727 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: MKunctrl.awk,v 1.5 1998/02/11 12:13:55 tom Exp $
+# $Id: MKunctrl.awk,v 1.6 1998/06/06 18:18:07 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
 
 BEGIN  {
                print "/* generated by MKunctrl.awk */"
-               print
+               print ""
                print "#include <curses.priv.h>"
-               print
+               print ""
                print "#undef unctrl"
-               print
+               print ""
        }
 END    {
                print "NCURSES_CONST char *unctrl(register chtype ch)"
diff --git a/ncurses/base/README b/ncurses/base/README
new file mode 100644 (file)
index 0000000..ffa1696
--- /dev/null
@@ -0,0 +1,7 @@
+-- $Id: README,v 1.1 1998/11/14 22:58:22 tom Exp $
+
+The functions in this directory are the generic (not device-specific) modules
+of ncurses.
+
+As a rule, these modules should not depend directly on term.h references and
+associated terminfo function and variables.
similarity index 91%
rename from ncurses/define_key.c
rename to ncurses/base/define_key.c
index 20dd3e7346435e5dfa081e19e9194a1598180c3b..52dc6927bd5500b403beebfee5a28426d50d44e6 100644 (file)
@@ -32,7 +32,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: define_key.c,v 1.2 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: define_key.c,v 1.4 1999/02/21 13:03:55 tom Exp $")
 
 int
 define_key(char *str, int keycode)
@@ -41,14 +41,19 @@ define_key(char *str, int keycode)
 
        T((T_CALLED("define_key(%s,%d)"), _nc_visbuf(str), keycode));
        if (keycode > 0) {
-               if (has_key(keycode)) {
-                       if (_nc_remove_key(&(SP->_keytry), keycode))
+               if (str != 0) {
+                       define_key(str, 0);
+               } else if (has_key(keycode)) {
+                       while (_nc_remove_key(&(SP->_keytry), keycode))
                                code = OK;
                }
                if (str != 0) {
                        (void) _nc_add_to_try(&(SP->_keytry), str, keycode);
                        code = OK;
                }
+       } else {
+               while (_nc_remove_string(&(SP->_keytry), str))
+                       code = OK;
        }
        returnCode(code);
 }
diff --git a/ncurses/base/keybound.c b/ncurses/base/keybound.c
new file mode 100644 (file)
index 0000000..c9aa022
--- /dev/null
@@ -0,0 +1,45 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999                        *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: keybound.c,v 1.1 1999/02/19 11:55:56 tom Exp $")
+
+/*
+ * Returns the count'th string definition which is associated with the
+ * given keycode.  The result is malloc'd, must be freed by the caller.
+ */
+
+char *keybound(int code, int count)
+{
+       return _nc_expand_try(SP->_key_ok, code, &count, 0);
+}
similarity index 93%
rename from ncurses/keyok.c
rename to ncurses/base/keyok.c
index a0947d9e2b64a2a3c8e01b7926597ca668bd1e3a..a1385769781f16de05bb71e8da3d70a36cc5a8ec 100644 (file)
@@ -32,7 +32,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: keyok.c,v 1.2 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: keyok.c,v 1.3 1999/02/19 11:29:48 tom Exp $")
 
 /*
  * Enable (or disable) ncurses' interpretation of a keycode by adding (or
@@ -47,22 +47,25 @@ MODULE_ID("$Id: keyok.c,v 1.2 1998/02/11 12:13:54 tom Exp $")
 int keyok(int c, bool flag)
 {
        int code = ERR;
+       int count = 0;
        char *s;
 
        T((T_CALLED("keyok(%d,%d)"), c, flag));
        if (flag) {
-               if ((s = _nc_expand_try(SP->_key_ok, c, 0)) != 0
+               while ((s = _nc_expand_try(SP->_key_ok, c, &count, 0)) != 0
                 && _nc_remove_key(&(SP->_key_ok), c)) {
                        _nc_add_to_try(&(SP->_keytry), s, c);
                        free(s);
                        code = OK;
+                       count = 0;
                }
        } else {
-               if ((s = _nc_expand_try(SP->_keytry, c, 0)) != 0
+               while ((s = _nc_expand_try(SP->_keytry, c, &count, 0)) != 0
                 && _nc_remove_key(&(SP->_keytry), c)) {
                        _nc_add_to_try(&(SP->_key_ok), s, c);
                        free(s);
                        code = OK;
+                       count = 0;
                }
        }
        returnCode(code);
similarity index 96%
rename from ncurses/lib_addch.c
rename to ncurses/base/lib_addch.c
index 859c9caa652e081b23e0c32e309890d9c374a152..101d75ef29a9a3a1ddbb35c5500b6e9135cd4c13 100644 (file)
@@ -41,7 +41,7 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_addch.c,v 1.39 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_addch.c,v 1.42 1999/07/24 20:01:05 tom Exp $")
 
 /*
  * Ugly microtweaking alert.  Everything from here to end of module is
@@ -133,12 +133,7 @@ int waddch_literal(WINDOW *win, chtype ch)
 
        line = win->_line+win->_cury;
        
-       if (line->firstchar == _NOCHANGE)
-               line->firstchar = line->lastchar = x;
-       else if (x < line->firstchar)
-               line->firstchar = x;
-       else if (x > line->lastchar)
-               line->lastchar = x;
+       CHANGED_CELL(line,x);
 
        line->text[x++] = ch;
        
@@ -174,8 +169,8 @@ int waddch_nosync(WINDOW *win, const chtype ch)
 /* the workhorse function -- add a character to the given window */
 {
        int     x, y;
-       int     t;
-       const char *s;
+       int     t = 0;
+       const char *s = 0;
 
        if ((ch & A_ALTCHARSET)
            || ((t = TextOf(ch)) > 127)
similarity index 89%
rename from ncurses/lib_addstr.c
rename to ncurses/base/lib_addstr.c
index 42e4a21dda90399f2869c1ada36c00f43d74ffdf..9ac55e42aba7051daa4cf8cc5df3c1f36e981962 100644 (file)
@@ -40,7 +40,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_addstr.c,v 1.14 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_addstr.c,v 1.16 1998/06/28 00:38:29 tom Exp $")
 
 int
 waddnstr(WINDOW *win, const char *const astr, int n)
@@ -76,11 +76,12 @@ waddchnstr(WINDOW *win, const chtype *const astr, int n)
 short y = win->_cury;
 short x = win->_curx;
 int code = OK;
+struct ldat *line;
 
        T((T_CALLED("waddchnstr(%p,%p,%d)"), win, astr, n));
 
        if (!win)
-         returnCode(ERR);
+               returnCode(ERR);
 
        if (n < 0) {
                const chtype *str;
@@ -93,20 +94,9 @@ int code = OK;
        if (n == 0)
                returnCode(code);
 
-       if (win->_line[y].firstchar == _NOCHANGE)
-       {
-               win->_line[y].firstchar = x;
-               win->_line[y].lastchar = x+n-1;
-       }
-       else
-       {
-               if (x < win->_line[y].firstchar)
-                       win->_line[y].firstchar = x;
-               if (x+n-1 > win->_line[y].lastchar)
-                       win->_line[y].lastchar = x+n-1;
-       }
-       
-       memcpy(win->_line[y].text+x, astr, n*sizeof(*astr));
+       line = &(win->_line[y]);
+       memcpy(line->text+x, astr, n*sizeof(*astr));
+       CHANGED_RANGE(line, x, x+n-1);
 
        _nc_synchook(win);
        returnCode(code);
similarity index 94%
rename from ncurses/lib_beep.c
rename to ncurses/base/lib_beep.c
index 042aa97115c9a42167472d8a7b3f31a11e461248..3428aaf69e1605620f174aa251f79a5e6e3e597b 100644 (file)
@@ -42,7 +42,7 @@
 #include <curses.priv.h>
 #include <term.h>      /* beep, flash */
 
-MODULE_ID("$Id: lib_beep.c,v 1.5 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_beep.c,v 1.7 1999/10/22 21:39:09 tom Exp $")
 
 /*
  *     beep()
@@ -54,16 +54,20 @@ MODULE_ID("$Id: lib_beep.c,v 1.5 1998/02/11 12:13:55 tom Exp $")
 
 int beep(void)
 {
+       int res = ERR;
+
        T((T_CALLED("beep()")));
 
        /* FIXME: should make sure that we are not in altchar mode */
        if (bell) {
                TPUTS_TRACE("bell");
-               return(putp(bell));
+               res = putp(bell);
+               _nc_flush();
        } else if (flash_screen) {
                TPUTS_TRACE("flash_screen");
-               return(putp(flash_screen));
+               res = putp(flash_screen);
+               _nc_flush();
        }
-       else
-               returnCode(ERR);
+
+       returnCode(res);
 }
similarity index 100%
rename from ncurses/lib_bkgd.c
rename to ncurses/base/lib_bkgd.c
similarity index 100%
rename from ncurses/lib_box.c
rename to ncurses/base/lib_box.c
similarity index 100%
rename from ncurses/lib_chgat.c
rename to ncurses/base/lib_chgat.c
similarity index 100%
rename from ncurses/lib_clear.c
rename to ncurses/base/lib_clear.c
similarity index 78%
rename from ncurses/lib_clrbot.c
rename to ncurses/base/lib_clrbot.c
index 9dac8c275cba27ee0e20b6242e18169d4fd148d4..cec34161acef4802cbf41c4833d3e247faf1232e 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_clrbot.c,v 1.13 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_clrbot.c,v 1.14 1998/06/28 00:36:26 tom Exp $")
 
 int wclrtobot(WINDOW *win)
 {
 int     code = ERR;
-chtype blank;
-chtype *ptr, *end;
-short  y, startx;
 
        T((T_CALLED("wclrtobot(%p)"), win));
 
        if (win) {
-         startx = win->_curx;
-         
-         T(("clearing from y = %d to y = %d with maxx =  %d", win->_cury, win->_maxy, win->_maxx));
-         
-         for (y = win->_cury; y <= win->_maxy; y++) {
-           end = &win->_line[y].text[win->_maxx];
-           
-           blank = _nc_background(win);
-           for (ptr = &win->_line[y].text[startx]; ptr <= end; ptr++)
-             *ptr = blank;
-           
-           if (win->_line[y].firstchar > startx
-               ||  win->_line[y].firstchar == _NOCHANGE)
-             win->_line[y].firstchar = startx;
-           
-           win->_line[y].lastchar = win->_maxx;
-           
-           startx = 0;
-         }
-         _nc_synchook(win);
-         code = OK;
+               short y;
+               short startx = win->_curx;
+               chtype blank = _nc_background(win);
+
+               T(("clearing from y = %d to y = %d with maxx =  %d", win->_cury, win->_maxy, win->_maxx));
+
+               for (y = win->_cury; y <= win->_maxy; y++) {
+                       struct ldat *line = &(win->_line[y]);
+                       chtype *ptr = &(line->text[startx]);
+                       chtype *end = &(line->text[win->_maxx]);
+
+                       CHANGED_TO_EOL(line, startx, win->_maxx);
+
+                       while (ptr <= end)
+                               *ptr++ = blank;
+
+                       startx = 0;
+               }
+               _nc_synchook(win);
+               code = OK;
        }
        returnCode(code);
 }
similarity index 73%
rename from ncurses/lib_clreol.c
rename to ncurses/base/lib_clreol.c
index a418c509f31f2965d585c730c92a1b7acd37345b..0c7522278e382aa440ca65e8ec9d25d34cba1bc2 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_clreol.c,v 1.14 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_clreol.c,v 1.15 1998/06/28 00:32:20 tom Exp $")
 
 int  wclrtoeol(WINDOW *win)
 {
 int     code = ERR;
-chtype blank;
-chtype *ptr, *end;
-short  y, x;
 
        T((T_CALLED("wclrtoeol(%p)"), win));
 
        if (win) {
+               chtype  blank;
+               chtype  *ptr, *end;
+               struct ldat *line;
+               short y = win->_cury;
+               short x = win->_curx;
 
-         y = win->_cury;
-         x = win->_curx;
+               /*
+                * If we have just wrapped the cursor, the clear applies to the
+                * new line, unless we are at the lower right corner.
+                */
+               if (win->_flags & _WRAPPED
+                && y < win->_maxy) {
+                       win->_flags &= ~_WRAPPED;
+               }
 
-         /*
-          * If we have just wrapped the cursor, the clear applies to the new
-          * line, unless we are at the lower right corner.
-          */
-         if (win->_flags & _WRAPPED
-             && y < win->_maxy) {
-           win->_flags &= ~_WRAPPED;
-         }
-         
-         /*
-          * There's no point in clearing if we're not on a legal position,
-          * either.
-          */
-         if (win->_flags & _WRAPPED
-             || y > win->_maxy
-             || x > win->_maxx)
-           returnCode(ERR);
-         
-         blank = _nc_background(win);
-         end = &win->_line[y].text[win->_maxx];
-         
-         for (ptr = &win->_line[y].text[x]; ptr <= end; ptr++)
-           *ptr = blank;
-         
-         if (win->_line[y].firstchar > win->_curx
-             || win->_line[y].firstchar == _NOCHANGE)
-           win->_line[y].firstchar = win->_curx;
-         
-         win->_line[y].lastchar = win->_maxx;
-         
-         _nc_synchook(win);
-         code = OK;
+               /*
+                * There's no point in clearing if we're not on a legal
+                * position, either.
+                */
+               if (win->_flags & _WRAPPED
+                || y > win->_maxy
+                || x > win->_maxx)
+                       returnCode(ERR);
+
+               blank = _nc_background(win);
+               line = &win->_line[y];
+               CHANGED_TO_EOL(line, x, win->_maxx);
+
+               ptr = &(line->text[x]);
+               end = &(line->text[win->_maxx]);
+
+               while (ptr <= end)
+                       *ptr++ = blank;
+
+               _nc_synchook(win);
+               code = OK;
        }
        returnCode(code);
 }
similarity index 77%
rename from ncurses/lib_color.c
rename to ncurses/base/lib_color.c
index cf86420d53db232c197b3dbf83a0e380f52c84b3..297a14c36d6eaf518825f697d0c2918771d9fdb6 100644 (file)
 
 #include <term.h>
 
-MODULE_ID("$Id: lib_color.c,v 1.24 1998/02/11 12:13:58 tom Exp $")
-
-/*
- * Only 8 ANSI colors are defined; the ISO 6429 control sequences work only
- * for 8 values (0-7).
- */
-#define MAX_ANSI_COLOR 8
+MODULE_ID("$Id: lib_color.c,v 1.36 1999/10/03 00:20:37 Philippe.Blain Exp $")
 
 /*
  * These should be screen structure members.  They need to be globals for
@@ -89,33 +83,82 @@ static const color_t hls_palette[] =
        {0,     50,     100},   /* COLOR_WHITE */
 };
 
-int start_color(void)
+/*
+ * SVr4 curses is known to interchange color codes (1,4) and (3,6), possibly
+ * to maintain compatibility with a pre-ANSI scheme.  The same scheme is
+ * also used in the FreeBSD syscons.
+ */
+static int toggled_colors(int c)
 {
-       T((T_CALLED("start_color()")));
+    if (c < 16) {
+       static const int table[] =
+               { 0,  4,  2,  6,  1,  5,  3,  7,
+                 8, 12, 10, 14,  9, 13, 11, 15};
+       c = table[c];
+    }
+    return c;
+}
+
+static void set_background_color(int bg, int  (*outc)(int))
+{
+       if (set_a_background)
+       {
+           TPUTS_TRACE("set_a_background");
+           tputs(tparm(set_a_background, bg), 1, outc);
+       }
+       else
+       {
+           TPUTS_TRACE("set_background");
+           tputs(tparm(set_background, toggled_colors(bg)), 1, outc);
+       }
+}
 
-#ifdef orig_pair
-       if (orig_pair != NULL)
+static void set_foreground_color(int fg, int  (*outc)(int))
+{
+       if (set_a_foreground)
+       {
+           TPUTS_TRACE("set_a_foreground");
+           tputs(tparm(set_a_foreground, fg), 1, outc);
+       }
+       else
        {
+           TPUTS_TRACE("set_foreground");
+           tputs(tparm(set_foreground, toggled_colors(fg)), 1, outc);
+       }
+}
+
+static bool set_original_colors(void)
+{
+       if (orig_pair != 0) {
                TPUTS_TRACE("orig_pair");
                putp(orig_pair);
+               return TRUE;
        }
-#endif /* orig_pair */
-#ifdef orig_colors
-       if (orig_colors != NULL)
+       else if (orig_colors != NULL)
        {
                TPUTS_TRACE("orig_colors");
                putp(orig_colors);
+               return TRUE;
        }
-#endif /* orig_colors */
-#if defined(orig_pair) && defined(orig_colors)
-       if (!orig_pair && !orig_colors)
-               returnCode(ERR);
-#endif /* defined(orig_pair) && defined(orig_colors) */
+       return FALSE;
+}
+
+int start_color(void)
+{
+       T((T_CALLED("start_color()")));
+
+       if (set_original_colors() != TRUE)
+       {
+               set_foreground_color(COLOR_WHITE, _nc_outch);
+               set_background_color(COLOR_BLACK, _nc_outch);
+       }
+
        if (max_pairs != -1)
                COLOR_PAIRS = SP->_pair_count = max_pairs;
        else
                returnCode(ERR);
-       SP->_color_pairs = typeCalloc(unsigned short, max_pairs);
+       if ((SP->_color_pairs = typeCalloc(unsigned short, max_pairs)) == 0)
+               returnCode(ERR);
        SP->_color_pairs[0] = PAIR_OF(COLOR_WHITE, COLOR_BLACK);
        if (max_colors != -1)
                COLORS = SP->_color_count = max_colors;
@@ -123,32 +166,24 @@ int start_color(void)
                returnCode(ERR);
        SP->_coloron = 1;
 
-       SP->_color_table = malloc(sizeof(color_t) * COLORS);
-#ifdef hue_lightness_saturation
+       if ((SP->_color_table = typeMalloc(color_t, COLORS)) == 0)
+               returnCode(ERR);
        if (hue_lightness_saturation)
            memcpy(SP->_color_table, hls_palette, sizeof(color_t) * COLORS);
        else
-#endif /* hue_lightness_saturation */
            memcpy(SP->_color_table, cga_palette, sizeof(color_t) * COLORS);
 
-       if (orig_colors)
-       {
-           TPUTS_TRACE("orig_colors");
-           putp(orig_colors);
-       }
-
        T(("started color: COLORS = %d, COLOR_PAIRS = %d", COLORS, COLOR_PAIRS));
 
        returnCode(OK);
 }
 
-#ifdef hue_lightness_saturation
 /* This function was originally written by Daniel Weaver <danw@znyx.com> */
 static void rgb2hls(short r, short g, short b, short *h, short *l, short *s)
 /* convert RGB to HLS system */
 {
     short min, max, t;
-    
+
     if ((min = g < r ? g : r) > b) min = b;
     if ((max = g > r ? g : r) < b) max = b;
 
@@ -178,7 +213,6 @@ static void rgb2hls(short r, short g, short b, short *h, short *l, short *s)
 
     *h = t % 360;
 }
-#endif /* hue_lightness_saturation */
 
 /*
  * Extension (1997/1/18) - Allow negative f/b values to set default color
@@ -186,6 +220,8 @@ static void rgb2hls(short r, short g, short b, short *h, short *l, short *s)
  */
 int init_pair(short pair, short f, short b)
 {
+       unsigned result;
+
        T((T_CALLED("init_pair(%d,%d,%d)"), pair, f, b));
 
        if ((pair < 1) || (pair >= COLOR_PAIRS))
@@ -207,16 +243,37 @@ int init_pair(short pair, short f, short b)
                returnCode(ERR);
 
        /*
-        * FIXME: when a pair's content is changed, replace its colors
-        * (if pair was initialized before a screen update is performed
-        * replacing original pair colors with the new ones)
+        * When a pair's content is changed, replace its colors (if pair was
+        * initialized before a screen update is performed replacing original
+        * pair colors with the new ones).
         */
-
-       SP->_color_pairs[pair] = PAIR_OF(f,b);
+       result = PAIR_OF(f,b);
+       if (SP->_color_pairs[pair] != 0
+        && SP->_color_pairs[pair] != result) {
+           int y, x;
+           attr_t z = COLOR_PAIR(pair);
+
+           for (y = 0; y <= curscr->_maxy; y++) {
+               struct ldat *ptr = &(curscr->_line[y]);
+               bool changed = FALSE;
+               for (x = 0; x <= curscr->_maxx; x++) {
+                   if ((ptr->text[x] & A_COLOR) == z) {
+                       /* Set the old cell to zero to ensure it will be
+                          updated on the next doupdate() */
+                       ptr->text[x] = 0;
+                       CHANGED_CELL(ptr,x);
+                       changed = TRUE;
+                   }
+               }
+               if (changed)
+                       _nc_make_oldhash(y);
+           }
+       }
+       SP->_color_pairs[pair] = result;
 
        if (initialize_pair)
        {
-           const color_t       *tp = hue_lightness_saturation ? hls_palette : cga_palette;
+           const color_t *tp = hue_lightness_saturation ? hls_palette : cga_palette;
 
            T(("initializing pair: pair = %d, fg=(%d,%d,%d), bg=(%d,%d,%d)",
               pair,
@@ -239,37 +296,32 @@ int init_pair(short pair, short f, short b)
 int init_color(short color, short r, short g, short b)
 {
        T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b));
-#ifdef initialize_color
+
        if (initialize_color == NULL)
                returnCode(ERR);
-#endif /* initialize_color */
 
        if (color < 0 || color >= COLORS)
                returnCode(ERR);
        if (r < 0 || r > 1000 || g < 0 ||  g > 1000 || b < 0 || b > 1000)
                returnCode(ERR);
 
-#ifdef hue_lightness_saturation
        if (hue_lightness_saturation)
            rgb2hls(r, g, b,
                      &SP->_color_table[color].red,
                      &SP->_color_table[color].green,
                      &SP->_color_table[color].blue);
        else
-#endif /* hue_lightness_saturation */
        {
                SP->_color_table[color].red = r;
                SP->_color_table[color].green = g;
                SP->_color_table[color].blue = b;
        }
 
-#ifdef initialize_color
        if (initialize_color)
        {
                TPUTS_TRACE("initialize_color");
                putp(tparm(initialize_color, color, r, g, b));
        }
-#endif /* initialize_color */
        returnCode(OK);
 }
 
@@ -282,8 +334,7 @@ bool can_change_color(void)
 bool has_colors(void)
 {
        T((T_CALLED("has_colors()")));
-       returnCode (((orig_pair != NULL || orig_colors != NULL)
-                    && (max_colors != -1) && (max_pairs != -1)
+       returnCode (((max_colors != -1) && (max_pairs != -1)
                     && (((set_foreground != NULL)
                          && (set_background != NULL))
                         || ((set_a_foreground != NULL)
@@ -294,7 +345,7 @@ bool has_colors(void)
 int color_content(short color, short *r, short *g, short *b)
 {
     T((T_CALLED("color_content(%d,%p,%p,%p)"), color, r, g, b));
-    if (color < 0 || color > COLORS)
+    if (color < 0 || color >= COLORS)
        returnCode(ERR);
 
     if (r) *r = SP->_color_table[color].red;
@@ -307,7 +358,7 @@ int pair_content(short pair, short *f, short *b)
 {
        T((T_CALLED("pair_content(%d,%p,%p)"), pair, f, b));
 
-       if ((pair < 0) || (pair > COLOR_PAIRS))
+       if ((pair < 0) || (pair >= COLOR_PAIRS))
                returnCode(ERR);
        if (f) *f = ((SP->_color_pairs[pair] >> C_SHIFT) & C_MASK);
        if (b) *b =  (SP->_color_pairs[pair] & C_MASK);
@@ -315,29 +366,10 @@ int pair_content(short pair, short *f, short *b)
        returnCode(OK);
 }
 
-/*
- * SVr4 curses is known to interchange color codes (1,4) and (3,6), possibly
- * to maintain compatibility with a pre-ANSI scheme.  The same scheme is
- * also used in the FreeBSD syscons.
- */
-static int toggled_colors(int c)
-{
-    if (c < 16) {
-       static const int table[] =
-               { 0,  4,  2,  6,  1,  5,  3,  7,
-                 8, 12, 10, 14,  9, 13, 11, 15};
-       c = table[c];
-    }
-    return c;
-}
-
-void _nc_do_color(int pair, bool reverse, int  (*outc)(int))
+void _nc_do_color(int pair, bool reverse, int (*outc)(int))
 {
     short fg, bg;
 
-    if (reverse)
-       pair = -pair;
-
     if (pair == 0)
     {
        if (orig_pair)
@@ -345,6 +377,16 @@ void _nc_do_color(int pair, bool reverse, int  (*outc)(int))
            TPUTS_TRACE("orig_pair");
            tputs(orig_pair, 1, outc);
        }
+       else if (set_color_pair)
+       {
+           TPUTS_TRACE("set_color_pair");
+           tputs(tparm(set_color_pair, pair), 1, outc);
+       }
+       else
+       {
+           set_foreground_color(COLOR_WHITE, outc);
+           set_background_color(COLOR_BLACK, outc);
+       }
     }
     else
     {
@@ -366,42 +408,21 @@ void _nc_do_color(int pair, bool reverse, int  (*outc)(int))
 
            if (fg == C_MASK || bg == C_MASK)
            {
-               if (orig_pair)
-               {
-                   TPUTS_TRACE("orig_pair");
-                   tputs(orig_pair, 1, outc);
-               }
-               else
+               if (set_original_colors() != TRUE)
                {
-                   TPUTS_TRACE("orig_colors");
-                   tputs(orig_colors, 1, outc);
+                       if (fg == C_MASK)
+                               set_foreground_color(COLOR_WHITE, outc);
+                       if (bg == C_MASK)
+                               set_background_color(COLOR_BLACK, outc);
                }
            }
            if (fg != C_MASK)
            {
-               if (set_a_foreground && fg <= MAX_ANSI_COLOR)
-               {
-                   TPUTS_TRACE("set_a_foreground");
-                   tputs(tparm(set_a_foreground, fg), 1, outc);
-               }
-               else
-               {
-                   TPUTS_TRACE("set_foreground");
-                   tputs(tparm(set_foreground, toggled_colors(fg)), 1, outc);
-               }
+               set_foreground_color(fg, outc);
            }
            if (bg != C_MASK)
            {
-               if (set_a_background && bg <= MAX_ANSI_COLOR)
-               {
-                   TPUTS_TRACE("set_a_background");
-                   tputs(tparm(set_a_background, bg), 1, outc);
-               }
-               else
-               {
-                   TPUTS_TRACE("set_background");
-                   tputs(tparm(set_background, toggled_colors(bg)), 1, outc);
-               }
+               set_background_color(bg, outc);
            }
        }
     }
diff --git a/ncurses/base/lib_colorset.c b/ncurses/base/lib_colorset.c
new file mode 100644 (file)
index 0000000..d9fc5c2
--- /dev/null
@@ -0,0 +1,56 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1998                  *
+ ****************************************************************************/
+
+/*
+**     lib_colorset.c
+**
+**     The routine wcolor_set().
+**
+*/
+
+#include <curses.priv.h>
+#include <ctype.h>
+
+MODULE_ID("$Id: lib_colorset.c,v 1.5 1999/05/16 17:13:43 juergen Exp $")
+
+int wcolor_set(WINDOW *win, short color_pair_number, void *opts)
+{
+       T((T_CALLED("wcolor_set(%p,%d)"), win, color_pair_number));
+       if (win && !opts && (color_pair_number >= 0) && (color_pair_number < COLOR_PAIRS)) {
+               T(("... current %ld", (long) PAIR_NUMBER(win->_attrs)));
+               toggle_attr_on(win->_attrs,COLOR_PAIR(color_pair_number));
+               returnCode(OK);
+       } else
+               returnCode(ERR);
+}
+
+
similarity index 81%
rename from ncurses/lib_delch.c
rename to ncurses/base/lib_delch.c
index 6dc6fef4ac39235f6bf367f9dfd5dee7d6672d6e..0169d31ac6d5101a4d58588aa0398b5052bdea94 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_delch.c,v 1.7 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_delch.c,v 1.8 1998/06/28 00:28:17 tom Exp $")
 
 int wdelch(WINDOW *win)
 {
 int     code = ERR;
-chtype *temp1, *temp2;
-chtype *end;
-chtype blank = _nc_background(win);
 
        T((T_CALLED("wdelch(%p)"), win));
 
        if (win) {
-         end = &win->_line[win->_cury].text[win->_maxx];
-         temp2 = &win->_line[win->_cury].text[win->_curx + 1];
-         temp1 = temp2 - 1;
-         
-         while (temp1 < end)
-           *temp1++ = *temp2++;
-         
-         *temp1 = blank;
-         
-         win->_line[win->_cury].lastchar = win->_maxx;
-         
-         if (win->_line[win->_cury].firstchar == _NOCHANGE
-             || win->_line[win->_cury].firstchar > win->_curx)
-           win->_line[win->_cury].firstchar = win->_curx;
-         
-         _nc_synchook(win);
-         code = OK;
+               chtype  blank = _nc_background(win);
+               struct ldat *line = &(win->_line[win->_cury]);
+               chtype *end   = &(line->text[win->_maxx]);
+               chtype *temp2 = &(line->text[win->_curx + 1]);
+               chtype *temp1 = temp2 - 1;
+
+               CHANGED_TO_EOL(line, win->_curx, win->_maxx);
+               while (temp1 < end)
+                       *temp1++ = *temp2++;
+
+               *temp1 = blank;
+
+               _nc_synchook(win);
+               code = OK;
        }
        returnCode(code);
 }
similarity index 96%
rename from ncurses/lib_echo.c
rename to ncurses/base/lib_echo.c
index 569ab1a1f4c6ce64a95342ce78cf8e4af96cd476..4ccf97ff64c08a3cc070c24663c87dec6111d67f 100644 (file)
@@ -42,9 +42,8 @@
  */
 
 #include <curses.priv.h>
-#include <term.h>      /* cur_term */
 
-MODULE_ID("$Id: lib_echo.c,v 1.2 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: lib_echo.c,v 1.3 1998/10/12 13:15:33 Alexander.V.Lukyanov Exp $")
 
 int echo(void)
 {
similarity index 91%
rename from ncurses/lib_endwin.c
rename to ncurses/base/lib_endwin.c
index efcc188e4ca29b9311d91a87f6328cb17f75c248..31b6e516cc1dd367098e6398c4f96e65de6aab0a 100644 (file)
@@ -42,7 +42,7 @@
 #include <curses.priv.h>
 #include <term.h>
 
-MODULE_ID("$Id: lib_endwin.c,v 1.14 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_endwin.c,v 1.17 1999/06/12 23:01:46 tom Exp $")
 
 int
 endwin(void)
@@ -50,11 +50,12 @@ endwin(void)
        T((T_CALLED("endwin()")));
 
        if (SP) {
-         SP->_endwin = TRUE;
-         SP->_mouse_wrap(SP);
-         _nc_screen_wrap();
-         _nc_mvcur_wrap();     /* wrap up cursor addressing */
+               SP->_endwin = TRUE;
+               SP->_mouse_wrap(SP);
+               _nc_screen_wrap();
+               _nc_mvcur_wrap();       /* wrap up cursor addressing */
+               returnCode(reset_shell_mode());
        }
 
-       returnCode(reset_shell_mode());
+       returnCode(ERR);
 }
similarity index 100%
rename from ncurses/lib_erase.c
rename to ncurses/base/lib_erase.c
similarity index 94%
rename from ncurses/lib_flash.c
rename to ncurses/base/lib_flash.c
index 49751accda3297007c77d36a9e91a2363d81d7f6..d0d607f6b0f82eced47f9f7dd4df57fb594de1aa 100644 (file)
@@ -42,7 +42,7 @@
 #include <curses.priv.h>
 #include <term.h>      /* beep, flash */
 
-MODULE_ID("$Id: lib_flash.c,v 1.2 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_flash.c,v 1.4 1999/10/22 21:39:06 tom Exp $")
 
 /*
  *     flash()
@@ -54,16 +54,20 @@ MODULE_ID("$Id: lib_flash.c,v 1.2 1998/02/11 12:13:55 tom Exp $")
 
 int flash(void)
 {
+       int res = ERR;
+
        T((T_CALLED("flash()")));
 
        /* FIXME: should make sure that we are not in altchar mode */
        if (flash_screen) {
                TPUTS_TRACE("flash_screen");
-               returnCode(putp(flash_screen));
+               res = putp(flash_screen);
+               _nc_flush();
        } else if (bell) {
                TPUTS_TRACE("bell");
-               returnCode(putp(bell));
+               res = putp(bell);
+               _nc_flush();
        }
-       else
-               returnCode(ERR);
+
+       returnCode(res);
 }
similarity index 91%
rename from ncurses/lib_freeall.c
rename to ncurses/base/lib_freeall.c
index fe756bb43b117a52e08e060a39e8ba3ff9dc4a9a..324e7a28274150b3de24b3ac6e108fd48e63b644 100644 (file)
  *  Author: Thomas E. Dickey <dickey@clark.net> 1996,1997                   *
  ****************************************************************************/
 
-#define HAVE_NC_FREEALL 1
-
 #include <curses.priv.h>
-#include <term.h>
+#include <term_entry.h>
+
+#if HAVE_NC_FREEALL
 
 #if HAVE_LIBDBMALLOC
 extern int malloc_errfd;       /* FIXME */
 #endif
 
-MODULE_ID("$Id: lib_freeall.c,v 1.11 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_freeall.c,v 1.15 1999/10/22 21:40:10 tom Exp $")
 
 static void free_slk(SLK *p)
 {
@@ -50,16 +50,6 @@ static void free_slk(SLK *p)
        }
 }
 
-void _nc_free_termtype(struct termtype *p, int base)
-{
-       if (p != 0) {
-               FreeIfNeeded(p->term_names);
-               FreeIfNeeded(p->str_table);
-               if (base)
-                       free(p);
-       }
-}
-
 static void free_tries(struct tries *p)
 {
        struct tries *q;
@@ -111,14 +101,14 @@ void _nc_freeall(void)
                free_slk(SP->_slk);
                FreeIfNeeded(SP->_color_pairs);
                FreeIfNeeded(SP->_color_table);
-               _nc_set_buffer(SP->_ofp, FALSE);
 #if !BROKEN_LINKER
                FreeAndNull(SP);
 #endif
        }
 
        if (cur_term != 0) {
-               _nc_free_termtype(&(cur_term->type), TRUE);
+               _nc_free_termtype(&(cur_term->type));
+               free(cur_term);
        }
 
 #ifdef TRACE
@@ -137,3 +127,6 @@ void _nc_free_and_exit(int code)
        _nc_freeall();
        exit(code);
 }
+#else
+void _nc_freeall(void) { }
+#endif
similarity index 90%
rename from ncurses/lib_getch.c
rename to ncurses/base/lib_getch.c
index 337cc2ca8994067023ab9d271d554e4e94d77559..b740885b81664c3b2d276e0939ebdf87e06f04d9 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_getch.c,v 1.40 1998/02/11 12:13:58 tom Exp $")
+MODULE_ID("$Id: lib_getch.c,v 1.43 1999/03/08 02:35:10 tom Exp $")
 
 #include <fifo_defs.h>
 
 int ESCDELAY = 1000;   /* max interval betw. chars in funkeys, in millisecs */
 
+#ifdef USE_EMX_MOUSE
+#  include <sys/select.h>
+static int
+kbd_mouse_read(unsigned char *p)
+{
+fd_set fdset;
+int nums = SP->_ifd+1;
+
+       for (;;) {
+               FD_ZERO(&fdset);
+               FD_SET(SP->_checkfd, &fdset);
+               if (SP->_mouse_fd >= 0) {
+                       FD_SET(SP->_mouse_fd, &fdset);
+                       if (SP->_mouse_fd > SP->_checkfd)
+                               nums = SP->_mouse_fd+1;
+               }
+               if (select(nums, &fdset, NULL, NULL, NULL) >= 0) {
+                       int n;
+
+                       if (FD_ISSET(SP->_mouse_fd, &fdset)) /* Prefer mouse */
+                               n = read(SP->_mouse_fd, p, 1);
+                       else
+                               n = read(SP->_ifd, p, 1);
+                       return n;
+               }
+               if (errno != EINTR)
+                       return -1;
+       }
+}
+#endif  /* USE_EMX_MOUSE */
+
 static inline int fifo_peek(void)
 {
        int ch = SP->_fifo[peek];
        T(("peeking at %d", peek));
-       
+
        p_inc();
        return ch;
 }
@@ -69,7 +100,7 @@ int ch;
        }
        else
            h_inc();
-           
+
 #ifdef TRACE
        if (_nc_tracing & TRACE_IEVENT) _nc_fifo_dump();
 #endif
@@ -88,8 +119,8 @@ again:
        errno = 0;
 #endif
 
-#if USE_GPM_SUPPORT    
-       if ((SP->_mouse_fd >= 0) 
+#if USE_GPM_SUPPORT
+       if ((SP->_mouse_fd >= 0)
         && (_nc_timed_wait(3, -1, (int *)0) & 2))
        {
                SP->_mouse_event(SP);
@@ -99,17 +130,21 @@ again:
 #endif
        {
                unsigned char c2=0;
+#ifdef USE_EMX_MOUSE
+               n = kbd_mouse_read(&c2);
+#else
                n = read(SP->_ifd, &c2, 1);
-               ch = c2;
+#endif
+               ch = c2 & 0xff;
        }
 
 #ifdef HIDE_EINTR
        /*
         * Under System V curses with non-restarting signals, getch() returns
-        * with value ERR when a handled signal keeps it from completing.  
+        * with value ERR when a handled signal keeps it from completing.
         * If signals restart system calls, OTOH, the signal is invisible
         * except to its handler.
-        * 
+        *
         * We don't want this difference to show.  This piece of code
         * tries to make it look like we always have restarting signals.
         */
@@ -194,8 +229,9 @@ int ch;
        if (wgetch_should_refresh(win))
                wrefresh(win);
 
-       if (!win->_notimeout && (win->_delay >= 0 || SP->_cbreak > 1)) {
-       int delay;
+       if (!win->_notimeout && (win->_delay >= 0 || SP->_cbreak > 1))
+       {
+               int delay;
 
                T(("timed delay in wgetch()"));
                if (SP->_cbreak > 1)
@@ -211,7 +247,8 @@ int ch;
                /* else go on to read data available */
        }
 
-       if (win->_use_keypad) {
+       if (win->_use_keypad) 
+        {
                /*
                 * This is tricky.  We only want to get special-key
                 * events one at a time.  But we want to accumulate
similarity index 97%
rename from ncurses/lib_getstr.c
rename to ncurses/base/lib_getstr.c
index 33a637ed65610e29e1e2fba1c09bf4f027956821..485c6e35c8ff3679ea24cbe43597f214c7c4d98b 100644 (file)
@@ -42,7 +42,7 @@
 #include <curses.priv.h>
 #include <term.h>
 
-MODULE_ID("$Id: lib_getstr.c,v 1.19 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_getstr.c,v 1.20 1998/12/20 00:16:01 tom Exp $")
 
 /*
  * This wipes out the last character, no matter whether it was a tab, control
@@ -84,7 +84,7 @@ int   y, x;
        if (!win)
          returnCode(ERR);
 
-       _nc_get_curterm(&buf);
+       _nc_get_tty_mode(&buf);
 
        oldnl = SP->_nl;
        oldecho = SP->_echo;
@@ -180,7 +180,7 @@ int y, x;
        SP->_raw = oldraw;
        SP->_cbreak = oldcbreak;
 
-       _nc_set_curterm(&buf);
+       _nc_set_tty_mode(&buf);
 
        *str = '\0';
        if (ch == ERR)
similarity index 88%
rename from ncurses/lib_hline.c
rename to ncurses/base/lib_hline.c
index d3b3f2dc79ee832181f48afa0f2af7d37db7b4f5..3b0a602eeee936cffd9020e9f8f14898a8671ce0 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_hline.c,v 1.2 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_hline.c,v 1.4 1998/06/28 00:11:01 tom Exp $")
 
 int whline(WINDOW *win, chtype ch, int n)
 {
 int   code = ERR;
-short line;
 short start;
 short end;
 
        T((T_CALLED("whline(%p,%s,%d)"), win, _tracechtype(ch), n));
 
        if (win) {
-               line  = win->_cury;
+               struct ldat *line = &(win->_line[win->_cury]);
+
                start = win->_curx;
                end   = start + n - 1;
                if (end > win->_maxx)
                        end   = win->_maxx;
 
-               if (win->_line[line].firstchar == _NOCHANGE
-                || win->_line[line].firstchar > start)
-                       win->_line[line].firstchar = start;
-               if (win->_line[line].lastchar == _NOCHANGE
-                || win->_line[line].lastchar < start)
-                       win->_line[line].lastchar = end;
+               CHANGED_RANGE(line, start, end);
 
                if (ch == 0)
                        ch = ACS_HLINE;
                ch = _nc_render(win, ch);
 
                while ( end >= start) {
-                       win->_line[line].text[end] = ch;
+                       line->text[end] = ch;
                        end--;
                }
                code = OK;
similarity index 89%
rename from ncurses/lib_initscr.c
rename to ncurses/base/lib_initscr.c
index e33f0b345de7f1713ed8464c3acae80cb1268e0f..9a89a077cd44822bf0baf696f4477d8d670ec18c 100644 (file)
 #include <sys/termio.h>        /* needed for ISC */
 #endif
 
-MODULE_ID("$Id: lib_initscr.c,v 1.21 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: lib_initscr.c,v 1.26 1998/12/19 23:10:09 tom Exp $")
 
 WINDOW *initscr(void)
 {
 static bool initialized = FALSE;
-const char *name;
+NCURSES_CONST char *name;
+int value;
 
        T((T_CALLED("initscr()")));
        /* Portable applications must not call initscr() more than once */
@@ -66,25 +67,12 @@ const char *name;
                }
 
                /* allow user to set maximum escape delay from the environment */
-               if ((name = getenv("ESCDELAY")) != 0)
-                       ESCDELAY = atoi(getenv("ESCDELAY"));
+               if ((value = _nc_getenv_num("ESCDELAY")) >= 0) {
+                       ESCDELAY = value;
+               }
 
                /* def_shell_mode - done in newterm/_nc_setupscreen */
                def_prog_mode();
        }
        returnWin(stdscr);
 }
-
-char *termname(void)
-{
-char   *term = getenv("TERM");
-static char    ret[MAX_ALIAS];
-
-       T(("termname() called"));
-
-       if (term != 0) {
-               (void) strncpy(ret, term, sizeof(ret) - 1);
-               term = ret;
-       }
-       return term;
-}
similarity index 83%
rename from ncurses/lib_insch.c
rename to ncurses/base/lib_insch.c
index ebee17882d3a258177f60652ae852b83bdab9546..ccc5ff5d024dc4460b7c2e599fa3e66de766eb1f 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_insch.c,v 1.9 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_insch.c,v 1.10 1998/06/28 00:26:52 tom Exp $")
 
 int  winsch(WINDOW *win, chtype c)
 {
 int code = ERR;
-chtype *temp1, *temp2;
-chtype *end;
 
        T((T_CALLED("winsch(%p, %s)"), win, _tracechtype(c)));
 
        if (win) {
-         end = &win->_line[win->_cury].text[win->_curx];
-         temp1 = &win->_line[win->_cury].text[win->_maxx];
-         temp2 = temp1 - 1;
+               struct ldat *line = &(win->_line[win->_cury]);
+               chtype *end = &(line->text[win->_curx]);
+               chtype *temp1 = &(line->text[win->_maxx]);
+               chtype *temp2 = temp1 - 1;
 
-         while (temp1 > end)
-           *temp1-- = *temp2--;
-         
-         *temp1 = _nc_render(win, c);
-         
-         win->_line[win->_cury].lastchar = win->_maxx;
-         if (win->_line[win->_cury].firstchar == _NOCHANGE
-             ||  win->_line[win->_cury].firstchar > win->_curx)
-           win->_line[win->_cury].firstchar = win->_curx;
-         code = OK;
+               CHANGED_TO_EOL(line, win->_curx, win->_maxx);
+               while (temp1 > end)
+                       *temp1-- = *temp2--;
+
+               *temp1 = _nc_render(win, c);
+               code = OK;
        }
        returnCode(code);
 }
similarity index 96%
rename from ncurses/lib_insstr.c
rename to ncurses/base/lib_insstr.c
index 0da8c22013a6f9a25061c0033d8e04a721dcab95..cba147318b8efdc34893ebed6ad8c98626fcafba 100644 (file)
@@ -43,7 +43,7 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_insstr.c,v 1.12 1998/02/23 12:12:16 tom Exp $")
+MODULE_ID("$Id: lib_insstr.c,v 1.13 1999/03/14 00:27:21 tom Exp $")
 
 int winsnstr(WINDOW *win, const char *s, int n)
 {
@@ -53,7 +53,7 @@ short ox ;
 const unsigned char *str = (const unsigned char *)s;
 const unsigned char *cp;
 
-        T((T_CALLED("winsnstr(%p,%s,%d)"), win, _nc_visbuf(str), n));
+        T((T_CALLED("winsnstr(%p,%s,%d)"), win, _nc_visbuf(s), n));
 
        if (win && str) {
          oy = win->_cury; ox = win->_curx;
similarity index 100%
rename from ncurses/lib_instr.c
rename to ncurses/base/lib_instr.c
similarity index 96%
rename from ncurses/lib_isendwin.c
rename to ncurses/base/lib_isendwin.c
index 0ed2494ddcd85b6bdcf526a16d35ea1345079436..60015fca55b91b81e1ed99a94118dc2c7156f174 100644 (file)
@@ -41,9 +41,9 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_isendwin.c,v 1.3 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_isendwin.c,v 1.4 1998/04/11 22:52:32 tom Exp $")
 
-int isendwin(void)
+bool isendwin(void)
 {
        if (SP == NULL)
                return FALSE;
similarity index 95%
rename from ncurses/lib_leaveok.c
rename to ncurses/base/lib_leaveok.c
index 063ab447b818862925acf92a496bfe950e4c0199..e83285d714f41c6ab305f2f791ebd5f5e8c9d1ba 100644 (file)
@@ -41,7 +41,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_leaveok.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: lib_leaveok.c,v 1.3 1998/03/21 22:54:20 jtc Exp $")
 
 int leaveok(WINDOW *win, bool flag)
 {
@@ -49,10 +49,6 @@ int leaveok(WINDOW *win, bool flag)
 
        if (win) {
          win->_leaveok = flag;
-         if (flag == TRUE)
-           curs_set(0);
-         else
-           curs_set(1);
          returnCode(OK);
        }
        else
similarity index 78%
rename from ncurses/lib_mouse.c
rename to ncurses/base/lib_mouse.c
index c4f510db247a1d1ed17c209426e363402560d2a1..d34d48342e4febc339c67c6958a497b70bc5deec 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
@@ -36,7 +36,7 @@
  * devices.
  *
  * The first method used is xterm's internal mouse-tracking facility.
- * The second (not yet implemented) will be Alessandro Rubini's GPM server.
+ * The second is Alessandro Rubini's GPM server.
  *
  * Notes for implementors of new mouse-interface methods:
  *
  * used yet, and a couple of bits open at the high end.
  */
 
+#ifdef __EMX__
+#  include "io.h"
+#  include "fcntl.h"
+#  define  INCL_DOS
+#  define  INCL_VIO
+#  define  INCL_KBD
+#  define  INCL_MOU
+#  define  INCL_DOSPROCESS
+#  include <os2.h>             /* Need to include before the others */
+#endif
+
 #include <curses.priv.h>
 #include <term.h>
 
 #if USE_GPM_SUPPORT
-#ifndef LINT           /* don't need this for llib-lncurses */
-#undef buttons         /* term.h defines this, and gpm uses it! */
+#ifndef LINT                   /* don't need this for llib-lncurses */
+#undef buttons                 /* term.h defines this, and gpm uses it! */
 #include <gpm.h>
+#include <linux/keyboard.h>    /* defines KG_* macros */
 #endif
 #endif
 
-MODULE_ID("$Id: lib_mouse.c,v 1.35 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_mouse.c,v 1.45 1999/10/22 21:39:02 tom Exp $")
 
 #define MY_TRACE TRACE_ICALLS|TRACE_IEVENT
 
@@ -117,24 +129,104 @@ static void _trace_slot(const char *tag)
        _tracef(tag);
 
        for (ep = events; ep < events + EV_MAX; ep++)
-               _tracef("mouse event queue slot %d = %s", ep-events, _tracemouse(ep));
+               _tracef("mouse event queue slot %ld = %s",
+                       (long) (ep - events),
+                       _tracemouse(ep));
 }
 #endif
 
-/* FIXME: The list of names should be configurable */
-static int is_xterm(const char *name)
+#ifdef USE_EMX_MOUSE
+
+#  define TOP_ROW          0
+#  define LEFT_COL         0
+
+static int mouse_wfd;
+static int mouse_thread;
+static int mouse_activated;
+static char mouse_buttons[] = { 0, 1, 3, 2};
+
+
+#  define M_FD(sp) sp->_mouse_fd
+
+static void
+write_event(int down, int button, int x, int y)
 {
-    return (!strncmp(name, "xterm", 5)
-      ||    !strncmp(name, "rxvt",  4)
-      ||    !strncmp(name, "kterm", 5)
-      ||    !strncmp(name, "color_xterm", 11));
+    char buf[6];
+    unsigned long ignore;
+
+    strcpy(buf, key_mouse);
+    buf[3] = ' ' + (button - 1) + (down ? 0 : 0x40);
+    buf[4] = ' ' + x - LEFT_COL + 1;
+    buf[5] = ' ' + y - TOP_ROW + 1;
+    DosWrite(mouse_wfd, buf, 6, &ignore);
 }
 
+static void
+mouse_server(unsigned long ignored GCC_UNUSED)
+{
+    unsigned short fWait = MOU_WAIT;
+    /* NOPTRRECT mourt = { 0,0,24,79 }; */
+    MOUEVENTINFO mouev;
+    HMOU hmou;
+    unsigned short mask = MOUSE_BN1_DOWN | MOUSE_BN2_DOWN | MOUSE_BN3_DOWN;
+    int oldstate = 0;
+    char errmess[] = "Unexpected termination of mouse thread\r\n";
+    unsigned long ignore;
+
+    /* open the handle for the mouse */
+    if (MouOpen(NULL,&hmou) == 0) {
+
+       if (MouSetEventMask(&mask,hmou) == 0
+        && MouDrawPtr(hmou) == 0) {
+
+           for (;;) {
+               /* sit and wait on the event queue */
+               if (MouReadEventQue(&mouev,&fWait,hmou))
+                       break;
+               if (!mouse_activated)
+                   goto finish;
+
+               /*
+                * OS/2 numbers a 3-button mouse inconsistently from other
+                * platforms:
+                *      1 = left
+                *      2 = right
+                *      3 = middle.
+                */
+               if ((mouev.fs ^ oldstate) & MOUSE_BN1_DOWN)
+                   write_event(mouev.fs  & MOUSE_BN1_DOWN,
+                               mouse_buttons[1], mouev.col, mouev.row);
+               if ((mouev.fs ^ oldstate) & MOUSE_BN2_DOWN)
+                   write_event(mouev.fs  & MOUSE_BN2_DOWN,
+                               mouse_buttons[3], mouev.col, mouev.row);
+               if ((mouev.fs ^ oldstate) & MOUSE_BN3_DOWN)
+                   write_event(mouev.fs  & MOUSE_BN3_DOWN,
+                               mouse_buttons[2], mouev.col, mouev.row);
+
+             finish:
+               oldstate = mouev.fs;
+           }
+       }
+
+       DosWrite(2, errmess, strlen(errmess), &ignore);
+       MouClose(hmou);
+    }
+    DosExit(EXIT_THREAD, 0L );
+}
+static void
+server_state(const int state)
+{ /* It would be nice to implement pointer-off and stop looping... */
+    mouse_activated = state;
+}
+
+#endif
+
+static int initialized;
+
 static void _nc_mouse_init(void)
 /* initialize the mouse */
 {
     int i;
-    static int initialized;
 
     if (initialized) {
        return;
@@ -148,7 +240,7 @@ static void _nc_mouse_init(void)
 
     /* we know how to recognize mouse events under xterm */
     if (key_mouse != 0
-     && is_xterm(cur_term->type.term_names))
+     && getenv("DISPLAY") != 0)
        mousetype = M_XTERM;
 
 #if USE_GPM_SUPPORT
@@ -156,9 +248,9 @@ static void _nc_mouse_init(void)
     {
        /* GPM: initialize connection to gpm server */
        gpm_connect.eventMask = GPM_DOWN|GPM_UP;
-       gpm_connect.defaultMask = ~gpm_connect.eventMask;
+       gpm_connect.defaultMask = ~(gpm_connect.eventMask|GPM_HARD);
        gpm_connect.minMod = 0;
-       gpm_connect.maxMod = ~0;
+       gpm_connect.maxMod = ~((1<<KG_SHIFT)|(1<<KG_SHIFTL)|(1<<KG_SHIFTR));
        if (Gpm_Open (&gpm_connect, 0) >= 0) { /* returns the file-descriptor */
            mousetype = M_GPM;
            SP->_mouse_fd = gpm_fd;
@@ -166,6 +258,40 @@ static void _nc_mouse_init(void)
     }
 #endif
 
+    /* OS/2 VIO */
+#ifdef USE_EMX_MOUSE
+    if (!mouse_thread && mousetype != M_XTERM && key_mouse) {
+       int handles[2];
+       if (pipe(handles) < 0) {
+           perror("mouse pipe error");
+       } else {
+           int rc;
+
+           if (!mouse_buttons[0]) {
+               char *s = getenv("MOUSE_BUTTONS_123");
+
+               mouse_buttons[0] = 1;
+               if (s && strlen(s) >= 3) {
+                   mouse_buttons[1] = s[0] - '0';
+                   mouse_buttons[2] = s[1] - '0';
+                   mouse_buttons[3] = s[2] - '0';
+               }
+           }
+           mouse_wfd = handles[1];
+           M_FD(SP) = handles[0];
+           /* Needed? */
+           setmode(handles[0], O_BINARY);
+           setmode(handles[1], O_BINARY);
+           /* Do not use CRT functions, we may single-threaded. */
+           rc = DosCreateThread((unsigned long*)&mouse_thread, mouse_server, 0, 0, 8192);
+           if (rc)
+               printf("mouse thread error %d=%#x", rc, rc);
+           else
+               mousetype = M_XTERM;
+       }
+    }
+#endif
+
     T(("_nc_mouse_init() set mousetype to %d", mousetype));
 }
 
@@ -257,7 +383,13 @@ static bool _nc_mouse_inline(SCREEN *sp)
         */
        for (grabbed = 0; grabbed < 3; grabbed += res)
        {
+
+       /* For VIO mouse we add extra bit 64 to disambiguate button-up. */
+#ifdef USE_EMX_MOUSE
+            res = read( M_FD(sp) >= 0 ? M_FD(sp) : sp->_ifd, &kbuf, 3);
+#else
             res = read(sp->_ifd, kbuf + grabbed, 3-grabbed);
+#endif
             if (res == -1)
                 break;
        }
@@ -273,14 +405,26 @@ static bool _nc_mouse_inline(SCREEN *sp)
        {
        case 0x0:
            eventp->bstate = BUTTON1_PRESSED;
+#ifdef USE_EMX_MOUSE
+           if (kbuf[0] & 0x40)
+               eventp->bstate = BUTTON1_RELEASED;
+#endif
            break;
 
        case 0x1:
            eventp->bstate = BUTTON2_PRESSED;
+#ifdef USE_EMX_MOUSE
+           if (kbuf[0] & 0x40)
+               eventp->bstate = BUTTON2_RELEASED;
+#endif
            break;
 
        case 0x2:
            eventp->bstate = BUTTON3_PRESSED;
+#ifdef USE_EMX_MOUSE
+           if (kbuf[0] & 0x40)
+               eventp->bstate = BUTTON3_RELEASED;
+#endif
            break;
 
        case 0x3:
@@ -320,7 +464,9 @@ static bool _nc_mouse_inline(SCREEN *sp)
 
        eventp->x = (kbuf[1] - ' ') - 1;
        eventp->y = (kbuf[2] - ' ') - 1;
-       TR(MY_TRACE, ("_nc_mouse_inline: primitive mouse-event %s has slot %d", _tracemouse(eventp), eventp - events));
+       TR(MY_TRACE, ("_nc_mouse_inline: primitive mouse-event %s has slot %ld",
+               _tracemouse(eventp),
+               (long) (eventp - events)));
 
        /* bump the next-free pointer into the circular list */
        eventp = NEXT(eventp);
@@ -334,6 +480,9 @@ static bool _nc_mouse_inline(SCREEN *sp)
 
 static void mouse_activate(bool on)
 {
+    if (!on && !initialized)
+       return;
+
     _nc_mouse_init();
 
     if (on) {
@@ -344,7 +493,11 @@ static void mouse_activate(bool on)
            keyok(KEY_MOUSE, on);
 #endif
            TPUTS_TRACE("xterm mouse initialization");
+#ifdef USE_EMX_MOUSE
+           server_state(1);
+#else
            putp("\033[?1000h");
+#endif
            break;
 #if USE_GPM_SUPPORT
        case M_GPM:
@@ -366,7 +519,11 @@ static void mouse_activate(bool on)
        switch (mousetype) {
        case M_XTERM:
            TPUTS_TRACE("xterm mouse deinitialization");
+#ifdef USE_EMX_MOUSE
+           server_state(0);
+#else
            putp("\033[?1000l");
+#endif
            break;
 #if USE_GPM_SUPPORT
        case M_GPM:
@@ -374,7 +531,7 @@ static void mouse_activate(bool on)
 #endif
        }
     }
-    (void) fflush(SP->_ofp);
+    _nc_flush();
 }
 
 /**************************************************************************
@@ -415,8 +572,9 @@ static bool _nc_mouse_parse(int runcount)
      */
     if (runcount == 1)
     {
-       TR(MY_TRACE, ("_nc_mouse_parse: returning simple mouse event %s at slot %d",
-          _tracemouse(prev), prev-events));
+       TR(MY_TRACE, ("_nc_mouse_parse: returning simple mouse event %s at slot %ld",
+          _tracemouse(prev),
+          (long) (prev - events)));
        return (prev->id >= 0)
                ? ((prev->bstate & eventmask) ? TRUE : FALSE)
                : FALSE;
@@ -432,8 +590,10 @@ static bool _nc_mouse_parse(int runcount)
     if (_nc_tracing & TRACE_IEVENT)
     {
        _trace_slot("before mouse press/release merge:");
-       _tracef("_nc_mouse_parse: run starts at %d, ends at %d, count %d",
-           runp-events, ((eventp - events) + (EV_MAX-1)) % EV_MAX, runcount);
+       _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
+           (long) (runp - events),
+           (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+           runcount);
     }
 #endif /* TRACE */
 
@@ -484,8 +644,10 @@ static bool _nc_mouse_parse(int runcount)
     if (_nc_tracing & TRACE_IEVENT)
     {
        _trace_slot("before mouse click merge:");
-       _tracef("_nc_mouse_parse: run starts at %d, ends at %d, count %d",
-           runp-events, ((eventp - events) + (EV_MAX-1)) % EV_MAX, runcount);
+       _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
+           (long) (runp - events),
+           (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+           runcount);
     }
 #endif /* TRACE */
 
@@ -589,8 +751,10 @@ static bool _nc_mouse_parse(int runcount)
     if (_nc_tracing & TRACE_IEVENT)
     {
        _trace_slot("before mouse event queue compaction:");
-       _tracef("_nc_mouse_parse: run starts at %d, ends at %d, count %d",
-           runp-events, ((eventp - events) + (EV_MAX-1)) % EV_MAX, runcount);
+       _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
+           (long) (runp - events),
+           (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+           runcount);
     }
 #endif /* TRACE */
 
@@ -607,13 +771,16 @@ static bool _nc_mouse_parse(int runcount)
     if (_nc_tracing & TRACE_IEVENT)
     {
        _trace_slot("after mouse event queue compaction:");
-       _tracef("_nc_mouse_parse: run starts at %d, ends at %d, count %d",
-           runp-events, ((eventp - events) + (EV_MAX-1)) % EV_MAX, runcount);
+       _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
+           (long) (runp - events),
+           (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+           runcount);
     }
     for (ep = runp; ep != eventp; ep = NEXT(ep))
        if (ep->id != INVALID_EVENT)
-           TR(MY_TRACE, ("_nc_mouse_parse: returning composite mouse event %s at slot %d",
-               _tracemouse(ep), ep-events));
+           TR(MY_TRACE, ("_nc_mouse_parse: returning composite mouse event %s at slot %ld",
+               _tracemouse(ep),
+               (long) (ep - events)));
 #endif /* TRACE */
 
     /* after all this, do we have a valid event? */
@@ -627,9 +794,9 @@ static void _nc_mouse_wrap(SCREEN *sp GCC_UNUSED)
 
     switch (mousetype) {
     case M_XTERM:
-        if (eventmask)
-            mouse_activate(FALSE);
-        break;
+       if (eventmask)
+           mouse_activate(FALSE);
+       break;
 #if USE_GPM_SUPPORT
        /* GPM: pass all mouse events to next client */
        case M_GPM:
@@ -669,8 +836,9 @@ int getmouse(MEVENT *aevent)
        /* copy the event we find there */
        *aevent = *prev;
 
-       TR(TRACE_IEVENT, ("getmouse: returning event %s from slot %d",
-           _tracemouse(prev), prev-events));
+       TR(TRACE_IEVENT, ("getmouse: returning event %s from slot %ld",
+           _tracemouse(prev),
+           (long) (prev - events)));
 
        prev->id = INVALID_EVENT;       /* so the queue slot becomes free */
        returnCode(OK);
@@ -701,6 +869,9 @@ mmask_t mousemask(mmask_t newmask, mmask_t *oldmask)
     if (oldmask)
        *oldmask = eventmask;
 
+    if (!newmask && !initialized)
+       returnCode(0);
+
     _nc_mouse_init();
     if ( mousetype != M_NONE )
     {
@@ -757,4 +928,37 @@ int _nc_has_mouse(void) {
   return (mousetype==M_NONE ? 0:1);
 }
 
+bool wmouse_trafo(const WINDOW* win, int* pY, int* pX, bool to_screen)
+{
+  bool result = FALSE;
+
+  if (win && pY && pX)
+    {
+      int y = *pY; int x = *pX;
+
+      if (to_screen)
+       {
+         y += win->_begy + win->_yoffset;
+         x += win->_begx;
+         if (wenclose(win,y,x))
+           result = TRUE;
+       }
+      else
+       {
+         if (wenclose(win,y,x))
+           {
+             y -= (win->_begy + win->_yoffset);
+             x -= win->_begx;
+             result = TRUE;
+           }
+       }
+      if (result)
+       {
+         *pX = x;
+         *pY = y;
+       }
+    }
+  return(result);
+}
+
 /* lib_mouse.c ends here */
similarity index 100%
rename from ncurses/lib_move.c
rename to ncurses/base/lib_move.c
similarity index 100%
rename from ncurses/lib_mvwin.c
rename to ncurses/base/lib_mvwin.c
similarity index 87%
rename from ncurses/lib_newterm.c
rename to ncurses/base/lib_newterm.c
index ea5333d898ea6dfecbd0d8d7377d96b0b56917a0..9a4919bf5292480e2c61f87df1d2d19d78062036 100644 (file)
@@ -48,7 +48,7 @@
 
 #include <term.h>      /* clear_screen, cup & friends, cur_term */
 
-MODULE_ID("$Id: lib_newterm.c,v 1.33 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_newterm.c,v 1.41 1999/07/24 20:07:48 tom Exp $")
 
 #ifndef ONLCR          /* Allows compilation under the QNX 4.2 OS */
 #define ONLCR 0
@@ -75,7 +75,7 @@ static inline int _nc_initscr(void)
 #else
        cur_term->Nttyb.sg_flags &= ~(ECHO|CRMOD);
 #endif
-       return _nc_set_curterm(&cur_term->Nttyb);
+       return _nc_set_tty_mode(&cur_term->Nttyb);
 }
 
 /*
@@ -91,53 +91,35 @@ void filter(void)
     filter_mode = TRUE;
 }
 
-SCREEN * newterm(const char *term, FILE *ofp, FILE *ifp)
+SCREEN * newterm(NCURSES_CONST char *name, FILE *ofp, FILE *ifp)
 {
 int    errret;
+int     slk_format = _nc_slk_format;
 SCREEN* current;
 #ifdef TRACE
-char *t = getenv("NCURSES_TRACE");
+int t = _nc_getenv_num("NCURSES_TRACE");
 
-       if (t)
-               trace((unsigned) strtol(t, 0, 0));
+       if (t >= 0)
+               trace(t);
 #endif
 
-       T((T_CALLED("newterm(\"%s\",%p,%p)"), term, ofp, ifp));
+       T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));
 
        /* this loads the capability entry, then sets LINES and COLS */
-       if (setupterm(term, fileno(ofp), &errret) == ERR)
+       if (setupterm(name, fileno(ofp), &errret) == ERR)
                return 0;
 
-       /*
-        * Check for mismatched graphic-rendition capabilities.  Most SVr4
-        * terminfo trees contain entries that have rmul or rmso equated to
-        * sgr0 (Solaris curses copes with those entries).  We do this only for
-        * curses, since many termcap applications assume that smso/rmso and
-        * smul/rmul are paired, and will not function properly if we remove
-        * rmso or rmul.  Curses applications shouldn't be looking at this
-        * detail.
-        */
-       if (exit_attribute_mode) {
-#define SGR0_FIX(mode) if (mode != 0 && !strcmp(mode, exit_attribute_mode)) \
-                       mode = 0
-               SGR0_FIX(exit_underline_mode);
-               SGR0_FIX(exit_standout_mode);
-       }
-
        /* implement filter mode */
        if (filter_mode) {
                LINES = 1;
 
-#ifdef init_tabs
                if (init_tabs != -1)
                        TABSIZE = init_tabs;
                else
-#endif /* init_tabs */
                        TABSIZE = 8;
 
                T(("TABSIZE = %d", TABSIZE));
 
-#ifdef clear_screen
                clear_screen = 0;
                cursor_down = parm_down_cursor = 0;
                cursor_address = 0;
@@ -145,19 +127,17 @@ char *t = getenv("NCURSES_TRACE");
                row_address = 0;
 
                cursor_home = carriage_return;
-#endif /* clear_screen */
        }
 
        /* If we must simulate soft labels, grab off the line to be used.
           We assume that we must simulate, if it is none of the standard
           formats (4-4  or 3-2-3) for which there may be some hardware
           support. */
-#ifdef num_labels
-       if (num_labels <= 0 || !SLK_STDFMT)
-#endif /* num_labels */
-           if (_nc_slk_format)
+       if (num_labels <= 0 || !SLK_STDFMT(slk_format))
+           if (slk_format)
              {
-               if (ERR==_nc_ripoffline(-SLK_LINES, _nc_slk_initialize))
+               if (ERR==_nc_ripoffline(-SLK_LINES(slk_format),
+                                       _nc_slk_initialize))
                  return 0;
              }
        /* this actually allocates the screen structure, and saves the
@@ -170,11 +150,9 @@ char *t = getenv("NCURSES_TRACE");
                return 0;
        }
 
-#ifdef num_labels
        /* if the terminal type has real soft labels, set those up */
-       if (_nc_slk_format && num_labels > 0 && SLK_STDFMT)
+       if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
            _nc_slk_initialize(stdscr, COLS);
-#endif /* num_labels */
 
        SP->_ifd        = fileno(ifp);
        SP->_checkfd    = fileno(ifp);
@@ -199,17 +177,30 @@ char *t = getenv("NCURSES_TRACE");
 
        SP->_keytry = 0;
 
+       /*
+        * Check for mismatched graphic-rendition capabilities.  Most SVr4
+        * terminfo trees contain entries that have rmul or rmso equated to
+        * sgr0 (Solaris curses copes with those entries).  We do this only for
+        * curses, since many termcap applications assume that smso/rmso and
+        * smul/rmul are paired, and will not function properly if we remove
+        * rmso or rmul.  Curses applications shouldn't be looking at this
+        * detail.
+        */
+#define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))
+       SP->_use_rmso = SGR0_TEST(exit_standout_mode);
+       SP->_use_rmul = SGR0_TEST(exit_underline_mode);
+
        /* compute movement costs so we can do better move optimization */
        _nc_mvcur_init();
 
-       _nc_signal_handler(TRUE);
-
        /* initialize terminal to a sane state */
        _nc_screen_init();
 
        /* Initialize the terminal line settings. */
        _nc_initscr();
 
+       _nc_signal_handler(TRUE);
+
        T((T_RETURN("%p"), SP));
        return(SP);
 }
similarity index 97%
rename from ncurses/lib_newwin.c
rename to ncurses/base/lib_newwin.c
index d96bf0a4e58e1b5358428b31fba08ad42e7da3ff..d7fc02b3216e0e0089663d0a2aa4e856f8c1f55e 100644 (file)
@@ -42,7 +42,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_newwin.c,v 1.19 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_newwin.c,v 1.21 1999/10/03 00:42:03 tom Exp $")
 
 void _nc_freewin(WINDOW *win)
 {
@@ -60,7 +60,7 @@ int   i;
 
                                if (! (win->_flags & _SUBWIN)) {
                                        for (i = 0; i <= win->_maxy && win->_line[i].text; i++)
-                                               free(win->_line[i].text);
+                                               FreeIfNeeded(win->_line[i].text);
                                }
                                free(win->_line);
                                free(win);
@@ -130,10 +130,10 @@ int     flags = _SUBWIN;
            returnWin(0);
 
        if (num_lines == 0)
-           num_lines = orig->_maxy - begy;
+           num_lines = orig->_maxy + 1 - begy; 
 
        if (num_columns == 0)
-           num_columns = orig->_maxx - begx;
+           num_columns = orig->_maxx + 1 - begx; 
 
        if (orig->_flags & _ISPAD)
          flags |= _ISPAD;
similarity index 93%
rename from ncurses/lib_nl.c
rename to ncurses/base/lib_nl.c
index bb165dbc5791430e9d490f4558cc23e8e9645ad4..75d4a638148d6547327cfaff9b2aa2292ea8b8e3 100644 (file)
@@ -42,9 +42,8 @@
  */
 
 #include <curses.priv.h>
-#include <term.h>      /* cur_term */
 
-MODULE_ID("$Id: lib_nl.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: lib_nl.c,v 1.4 1999/10/22 22:31:51 tom Exp $")
 
 #ifdef __EMX__
 #include <io.h>
@@ -58,8 +57,8 @@ int nl(void)
        SP->_nl = TRUE;
 
 #ifdef __EMX__
-       fflush(SP->_ofp);
-       _fsetmode(SP->_ofp, "t");
+       _nc_flush();
+       _fsetmode(NC_OUTPUT, "t");
 #endif
 
        returnCode(OK);
@@ -72,8 +71,8 @@ int nonl(void)
        SP->_nl = FALSE;
 
 #ifdef __EMX__
-       fflush(SP->_ofp);
-       _fsetmode(SP->_ofp, "b");
+       _nc_flush();
+       _fsetmode(NC_OUTPUT, "b");
 #endif
 
        returnCode(OK);
similarity index 97%
rename from ncurses/lib_pad.c
rename to ncurses/base/lib_pad.c
index 6e797aef04b6008ba5eb58e9b63ee9ebeaa8635f..d4e341c05c753bda93d6e235aaa3b20df01d05a2 100644 (file)
@@ -41,7 +41,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_pad.c,v 1.25 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_pad.c,v 1.27 1998/06/28 00:10:16 tom Exp $")
 
 WINDOW *newpad(int l, int c)
 {
@@ -178,13 +178,7 @@ bool       wide;
                for (j = pmincol, n = smincol; j <= pmaxcol; j++, n++) {
                        if (oline->text[j] != nline->text[n]) {
                                nline->text[n] = oline->text[j];
-
-                               if (nline->firstchar == _NOCHANGE)
-                                       nline->firstchar = nline->lastchar = n;
-                               else if (n < nline->firstchar)
-                                       nline->firstchar = n;
-                               else if (n > nline->lastchar)
-                                       nline->lastchar = n;
+                               CHANGED_CELL(nline,n);
                        }
                }
 
similarity index 90%
rename from ncurses/lib_printw.c
rename to ncurses/base/lib_printw.c
index a8b49aa5d342ac34e7d59a1d7aae097474ba90cb..8d28f288d3c16681c7516c5ab0f81c28dbd1a3d0 100644 (file)
@@ -39,9 +39,9 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_printw.c,v 1.6 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_printw.c,v 1.7 1998/04/11 22:53:44 tom Exp $")
 
-int printw(const char *fmt, ...)
+int printw(NCURSES_CONST char *fmt, ...)
 {
        va_list argp;
        int code;
@@ -55,7 +55,7 @@ int printw(const char *fmt, ...)
        return code;
 }
 
-int wprintw(WINDOW *win, const char *fmt, ...)
+int wprintw(WINDOW *win, NCURSES_CONST char *fmt, ...)
 {
        va_list argp;
        int code;
@@ -69,7 +69,7 @@ int wprintw(WINDOW *win, const char *fmt, ...)
        return code;
 }
 
-int mvprintw(int y, int x, const char *fmt, ...)
+int mvprintw(int y, int x, NCURSES_CONST char *fmt, ...)
 {
        va_list argp;
        int code = move(y, x);
@@ -82,7 +82,7 @@ int mvprintw(int y, int x, const char *fmt, ...)
        return code;
 }
 
-int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...)
+int mvwprintw(WINDOW *win, int y, int x, NCURSES_CONST char *fmt, ...)
 {
        va_list argp;
        int code = wmove(win, y, x);
@@ -95,7 +95,7 @@ int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...)
        return code;
 }
 
-int vwprintw(WINDOW *win, const char *fmt, va_list argp)
+int vwprintw(WINDOW *win, NCURSES_CONST char *fmt, va_list argp)
 {
        char *buf = _nc_printf_string(fmt, argp);
        int code = ERR;
similarity index 80%
rename from ncurses/lib_redrawln.c
rename to ncurses/base/lib_redrawln.c
index adcdf73632f6ff5702c077349bcc6178c9483a74..10fda917984e38c520c101a55c82194953a5130b 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_redrawln.c,v 1.2 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_redrawln.c,v 1.7 1998/09/19 20:09:50 Alexander.V.Lukyanov Exp $")
 
 int wredrawln(WINDOW *win, int beg, int num)
 {
-int i;
+       int i;
+       int end;
+       size_t len = (win->_maxx + 1) * sizeof(chtype);
 
        T((T_CALLED("wredrawln(%p,%d,%d)"), win, beg, num));
 
-       if (touchline(win, beg, num) == OK) {
-               size_t len = win->_maxx * sizeof(chtype);
+       if (beg < 0)
+               beg = 0;
 
-               /*
-                * XSI says that wredrawln() tells the library not to base
-                * optimization on the contents of the lines that are marked.
-                * We do that by changing the contents to nulls after touching
-                * the corresponding lines to get the optimizer's attention.
-                *
-                * FIXME: this won't work if the application makes further
-                * updates before the next refresh.
-                */
-               for (i = beg; (i < beg + num) && (i < win->_maxy); i++) {
-                       memset(win->_line[i].text, 0, len);
-               }
+       if (touchline (win, beg, num) == ERR)
+               returnCode(ERR);
+
+       end = beg + num;
+       if (end > win->_maxy + 1)
+               end = win->_maxy + 1;
+
+       for (i = beg; i < end; i++)
+       {
+               memset (curscr->_line[i+win->_begy].text+win->_begx, 0, len);
+               _nc_make_oldhash(i+win->_begy);
        }
+
        returnCode(OK);
 }
similarity index 89%
rename from ncurses/lib_refresh.c
rename to ncurses/base/lib_refresh.c
index 417e670273e5decc4e7d87cc437d5cc935310868..88e3b75a56a1ac195af5f9b5a4b57d7ac2d16028 100644 (file)
@@ -42,7 +42,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_refresh.c,v 1.19 1998/02/11 12:13:59 tom Exp $")
+MODULE_ID("$Id: lib_refresh.c,v 1.24 1999/07/31 11:36:37 juergen Exp $")
 
 int wrefresh(WINDOW *win)
 {
@@ -70,6 +70,7 @@ int code;
 
 int wnoutrefresh(WINDOW *win)
 {
+short  limit_x;
 short  i, j;
 short  begx;
 short  begy;
@@ -93,14 +94,7 @@ bool wide;
        begx = win->_begx;
        begy = win->_begy;
 
-       /*
-        * If 'newscr' has a different background than the window that we're
-        * trying to refresh, we'll have to copy the whole thing.
-        */
-       if (win->_bkgd != newscr->_bkgd) {
-               touchwin(win);
-               newscr->_bkgd = win->_bkgd;
-       }
+       newscr->_bkgd  = win->_bkgd;
        newscr->_attrs = win->_attrs;
 
        /* merge in change information from all subwindows of this window */
@@ -130,6 +124,13 @@ bool       wide;
         * common-subexpression chunking to make it really tense,
         * so we'll force the issue.
         */
+
+       /* limit(n) */
+       limit_x = win->_maxx;
+       /* limit(j) */
+       if (limit_x > win->_maxx)
+               limit_x = win->_maxx;
+
        for (i = 0, m = begy + win->_yoffset;
             i <= win->_maxy && m <= newscr->_maxy;
             i++, m++) {
@@ -139,23 +140,13 @@ bool      wide;
                if (oline->firstchar != _NOCHANGE) {
                        int last = oline->lastchar;
 
-                       /* limit(j) */
-                       if (last > win->_maxx)
-                               last = win->_maxx;
-                       /* limit(n) */
-                       if (last > newscr->_maxx - begx)
-                               last = newscr->_maxx - begx;
+                       if (last > limit_x)
+                               last = limit_x;
 
                        for (j = oline->firstchar, n = j + begx; j <= last; j++, n++) {
                                if (oline->text[j] != nline->text[n]) {
                                        nline->text[n] = oline->text[j];
-
-                                       if (nline->firstchar == _NOCHANGE)
-                                               nline->firstchar = nline->lastchar = n;
-                                       else if (n < nline->firstchar)
-                                               nline->firstchar = n;
-                                       else if (n > nline->lastchar)
-                                               nline->lastchar = n;
+                                       CHANGED_CELL(nline, n);
                                }
                        }
 
@@ -182,6 +173,8 @@ bool        wide;
                newscr->_cury = win->_cury + win->_begy + win->_yoffset;
                newscr->_curx = win->_curx + win->_begx;
        }
+       newscr->_leaveok = win->_leaveok;
+       
 #ifdef TRACE
        if (_nc_tracing & TRACE_UPDATE)
            _tracedump("newscr", newscr);
similarity index 74%
rename from ncurses/lib_restart.c
rename to ncurses/base/lib_restart.c
index 6dc183144be4ac366a56a62973638ff8c26b3d80..de0182f4269148b393f05d1463c3b0e0a0db1c52 100644 (file)
 
 #include <term.h>      /* lines, columns, cur_term */
 
-MODULE_ID("$Id: lib_restart.c,v 1.16 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_restart.c,v 1.2 1999/07/24 20:10:04 tom Exp $")
 
-#undef tabs
-
-#ifdef TAB3
-# define tabs TAB3
-#else
-# ifdef XTABS
-#  define tabs XTABS
-# else
-#  ifdef OXTABS
-#   define tabs OXTABS
-#  else
-#   define tabs 0
-#  endif
-# endif
-#endif
-
-int def_shell_mode(void)
-{
-       T((T_CALLED("def_shell_mode()")));
-
-       /*
-        * Turn off the XTABS bit in the tty structure if it was on.  If XTABS
-        * was on, remove the tab and backtab capabilities.
-        */
-
-       if (_nc_get_curterm(&cur_term->Ottyb) != OK)
-               returnCode(ERR);
-#ifdef TERMIOS
-       if (cur_term->Ottyb.c_oflag & tabs)
-               tab = back_tab = NULL;
-#else
-       if (cur_term->Ottyb.sg_flags & XTABS)
-               tab = back_tab = NULL;
-#endif
-       returnCode(OK);
-}
-
-int def_prog_mode(void)
-{
-       T((T_CALLED("def_prog_mode()")));
-
-       if (_nc_get_curterm(&cur_term->Nttyb) != OK)
-               returnCode(ERR);
-#ifdef TERMIOS
-       cur_term->Nttyb.c_oflag &= ~tabs;
-#else
-       cur_term->Nttyb.sg_flags &= ~XTABS;
-#endif
-       returnCode(OK);
-}
-
-int restartterm(const char *term, int filenum, int *errret)
+int restartterm(NCURSES_CONST char *termp, int filenum, int *errret)
 {
 int saveecho = SP->_echo;
 int savecbreak = SP->_cbreak;
 int saveraw = SP->_raw;
 int savenl = SP->_nl;
 
-       T((T_CALLED("restartterm(%s,%d,%p)"), term, filenum, errret));
+       T((T_CALLED("restartterm(%s,%d,%p)"), termp, filenum, errret));
 
-       setupterm(term, filenum, errret);
+       setupterm(termp, filenum, errret);
 
        if (saveecho)
                echo();
similarity index 90%
rename from ncurses/lib_scanw.c
rename to ncurses/base/lib_scanw.c
index 9148ab33fff179e09afeb6df6a7f942265cfcd0a..cc66613ff52f0495f2a99e8280e904bb830e06ab 100644 (file)
@@ -42,7 +42,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_scanw.c,v 1.7 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_scanw.c,v 1.8 1998/04/11 22:54:18 tom Exp $")
 
 #if !HAVE_VSSCANF
 #if defined(__QNX__)
@@ -52,7 +52,7 @@ extern int vsscanf(const char *str, const char *format, ...);
 #endif
 #endif
 
-int vwscanw(WINDOW *win, const char *fmt, va_list argp)
+int vwscanw(WINDOW *win, NCURSES_CONST char *fmt, va_list argp)
 {
 char buf[BUFSIZ];
 
@@ -62,7 +62,7 @@ char buf[BUFSIZ];
        return(vsscanf(buf, fmt, argp));
 }
 
-int scanw(const char *fmt, ...)
+int scanw(NCURSES_CONST char *fmt, ...)
 {
 int code;
 va_list ap;
@@ -75,7 +75,7 @@ va_list ap;
        return (code);
 }
 
-int wscanw(WINDOW *win, const char *fmt, ...)
+int wscanw(WINDOW *win, NCURSES_CONST char *fmt, ...)
 {
 int code;
 va_list ap;
@@ -88,7 +88,7 @@ va_list ap;
        return (code);
 }
 
-int mvscanw(int y, int x, const char *fmt, ...)
+int mvscanw(int y, int x, NCURSES_CONST char *fmt, ...)
 {
 int code;
 va_list ap;
@@ -99,7 +99,7 @@ va_list ap;
        return (code);
 }
 
-int mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...)
+int mvwscanw(WINDOW *win, int y, int x, NCURSES_CONST char *fmt, ...)
 {
 int code;
 va_list ap;
similarity index 94%
rename from ncurses/lib_screen.c
rename to ncurses/base/lib_screen.c
index f12b2dec4ed4a1cb3b26da12630c2a77accf0010..3038393c226676bb3957f43c7a72642a3794e61e 100644 (file)
@@ -38,7 +38,7 @@
 #include <time.h>
 #include <term.h>      /* exit_ca_mode, non_rev_rmcup */
 
-MODULE_ID("$Id: lib_screen.c,v 1.11 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_screen.c,v 1.15 1999/07/24 20:05:29 tom Exp $")
 
 static time_t  dumptime;
 
@@ -125,11 +125,12 @@ int putwin(WINDOW *win, FILE *filep)
 
 int scr_restore(const char *file)
 {
-       FILE    *fp;
+       FILE    *fp = 0;
 
        T((T_CALLED("scr_restore(%s)"), _nc_visbuf(file)));
 
-       if ((fp = fopen(file, "rb")) == 0)
+       if (_nc_access(file, R_OK) < 0
+        || (fp = fopen(file, "rb")) == 0)
            returnCode(ERR);
        else
        {
@@ -142,11 +143,12 @@ int scr_restore(const char *file)
 
 int scr_dump(const char *file)
 {
-       FILE    *fp;
+       FILE    *fp = 0;
 
        T((T_CALLED("scr_dump(%s)"), _nc_visbuf(file)));
 
-       if ((fp = fopen(file, "wb")) == 0)
+       if (_nc_access(file, W_OK) < 0
+        || (fp = fopen(file, "wb")) == 0)
            returnCode(ERR);
        else
        {
@@ -159,17 +161,16 @@ int scr_dump(const char *file)
 
 int scr_init(const char *file)
 {
-       FILE    *fp;
+       FILE    *fp = 0;
        struct stat     stb;
 
        T((T_CALLED("scr_init(%s)"), _nc_visbuf(file)));
 
-#ifdef exit_ca_mode
        if (exit_ca_mode && non_rev_rmcup)
            returnCode(ERR);
-#endif /* exit_ca_mode */
 
-       if ((fp = fopen(file, "rb")) == 0)
+       if (_nc_access(file, R_OK) < 0
+        || (fp = fopen(file, "rb")) == 0)
            returnCode(ERR);
        else if (fstat(STDOUT_FILENO, &stb) || stb.st_mtime > dumptime)
            returnCode(ERR);
similarity index 76%
rename from ncurses/lib_set_term.c
rename to ncurses/base/lib_set_term.c
index 12ac5fd6f5dfac820e4950d91451f329b81a8d35..443236cf9cdafadf0e163d846fbf4a65d098876b 100644 (file)
@@ -31,8 +31,6 @@
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-
 /*
 **     lib_set_term.c
 **
 
 #include <term.h>      /* cur_term */
 
-MODULE_ID("$Id: lib_set_term.c,v 1.37 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.46 1999/07/24 20:05:49 tom Exp $")
 
-/*
- * If the output file descriptor is connected to a tty (the typical case) it
- * will probably be line-buffered.  Keith Bostic pointed out that we don't want
- * this; it hoses people running over networks by forcing out a bunch of small
- * packets instead of one big one, so screen updates on ptys look jerky. 
- * Restore block buffering to prevent this minor lossage.
- *
- * The buffer size is a compromise.  Ideally we'd like a buffer that can hold
- * the maximum possible update size (the whole screen plus cup commands to
- * change lines as it's painted).  On a 66-line xterm this can become
- * excessive.  So we min it with the amount of data we think we can get through
- * two Ethernet packets (maximum packet size - 100 for TCP/IP overhead).
- *
- * Why two ethernet packets?  It used to be one, on the theory that said
- * packets define the maximum size of atomic update.  But that's less than the
- * 2000 chars on a 25 x 80 screen, and we don't want local updates to flicker
- * either.  Two packet lengths will handle up to a 35 x 80 screen.
- *
- * The magic '6' is the estimated length of the end-of-line cup sequence to go
- * to the next line.  It's generous.  We used to mess with the buffering in
- * init_mvcur() after cost computation, but that lost the sequences emitted by
- * init_acs() in setupscreen().
- *
- * "The setvbuf function may be used only after the stream pointed to by stream
- * has been associated with an open file and before any other operation is
- * performed on the stream." (ISO 7.9.5.6.)
- *
- * Grrrr...
- */
-void _nc_set_buffer(FILE *ofp, bool buffered)
-{
-       /* optional optimization hack -- do before any output to ofp */
-#if HAVE_SETVBUF || HAVE_SETBUFFER  
-       unsigned buf_len;
-       char *buf_ptr;
-
-       if (buffered) {
-               buf_len = min(LINES * (COLS + 6), 2800);
-               buf_ptr = malloc(buf_len);
-       } else {
-               buf_len = 0;
-               buf_ptr = 0;
-       }
-
-#if HAVE_SETVBUF
-#ifdef SETVBUF_REVERSED        /* pre-svr3? */
-       (void) setvbuf(ofp, buf_ptr, buf_len, buf_len ? _IOFBF : _IONBF);
-#else
-       (void) setvbuf(ofp, buf_ptr, buf_len ? _IOFBF : _IONBF, buf_len);
-#endif
-#elif HAVE_SETBUFFER
-       (void) setbuffer(ofp, buf_ptr, (int)buf_len);
-#endif
-
-       if (!buffered) {
-               FreeIfNeeded(SP->_setbuf);
-       }
-       SP->_setbuf = buf_ptr;
-
-#endif /* HAVE_SETVBUF || HAVE_SETBUFFER */
-}
-
-SCREEN * set_term(SCREEN *screen)
+SCREEN * set_term(SCREEN *screenp)
 {
 SCREEN *oldSP;
 
-       T((T_CALLED("set_term(%p)"), screen));
+       T((T_CALLED("set_term(%p)"), screenp));
 
        oldSP = SP;
-       _nc_set_screen(screen);
+       _nc_set_screen(screenp);
 
        set_curterm(SP->_term);
        curscr      = SP->_curscr;
@@ -166,6 +102,11 @@ void delscreen(SCREEN *sp)
        FreeIfNeeded(sp->_color_table);
        FreeIfNeeded(sp->_color_pairs);
 
+       FreeIfNeeded(sp->oldhash);
+       FreeIfNeeded(sp->newhash);
+
+       del_curterm(sp->_term);
+
        free(sp);
 
        /*
@@ -200,13 +141,13 @@ int _nc_setupscreen(short slines, short const scolumns, FILE *output)
 int    bottom_stolen = 0;
 size_t i;
 
-        assert(SP==0); /* has been reset in newterm() ! */ 
+        assert(SP==0); /* has been reset in newterm() ! */
        if (!_nc_alloc_screen())
                return ERR;
 
        SP->_next_screen = _nc_screen_chain;
        _nc_screen_chain = SP;
-       
+
        _nc_set_buffer(output, TRUE);
        SP->_term        = cur_term;
        SP->_lines       = slines;
@@ -216,12 +157,15 @@ size_t    i;
        SP->_curscol     = -1;
        SP->_nl          = TRUE;
        SP->_raw         = FALSE;
-       SP->_cbreak      = FALSE;
+       SP->_cbreak      = 0;
        SP->_echo        = TRUE;
        SP->_fifohead    = -1;
        SP->_endwin      = TRUE;
        SP->_ofp         = output;
        SP->_cursor      = -1;  /* cannot know real cursor shape */
+#ifdef NCURSES_NO_PADDING
+       SP->_no_padding  = getenv("NCURSES_NO_PADDING") != 0;
+#endif
 
        SP->_maxclick     = DEFAULT_MAXCLICK;
        SP->_mouse_event  = no_mouse_event;
@@ -268,14 +212,17 @@ size_t    i;
                acs_chars = 0;
 #endif
        }
-       init_acs();
+       _nc_init_acs();
        memcpy(SP->_acs_map, acs_map, sizeof(chtype)*ACS_LEN);
 
        _nc_idcok = TRUE;
        _nc_idlok = FALSE;
-       
+
        _nc_windows = 0; /* no windows yet */
 
+       SP->oldhash = 0;
+       SP->newhash = 0;
+
        T(("creating newscr"));
        if ((newscr = newwin(slines, scolumns, 0, 0)) == 0)
                return ERR;
similarity index 88%
rename from ncurses/lib_slk.c
rename to ncurses/base/lib_slk.c
index 64a943a2a620cb2ea5922d5f62856b299ee6c89b..9b9b09a4d064a2b0b11b748c7cbf593b821cfa08 100644 (file)
@@ -41,7 +41,7 @@
 #include <ctype.h>
 #include <term.h>      /* num_labels, label_*, plab_norm */
 
-MODULE_ID("$Id: lib_slk.c,v 1.14 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_slk.c,v 1.16 1999/03/03 23:44:22 juergen Exp $")
 
 /*
  * We'd like to move these into the screen context structure, but cannot,
@@ -56,7 +56,7 @@ int _nc_slk_format;  /* one more than format specified in slk_init() */
 static void
 slk_paint_info(WINDOW *win)
 {
-  if (win && _nc_slk_format==4)
+  if (win && SP->slk_format==4)
     {
       int i;
 
@@ -64,7 +64,7 @@ slk_paint_info(WINDOW *win)
       wmove (win,0,0);
 
       for (i = 0; i < SP->_slk->maxlab; i++) {
-       if (win && _nc_slk_format==4)
+       if (win && SP->slk_format==4)
          {
            mvwaddch(win,0,SP->_slk->ent[i].x,'F');
            if (i<9)
@@ -87,6 +87,7 @@ int
 _nc_slk_initialize(WINDOW *stwin, int cols)
 {
 int i, x;
+int res = OK;
 char *p;
 
        T(("slk_initialize()"));
@@ -103,14 +104,12 @@ char *p;
        SP->_slk->buffer = NULL;
        SP->_slk->attr   = A_STANDOUT;
 
-#ifdef num_labels
-       SP->_slk->maxlab = (num_labels > 0) ? num_labels : MAX_SKEY;
-       SP->_slk->maxlen = (num_labels > 0) ? label_width * label_height : MAX_SKEY_LEN;
-       SP->_slk->labcnt = (SP->_slk->maxlab < MAX_SKEY) ? MAX_SKEY : SP->_slk->maxlab;
-#else
-       SP->_slk->labcnt = SP->_slk->maxlab = MAX_SKEY;
-       SP->_slk->maxlen = MAX_SKEY_LEN;
-#endif /* num_labels */
+       SP->_slk->maxlab = (num_labels > 0) ?
+         num_labels : MAX_SKEY(_nc_slk_format);
+       SP->_slk->maxlen = (num_labels > 0) ?
+         label_width * label_height : MAX_SKEY_LEN(_nc_slk_format);
+       SP->_slk->labcnt = (SP->_slk->maxlab < MAX_SKEY(_nc_slk_format)) ? 
+         MAX_SKEY(_nc_slk_format) : SP->_slk->maxlab;
 
        SP->_slk->ent = typeCalloc(slk_ent, SP->_slk->labcnt);
        if (SP->_slk->ent == NULL)
@@ -182,11 +181,17 @@ char *p;
                   FreeIfNeeded(SP->_slk->ent);
                   free(SP->_slk);
                   SP->_slk = (SLK*)0;
-                  return(ERR);
+                  res = (ERR);
                }
        }
 
-       return(OK);
+       /* We now reset the format so that the next newterm has again
+        * per default no SLK keys and may call slk_init again to
+        * define a new layout. (juergen 03-Mar-1999)
+        */
+       SP->slk_format = _nc_slk_format;
+       _nc_slk_format = 0;
+       return(res);
 }
 
 
similarity index 66%
rename from menu/m_adabind.c
rename to ncurses/base/lib_slkatr_set.c
index a6167c2c75535112be7d0bf1ee1edf2804288212..0695d186bb5d97b061bb2148ce3c5809128ab832 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
+ *  Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1998                  *
  ****************************************************************************/
 
-/***************************************************************************
-* Module m_adabind.c                                                       *
-* Helper routines to ease the implementation of an Ada95 binding to        *
-* ncurses. For details and copyright of the binding see the ../Ada95       *
-* subdirectory.                                                            *
-***************************************************************************/
-#include "menu.priv.h"
+/*
+ *     lib_slkatr_set.c
+ *     Soft key routines.
+ *      Set the labels attributes
+ */
+#include <curses.priv.h>
 
-MODULE_ID("$Id: m_adabind.c,v 1.6 1998/02/11 12:13:50 tom Exp $")
+MODULE_ID("$Id: lib_slkatr_set.c,v 1.3 1999/05/16 17:13:59 juergen Exp $")
 
-/* Prototypes for the functions in this module */
-void  _nc_ada_normalize_menu_opts (int *opt);
-void  _nc_ada_normalize_item_opts (int *opt);
-ITEM* _nc_get_item(const MENU*, int);
-
-void _nc_ada_normalize_menu_opts (int *opt)
+int
+slk_attr_set(const attr_t attr, short color_pair_number, void* opts)
 {
-  *opt = ALL_MENU_OPTS & (*opt);
-}
-
-void _nc_ada_normalize_item_opts (int *opt)
-{
-  *opt = ALL_ITEM_OPTS & (*opt);
-}
+  T((T_CALLED("slk_attr_set(%s,%d)"), _traceattr(attr), color_pair_number));
 
-ITEM* _nc_get_item(const MENU* menu, int idx) {
-  if (menu && menu->items && idx>=0 && (idx<menu->nitems))
+  if (SP!=0 && SP->_slk!=0 && !opts &&
+      color_pair_number>=0 && color_pair_number<COLOR_PAIRS)
     {
-      return menu->items[idx];
+      SP->_slk->attr = attr;
+      toggle_attr_on(SP->_slk->attr,COLOR_PAIR(color_pair_number));
+      returnCode(OK);
     }
   else
-    return (ITEM*)0;
+    returnCode(ERR);
 }
similarity index 96%
rename from ncurses/lib_slkatrof.c
rename to ncurses/base/lib_slkatrof.c
index 2e1b37239604490442e9de96fa5b90be9fea6a87..5e4f5f5593a37e54a84afd11396d08aa40d1c4a7 100644 (file)
  */
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_slkatrof.c,v 1.3 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_slkatrof.c,v 1.4 1998/03/11 19:26:07 juergen Exp $")
 
 int
-slk_attroff(const attr_t attr)
+slk_attroff(const chtype attr)
 {
   T((T_CALLED("slk_attroff(%s)"), _traceattr(attr)));
 
similarity index 96%
rename from ncurses/lib_slkatron.c
rename to ncurses/base/lib_slkatron.c
index 55527762789e74f43a14db642cb62b7e03583583..a24886522cde6f29b6544447771ee2a9083b337e 100644 (file)
  */
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_slkatron.c,v 1.3 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_slkatron.c,v 1.4 1998/03/11 19:26:07 juergen Exp $")
 
 int
-slk_attron(const attr_t attr)
+slk_attron(const chtype attr)
 {
   T((T_CALLED("slk_attron(%s)"), _traceattr(attr)));
 
similarity index 96%
rename from ncurses/lib_slkatrset.c
rename to ncurses/base/lib_slkatrset.c
index a540491bfe65eedd72efbc9f80e1e83e534b63d5..391c7ffe8cb7eebb7f71d5056349ac835586d030 100644 (file)
  */
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_slkatrset.c,v 1.3 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_slkatrset.c,v 1.4 1998/03/11 19:26:01 juergen Exp $")
 
 int
-slk_attrset(const attr_t attr)
+slk_attrset(const chtype attr)
 {
   T((T_CALLED("slk_attrset(%s)"), _traceattr(attr)));
 
similarity index 92%
rename from ncurses/lib_slkclear.c
rename to ncurses/base/lib_slkclear.c
index 42e76a7bfb5830f9b41a5e72805bea89c1080dc6..ac6e414beaa26bc5228e565ba91a71188fdde10a 100644 (file)
@@ -38,7 +38,7 @@
  */
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_slkclear.c,v 1.3 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_slkclear.c,v 1.4 1999/03/03 23:44:22 juergen Exp $")
 
 int
 slk_clear(void)
@@ -52,7 +52,11 @@ slk_clear(void)
           inherit those attributes from the standard screen */
        SP->_slk->win->_bkgd  = stdscr->_bkgd;
        SP->_slk->win->_attrs = stdscr->_attrs;
-       werase(SP->_slk->win);
-
-       returnCode(wrefresh(SP->_slk->win));
+        if (SP->_slk->win == stdscr) {
+          returnCode(OK);
+        }
+       else {
+         werase(SP->_slk->win);
+         returnCode(wrefresh(SP->_slk->win));
+       }
 }
diff --git a/ncurses/base/lib_slkcolor.c b/ncurses/base/lib_slkcolor.c
new file mode 100644 (file)
index 0000000..3728808
--- /dev/null
@@ -0,0 +1,54 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1998                  *
+ ****************************************************************************/
+
+/*
+ *     lib_slkcolor.c
+ */
+#include <curses.priv.h>
+
+MODULE_ID("$Id: lib_slkcolor.c,v 1.5 1999/05/16 17:14:13 juergen Exp $")
+
+int
+slk_color(short color_pair_number)
+{
+  T((T_CALLED("slk_color(%d)"), color_pair_number));
+
+  if (SP!=0 && SP->_slk!=0 &&
+      color_pair_number>=0 && color_pair_number<COLOR_PAIRS)
+    {
+      T(("... current %ld", (long) PAIR_NUMBER(SP->_slk->attr)));
+      toggle_attr_on(SP->_slk->attr,COLOR_PAIR(color_pair_number));
+      returnCode(OK);
+    }
+  else
+    returnCode(ERR);
+}
similarity index 90%
rename from ncurses/lib_slkrefr.c
rename to ncurses/base/lib_slkrefr.c
index dcdef99a2e1b4d1d045b17df2d5e97ab90438398..ee3c91dbee6710d6faeeee0bbdedbe88e46d35d4 100644 (file)
@@ -38,7 +38,7 @@
 #include <curses.priv.h>
 #include <term.h>        /* num_labels, label_*, plab_norm */
 
-MODULE_ID("$Id: lib_slkrefr.c,v 1.4 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_slkrefr.c,v 1.8 1999/03/14 00:10:27 Alexander.V.Lukyanov Exp $")
 
 /*
  * Write the soft labels to the soft-key window.
@@ -47,24 +47,25 @@ static void
 slk_intern_refresh(SLK *slk)
 {
 int i;
+int fmt = SP->slk_format;
+
        for (i = 0; i < slk->labcnt; i++) {
                if (slk->dirty || slk->ent[i].dirty) {
                        if (slk->ent[i].visible) {
-#ifdef num_labels
-                               if (num_labels > 0 && SLK_STDFMT)
+                               if (num_labels > 0 && SLK_STDFMT(fmt))
                                {
                                  if (i < num_labels) {
                                    TPUTS_TRACE("plab_norm");
-                                   putp(tparm(plab_norm, i, slk->win,slk->ent[i].form_text));
+                                   putp(tparm(plab_norm, i+1, slk->ent[i].form_text));
                                  }
                                }
                                else
-#endif /* num_labels */
                                {
-                                       wmove(slk->win,SLK_LINES-1,slk->ent[i].x);
+                                       wmove(slk->win,SLK_LINES(fmt)-1,slk->ent[i].x);
                                        if (SP && SP->_slk)
                                          wattrset(slk->win,SP->_slk->attr);
-                                       waddnstr(slk->win,slk->ent[i].form_text, MAX_SKEY_LEN);
+                                       waddnstr(slk->win,slk->ent[i].form_text,
+                                                MAX_SKEY_LEN(fmt));
                                        /* if we simulate SLK's, it's looking much more
                                           natural to use the current ATTRIBUTE also
                                           for the label window */
@@ -76,8 +77,7 @@ int i;
        }
        slk->dirty = FALSE;
 
-#ifdef num_labels
-       if (num_labels > 0)
+       if (num_labels > 0) {
            if (slk->hidden)
            {
                TPUTS_TRACE("label_off");
@@ -88,7 +88,7 @@ int i;
                TPUTS_TRACE("label_on");
                putp(label_on);
            }
-#endif /* num_labels */
+       }
 }
 
 /*
similarity index 96%
rename from ncurses/lib_touch.c
rename to ncurses/base/lib_touch.c
index f39338d0d5287e9c67e2b478017e3a7f8be17852..7ce863d06f104ce295a840c9621db836ea51c49f 100644 (file)
@@ -43,9 +43,9 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_touch.c,v 1.5 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_touch.c,v 1.6 1998/04/11 22:55:02 tom Exp $")
 
-int is_linetouched(WINDOW *win, int line)
+bool is_linetouched(WINDOW *win, int line)
 {
        T((T_CALLED("is_linetouched(%p,%d)"), win, line));
 
@@ -56,7 +56,7 @@ int is_linetouched(WINDOW *win, int line)
        returnCode(win->_line[line].firstchar != _NOCHANGE ? TRUE : FALSE);
 }
 
-int is_wintouched(WINDOW *win)
+bool is_wintouched(WINDOW *win)
 {
 int i;
 
similarity index 89%
rename from ncurses/lib_vline.c
rename to ncurses/base/lib_vline.c
index 93936c09aeafad16c1071effaabf854988adc4ea..007ef55cd3baa162468f363911606bc0c0c91850 100644 (file)
@@ -42,7 +42,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_vline.c,v 1.2 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_vline.c,v 1.4 1998/06/28 00:10:12 tom Exp $")
 
 int wvline(WINDOW *win, chtype ch, int n)
 {
@@ -64,13 +64,9 @@ short end;
                ch = _nc_render(win, ch);
 
                while(end >= row) {
-                       win->_line[end].text[col] = ch;
-                       if (win->_line[end].firstchar == _NOCHANGE
-                        || win->_line[end].firstchar > col)
-                               win->_line[end].firstchar = col;
-                       if (win->_line[end].lastchar == _NOCHANGE
-                        || win->_line[end].lastchar < col)
-                               win->_line[end].lastchar = col;
+                       struct ldat *line = &(win->_line[end]);
+                       line->text[col] = ch;
+                       CHANGED_CELL(line, col);
                        end--;
                }
 
similarity index 95%
rename from ncurses/lib_wattroff.c
rename to ncurses/base/lib_wattroff.c
index 6f14be631bd167a8ef5b5d6a8d624e86cca53701..a6c9f0f1804e1daf540eb008c3d59d9f85e943ac 100644 (file)
@@ -41,9 +41,9 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_wattroff.c,v 1.2 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_wattroff.c,v 1.4 1998/05/10 12:02:11 tom Exp $")
 
-int wattr_off(WINDOW *win, const attr_t at)
+int wattr_off(WINDOW *win, NCURSES_CONST attr_t at, void *opts GCC_UNUSED)
 {
        T((T_CALLED("wattr_off(%p,%s)"), win, _traceattr(at)));
        if (win) {
similarity index 95%
rename from ncurses/lib_wattron.c
rename to ncurses/base/lib_wattron.c
index fed0fe4d50af46d2a03ff837325a5fa5b90b8213..a951c576fa4491babaa74d91589b6546f05485fc 100644 (file)
@@ -41,9 +41,9 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_wattron.c,v 1.2 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_wattron.c,v 1.4 1998/05/10 12:02:28 tom Exp $")
 
-int wattr_on(WINDOW *win, const attr_t at)
+int wattr_on(WINDOW *win, NCURSES_CONST attr_t at, void *opts GCC_UNUSED)
 {
        T((T_CALLED("wattr_on(%p,%s)"), win, _traceattr(at)));
        if (win) {
diff --git a/ncurses/base/lib_winch.c b/ncurses/base/lib_winch.c
new file mode 100644 (file)
index 0000000..119c731
--- /dev/null
@@ -0,0 +1,52 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Thomas E. Dickey <dickey@clark.net> 1998                        *
+ ****************************************************************************/
+
+/*
+**     lib_winch.c
+**
+**     The routine winch().
+**
+*/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: lib_winch.c,v 1.1 1998/11/14 22:06:09 tom Exp $")
+
+chtype winch(WINDOW *win)
+{
+       T((T_CALLED("winch(%p)"), win));
+       if (win != 0) {
+               returnCode(win->_line[win->_cury].text[win->_curx]);
+       } else {
+               returnCode(0);
+       }
+}
similarity index 90%
rename from ncurses/lib_window.c
rename to ncurses/base/lib_window.c
index 741ff3f94276924c1ce2f4be51bd7a7bcbbbfd46..5eae9b1a57fb197dfc6ed1a9f01a6ca8a308dfe1 100644 (file)
@@ -39,7 +39,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_window.c,v 1.11 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_window.c,v 1.13 1998/06/28 00:10:59 tom Exp $")
 
 void _nc_synchook(WINDOW *win)
 /* hook to be called after each window change */
@@ -108,22 +108,12 @@ void wsyncup(WINDOW *win)
            int left = wp->_line[y].firstchar;
            if (left >= 0) /* line is touched */
              {
+               struct ldat *line = &(pp->_line[wp->_pary + y]);
                /* left & right character in parent window coordinates */
                int right = wp->_line[y].lastchar + wp->_parx;
                left += wp->_parx;
 
-               if (pp->_line[wp->_pary + y].firstchar == _NOCHANGE)
-                 {
-                   pp->_line[wp->_pary + y].firstchar = left;
-                   pp->_line[wp->_pary + y].lastchar  = right;
-                 }
-               else
-                 {
-                   if (left < pp->_line[wp->_pary + y].firstchar)
-                     pp->_line[wp->_pary + y].firstchar = left;
-                   if (pp->_line[wp->_pary + y].lastchar < right)
-                     pp->_line[wp->_pary + y].lastchar = right;
-                 }
+               CHANGED_RANGE(line, left, right);
              }
          }
       }
@@ -151,6 +141,7 @@ void wsyncdown(WINDOW *win)
        {
          if (pp->_line[win->_pary + y].firstchar >= 0) /* parent changed */
            {
+             struct ldat *line = &(win->_line[y]);
              /* left and right character in child coordinates */
              int left  = pp->_line[win->_pary + y].firstchar - win->_parx;
              int right = pp->_line[win->_pary + y].lastchar  - win->_parx;
@@ -159,18 +150,7 @@ void wsyncdown(WINDOW *win)
                left = 0;
              if (right > win->_maxx)
                right = win->_maxx;
-             if (win->_line[y].firstchar == _NOCHANGE)
-               {
-                 win->_line[y].firstchar = left;
-                 win->_line[y].lastchar  = right;
-               }
-             else
-               {
-                 if (left < win->_line[y].firstchar)
-                   win->_line[y].firstchar = left;
-                 if (win->_line[y].lastchar < right)
-                   win->_line[y].lastchar = right;
-               }
+             CHANGED_RANGE(line, left, right);
            }
        }
     }
diff --git a/ncurses/base/memmove.c b/ncurses/base/memmove.c
new file mode 100644 (file)
index 0000000..55a4106
--- /dev/null
@@ -0,0 +1,63 @@
+/****************************************************************************
+ * Copyright (c) 1998 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.                                                           *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: memmove.c,v 1.2 1999/02/27 19:55:57 tom Exp $")
+
+/****************************************************************************
+ *  Author: Thomas E. Dickey <dickey@clark.net> 1998                        *
+ ****************************************************************************/
+
+#if USE_MY_MEMMOVE
+#define DST ((char *)s1)
+#define SRC ((const char *)s2)
+void * _nc_memmove(void * s1, const void * s2, size_t n)
+{
+       if (n != 0) {
+               if ((DST+n > SRC) && (SRC+n > DST)) {
+                       static  char    *bfr;
+                       static  size_t  length;
+                       register size_t j;
+                       if (length < n) {
+                               length = (n * 3) / 2;
+                               bfr = typeRealloc(char,length,bfr);
+                       }
+                       for (j = 0; j < n; j++)
+                               bfr[j] = SRC[j];
+                       SRC = bfr;
+               }
+               while (n-- != 0)
+                       DST[n] = SRC[n];
+       }
+       return s1;
+}
+#else
+extern void _nc_memmove(void); /* quiet's gcc warning */
+void _nc_memmove(void) { } /* nonempty for strict ANSI compilers */
+#endif /* USE_MY_MEMMOVE */
similarity index 100%
rename from ncurses/nc_panel.c
rename to ncurses/base/nc_panel.c
similarity index 94%
rename from ncurses/resizeterm.c
rename to ncurses/base/resizeterm.c
index aaf823fb9ba9ff742238ef49286f4b3df7233220..860355024cc39e67e9de31671fab3f0f7df22e1a 100644 (file)
@@ -41,7 +41,7 @@
 #include <curses.priv.h>
 #include <term.h>
 
-MODULE_ID("$Id: resizeterm.c,v 1.6 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: resizeterm.c,v 1.7 1998/09/19 19:27:43 Alexander.V.Lukyanov Exp $")
 
 /*
  * This function reallocates NCURSES window structures.  It is invoked in
@@ -69,7 +69,7 @@ resizeterm(int ToLines, int ToCols)
 
 #if USE_SIGWINCH
                ungetch(KEY_RESIZE);    /* so application can know this */
-               clearok(curscr, TRUE);  /* screen contents is unknown */
+               clearok(curscr, TRUE);  /* screen contents are unknown */
 #endif
 
                for (wp = _nc_windows; wp != 0; wp = wp->next) {
@@ -105,6 +105,9 @@ resizeterm(int ToLines, int ToCols)
                screen_columns = columns  = ToCols;
 
                SP->_lines_avail = lines - stolen;
+
+               if (SP->oldhash) { FreeAndNull(SP->oldhash); }
+               if (SP->newhash) { FreeAndNull(SP->newhash); }
        }
 
        /*
similarity index 92%
rename from ncurses/safe_sprintf.c
rename to ncurses/base/safe_sprintf.c
index 6dbc8d98b7f6b0e559837f6186e225e1945a6341..e4d525272627b7c153c99d4bdb036b21e6965254 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
@@ -33,7 +33,7 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: safe_sprintf.c,v 1.5 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: safe_sprintf.c,v 1.11 1999/09/11 18:03:27 tom Exp $")
 
 #if USE_SAFE_SPRINTF
 
@@ -57,17 +57,18 @@ _nc_printf_length(const char *fmt, va_list ap)
 
        if (fmt == 0 || *fmt == '\0')
                return -1;
-       if ((format = malloc(strlen(fmt)+1)) == 0)
+       if ((format = typeMalloc(char, strlen(fmt)+1)) == 0)
                return -1;
-       if ((buffer = malloc(length)) == 0) {
+       if ((buffer = typeMalloc(char, length)) == 0) {
                free(format);
                return -1;
        }
 
        while (*fmt != '\0') {
                if (*fmt == '%') {
+                       static char dummy[] = "";
                        PRINTF state = Flags;
-                       char *pval   = "";
+                       char *pval   = dummy;   /* avoid const-cast */
                        double fval  = 0.0;
                        int done     = FALSE;
                        int ival     = 0;
@@ -111,7 +112,6 @@ _nc_printf_length(const char *fmt, va_list ap)
                                        case 'Z': /* FALLTHRU */
                                        case 'h': /* FALLTHRU */
                                        case 'l': /* FALLTHRU */
-                                       case 'L': /* FALLTHRU */
                                                done = FALSE;
                                                type = *fmt;
                                                break;
@@ -133,10 +133,7 @@ _nc_printf_length(const char *fmt, va_list ap)
                                        case 'E': /* FALLTHRU */
                                        case 'g': /* FALLTHRU */
                                        case 'G': /* FALLTHRU */
-                                               if (type == 'L')
-                                                       VA_FLOAT(long double);
-                                               else
-                                                       VA_FLOAT(double);
+                                               VA_FLOAT(double);
                                                used = 'f';
                                                break;
                                        case 'c':
@@ -149,7 +146,7 @@ _nc_printf_length(const char *fmt, va_list ap)
                                                        prec = strlen(pval);
                                                if (prec > (int)length) {
                                                        length = length + prec;
-                                                       buffer = realloc(buffer, length);
+                                                       buffer = typeRealloc(char, length, buffer);
                                                        if (buffer == 0) {
                                                                free(format);
                                                                return -1;
@@ -211,7 +208,8 @@ _nc_printf_string(const char *fmt, va_list ap)
        int len = _nc_printf_length(fmt, ap);
 
        if (len > 0) {
-               buf = malloc(len+1);
+               if ((buf = typeMalloc(char, len+1)) == 0)
+                       return(0);
                vsprintf(buf, fmt, ap);
        }
 #else
@@ -223,10 +221,10 @@ _nc_printf_string(const char *fmt, va_list ap)
                if (screen_lines   > rows) rows = screen_lines;
                if (screen_columns > cols) cols = screen_columns;
                len = (rows * (cols + 1)) + 1;
-               if (buf == 0)
-                       buf = malloc(len);
-               else
-                       buf = realloc(buf, len);
+               buf = typeRealloc(char, len, buf);
+               if (buf == 0) {
+                       return(0);
+               }
        }
 
        if (buf != 0) {
@@ -235,7 +233,7 @@ _nc_printf_string(const char *fmt, va_list ap)
 # else
                vsprintf(buf, fmt, ap);         /* ANSI */
 # endif
-#endif
        }
+#endif
        return buf;
 }
similarity index 94%
rename from ncurses/sigaction.c
rename to ncurses/base/sigaction.c
index 405f5913f83af980021126cf80e4ca369edcfc03..ab1e569fae6a8cb5053388306ba3c69c6def47c0 100644 (file)
 
 #include <curses.priv.h>
 
+#include <signal.h>
+#include <SigAction.h>
+
 /* This file provides sigaction() emulation using sigvec() */
 /* Use only if this is non POSIX system */
 
-#if !HAVE_SIGACTION
-#include <signal.h>
-#include <SigAction.h>
+#if !HAVE_SIGACTION && HAVE_SIGVEC
 
-MODULE_ID("$Id: sigaction.c,v 1.7 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: sigaction.c,v 1.9 1999/06/19 23:05:16 tom Exp $")
 
 int
 sigaction (int sig, sigaction_t * sigact, sigaction_t * osigact)
@@ -57,7 +58,7 @@ sigemptyset (sigset_t * mask)
 
 int
 sigprocmask (int mode, sigset_t * mask, sigset_t * omask)
-   {
+{
    sigset_t current = sigsetmask(0);
 
    if (omask) *omask = current;
@@ -71,7 +72,7 @@ sigprocmask (int mode, sigset_t * mask, sigset_t * omask)
 
    sigsetmask(current);
    return 0;
-   }
+}
 
 int
 sigsuspend (sigset_t * mask)
@@ -92,6 +93,13 @@ sigaddset (sigset_t * mask, int sig)
   *mask |= sigmask (sig);
   return 0;
 }
+
+int
+sigismember (sigset_t * mask, int sig)
+{
+  return (*mask & sigmask (sig)) != 0;
+}
+
 #else
 extern void _nc_sigaction(void);       /* quiet's gcc warning */
 void _nc_sigaction(void) { } /* nonempty for strict ANSI compilers */
diff --git a/ncurses/base/tries.c b/ncurses/base/tries.c
new file mode 100644 (file)
index 0000000..3c39652
--- /dev/null
@@ -0,0 +1,138 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Thomas E. Dickey <dickey@clark.net> 1997                        *
+ ****************************************************************************/
+
+/*
+**     tries.c
+**
+**     Functions to manage the tree of partial-completions for keycodes.
+**
+*/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: tries.c,v 1.12 1999/03/01 23:23:59 tom Exp $")
+
+/*
+ * Expand a keycode into the string that it corresponds to, returning null if
+ * no match was found, otherwise allocating a string of the result.
+ */
+char *_nc_expand_try(struct tries *tree, unsigned short code, int *count, size_t len)
+{
+       struct tries *ptr = tree;
+       char *result = 0;
+
+       if (code != 0) {
+               while (ptr != 0) {
+                       if ((result = _nc_expand_try(ptr->child, code, count, len + 1)) != 0) {
+                               break;
+                       }
+                       if (ptr->value == code) {
+                               *count -= 1;
+                               if (*count == -1) {
+                                       result = typeCalloc(char, len+2);
+                                       break;
+                               }
+                       }
+                       ptr = ptr->sibling;
+               }
+       }
+       if (result != 0) {
+               if ((result[len] = ptr->ch) == 0)
+                       *((unsigned char *)(result+len)) = 128;
+#ifdef TRACE
+               if (len == 0)
+                       _tracef("expand_key %s %s", _trace_key(code), _nc_visbuf(result));
+#endif
+       }
+       return result;
+}
+
+/*
+ * Remove a code from the specified tree, freeing the unused nodes.  Returns
+ * true if the code was found/removed.
+ */
+int _nc_remove_key(struct tries **tree, unsigned short code)
+{
+       T((T_CALLED("_nc_remove_key(%p,%d)"), tree, code));
+
+       if (code == 0)
+               returnCode(FALSE);
+               
+       while (*tree != 0) {
+               if (_nc_remove_key(&(*tree)->child, code)) {
+                       returnCode(TRUE);
+               }
+               if ((*tree)->value == code) {
+                       if((*tree)->child) {
+                               /* don't cut the whole sub-tree */
+                               (*tree)->value = 0;
+                       } else {
+                               struct tries *to_free = *tree;
+                               *tree = (*tree)->sibling;
+                               free(to_free);
+                       }
+                       returnCode(TRUE);
+               }
+               tree = &(*tree)->sibling;
+       }
+       returnCode(FALSE);
+}
+
+/*
+ * Remove a string from the specified tree, freeing the unused nodes.  Returns
+ * true if the string was found/removed.
+ */
+int _nc_remove_string(struct tries **tree, char *string)
+{
+       T((T_CALLED("_nc_remove_string(%p,%s)"), tree, _nc_visbuf(string)));
+
+       if (string == 0 || *string == 0)
+               returnCode(FALSE);
+               
+       while (*tree != 0) {
+               if ((unsigned char)(*tree)->ch == (unsigned char)*string) {
+                       if (string[1] != 0)
+                               returnCode(_nc_remove_string(&(*tree)->child, string+1));
+                       if((*tree)->child) {
+                               /* don't cut the whole sub-tree */
+                               (*tree)->value = 0;
+                       } else {
+                               struct tries *to_free = *tree;
+                               *tree = (*tree)->sibling;
+                               free(to_free);
+                       }
+                       returnCode(TRUE);
+               }
+               tree = &(*tree)->sibling;
+       }
+       returnCode(FALSE);
+}
diff --git a/ncurses/base/version.c b/ncurses/base/version.c
new file mode 100644 (file)
index 0000000..74d46ae
--- /dev/null
@@ -0,0 +1,48 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999                        *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: version.c,v 1.1 1999/10/23 13:28:49 tom Exp $")
+
+const char *
+curses_version(void)
+{
+    static char my_version[80];
+
+    T((T_CALLED("curses_version()")));
+    sprintf(my_version, "ncurses %d.%d.%d",
+       NCURSES_VERSION_MAJOR,
+       NCURSES_VERSION_MINOR,
+       NCURSES_VERSION_PATCH);
+    returnPtr(my_version);
+}
similarity index 100%
rename from ncurses/vsscanf.c
rename to ncurses/base/vsscanf.c
similarity index 95%
rename from ncurses/wresize.c
rename to ncurses/base/wresize.c
index c5b2dd9ade90694820a2ef7ed1ea641bf9900190..1b91476cbfd3dbced32d97e6943597da5f50752c 100644 (file)
@@ -31,9 +31,8 @@
  ****************************************************************************/
 
 #include <curses.priv.h>
-#include <term.h>
 
-MODULE_ID("$Id: wresize.c,v 1.9 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: wresize.c,v 1.12 1999/02/27 18:57:31 tom Exp $")
 
 /*
  * Reallocate a curses WINDOW struct to either shrink or grow to the specified
@@ -41,16 +40,7 @@ MODULE_ID("$Id: wresize.c,v 1.9 1998/02/11 12:13:54 tom Exp $")
  * blanks.  The application is responsible for repainting the blank area.
  */
 
-static void *doalloc(void *p, size_t n)
-{
-       if (p == 0)
-               p = malloc(n);
-       else
-               p = realloc(p, n);
-       return p;
-}
-
-#define DOALLOC(p,t,n)  (t *)doalloc(p, sizeof(t)*(n))
+#define DOALLOC(p,t,n)  typeRealloc(t, n, p)
 #define        ld_ALLOC(p,n)   DOALLOC(p,struct ldat,n)
 #define        c_ALLOC(p,n)    DOALLOC(p,chtype,n)
 
index 30ce3fbfbca1cb4561e0ccd2efbea2e4760b5fb9..76a923059e766c21ef33cabb300fcdc5e4be8d81 100644 (file)
@@ -33,7 +33,7 @@
 
 
 /*
- * $Id: curses.priv.h,v 1.101 1998/02/11 12:13:57 tom Exp $
+ * $Id: curses.priv.h,v 1.144 1999/10/22 23:15:37 tom Exp $
  *
  *     curses.priv.h
  *
@@ -117,6 +117,11 @@ extern int errno;
 #define USE_QNX_MOUSE 0
 #endif
 
+/* EMX mouse support */
+#ifdef __EMX__
+#define USE_EMX_MOUSE
+#endif
+
 #define DEFAULT_MAXCLICK 166
 #define EV_MAX         8       /* size of mouse circular event queue */
 
@@ -135,10 +140,21 @@ extern int errno;
 #endif
 
 /*
- * As currently coded, hashmap relies on the scroll-hints logic.
+ * Not all platforms have memmove; some have an equivalent bcopy.  (Some may
+ * have neither).
+ */
+#if USE_OK_BCOPY
+#define memmove(d,s,n) bcopy(s,d,n)
+#elif USE_MY_MEMMOVE
+#define memmove(d,s,n) _nc_memmove(d,s,n)
+extern void * _nc_memmove(void *, const void *, size_t);
+#endif
+
+/*
+ * Scroll hints are useless when hashmap is used
  */
 #if !USE_SCROLL_HINTS
-#if USE_HASHMAP
+#if !USE_HASHMAP
 #define USE_SCROLL_HINTS 1
 #else
 #define USE_SCROLL_HINTS 0
@@ -174,6 +190,13 @@ struct tries {
 
 #define PAIR_OF(fg, bg) ((((fg) & C_MASK) << C_SHIFT) | ((bg) & C_MASK))
 
+/*
+ * Common/troublesome character definitions
+ */
+#define L_BRACE '{'
+#define R_BRACE '}'
+#define S_QUOTE '\''
+
 /*
  * Structure for palette tables
  */
@@ -223,6 +246,7 @@ struct screen {
        int             _ifd;           /* input file ptr for screen        */
        FILE            *_ofp;          /* output file ptr for screen       */
        char            *_setbuf;       /* buffered I/O for output          */
+       int             _buffered;      /* setvbuf uses _setbuf data        */
        int             _checkfd;       /* filedesc for typeahead check     */
        struct term     *_term;         /* terminal type information        */
        short           _lines;         /* screen lines                     */
@@ -257,8 +281,11 @@ struct screen {
        int             _echo;          /* True if echo on                  */
        int             _use_meta;      /* use the meta key?                */
        SLK             *_slk;          /* ptr to soft key struct / NULL    */
-
+        int             slk_format;     /* selected format for this screen  */
        /* cursor movement costs; units are 10ths of milliseconds */
+#ifdef NCURSES_NO_PADDING
+       int             _no_padding;    /* flag to set if padding disabled  */
+#endif
        int             _char_padding;  /* cost of character put            */
        int             _cr_cost;       /* cost of (carriage_return)        */
        int             _cup_cost;      /* cost of (cursor_address)         */
@@ -290,6 +317,9 @@ struct screen {
        int             _rep_cost;      /* cost of (repeat_char)            */
        int             _hpa_ch_cost;   /* cost of (column_address)         */
        int             _cup_ch_cost;   /* cost of (cursor_address)         */
+       int             _smir_cost;     /* cost of (enter_insert_mode)      */
+       int             _rmir_cost;     /* cost of (exit_insert_mode)       */
+       int             _ip_cost;       /* cost of (insert_padding)         */
        /* used in lib_mvcur.c */
        char *          _address_cursor;
        int             _carriage_return_length;
@@ -307,6 +337,10 @@ struct screen {
        chtype          _xmc_triggers;  /* attributes to process if xmc      */
        chtype          _acs_map[ACS_LEN];
 
+       /* used in lib_vidattr.c */
+       bool            _use_rmso;      /* true if we may use 'rmso'         */
+       bool            _use_rmul;      /* true if we may use 'rmul'         */
+
        /*
         * These data correspond to the state of the idcok() and idlok()
         * functions.  A caveat is in order here:  the XSI and SVr4
@@ -351,6 +385,11 @@ struct screen {
 
        bool            _sig_winch;
        SCREEN          *_next_screen;
+
+       /* hashes for old and new lines */
+       unsigned long   *oldhash, *newhash;
+
+       bool            _cleanup;       /* cleanup after int/quit signal */
 };
 
 extern SCREEN *_nc_screen_chain;
@@ -382,6 +421,10 @@ typedef    struct {
 #endif
 
 /* usually in <unistd.h> */
+#ifndef STDIN_FILENO
+#define STDIN_FILENO 0
+#endif
+
 #ifndef STDOUT_FILENO
 #define STDOUT_FILENO 1
 #endif
@@ -418,8 +461,32 @@ typedef    struct {
 
 #define CHANGED     -1
 
+#define CHANGED_CELL(line,col) \
+       if (line->firstchar == _NOCHANGE) \
+               line->firstchar = line->lastchar = col; \
+       else if ((col) < line->firstchar) \
+               line->firstchar = col; \
+       else if ((col) > line->lastchar) \
+               line->lastchar = col
+
+#define CHANGED_RANGE(line,start,end) \
+       if (line->firstchar == _NOCHANGE \
+        || line->firstchar > (start)) \
+               line->firstchar = start; \
+       if (line->lastchar == _NOCHANGE \
+        || line->lastchar < (end)) \
+               line->lastchar = end
+
+#define CHANGED_TO_EOL(line,start,end) \
+       if (line->firstchar == _NOCHANGE \
+        || line->firstchar > (start)) \
+               line->firstchar = start; \
+       line->lastchar = end
+
 #define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
-#define typeCalloc(type,elts) (type *)calloc(elts,sizeof(type))
+#define typeMalloc(type,elts) (type *)malloc((elts)*sizeof(type))
+#define typeCalloc(type,elts) (type *)calloc((elts),sizeof(type))
+#define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (elts)*sizeof(type))
 #define FreeIfNeeded(p)  if(p != 0) free(p)
 #define FreeAndNull(p)   free(p); p = 0
 
@@ -444,13 +511,10 @@ typedef   struct {
 #define returnPtr(code)  TRACE_RETURN(code,ptr)
 #define returnVoid       T((T_RETURN(""))); return
 #define returnWin(code)  TRACE_RETURN(code,win)
-extern unsigned _nc_tracing;
 extern WINDOW * _nc_retrace_win(WINDOW *);
 extern attr_t _nc_retrace_attr_t(attr_t);
 extern char *_nc_retrace_ptr(char *);
 extern const char *_nc_tputs_trace;
-extern const char *_nc_visbuf(const char *);
-extern const char *_nc_visbuf2(int, const char *);
 extern int _nc_retrace_int(int);
 extern long _nc_outchars;
 extern void _nc_fifo_dump(void);
@@ -465,6 +529,9 @@ extern void _nc_fifo_dump(void);
 #define returnWin(code)  return code
 #endif
 
+extern unsigned _nc_tracing;
+extern const char *_nc_visbuf2(int, const char *);
+
 #define _trace_key(ch) ((ch > KEY_MIN) ? keyname(ch) : _tracechar((unsigned char)ch))
 
 #define ALL_BUT_COLOR ((chtype)~(A_COLOR))
@@ -505,9 +572,11 @@ extern void _nc_fifo_dump(void);
 #define InsCharCost(count) \
                ((parm_ich != 0) \
                ? SP->_ich_cost \
-               : ((insert_character != 0) \
-                       ? (SP->_ich1_cost * count) \
-                       : INFINITY))
+               : ((enter_insert_mode && exit_insert_mode) \
+                 ? SP->_smir_cost + SP->_rmir_cost + (SP->_ip_cost * count) \
+                 : ((insert_character != 0) \
+                   ? (SP->_ich1_cost * count) \
+                   : INFINITY)))
 
 #if USE_XMC_SUPPORT
 #define UpdateAttrs(c) if (SP->_current_attr != AttrOf(c)) { \
@@ -568,23 +637,29 @@ extern void _nc_expanded(void);
 
 #endif
 
+#if !HAVE_GETCWD
+#define getcwd(buf,len) getwd(buf)
+#endif
+
+/* doalloc.c */
+extern void *_nc_doalloc(void *, size_t);
+#if !HAVE_STRDUP
+#define strdup _nc_strdup
+extern char *_nc_strdup(const char *);
+#endif
+
 /* doupdate.c */
 #if USE_XMC_SUPPORT
 extern void _nc_do_xmc_glitch(attr_t);
 #endif
 
 /* hardscroll.c */
-#if defined(TRACE) || defined(SCROLLDEBUG)
-extern void _nc_linedump(void);
-#endif
-
-/* hardscroll.c */
-#if defined(TRACE) || defined(SCROLLDEBUG)
+#if defined(TRACE) || defined(SCROLLDEBUG) || defined(HASHDEBUG)
 extern void _nc_linedump(void);
 #endif
 
 /* lib_acs.c */
-extern void init_acs(void);    /* no prefix, this name is traditional */
+extern void _nc_init_acs(void);        /* corresponds to traditional 'init_acs()' */
 extern int _nc_msec_cost(const char *const, int);  /* used by 'tack' program */
 
 /* lib_mvcur.c */
@@ -600,47 +675,70 @@ extern void _nc_screen_init(void);
 extern void _nc_screen_resume(void);
 extern void _nc_screen_wrap(void);
 
+#if !HAVE_STRSTR
+#define strstr _nc_strstr
+extern char *_nc_strstr(const char *, const char *);
+#endif
+
 /* lib_mouse.c */
 extern int _nc_has_mouse(void);
 
 /* safe_sprintf.c */
 extern char * _nc_printf_string(const char *fmt, va_list ap);
 
-/* softscroll.c */
-extern void _nc_setup_scroll(void);
-extern void _nc_perform_scroll(void);
-
 /* tries.c */
 extern void _nc_add_to_try(struct tries **tree, char *str, unsigned short code);
-extern char *_nc_expand_try(struct tries *tree, unsigned short code, size_t len);
+extern char *_nc_expand_try(struct tries *tree, unsigned short code, int *count, size_t len);
 extern int _nc_remove_key(struct tries **tree, unsigned short code);
+extern int _nc_remove_string(struct tries **tree, char *string);
 
 /* elsewhere ... */
 extern WINDOW *_nc_makenew(int, int, int, int, int);
+extern char *_nc_home_terminfo(void);
 extern char *_nc_trace_buf(int, size_t);
 extern chtype _nc_background(WINDOW *);
 extern chtype _nc_render(WINDOW *, chtype);
+extern int _nc_access(const char *, int);
+extern int _nc_baudrate(int);
+extern int _nc_getenv_num(const char *);
 extern int _nc_keypad(bool);
+extern int _nc_ospeed(int);
 extern int _nc_outch(int);
 extern int _nc_setupscreen(short, short const, FILE *);
 extern int _nc_timed_wait(int, int, int *);
 extern int _nc_waddch_nosync(WINDOW *, const chtype);
 extern void _nc_do_color(int, bool, int (*)(int));
-extern void _nc_free_and_exit(int);
 extern void _nc_freeall(void);
 extern void _nc_freewin(WINDOW *win);
 extern void _nc_hash_map(void);
+extern void _nc_init_keytry(void);
+extern void _nc_keep_tic_dir(const char *);
+extern void _nc_make_oldhash(int i);
 extern void _nc_outstr(const char *str);
+extern void _nc_scroll_oldhash(int n, int top, int bot);
 extern void _nc_scroll_optimize(void);
 extern void _nc_scroll_window(WINDOW *, int const, short const, short const, chtype);
 extern void _nc_set_buffer(FILE *ofp, bool buffered);
 extern void _nc_signal_handler(bool);
 extern void _nc_synchook(WINDOW *win);
+extern void _nc_trace_tries(struct tries *tree);
 
 #if USE_SIZECHANGE
 extern void _nc_update_screensize(void);
 #endif
 
+/* scroll indices */
+extern int *_nc_oldnums;
+
+#define USE_SETBUF_0 0
+
+#define NC_BUFFERED(flag) \
+       if ((SP->_buffered != 0) != flag) \
+               _nc_set_buffer(SP->_ofp, flag)
+
+#define NC_OUTPUT ((SP != 0) ? SP->_ofp : stdout)
+#define _nc_flush() (void)fflush(NC_OUTPUT)
+
 /*
  * On systems with a broken linker, define 'SP' as a function to force the
  * linker to pull in the data-only module with 'SP'.
@@ -673,21 +771,21 @@ extern SCREEN *SP;
 extern int _nc_slk_format;  /* != 0 if slk_init() called */
 extern int _nc_slk_initialize(WINDOW *, int);
 
-/* 
- * Some constants related to SLK's 
+/*
+ * Some constants related to SLK's
  */
 #define MAX_SKEY_OLD      8    /* count of soft keys */
 #define MAX_SKEY_LEN_OLD   8   /* max length of soft key text */
 #define MAX_SKEY_PC       12    /* This is what most PC's have */
 #define MAX_SKEY_LEN_PC    5
 
-#define MAX_SKEY          (SLK_STDFMT ? MAX_SKEY_OLD : MAX_SKEY_PC)
-#define MAX_SKEY_LEN      (SLK_STDFMT ? MAX_SKEY_LEN_OLD : MAX_SKEY_LEN_PC)
-
 /* Macro to check whether or not we use a standard format */
-#define SLK_STDFMT (_nc_slk_format < 3)
+#define SLK_STDFMT(fmt) (fmt < 3)
 /* Macro to determine height of label window */
-#define SLK_LINES  (SLK_STDFMT ? 1 : (_nc_slk_format - 2))
+#define SLK_LINES(fmt)  (SLK_STDFMT(fmt) ? 1 : ((fmt) - 2))
+
+#define MAX_SKEY(fmt)     (SLK_STDFMT(fmt)? MAX_SKEY_OLD : MAX_SKEY_PC)
+#define MAX_SKEY_LEN(fmt) (SLK_STDFMT(fmt)? MAX_SKEY_LEN_OLD : MAX_SKEY_LEN_PC)
 
 extern int _nc_ripoffline(int line, int (*init)(WINDOW *,int));
 
diff --git a/ncurses/lib_adabind.c b/ncurses/lib_adabind.c
deleted file mode 100644 (file)
index e049b2b..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 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: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996,1997        *
- ****************************************************************************/
-
-/*
-//     lib_adabind.c
-//
-//     Some small wrappers to ease the implementation of an Ada95
-//      binding. Especially functionalities only available as macros
-//      in (n)curses are wrapped here by functions. 
-//      See the documentation and copyright notices in the ../Ada95
-//      subdirectory.
-*/
-#include "curses.priv.h"
-
-MODULE_ID("$Id: lib_adabind.c,v 1.7 1998/02/11 12:13:59 tom Exp $")
-
-/*  In (n)curses are a few functionalities that can't be expressed as 
-//  functions, because for historic reasons they use as macro argument
-//  variable names that are "out" parameters. For those macros we provide
-//  small wrappers.
-*/
-
-/* Prototypes for the functions in this module */
-int  _nc_ada_getmaxyx (const WINDOW *win, int *y, int *x);
-int  _nc_ada_getbegyx (const WINDOW *win, int *y, int *x);
-int  _nc_ada_getyx    (const WINDOW *win, int *y, int *x);
-int  _nc_ada_getparyx (const WINDOW *win, int *y, int *x);
-int  _nc_ada_isscroll (const WINDOW *win);
-int  _nc_ada_coord_transform (const WINDOW *win, int *Y, int *X, int dir);
-void _nc_ada_mouse_event (mmask_t m, int *b, int *s);
-int  _nc_ada_mouse_mask (int button, int state, mmask_t *mask);
-void _nc_ada_unregister_mouse (void);
-int  _nc_ada_vcheck (int major, int  minor);
-
-int _nc_ada_getmaxyx (const WINDOW *win, int *y, int *x)
-{
-  if (win && y && x)
-    {
-      getmaxyx(win,*y,*x);
-      return OK;
-    }
-  else
-    return ERR;
-}
-
-int _nc_ada_getbegyx (const WINDOW *win, int *y, int *x)
-{
-  if (win && y && x)
-    {
-      getbegyx(win,*y,*x);
-      return OK;
-    }
-  else
-    return ERR;
-}
-
-int _nc_ada_getyx (const WINDOW *win, int *y, int *x)
-{
-  if (win && y && x)
-    {
-      getyx(win,*y,*x);
-      return OK;
-    }
-  else
-    return ERR;
-}
-
-int _nc_ada_getparyx (const WINDOW *win, int *y, int *x)
-{
-  if (win && y && x)
-    {
-      getparyx(win,*y,*x);
-      return OK;
-    }
-  else
-    return ERR;
-}
-
-int _nc_ada_isscroll (const WINDOW *win)
-{
-  return win ? (win->_scroll ? TRUE : FALSE) : ERR;
-}
-
-int _nc_ada_coord_transform (const WINDOW *win, int *Y, int *X, int dir)
-{
-  if (win && Y && X)
-    {
-      int y = *Y; int x = *X;
-      if (dir)
-       { /* to screen coordinates */
-         y += win->_yoffset;
-         y += win->_begy;
-         x += win->_begx;
-         if (!wenclose(win,y,x))
-           return FALSE;
-       }
-      else
-       { /* from screen coordinates */
-         if (!wenclose(win,y,x))
-           return FALSE;
-         y -= win->_yoffset;
-         y -= win->_begy;
-         x -= win->_begx;
-       }
-      *X = x;
-      *Y = y;
-      return TRUE;
-    }
-  return FALSE;
-}
-
-#define BUTTON1_EVENTS (BUTTON1_RELEASED        |\
-                        BUTTON1_PRESSED         |\
-                        BUTTON1_CLICKED         |\
-                        BUTTON1_DOUBLE_CLICKED  |\
-                        BUTTON1_TRIPLE_CLICKED  |\
-                        BUTTON1_RESERVED_EVENT  )
-
-#define BUTTON2_EVENTS (BUTTON2_RELEASED        |\
-                        BUTTON2_PRESSED         |\
-                        BUTTON2_CLICKED         |\
-                        BUTTON2_DOUBLE_CLICKED  |\
-                        BUTTON2_TRIPLE_CLICKED  |\
-                        BUTTON2_RESERVED_EVENT  )
-
-#define BUTTON3_EVENTS (BUTTON3_RELEASED        |\
-                        BUTTON3_PRESSED         |\
-                        BUTTON3_CLICKED         |\
-                        BUTTON3_DOUBLE_CLICKED  |\
-                        BUTTON3_TRIPLE_CLICKED  |\
-                        BUTTON3_RESERVED_EVENT  )
-
-#define BUTTON4_EVENTS (BUTTON4_RELEASED        |\
-                        BUTTON4_PRESSED         |\
-                        BUTTON4_CLICKED         |\
-                        BUTTON4_DOUBLE_CLICKED  |\
-                        BUTTON4_TRIPLE_CLICKED  |\
-                        BUTTON4_RESERVED_EVENT  )
-
-void _nc_ada_mouse_event( mmask_t m, int *b, int *s )
-{
-  int k = 0;
-
-  if ( m & BUTTON1_EVENTS)
-    {
-      k = 1;
-    }
-  else if ( m & BUTTON2_EVENTS)
-    {
-      k = 2;
-    }
-  else if ( m & BUTTON3_EVENTS)
-    {
-      k = 3;
-    }
-  else if ( m & BUTTON4_EVENTS)
-    {
-      k = 4;
-    }
-
-  if (k)
-    {
-      *b = k-1;
-      if (BUTTON_RELEASE(m,k)) *s = 0;
-      else if (BUTTON_PRESS(m,k)) *s = 1;
-      else if (BUTTON_CLICK(m,k)) *s = 2;
-      else if (BUTTON_DOUBLE_CLICK(m,k)) *s = 3;
-      else if (BUTTON_TRIPLE_CLICK(m,k)) *s = 4;
-      else if (BUTTON_RESERVED_EVENT(m,k)) *s = 5;
-      else
-       {
-         *s = -1;
-       }
-    }
-  else
-    {
-      *s = 1;
-      if (m & BUTTON_CTRL) *b = 4;
-      else if (m & BUTTON_SHIFT) *b = 5;
-      else if (m & BUTTON_ALT) *b = 6;
-      else
-       {
-         *b = -1;
-       }
-    }
-}
-
-int _nc_ada_mouse_mask ( int button, int state, mmask_t *mask )
-{
-  mmask_t b = (button<4) ? ((1<<button) << (6 * state)) :
-    (BUTTON_CTRL << (button-4));
-
-  if (button>=4 && state!=1)
-    return ERR;
-
-  *mask |= b;
-  return OK;
-}
-
-/*
- * Allow Ada to check whether or not we are the correct library version
- * for the binding. It calls this routine with the version it requests
- * and this routine returns a 1 if it is a correct version, a 2 if the
- * major version is correct but the minor version of the library differs
- * and a 0 if the versions don't match.
- */
-int  _nc_ada_vcheck (int major, int  minor)
-{
-  if (major==NCURSES_VERSION_MAJOR) {
-    if (minor==NCURSES_VERSION_MINOR)
-      return 1;
-    else
-      return 2;
-  }
-  else
-    return 0;
-}
index 9a58ee0e70743405c4a447bce022adf95a8b0016..83a1e0e7d348888f5544789f0ec4503f28417afb 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
  ****************************************************************************/
 
 /****************************************************************************
- *  Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998              *
+ *  Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998,1999         *
  ****************************************************************************/
 /* LINTLIBRARY */
 
-/* ./hardscroll.c */
+/* ./tty/hardscroll.c */
 
 #include <curses.priv.h>
 
+#undef _nc_oldnums
+int    *_nc_oldnums;
+
 #undef _nc_scroll_optimize
 void   _nc_scroll_optimize(void)
                { /* void */ }
 
-/* ./hashmap.c */
+/* ./tty/hashmap.c */
+
+#include <term.h>
 
 typedef struct
 {
@@ -53,30 +58,22 @@ typedef struct
 void   _nc_hash_map(void)
                { /* void */ }
 
-/* ./lib_acs.c */
-
-#include <term.h>
-
-#undef acs_map
-chtype acs_map[128 ];
+#undef _nc_make_oldhash
+void   _nc_make_oldhash(
+               int     i)
+               { /* void */ }
 
-#undef init_acs
-void   init_acs(void)
+#undef _nc_scroll_oldhash
+void   _nc_scroll_oldhash(
+               int     n, 
+               int     top, 
+               int     bot)
                { /* void */ }
 
-/* ./lib_addch.c */
+/* ./base/lib_addch.c */
 
 #include <ctype.h>
 
-#undef wchgat
-int    wchgat(
-               WINDOW  *win, 
-               int     n, 
-               attr_t  attr, 
-               short   color, 
-               const void *opts)
-               { return(*(int *)0); }
-
 #undef _nc_background
 chtype _nc_background(
                WINDOW  *win)
@@ -106,7 +103,7 @@ int wechochar(
                const chtype ch)
                { return(*(int *)0); }
 
-/* ./lib_addstr.c */
+/* ./base/lib_addstr.c */
 
 #undef waddnstr
 int    waddnstr(
@@ -122,24 +119,13 @@ int       waddchnstr(
                int     n)
                { return(*(int *)0); }
 
-/* ./lib_baudrate.c */
-
-struct speed {
-       speed_t s;
-       int sp;
-};
-
-#undef baudrate
-int    baudrate(void)
-               { return(*(int *)0); }
-
-/* ./lib_beep.c */
+/* ./base/lib_beep.c */
 
 #undef beep
 int    beep(void)
                { return(*(int *)0); }
 
-/* ./lib_bkgd.c */
+/* ./base/lib_bkgd.c */
 
 #undef wbkgdset
 void   wbkgdset(
@@ -153,7 +139,7 @@ int wbkgd(
                const chtype ch)
                { return(*(int *)0); }
 
-/* ./lib_box.c */
+/* ./base/lib_box.c */
 
 #undef wborder
 int    wborder(
@@ -168,28 +154,47 @@ int       wborder(
                chtype  br)
                { return(*(int *)0); }
 
-/* ./lib_clear.c */
+/* ./base/lib_chgat.c */
+
+#undef wchgat
+int    wchgat(
+               WINDOW  *win, 
+               int     n, 
+               attr_t  attr, 
+               short   color, 
+               const void *opts)
+               { return(*(int *)0); }
+
+/* ./base/lib_clear.c */
 
 #undef wclear
 int    wclear(
                WINDOW  *win)
                { return(*(int *)0); }
 
-/* ./lib_clrbot.c */
+/* ./base/lib_clearok.c */
+
+#undef clearok
+int    clearok(
+               WINDOW  *win, 
+               bool    flag)
+               { return(*(int *)0); }
+
+/* ./base/lib_clrbot.c */
 
 #undef wclrtobot
 int    wclrtobot(
                WINDOW  *win)
                { return(*(int *)0); }
 
-/* ./lib_clreol.c */
+/* ./base/lib_clreol.c */
 
 #undef wclrtoeol
 int    wclrtoeol(
                WINDOW  *win)
                { return(*(int *)0); }
 
-/* ./lib_color.c */
+/* ./base/lib_color.c */
 
 #undef COLOR_PAIRS
 int    COLOR_PAIRS;
@@ -241,89 +246,58 @@ int       pair_content(
 #undef _nc_do_color
 void   _nc_do_color(
                int     pair, 
+               bool    reverse, 
                int     (*outc)(
                int     p1))
                { /* void */ }
 
-/* ./lib_data.c */
+/* ./base/lib_colorset.c */
 
-#undef stdscr
-WINDOW *stdscr;
-#undef curscr
-WINDOW *curscr;
-#undef newscr
-WINDOW *newscr;
-#undef _nc_screen_chain
-SCREEN *_nc_screen_chain;
-#undef SP
-SCREEN *SP;
+#undef wcolor_set
+int    wcolor_set(
+               WINDOW  *win, 
+               short   color_pair_number, 
+               void    *opts)
+               { return(*(int *)0); }
 
-/* ./lib_delch.c */
+/* ./base/lib_delch.c */
 
 #undef wdelch
 int    wdelch(
                WINDOW  *win)
                { return(*(int *)0); }
 
-/* ./lib_delwin.c */
+/* ./base/lib_delwin.c */
 
 #undef delwin
 int    delwin(
                WINDOW  *win)
                { return(*(int *)0); }
 
-/* ./lib_doupdate.c */
-
-#include <sys/time.h>
+/* ./base/lib_echo.c */
 
-#undef doupdate
-int    doupdate(void)
+#undef echo
+int    echo(void)
                { return(*(int *)0); }
 
-#undef _nc_outstr
-void   _nc_outstr(
-               const char *str)
-               { /* void */ }
-
-#undef _nc_scrolln
-int    _nc_scrolln(
-               int     n, 
-               int     top, 
-               int     bot, 
-               int     maxy)
+#undef noecho
+int    noecho(void)
                { return(*(int *)0); }
 
-#undef _nc_screen_resume
-void   _nc_screen_resume(void)
-               { /* void */ }
-
-#undef _nc_screen_init
-void   _nc_screen_init(void)
-               { /* void */ }
-
-#undef _nc_screen_wrap
-void   _nc_screen_wrap(void)
-               { /* void */ }
-
-#undef _nc_do_xmc_glitch
-void   _nc_do_xmc_glitch(
-               attr_t  previous)
-               { /* void */ }
-
-/* ./lib_endwin.c */
+/* ./base/lib_endwin.c */
 
 #undef endwin
 int    endwin(void)
                { return(*(int *)0); }
 
-/* ./lib_erase.c */
+/* ./base/lib_erase.c */
 
 #undef werase
 int    werase(
                WINDOW  *win)
                { return(*(int *)0); }
 
-/* ./lib_flash.c */
+/* ./base/lib_flash.c */
 
 #undef flash
 int    flash(void)
@@ -374,22 +348,29 @@ int       attrset(
                { return(*(int *)0); }
 
 #undef attr_get
-int    attr_get(void)
+int    attr_get(
+               attr_t  *a1, 
+               short   *a2, 
+               void    *z)
                { return(*(int *)0); }
 
 #undef attr_off
 int    attr_off(
-               NCURSES_ATTR_T  z)
+               attr_t  a1, 
+               void    *z)
                { return(*(int *)0); }
 
 #undef attr_on
 int    attr_on(
-               NCURSES_ATTR_T  z)
+               attr_t  a1, 
+               void    *z)
                { return(*(int *)0); }
 
 #undef attr_set
 int    attr_set(
-               NCURSES_ATTR_T  z)
+               attr_t  a1, 
+               short   a2, 
+               void    *z)
                { return(*(int *)0); }
 
 #undef bkgd
@@ -441,6 +422,12 @@ int        clrtobot(void)
 int    clrtoeol(void)
                { return(*(int *)0); }
 
+#undef color_set
+int    color_set(
+               short   a1, 
+               void    *z)
+               { return(*(int *)0); }
+
 #undef COLOR_PAIR
 int    COLOR_PAIR(
                int     z)
@@ -897,9 +884,9 @@ int standend(void)
                { return(*(int *)0); }
 
 #undef timeout
-int    timeout(
+void   timeout(
                int     z)
-               { return(*(int *)0); }
+               { /* void */ }
 
 #undef untouchwin
 int    untouchwin(
@@ -915,14 +902,14 @@ int       vline(
 #undef vw_printw
 int    vw_printw(
                WINDOW  *a1, 
-               const char *a2, 
+               char    *a2, 
                va_list z)
                { return(*(int *)0); }
 
 #undef vw_scanw
 int    vw_scanw(
                WINDOW  *a1, 
-               const char *a2, 
+               char    *a2, 
                va_list z)
                { return(*(int *)0); }
 
@@ -957,14 +944,19 @@ int       wattrset(
                { return(*(int *)0); }
 
 #undef wattr_get
-attr_t wattr_get(
-               WINDOW  *z)
-               { return(*(attr_t *)0); }
+int    wattr_get(
+               WINDOW  *a1, 
+               attr_t  *a2, 
+               short   *a3, 
+               void    *z)
+               { return(*(int *)0); }
 
 #undef wattr_set
 int    wattr_set(
                WINDOW  *a1, 
-               attr_t  z)
+               attr_t  a2, 
+               short   a3, 
+               void    *z)
                { return(*(int *)0); }
 
 #undef wdeleteln
@@ -978,11 +970,6 @@ int        wgetstr(
                char    *z)
                { return(*(int *)0); }
 
-#undef winch
-chtype winch(
-               WINDOW  *z)
-               { return(*(chtype *)0); }
-
 #undef winchstr
 int    winchstr(
                WINDOW  *a1, 
@@ -1016,7 +1003,14 @@ int      wstandend(
                WINDOW  *z)
                { return(*(int *)0); }
 
-/* ./lib_getch.c */
+#undef mouse_trafo
+bool   mouse_trafo(
+               int     *a1, 
+               int     *a2, 
+               bool    z)
+               { return(*(bool *)0); }
+
+/* ./base/lib_getch.c */
 
 #include <fifo_defs.h>
 
@@ -1028,7 +1022,7 @@ int       wgetch(
                WINDOW  *win)
                { return(*(int *)0); }
 
-/* ./lib_getstr.c */
+/* ./base/lib_getstr.c */
 
 #undef wgetnstr
 int    wgetnstr(
@@ -1037,7 +1031,7 @@ int       wgetnstr(
                int     maxlen)
                { return(*(int *)0); }
 
-/* ./lib_hline.c */
+/* ./base/lib_hline.c */
 
 #undef whline
 int    whline(
@@ -1046,7 +1040,15 @@ int      whline(
                int     n)
                { return(*(int *)0); }
 
-/* ./lib_inchstr.c */
+/* ./base/lib_immedok.c */
+
+#undef immedok
+void   immedok(
+               WINDOW  *win, 
+               bool    flag)
+               { /* void */ }
+
+/* ./base/lib_inchstr.c */
 
 #undef winchnstr
 int    winchnstr(
@@ -1055,17 +1057,15 @@ int     winchnstr(
                int     n)
                { return(*(int *)0); }
 
-/* ./lib_initscr.c */
+/* ./base/lib_initscr.c */
+
+#include <tic.h>
 
 #undef initscr
 WINDOW *initscr(void)
                { return(*(WINDOW **)0); }
 
-#undef termname
-char   *termname(void)
-               { return(*(char **)0); }
-
-/* ./lib_insch.c */
+/* ./base/lib_insch.c */
 
 #undef winsch
 int    winsch(
@@ -1073,7 +1073,7 @@ int       winsch(
                chtype  c)
                { return(*(int *)0); }
 
-/* ./lib_insdel.c */
+/* ./base/lib_insdel.c */
 
 #undef winsdelln
 int    winsdelln(
@@ -1081,16 +1081,16 @@ int     winsdelln(
                int     n)
                { return(*(int *)0); }
 
-/* ./lib_insstr.c */
+/* ./base/lib_insstr.c */
 
 #undef winsnstr
 int    winsnstr(
                WINDOW  *win, 
-               const char *str
+               const char *s, 
                int     n)
                { return(*(int *)0); }
 
-/* ./lib_instr.c */
+/* ./base/lib_instr.c */
 
 #undef winnstr
 int    winnstr(
@@ -1099,19 +1099,21 @@ int     winnstr(
                int     n)
                { return(*(int *)0); }
 
-/* ./lib_isendwin.c */
+/* ./base/lib_isendwin.c */
 
 #undef isendwin
-int    isendwin(void)
-               { return(*(int *)0); }
+bool   isendwin(void)
+               { return(*(bool *)0); }
 
-/* ./lib_longname.c */
+/* ./base/lib_leaveok.c */
 
-#undef longname
-char   *longname(void)
-               { return(*(char **)0); }
+#undef leaveok
+int    leaveok(
+               WINDOW  *win, 
+               bool    flag)
+               { return(*(int *)0); }
 
-/* ./lib_mouse.c */
+/* ./base/lib_mouse.c */
 
 #undef getmouse
 int    getmouse(
@@ -1145,7 +1147,15 @@ int      mouseinterval(
 int    _nc_has_mouse(void)
                { return(*(int *)0); }
 
-/* ./lib_move.c */
+#undef wmouse_trafo
+bool   wmouse_trafo(
+               const WINDOW *win, 
+               int     *pY, 
+               int     *pX, 
+               bool    to_screen)
+               { return(*(bool *)0); }
+
+/* ./base/lib_move.c */
 
 #undef wmove
 int    wmove(
@@ -1154,7 +1164,7 @@ int       wmove(
                int     x)
                { return(*(int *)0); }
 
-/* ./lib_mvcur.c */
+/* ./tty/lib_mvcur.c */
 
 #undef _nc_msec_cost
 int    _nc_msec_cost(
@@ -1182,7 +1192,7 @@ int       mvcur(
                int     xnew)
                { return(*(int *)0); }
 
-/* ./lib_mvwin.c */
+/* ./base/lib_mvwin.c */
 
 #undef mvwin
 int    mvwin(
@@ -1191,7 +1201,7 @@ int       mvwin(
                int     bx)
                { return(*(int *)0); }
 
-/* ./lib_newterm.c */
+/* ./base/lib_newterm.c */
 
 #undef filter
 void   filter(void)
@@ -1199,12 +1209,12 @@ void    filter(void)
 
 #undef newterm
 SCREEN *newterm(
-               const char *term
+               char    *name
                FILE    *ofp, 
                FILE    *ifp)
                { return(*(SCREEN **)0); }
 
-/* ./lib_newwin.c */
+/* ./base/lib_newwin.c */
 
 #undef _nc_freewin
 void   _nc_freewin(
@@ -1246,7 +1256,17 @@ WINDOW   *_nc_makenew(
                int     flags)
                { return(*(WINDOW **)0); }
 
-/* ./lib_overlay.c */
+/* ./base/lib_nl.c */
+
+#undef nl
+int    nl(void)
+               { return(*(int *)0); }
+
+#undef nonl
+int    nonl(void)
+               { return(*(int *)0); }
+
+/* ./base/lib_overlay.c */
 
 #undef overlay
 int    overlay(
@@ -1273,7 +1293,7 @@ int       copywin(
                int     over)
                { return(*(int *)0); }
 
-/* ./lib_pad.c */
+/* ./base/lib_pad.c */
 
 #undef newpad
 WINDOW *newpad(
@@ -1318,26 +1338,18 @@ int     pechochar(
                const chtype ch)
                { return(*(int *)0); }
 
-/* ./lib_print.c */
-
-#undef mcprint
-int    mcprint(
-               char    *data, 
-               int     len)
-               { return(*(int *)0); }
-
-/* ./lib_printw.c */
+/* ./base/lib_printw.c */
 
 #undef printw
 int    printw(
-               const char *fmt, 
+               char    *fmt, 
                ...)
                { return(*(int *)0); }
 
 #undef wprintw
 int    wprintw(
                WINDOW  *win, 
-               const char *fmt, 
+               char    *fmt, 
                ...)
                { return(*(int *)0); }
 
@@ -1345,7 +1357,7 @@ int       wprintw(
 int    mvprintw(
                int     y, 
                int     x, 
-               const char *fmt, 
+               char    *fmt, 
                ...)
                { return(*(int *)0); }
 
@@ -1354,18 +1366,18 @@ int     mvwprintw(
                WINDOW  *win, 
                int     y, 
                int     x, 
-               const char *fmt, 
+               char    *fmt, 
                ...)
                { return(*(int *)0); }
 
 #undef vwprintw
 int    vwprintw(
                WINDOW  *win, 
-               const char *fmt, 
+               char    *fmt, 
                va_list argp)
                { return(*(int *)0); }
 
-/* ./lib_redrawln.c */
+/* ./base/lib_redrawln.c */
 
 #undef wredrawln
 int    wredrawln(
@@ -1374,7 +1386,7 @@ int       wredrawln(
                int     num)
                { return(*(int *)0); }
 
-/* ./lib_refresh.c */
+/* ./base/lib_refresh.c */
 
 #undef wrefresh
 int    wrefresh(
@@ -1386,42 +1398,34 @@ int     wnoutrefresh(
                WINDOW  *win)
                { return(*(int *)0); }
 
-/* ./lib_restart.c */
-
-#undef def_shell_mode
-int    def_shell_mode(void)
-               { return(*(int *)0); }
-
-#undef def_prog_mode
-int    def_prog_mode(void)
-               { return(*(int *)0); }
+/* ./base/lib_restart.c */
 
 #undef restartterm
 int    restartterm(
-               const char *term
+               char    *termp
                int     filenum, 
                int     *errret)
                { return(*(int *)0); }
 
-/* ./lib_scanw.c */
+/* ./base/lib_scanw.c */
 
 #undef vwscanw
 int    vwscanw(
                WINDOW  *win, 
-               const char *fmt, 
+               char    *fmt, 
                va_list argp)
                { return(*(int *)0); }
 
 #undef scanw
 int    scanw(
-               const char *fmt, 
+               char    *fmt, 
                ...)
                { return(*(int *)0); }
 
 #undef wscanw
 int    wscanw(
                WINDOW  *win, 
-               const char *fmt, 
+               char    *fmt, 
                ...)
                { return(*(int *)0); }
 
@@ -1429,7 +1433,7 @@ int       wscanw(
 int    mvscanw(
                int     y, 
                int     x, 
-               const char *fmt, 
+               char    *fmt, 
                ...)
                { return(*(int *)0); }
 
@@ -1438,11 +1442,11 @@ int     mvwscanw(
                WINDOW  *win, 
                int     y, 
                int     x, 
-               const char *fmt, 
+               char    *fmt, 
                ...)
                { return(*(int *)0); }
 
-/* ./lib_screen.c */
+/* ./base/lib_screen.c */
 
 #include <sys/stat.h>
 #include <time.h>
@@ -1478,7 +1482,7 @@ int       scr_set(
                const char *file)
                { return(*(int *)0); }
 
-/* ./lib_scroll.c */
+/* ./base/lib_scroll.c */
 
 #undef _nc_scroll_window
 void   _nc_scroll_window(
@@ -1495,7 +1499,15 @@ int      wscrl(
                int     n)
                { return(*(int *)0); }
 
-/* ./lib_scrreg.c */
+/* ./base/lib_scrollok.c */
+
+#undef scrollok
+int    scrollok(
+               WINDOW  *win, 
+               bool    flag)
+               { return(*(int *)0); }
+
+/* ./base/lib_scrreg.c */
 
 #undef wsetscrreg
 int    wsetscrreg(
@@ -1504,17 +1516,11 @@ int     wsetscrreg(
                int     bottom)
                { return(*(int *)0); }
 
-/* ./lib_set_term.c */
-
-#undef _nc_set_buffer
-void   _nc_set_buffer(
-               FILE    *ofp, 
-               bool    buffered)
-               { /* void */ }
+/* ./base/lib_set_term.c */
 
 #undef set_term
 SCREEN *set_term(
-               SCREEN  *screen)
+               SCREEN  *screenp)
                { return(*(SCREEN **)0); }
 
 #undef delscreen
@@ -1545,7 +1551,7 @@ int       ripoffline(
                int     p2))
                { return(*(int *)0); }
 
-/* ./lib_slk.c */
+/* ./base/lib_slk.c */
 
 #undef _nc_slk_format
 int    _nc_slk_format;
@@ -1560,54 +1566,70 @@ int     _nc_slk_initialize(
 int    slk_restore(void)
                { return(*(int *)0); }
 
-/* ./lib_slkatrof.c */
+/* ./base/lib_slkatr_set.c */
+
+#undef slk_attr_set
+int    slk_attr_set(
+               const attr_t attr, 
+               short   color_pair_number, 
+               void    *opts)
+               { return(*(int *)0); }
+
+/* ./base/lib_slkatrof.c */
 
 #undef slk_attroff
 int    slk_attroff(
-               const attr_t attr)
+               const chtype attr)
                { return(*(int *)0); }
 
-/* ./lib_slkatron.c */
+/* ./base/lib_slkatron.c */
 
 #undef slk_attron
 int    slk_attron(
-               const attr_t attr)
+               const chtype attr)
                { return(*(int *)0); }
 
-/* ./lib_slkatrset.c */
+/* ./base/lib_slkatrset.c */
 
 #undef slk_attrset
 int    slk_attrset(
-               const attr_t attr)
+               const chtype attr)
                { return(*(int *)0); }
 
-/* ./lib_slkattr.c */
+/* ./base/lib_slkattr.c */
 
 #undef slk_attr
 attr_t slk_attr(void)
                { return(*(attr_t *)0); }
 
-/* ./lib_slkclear.c */
+/* ./base/lib_slkclear.c */
 
 #undef slk_clear
 int    slk_clear(void)
                { return(*(int *)0); }
 
-/* ./lib_slkinit.c */
+/* ./base/lib_slkcolor.c */
+
+#undef slk_color
+int    slk_color(
+               short   color_pair_number)
+               { return(*(int *)0); }
+
+/* ./base/lib_slkinit.c */
 
 #undef slk_init
 int    slk_init(
                int     format)
                { return(*(int *)0); }
 
-/* ./lib_slklab.c */
+/* ./base/lib_slklab.c */
 
 #undef slk_label
 char   *slk_label(
                int     n)
                { return(*(char **)0); }
 
-/* ./lib_slkrefr.c */
+/* ./base/lib_slkrefr.c */
 
 #undef slk_noutrefresh
 int    slk_noutrefresh(void)
@@ -1617,7 +1639,7 @@ int       slk_noutrefresh(void)
 int    slk_refresh(void)
                { return(*(int *)0); }
 
-/* ./lib_slkset.c */
+/* ./base/lib_slkset.c */
 
 #undef slk_set
 int    slk_set(
@@ -1626,24 +1648,24 @@ int     slk_set(
                int     format)
                { return(*(int *)0); }
 
-/* ./lib_slktouch.c */
+/* ./base/lib_slktouch.c */
 
 #undef slk_touch
 int    slk_touch(void)
                { return(*(int *)0); }
 
-/* ./lib_touch.c */
+/* ./base/lib_touch.c */
 
 #undef is_linetouched
-int    is_linetouched(
+bool   is_linetouched(
                WINDOW  *win, 
                int     line)
-               { return(*(int *)0); }
+               { return(*(bool *)0); }
 
 #undef is_wintouched
-int    is_wintouched(
+bool   is_wintouched(
                WINDOW  *win)
-               { return(*(int *)0); }
+               { return(*(bool *)0); }
 
 #undef wtouchln
 int    wtouchln(
@@ -1653,51 +1675,25 @@ int     wtouchln(
                int     changed)
                { return(*(int *)0); }
 
-/* ./lib_traceatr.c */
-
-#undef _traceattr2
-char   *_traceattr2(
-               int     bufnum, 
-               attr_t  newmode)
-               { return(*(char **)0); }
-
-#undef _traceattr
-char   *_traceattr(
-               attr_t  newmode)
-               { return(*(char **)0); }
-
-#undef _nc_retrace_attr_t
-attr_t _nc_retrace_attr_t(
-               attr_t  code)
-               { return(*(attr_t *)0); }
-
-#undef _tracechtype2
-char   *_tracechtype2(
-               int     bufnum, 
-               chtype  ch)
-               { return(*(char **)0); }
+/* ./trace/lib_traceatr.c */
 
-#undef _tracechtype
-char   *_tracechtype(
-               chtype  ch)
-               { return(*(char **)0); }
+#undef _nc_lib_traceatr
+void   _nc_lib_traceatr(void)
+               { /* void */ }
 
-/* ./lib_tracedmp.c */
+/* ./trace/lib_tracedmp.c */
 
-#undef _tracedump
-void   _tracedump(
-               const char *name, 
-               WINDOW  *win)
+#undef _nc_lib_tracedmp
+void   _nc_lib_tracedmp(void)
                { /* void */ }
 
-/* ./lib_tracemse.c */
+/* ./trace/lib_tracemse.c */
 
-#undef _tracemouse
-char   *_tracemouse(
-               MEVENT const *ep)
-               { return(*(char **)0); }
+#undef _nc_lib_tracemouse
+void   _nc_lib_tracemouse(void)
+               { /* void */ }
 
-/* ./lib_tstp.c */
+/* ./tty/lib_tstp.c */
 
 #include <signal.h>
 #include <SigAction.h>
@@ -1707,14 +1703,14 @@ void    _nc_signal_handler(
                bool    enable)
                { /* void */ }
 
-/* ./lib_ungetch.c */
+/* ./base/lib_ungetch.c */
 
 #undef ungetch
 int    ungetch(
                int     ch)
                { return(*(int *)0); }
 
-/* ./lib_vidattr.c */
+/* ./tty/lib_vidattr.c */
 
 #undef vidputs
 int    vidputs(
@@ -1732,7 +1728,7 @@ int       vidattr(
 chtype termattrs(void)
                { return(*(chtype *)0); }
 
-/* ./lib_vline.c */
+/* ./base/lib_vline.c */
 
 #undef wvline
 int    wvline(
@@ -1741,23 +1737,32 @@ int     wvline(
                int     n)
                { return(*(int *)0); }
 
-/* ./lib_wattroff.c */
+/* ./base/lib_wattroff.c */
 
 #undef wattr_off
 int    wattr_off(
                WINDOW  *win, 
-               const attr_t at)
+               attr_t  at, 
+               void    *opts)
                { return(*(int *)0); }
 
-/* ./lib_wattron.c */
+/* ./base/lib_wattron.c */
 
 #undef wattr_on
 int    wattr_on(
                WINDOW  *win, 
-               const attr_t at)
+               attr_t  at, 
+               void    *opts)
                { return(*(int *)0); }
 
-/* ./lib_window.c */
+/* ./base/lib_winch.c */
+
+#undef winch
+chtype winch(
+               WINDOW  *win)
+               { return(*(chtype *)0); }
+
+/* ./base/lib_window.c */
 
 #undef _nc_synchook
 void   _nc_synchook(
@@ -1797,13 +1802,13 @@ WINDOW  *dupwin(
                WINDOW  *win)
                { return(*(WINDOW **)0); }
 
-/* ./nc_panel.c */
+/* ./base/nc_panel.c */
 
 #undef _nc_panelhook
 struct panelhook *_nc_panelhook(void)
                { return(*(struct panelhook **)0); }
 
-/* ./safe_sprintf.c */
+/* ./base/safe_sprintf.c */
 
 #undef _nc_printf_string
 char   *_nc_printf_string(
@@ -1811,38 +1816,63 @@ char    *_nc_printf_string(
                va_list ap)
                { return(*(char **)0); }
 
-/* ./write_entry.c */
+/* ./tty/tty_update.c */
 
-#include <tic.h>
-#include <term_entry.h>
+#include <sys/time.h>
 
-#undef _nc_set_writedir
-void   _nc_set_writedir(
-               char    *dir)
-               { /* void */ }
+#undef doupdate
+int    doupdate(void)
+               { return(*(int *)0); }
 
-#undef _nc_write_entry
-void   _nc_write_entry(
-               TERMTYPE *const tp)
+#undef _nc_outstr
+void   _nc_outstr(
+               const char *str)
                { /* void */ }
 
-#undef _nc_tic_written
-int    _nc_tic_written(void)
+#undef _nc_scrolln
+int    _nc_scrolln(
+               int     n, 
+               int     top, 
+               int     bot, 
+               int     maxy)
                { return(*(int *)0); }
 
-/* ./sigaction.c */
-
-#undef _nc_sigaction
-void   _nc_sigaction(void)
+#undef _nc_screen_resume
+void   _nc_screen_resume(void)
                { /* void */ }
 
-/* ./vsscanf.c */
+#undef _nc_screen_init
+void   _nc_screen_init(void)
+               { /* void */ }
+
+#undef _nc_screen_wrap
+void   _nc_screen_wrap(void)
+               { /* void */ }
+
+#undef _nc_do_xmc_glitch
+void   _nc_do_xmc_glitch(
+               attr_t  previous)
+               { /* void */ }
+
+/* ./base/memmove.c */
+
+#undef _nc_memmove
+void   _nc_memmove(void)
+               { /* void */ }
+
+/* ./base/sigaction.c */
+
+#undef _nc_sigaction
+void   _nc_sigaction(void)
+               { /* void */ }
+
+/* ./base/vsscanf.c */
 
 #undef _nc_vsscanf
 void   _nc_vsscanf(void)
                { /* void */ }
 
-/* ./define_key.c */
+/* ./base/define_key.c */
 
 #undef define_key
 int    define_key(
@@ -1884,7 +1914,15 @@ void     _nc_UpdateAttrs(
                chtype  c)
                { /* void */ }
 
-/* ./keyok.c */
+/* ./base/keybound.c */
+
+#undef keybound
+char   *keybound(
+               int     code, 
+               int     count)
+               { return(*(char **)0); }
+
+/* ./base/keyok.c */
 
 #undef keyok
 int    keyok(
@@ -1892,93 +1930,29 @@ int     keyok(
                bool    flag)
                { return(*(int *)0); }
 
-/* ./lib_adabind.c */
-
-#undef _nc_ada_getmaxyx
-int    _nc_ada_getmaxyx(
-               const WINDOW *win, 
-               int     *y, 
-               int     *x)
-               { return(*(int *)0); }
-
-#undef _nc_ada_getbegyx
-int    _nc_ada_getbegyx(
-               const WINDOW *win, 
-               int     *y, 
-               int     *x)
-               { return(*(int *)0); }
-
-#undef _nc_ada_getyx
-int    _nc_ada_getyx(
-               const WINDOW *win, 
-               int     *y, 
-               int     *x)
-               { return(*(int *)0); }
-
-#undef _nc_ada_getparyx
-int    _nc_ada_getparyx(
-               const WINDOW *win, 
-               int     *y, 
-               int     *x)
-               { return(*(int *)0); }
-
-#undef _nc_ada_isscroll
-int    _nc_ada_isscroll(
-               const WINDOW *win)
-               { return(*(int *)0); }
-
-#undef _nc_ada_coord_transform
-int    _nc_ada_coord_transform(
-               const WINDOW *win, 
-               int     *Y, 
-               int     *X, 
-               int     dir)
-               { return(*(int *)0); }
-
-#undef _nc_ada_mouse_event
-void   _nc_ada_mouse_event(
-               mmask_t m, 
-               int     *b, 
-               int     *s)
-               { /* void */ }
-
-#undef _nc_ada_mouse_mask
-int    _nc_ada_mouse_mask(
-               int     button, 
-               int     state, 
-               mmask_t *mask)
-               { return(*(int *)0); }
-
-#undef _nc_ada_vcheck
-int    _nc_ada_vcheck(
-               int     major, 
-               int     minor)
-               { return(*(int *)0); }
-
-/* ./lib_dft_fgbg.c */
+/* ./base/lib_dft_fgbg.c */
 
 #undef use_default_colors
 int    use_default_colors(void)
                { return(*(int *)0); }
 
-/* ./lib_freeall.c */
+/* ./base/lib_freeall.c */
 
-#undef _nc_free_termtype
-void   _nc_free_termtype(
-               struct termtype *p, 
-               int     base)
-               { /* void */ }
+#include <term_entry.h>
 
 #undef _nc_freeall
 void   _nc_freeall(void)
                { /* void */ }
 
-#undef _nc_free_and_exit
-void   _nc_free_and_exit(
-               int     code)
-               { /* void */ }
+/* ./tinfo/lib_print.c */
+
+#undef mcprint
+int    mcprint(
+               char    *data, 
+               int     len)
+               { return(*(int *)0); }
 
-/* ./resizeterm.c */
+/* ./base/resizeterm.c */
 
 #undef resizeterm
 int    resizeterm(
@@ -1986,17 +1960,42 @@ int     resizeterm(
                int     ToCols)
                { return(*(int *)0); }
 
-/* ./softscroll.c */
+/* ./trace/trace_xnames.c */
 
-#undef _nc_setup_scroll
-void   _nc_setup_scroll(void)
+#undef _nc_trace_xnames
+void   _nc_trace_xnames(
+               TERMTYPE *tp)
                { /* void */ }
 
-#undef _nc_perform_scroll
-void   _nc_perform_scroll(void)
-               { /* void */ }
+/* ./base/tries.c */
 
-/* ./wresize.c */
+#undef _nc_expand_try
+char   *_nc_expand_try(
+               struct tries *tree, 
+               unsigned short code, 
+               int     *count, 
+               size_t  len)
+               { return(*(char **)0); }
+
+#undef _nc_remove_key
+int    _nc_remove_key(
+               struct tries **tree, 
+               unsigned short code)
+               { return(*(int *)0); }
+
+#undef _nc_remove_string
+int    _nc_remove_string(
+               struct tries **tree, 
+               char    *string)
+               { return(*(int *)0); }
+
+/* ./base/version.c */
+
+#undef curses_version
+const char *curses_version(void)
+               { return(*(const char **)0); }
+
+/* ./base/wresize.c */
 
 #undef wresize
 int    wresize(
@@ -2005,13 +2004,35 @@ int     wresize(
                int     ToCols)
                { return(*(int *)0); }
 
-/* ./alloc_entry.c */
+/* ./tinfo/access.c */
+
+#undef _nc_access
+int    _nc_access(
+               const char *path, 
+               int     mode)
+               { return(*(int *)0); }
+
+/* ./tinfo/add_tries.c */
+
+#undef _nc_add_to_try
+void   _nc_add_to_try(
+               struct tries **tree, 
+               char    *str, 
+               unsigned short code)
+               { /* void */ }
+
+/* ./tinfo/alloc_entry.c */
 
 #undef _nc_init_entry
 void   _nc_init_entry(
                TERMTYPE *const tp)
                { /* void */ }
 
+#undef _nc_copy_entry
+ENTRY  *_nc_copy_entry(
+               ENTRY   *oldp)
+               { return(*(ENTRY **)0); }
+
 #undef _nc_save_str
 char   *_nc_save_str(
                const char *const string)
@@ -2028,7 +2049,21 @@ void     _nc_merge_entry(
                TERMTYPE *const from)
                { /* void */ }
 
-/* ./captoinfo.c */
+/* ./tinfo/alloc_ttype.c */
+
+#undef _nc_align_termtype
+void   _nc_align_termtype(
+               TERMTYPE *to, 
+               TERMTYPE *from)
+               { /* void */ }
+
+#undef _nc_copy_termtype
+void   _nc_copy_termtype(
+               TERMTYPE *dst, 
+               TERMTYPE *src)
+               { /* void */ }
+
+/* ./tinfo/captoinfo.c */
 
 #undef _nc_captoinfo
 char   *_nc_captoinfo(
@@ -2058,9 +2093,9 @@ char      *const strcodes[] = {0};
 #include <ncurses_cfg.h>
 
 #undef _nc_info_hash_table
-const struct name_table_entry *const _nc_info_hash_table[991] = {0};
+const struct name_table_entry *const _nc_info_hash_table[995] = {0};
 #undef _nc_cap_hash_table
-const struct name_table_entry *const _nc_cap_hash_table[991] = {0};
+const struct name_table_entry *const _nc_cap_hash_table[995] = {0};
 #undef _nc_capalias_table
 const struct alias _nc_capalias_table[] = {0};
 #undef _nc_infoalias_table
@@ -2071,7 +2106,12 @@ const struct name_table_entry *_nc_get_table(
                bool    termcap)
                { return(*(const struct name_table_entry **)0); }
 
-/* ./comp_error.c */
+#undef _nc_get_hash_table
+const struct name_table_entry *const *_nc_get_hash_table(
+               bool    termcap)
+               { return(*(const struct name_table_entry **)0); }
+
+/* ./tinfo/comp_error.c */
 
 #undef _nc_suppress_warnings
 bool   _nc_suppress_warnings;
@@ -2113,15 +2153,16 @@ void    _nc_syserr_abort(
                ...)
                { /* void */ }
 
-/* ./comp_expand.c */
+/* ./tinfo/comp_expand.c */
 
 #undef _nc_tic_expand
 char   *_nc_tic_expand(
                const char *srcp, 
-               bool    tic_format)
+               bool    tic_format, 
+               int     numbers)
                { return(*(char **)0); }
 
-/* ./comp_hash.c */
+/* ./tinfo/comp_hash.c */
 
 #include <hashsize.h>
 
@@ -2138,8 +2179,11 @@ struct name_table_entry const *_nc_find_type_entry(
                const struct name_table_entry *table)
                { return(*(struct name_table_entry const **)0); }
 
-/* ./comp_parse.c */
+/* ./tinfo/comp_parse.c */
 
+#undef _nc_check_termtype
+void   (*_nc_check_termtype)(
+               TERMTYPE *p1);
 #undef _nc_head
 ENTRY  *_nc_head;
 #undef _nc_tail
@@ -2170,7 +2214,7 @@ void      _nc_read_entry_source(
 int    _nc_resolve_uses(void)
                { return(*(int *)0); }
 
-/* ./comp_scan.c */
+/* ./tinfo/comp_scan.c */
 
 #undef _nc_syntax
 int    _nc_syntax;
@@ -2208,6 +2252,14 @@ void     _nc_reset_input(
                char    *buf)
                { /* void */ }
 
+/* ./tinfo/doalloc.c */
+
+#undef _nc_doalloc
+void   *_nc_doalloc(
+               void    *oldp, 
+               size_t  amount)
+               { return(*(void **)0); }
+
 /* ./fallback.c */
 
 #undef _nc_fallback
@@ -2215,45 +2267,121 @@ const TERMTYPE *_nc_fallback(
                const char *name)
                { return(*(const TERMTYPE **)0); }
 
-/* ./lib_cur_term.c */
+/* ./tinfo/free_ttype.c */
 
-#undef cur_term
-TERMINAL *cur_term;
+#undef _nc_free_termtype
+void   _nc_free_termtype(
+               TERMTYPE *ptr)
+               { /* void */ }
 
-#undef _nc_get_curterm
-int    _nc_get_curterm(
-               struct termios *buf)
+#undef _nc_user_definable
+bool   _nc_user_definable;
+
+#undef use_extended_names
+int    use_extended_names(
+               bool    flag)
                { return(*(int *)0); }
 
-#undef _nc_set_curterm
-int    _nc_set_curterm(
-               struct termios *buf)
+/* ./tinfo/getenv_num.c */
+
+#undef _nc_getenv_num
+int    _nc_getenv_num(
+               const char *name)
+               { return(*(int *)0); }
+
+/* ./tinfo/home_terminfo.c */
+
+#undef _nc_home_terminfo
+char   *_nc_home_terminfo(void)
+               { return(*(char **)0); }
+
+/* ./tinfo/init_keytry.c */
+
+#if 0
+
+#include <init_keytry.h>
+
+#endif
+
+#undef _nc_tinfo_fkeysf
+struct tinfo_fkeys *_nc_tinfo_fkeysf(void)
+               { return(*(struct tinfo_fkeys **)0); }
+
+#undef _nc_init_keytry
+void   _nc_init_keytry(void)
+               { /* void */ }
+
+/* ./tinfo/lib_acs.c */
+
+#undef acs_map
+chtype acs_map[128 ];
+
+#undef _nc_init_acs
+void   _nc_init_acs(void)
+               { /* void */ }
+
+/* ./tinfo/lib_baudrate.c */
+
+#include <termcap.h>
+
+struct speed {
+       speed_t s;
+       int sp;
+};
+
+#undef _nc_baudrate
+int    _nc_baudrate(
+               int     OSpeed)
+               { return(*(int *)0); }
+
+#undef _nc_ospeed
+int    _nc_ospeed(
+               int     BaudRate)
+               { return(*(int *)0); }
+
+#undef baudrate
+int    baudrate(void)
                { return(*(int *)0); }
 
+/* ./tinfo/lib_cur_term.c */
+
+#undef cur_term
+TERMINAL *cur_term;
+
 #undef set_curterm
 TERMINAL *set_curterm(
-               TERMINAL *term)
+               TERMINAL *termp)
                { return(*(TERMINAL **)0); }
 
 #undef del_curterm
 int    del_curterm(
-               TERMINAL *term)
+               TERMINAL *termp)
                { return(*(int *)0); }
 
-/* ./lib_kernel.c */
+/* ./tinfo/lib_data.c */
 
-#undef napms
-int    napms(
-               int     ms)
-               { return(*(int *)0); }
+#undef stdscr
+WINDOW *stdscr;
+#undef curscr
+WINDOW *curscr;
+#undef newscr
+WINDOW *newscr;
+#undef _nc_screen_chain
+SCREEN *_nc_screen_chain;
+#undef SP
+SCREEN *SP;
 
-#undef reset_prog_mode
-int    reset_prog_mode(void)
-               { return(*(int *)0); }
+/* ./tinfo/lib_has_cap.c */
 
-#undef reset_shell_mode
-int    reset_shell_mode(void)
-               { return(*(int *)0); }
+#undef has_ic
+bool   has_ic(void)
+               { return(*(bool *)0); }
+
+#undef has_il
+bool   has_il(void)
+               { return(*(bool *)0); }
+
+/* ./tinfo/lib_kernel.c */
 
 #undef erasechar
 char   erasechar(void)
@@ -2267,43 +2395,35 @@ char    killchar(void)
 int    flushinp(void)
                { return(*(int *)0); }
 
-#undef savetty
-int    savetty(void)
-               { return(*(int *)0); }
-
-#undef resetty
-int    resetty(void)
-               { return(*(int *)0); }
-
 /* ./lib_keyname.c */
 
 #include <stdlib.h>
 #include <string.h>
 #include <curses.h>
 
-struct kn {
-       const char *name;
-       int code;
-};
-
-#undef key_names
-const struct kn key_names[] = {0};
+#undef _nc_key_names
+const struct kn _nc_key_names[] = {0};
 
 #undef keyname
-const char *keyname(
+char   *keyname(
                int     c)
-               { return(*(const char **)0); }
+               { return(*(char **)0); }
 
-/* ./lib_options.c */
+/* ./tinfo/lib_longname.c */
 
-#undef has_ic
-int    has_ic(void)
-               { return(*(int *)0); }
+#undef longname
+char   *longname(void)
+               { return(*(char **)0); }
 
-#undef has_il
-int    has_il(void)
+/* ./tinfo/lib_napms.c */
+
+#undef napms
+int    napms(
+               int     ms)
                { return(*(int *)0); }
 
+/* ./tinfo/lib_options.c */
+
 #undef idlok
 int    idlok(
                WINDOW  *win, 
@@ -2316,30 +2436,6 @@ void     idcok(
                bool    flag)
                { /* void */ }
 
-#undef clearok
-int    clearok(
-               WINDOW  *win, 
-               bool    flag)
-               { return(*(int *)0); }
-
-#undef immedok
-void   immedok(
-               WINDOW  *win, 
-               bool    flag)
-               { /* void */ }
-
-#undef leaveok
-int    leaveok(
-               WINDOW  *win, 
-               bool    flag)
-               { return(*(int *)0); }
-
-#undef scrollok
-int    scrollok(
-               WINDOW  *win, 
-               bool    flag)
-               { return(*(int *)0); }
-
 #undef halfdelay
 int    halfdelay(
                int     t)
@@ -2358,10 +2454,10 @@ int     notimeout(
                { return(*(int *)0); }
 
 #undef wtimeout
-int    wtimeout(
+void   wtimeout(
                WINDOW  *win, 
                int     delay)
-               { return(*(int *)0); }
+               { /* void */ }
 
 #undef keypad
 int    keypad(
@@ -2390,18 +2486,12 @@ int     has_key(
                int     keycode)
                { return(*(int *)0); }
 
-#if 0
-
-#include <keys.tries>
-
-#endif
-
 #undef _nc_keypad
 int    _nc_keypad(
                bool    flag)
                { return(*(int *)0); }
 
-/* ./lib_raw.c */
+/* ./tinfo/lib_raw.c */
 
 #undef raw
 int    raw(void)
@@ -2411,17 +2501,9 @@ int      raw(void)
 int    cbreak(void)
                { return(*(int *)0); }
 
-#undef echo
-int    echo(void)
-               { return(*(int *)0); }
-
-#undef nl
-int    nl(void)
-               { return(*(int *)0); }
-
 #undef qiflush
-int    qiflush(void)
-               { return(*(int *)0); }
+void   qiflush(void)
+               { /* void */ }
 
 #undef noraw
 int    noraw(void)
@@ -2431,17 +2513,9 @@ int      noraw(void)
 int    nocbreak(void)
                { return(*(int *)0); }
 
-#undef noecho
-int    noecho(void)
-               { return(*(int *)0); }
-
-#undef nonl
-int    nonl(void)
-               { return(*(int *)0); }
-
 #undef noqiflush
-int    noqiflush(void)
-               { return(*(int *)0); }
+void   noqiflush(void)
+               { /* void */ }
 
 #undef intrflush
 int    intrflush(
@@ -2449,18 +2523,42 @@ int     intrflush(
                bool    flag)
                { return(*(int *)0); }
 
-/* ./lib_termcap.c */
+/* ./tinfo/lib_setup.c */
 
-#include <termcap.h>
+#include <sys/ioctl.h>
+
+#undef use_env
+void   use_env(
+               bool    f)
+               { /* void */ }
+
+#undef LINES
+int    LINES;
+#undef COLS
+int    COLS;
+#undef TABSIZE
+int    TABSIZE;
+
+#undef _nc_update_screensize
+void   _nc_update_screensize(void)
+               { /* void */ }
+
+#undef ttytype
+char   ttytype[256 ];
+
+#undef setupterm
+int    setupterm(
+               char    *tname, 
+               int     Filedes, 
+               int     *errret)
+               { return(*(int *)0); }
+
+/* ./tinfo/lib_termcap.c */
 
-#undef PC
-char   PC;
 #undef UP
 char   *UP;
 #undef BC
 char   *BC;
-#undef ospeed
-short  ospeed;
 
 #undef tgetent
 int    tgetent(
@@ -2476,17 +2574,17 @@ int     tgetent(
 
 #undef tgetflag
 int    tgetflag(
-               const char *id)
+               char    *id)
                { return(*(int *)0); }
 
 #undef tgetnum
 int    tgetnum(
-               const char *id)
+               char    *id)
                { return(*(int *)0); }
 
 #undef tgetstr
 char   *tgetstr(
-               const char *id, 
+               char    *id, 
                char    **area)
                { return(*(char **)0); }
 
@@ -2497,24 +2595,30 @@ char    *tgoto(
                int     y)
                { return(*(char **)0); }
 
-/* ./lib_ti.c */
+/* ./tinfo/lib_termname.c */
+
+#undef termname
+char   *termname(void)
+               { return(*(char **)0); }
+
+/* ./tinfo/lib_ti.c */
 
 #undef tigetflag
 int    tigetflag(
-               const char *str)
+               char    *str)
                { return(*(int *)0); }
 
 #undef tigetnum
 int    tigetnum(
-               const char *str)
+               char    *str)
                { return(*(int *)0); }
 
 #undef tigetstr
 char   *tigetstr(
-               const char *str)
+               char    *str)
                { return(*(char **)0); }
 
-/* ./lib_tparm.c */
+/* ./tinfo/lib_tparm.c */
 
 typedef union {
        unsigned int    num;
@@ -2523,12 +2627,16 @@ typedef union {
 
 #undef tparm
 char   *tparm(
-               const char *string, 
+               char    *string, 
                ...)
                { return(*(char **)0); }
 
-/* ./lib_tputs.c */
+/* ./tinfo/lib_tputs.c */
 
+#undef PC
+char   PC;
+#undef ospeed
+speed_t        ospeed;
 #undef _nc_nulls_sent
 int    _nc_nulls_sent;
 
@@ -2555,18 +2663,12 @@ int     tputs(
                int     p1))
                { return(*(int *)0); }
 
-/* ./lib_trace.c */
+/* ./trace/lib_trace.c */
 
 #include <fcntl.h>
 
 #undef _nc_tracing
 unsigned _nc_tracing;
-#undef _nc_tputs_trace
-const char *_nc_tputs_trace = {0};
-#undef _nc_outchars
-long   _nc_outchars;
-#undef _nc_optimize_enable
-int    _nc_optimize_enable;
 
 #undef trace
 void   trace(
@@ -2584,35 +2686,56 @@ const char *_nc_visbuf(
                const char *buf)
                { return(*(const char **)0); }
 
-#undef _tracef
-void   _tracef(
-               const char *fmt, 
-               ...)
-               { /* void */ }
-
-#undef _nc_retrace_int
-int    _nc_retrace_int(
-               int     code)
-               { return(*(int *)0); }
+/* ./trace/lib_tracebits.c */
 
-#undef _nc_retrace_ptr
-char   *_nc_retrace_ptr(
-               char    *code)
+#undef _nc_tracebits
+char   *_nc_tracebits(void)
                { return(*(char **)0); }
 
-#undef _nc_retrace_win
-WINDOW *_nc_retrace_win(
-               WINDOW  *code)
-               { return(*(WINDOW **)0); }
-
-/* ./lib_tracechr.c */
+/* ./trace/lib_tracechr.c */
 
 #undef _tracechar
 char   *_tracechar(
                const unsigned char ch)
                { return(*(char **)0); }
 
-/* ./lib_twait.c */
+/* ./tinfo/lib_ttyflags.c */
+
+#undef _nc_get_tty_mode
+int    _nc_get_tty_mode(
+               struct termios *buf)
+               { return(*(int *)0); }
+
+#undef _nc_set_tty_mode
+int    _nc_set_tty_mode(
+               struct termios *buf)
+               { return(*(int *)0); }
+
+#undef def_shell_mode
+int    def_shell_mode(void)
+               { return(*(int *)0); }
+
+#undef def_prog_mode
+int    def_prog_mode(void)
+               { return(*(int *)0); }
+
+#undef reset_prog_mode
+int    reset_prog_mode(void)
+               { return(*(int *)0); }
+
+#undef reset_shell_mode
+int    reset_shell_mode(void)
+               { return(*(int *)0); }
+
+#undef savetty
+int    savetty(void)
+               { return(*(int *)0); }
+
+#undef resetty
+int    resetty(void)
+               { return(*(int *)0); }
+
+/* ./tty/lib_twait.c */
 
 #undef _nc_timed_wait
 int    _nc_timed_wait(
@@ -2621,7 +2744,7 @@ int       _nc_timed_wait(
                int     *timeleft)
                { return(*(int *)0); }
 
-/* ./name_match.c */
+/* ./tinfo/name_match.c */
 
 #undef _nc_first_name
 char   *_nc_first_name(
@@ -2650,7 +2773,7 @@ char      *const strnames[] = {0};
 #undef strfnames
 char   *const strfnames[] = {0};
 
-/* ./parse_entry.c */
+/* ./tinfo/parse_entry.c */
 #undef _nc_curr_token
 struct token _nc_curr_token;
 
@@ -2669,13 +2792,18 @@ int     _nc_capcmp(
 
 typedef struct {const char *from; const char *to;} assoc;
 
-/* ./read_entry.c */
+/* ./tinfo/read_entry.c */
 
 #undef _nc_tic_dir
 const char *_nc_tic_dir(
                const char *path)
                { return(*(const char **)0); }
 
+#undef _nc_keep_tic_dir
+void   _nc_keep_tic_dir(
+               const char *path)
+               { /* void */ }
+
 #undef _nc_read_file_entry
 int    _nc_read_file_entry(
                const char *const filename, 
@@ -2689,45 +2817,26 @@ int     _nc_read_entry(
                TERMTYPE *const tp)
                { return(*(int *)0); }
 
-/* ./read_termcap.c */
+/* ./tinfo/read_termcap.c */
 
-#undef _nc_read_termcap_entry
-int    _nc_read_termcap_entry(
-               const char *const tn, 
-               TERMTYPE *const tp)
-               { return(*(int *)0); }
-
-/* ./lib_setup.c */
-
-#include <sys/ioctl.h>
-
-#undef use_env
-void   use_env(
-               bool    f)
+#undef _nc_read_termcap
+void   _nc_read_termcap(void)
                { /* void */ }
 
-#undef LINES
-int    LINES;
-#undef COLS
-int    COLS;
-#undef TABSIZE
-int    TABSIZE;
+/* ./tinfo/setbuf.c */
 
-#undef _nc_update_screensize
-void   _nc_update_screensize(void)
+#undef _nc_set_buffer
+void   _nc_set_buffer(
+               FILE    *ofp, 
+               bool    buffered)
                { /* void */ }
 
-#undef ttytype
-char   ttytype[256 ];
+/* ./trace/trace_buf.c */
 
-#undef setupterm
-int    setupterm(
-               const char *tname, 
-               int     Filedes, 
-               int     *errret)
-               { return(*(int *)0); }
-
-/* ./trace_buf.c */
+typedef struct {
+       char *text;
+       size_t size;
+} LIST;
 
 #undef _nc_trace_buf
 char   *_nc_trace_buf(
@@ -2735,31 +2844,32 @@ char    *_nc_trace_buf(
                size_t  want)
                { return(*(char **)0); }
 
-/* ./tries.c */
+/* ./trace/trace_tries.c */
 
-#undef _nc_add_to_try
-void   _nc_add_to_try(
-               struct tries **tree, 
-               char    *str, 
-               unsigned short code)
+#undef _nc_trace_tries
+void   _nc_trace_tries(
+               struct tries *tree)
                { /* void */ }
 
-#undef _nc_expand_try
-char   *_nc_expand_try(
-               struct tries *tree, 
-               unsigned short code, 
-               size_t  len)
-               { return(*(char **)0); }
-
-#undef _nc_remove_key
-int    _nc_remove_key(
-               struct tries **tree, 
-               unsigned short code)
-               { return(*(int *)0); }
-
 /* ./unctrl.c */
 
 #undef unctrl
 char   *unctrl(
                 chtype ch)
                { return(*(char **)0); }
+
+/* ./tinfo/write_entry.c */
+
+#undef _nc_set_writedir
+void   _nc_set_writedir(
+               char    *dir)
+               { /* void */ }
+
+#undef _nc_write_entry
+void   _nc_write_entry(
+               TERMTYPE *const tp)
+               { /* void */ }
+
+#undef _nc_tic_written
+int    _nc_tic_written(void)
+               { return(*(int *)0); }
index 321170cb2d5b6088aa94513e624b8d9bc8ccdc79..4b9c5dfecefb0775a6d45e442b09516cdf49e23e 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.42 1998/02/11 12:13:57 tom Exp $
+# $Id: modules,v 1.70 1999/10/23 12:39:12 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,1999 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"), #
 # authorization.                                                             #
 ##############################################################################
 #
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
 #
 
 @ base
 # Library objects
-hardscroll     lib             $(srcdir)
-hashmap                lib             $(srcdir)
-lib_acs        lib             $(srcdir)       ../include/term.h
-lib_addch      lib             $(srcdir)
-lib_addstr     lib             $(srcdir)
-lib_baudrate   lib             $(srcdir)       ../include/term.h
-lib_beep       lib             $(srcdir)       ../include/term.h
-lib_bkgd       lib             $(srcdir)
-lib_box        lib             $(srcdir)
-lib_chgat      lib             $(srcdir)
-lib_clear      lib             $(srcdir)
-lib_clearok    lib             $(srcdir)
-lib_clrbot     lib             $(srcdir)
-lib_clreol     lib             $(srcdir)
-lib_color      lib             $(srcdir)       ../include/term.h
-lib_data       lib             $(srcdir)
-lib_delch      lib             $(srcdir)
-lib_delwin     lib             $(srcdir)
-lib_doupdate   lib             $(srcdir)       ../include/term.h
-lib_echo       lib             $(srcdir)
-lib_endwin     lib             $(srcdir)
-lib_erase      lib             $(srcdir)
-lib_flash      lib             $(srcdir)       ../include/term.h
+hardscroll     lib             $(serial)
+hashmap                lib             $(serial)       ../include/term.h
+lib_addch      lib             $(base)
+lib_addstr     lib             $(base)
+lib_beep       lib             $(base)         ../include/term.h
+lib_bkgd       lib             $(base)
+lib_box        lib             $(base)
+lib_chgat      lib             $(base)
+lib_clear      lib             $(base)
+lib_clearok    lib             $(base)
+lib_clrbot     lib             $(base)
+lib_clreol     lib             $(base)
+lib_color      lib             $(base)         ../include/term.h
+lib_colorset   lib             $(base)
+lib_delch      lib             $(base)
+lib_delwin     lib             $(base)
+lib_echo       lib             $(base)
+lib_endwin     lib             $(base)         ../include/term.h
+lib_erase      lib             $(base)
+lib_flash      lib             $(base)         ../include/term.h
 lib_gen        lib             .               ../include/curses.h
-lib_getch      lib             $(srcdir)
-lib_getstr     lib             $(srcdir)       ../include/term.h
-lib_hline      lib             $(srcdir)
-lib_immedok    lib             $(srcdir)
-lib_inchstr    lib             $(srcdir)
-lib_initscr    lib             $(srcdir)
-lib_insch      lib             $(srcdir)
-lib_insdel     lib             $(srcdir)
-lib_insstr     lib             $(srcdir)
-lib_instr      lib             $(srcdir)
-lib_isendwin   lib             $(srcdir)
-lib_leaveok    lib             $(srcdir)
-lib_longname   lib             $(srcdir)
-lib_mouse      lib             $(srcdir)       ../include/term.h
-lib_move       lib             $(srcdir)
-lib_mvcur      lib             $(srcdir)       ../include/term.h
-lib_mvwin      lib             $(srcdir)
-lib_napms      lib             $(srcdir)
-lib_newterm    lib             $(srcdir)       ../include/term.h
-lib_newwin     lib             $(srcdir)
-lib_nl         lib             $(srcdir)
-lib_overlay    lib             $(srcdir)
-lib_pad        lib             $(srcdir)
-lib_print      lib             $(srcdir)       ../include/term.h
-lib_printw     lib             $(srcdir)
-lib_redrawln   lib             $(srcdir)
-lib_refresh    lib             $(srcdir)
-lib_restart    lib             $(srcdir)
-lib_scanw      lib             $(srcdir)
-lib_screen     lib             $(srcdir)       ../include/term.h
-lib_scroll     lib             $(srcdir)
-lib_scrollok   lib             $(srcdir)
-lib_scrreg     lib             $(srcdir)
-lib_set_term   lib             $(srcdir)       ../include/term.h
-lib_slk        lib             $(srcdir)       ../include/term.h
-lib_slkatrof   lib             $(srcdir)
-lib_slkatron   lib             $(srcdir)
-lib_slkatrset  lib             $(srcdir)
-lib_slkattr    lib             $(srcdir)
-lib_slkclear   lib             $(srcdir)
-lib_slkinit    lib             $(srcdir)
-lib_slklab     lib             $(srcdir)
-lib_slkrefr    lib             $(srcdir)       ../include/term.h
-lib_slkset     lib             $(srcdir)
-lib_slktouch   lib             $(srcdir)
-lib_touch      lib             $(srcdir)
-lib_traceatr   lib             $(srcdir)
-lib_tracedmp   lib             $(srcdir)
-lib_tracemse   lib             $(srcdir)
-lib_tstp       lib             $(srcdir)
-lib_ungetch    lib             $(srcdir)
-lib_vidattr    lib             $(srcdir)       ../include/term.h
-lib_vline      lib             $(srcdir)
-lib_wattroff   lib             $(srcdir)
-lib_wattron    lib             $(srcdir)
-lib_window     lib             $(srcdir)
-nc_panel       lib             $(srcdir)
-safe_sprintf   lib             $(srcdir)
-write_entry    lib             $(srcdir)       ../include/term.h $(INCDIR)/tic.h
+lib_getch      lib             $(base)
+lib_getstr     lib             $(base)         ../include/term.h
+lib_hline      lib             $(base)
+lib_immedok    lib             $(base)
+lib_inchstr    lib             $(base)
+lib_initscr    lib             $(base)         $(INCDIR)/tic.h
+lib_insch      lib             $(base)
+lib_insdel     lib             $(base)
+lib_insstr     lib             $(base)
+lib_instr      lib             $(base)
+lib_isendwin   lib             $(base)
+lib_leaveok    lib             $(base)
+lib_mouse      lib             $(base)         ../include/term.h
+lib_move       lib             $(base)
+lib_mvcur      lib             $(serial)       ../include/term.h $(INCDIR)/tic.h
+lib_mvwin      lib             $(base)
+lib_newterm    lib             $(base)         ../include/term.h
+lib_newwin     lib             $(base)
+lib_nl         lib             $(base)
+lib_overlay    lib             $(base)
+lib_pad        lib             $(base)
+lib_printw     lib             $(base)
+lib_redrawln   lib             $(base)
+lib_refresh    lib             $(base)
+lib_restart    lib             $(base)         ../include/term.h
+lib_scanw      lib             $(base)
+lib_screen     lib             $(base)         ../include/term.h
+lib_scroll     lib             $(base)
+lib_scrollok   lib             $(base)
+lib_scrreg     lib             $(base)
+lib_set_term   lib             $(base)         ../include/term.h
+lib_slk        lib             $(base)         ../include/term.h
+lib_slkatr_set lib             $(base)
+lib_slkatrof   lib             $(base)
+lib_slkatron   lib             $(base)
+lib_slkatrset  lib             $(base)
+lib_slkattr    lib             $(base)
+lib_slkclear   lib             $(base)
+lib_slkcolor   lib             $(base)
+lib_slkinit    lib             $(base)
+lib_slklab     lib             $(base)
+lib_slkrefr    lib             $(base)         ../include/term.h
+lib_slkset     lib             $(base)
+lib_slktouch   lib             $(base)
+lib_touch      lib             $(base)
+lib_traceatr   lib             $(trace)        ../include/term.h
+lib_tracedmp   lib             $(trace)
+lib_tracemse   lib             $(trace)
+lib_tstp       lib             $(serial)
+lib_ungetch    lib             $(base)
+lib_vidattr    lib             $(serial)       ../include/term.h
+lib_vline      lib             $(base)
+lib_wattroff   lib             $(base)
+lib_wattron    lib             $(base)
+lib_winch      lib             $(base)
+lib_window     lib             $(base)
+nc_panel       lib             $(base)
+safe_sprintf   lib             $(base)
+tty_update     lib             $(serial)       ../include/term.h
 
 # Modules for porting
-sigaction      lib             $(srcdir)
-vsscanf        lib             $(srcdir)
+memmove                lib             $(base)
+sigaction      lib             $(base)
+vsscanf        lib             $(base)
 
 # Extensions to the base library
 @ ext_funcs
-define_key     lib             $(srcdir)
+define_key     lib             $(base)
 expanded       lib             .
-keyok          lib             $(srcdir)
-lib_adabind    lib             $(srcdir)
-lib_dft_fgbg   lib             $(srcdir)
-lib_freeall    lib             $(srcdir)
-resizeterm     lib             $(srcdir)       ../include/term.h
-softscroll     lib             $(srcdir)
-wresize                lib             $(srcdir)       ../include/term.h
+keybound       lib             $(base)
+keyok          lib             $(base)
+lib_dft_fgbg   lib             $(base)         ../include/term.h
+lib_freeall    lib             $(base)
+lib_print      lib             $(tinfo)        ../include/term.h
+resizeterm     lib             $(base)         ../include/term.h
+trace_xnames   lib             $(trace)        ../include/term.h $(INCDIR)/term_entry.h
+tries          lib             $(base)
+version                lib             $(base)
+wresize                lib             $(base)         ../include/term.h
 
 # Support for termcap (and tic, etc.), which can be a separate library
 @ termlib
-alloc_entry    lib             $(srcdir)       ../include/term.h
-captoinfo      lib             $(srcdir)
+access         lib             $(tinfo)
+add_tries      lib             $(tinfo)
+alloc_entry    lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+alloc_ttype    lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+captoinfo      lib             $(tinfo)        $(INCDIR)/tic.h
 codes          lib             .
-comp_captab    lib             .               ../include/term.h ../include/hashsize.h
-comp_error     lib             $(srcdir)
-comp_expand    lib             $(srcdir)       $(INCDIR)/tic.h
-comp_hash      lib             $(srcdir)       ../include/term.h ../include/hashsize.h
-comp_parse     lib             $(srcdir)       ../include/term.h $(INCDIR)/tic.h
-comp_scan      lib             $(srcdir)
+comp_captab    lib             .               $(INCDIR)/tic.h ../include/term.h ../include/hashsize.h
+comp_error     lib             $(tinfo)        $(INCDIR)/tic.h
+comp_expand    lib             $(tinfo)        $(INCDIR)/tic.h
+comp_hash      lib             $(tinfo)        ../include/term.h $(INCDIR)/tic.h ../include/hashsize.h
+comp_parse     lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+comp_scan      lib             $(tinfo)        $(INCDIR)/tic.h
+doalloc                lib             $(tinfo)
 fallback       lib             .               ../include/term.h $(INCDIR)/tic.h
-lib_cur_term   lib             $(srcdir)
-lib_kernel     lib             $(srcdir)       ../include/term.h
+free_ttype     lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+getenv_num     lib             $(tinfo)
+home_terminfo  lib             $(tinfo)
+init_keytry    lib             $(tinfo)        ../include/term.h $(INCDIR)/tic.h init_keytry.h
+lib_acs        lib             $(tinfo)        ../include/term.h
+lib_baudrate   lib             $(tinfo)        ../include/term.h
+lib_cur_term   lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h
+lib_data       lib             $(tinfo)
+lib_has_cap    lib             $(tinfo)        ../include/term.h
+lib_kernel     lib             $(tinfo)        ../include/term.h
 lib_keyname    lib             .               ../include/term.h
-lib_options    lib             $(srcdir)       ../include/term.h keys.tries
-lib_raw        lib             $(srcdir)       ../include/term.h
-lib_termcap    lib             $(srcdir)       ../include/term.h
-lib_ti         lib             $(srcdir)       ../include/term.h
-lib_tparm      lib             $(srcdir)       ../include/term.h
-lib_tputs      lib             $(srcdir)       ../include/term.h
-lib_trace      lib             $(srcdir)
-lib_tracechr   lib             $(srcdir)
-lib_twait      lib             $(srcdir)
-name_match     lib             $(srcdir)       ../include/term.h $(INCDIR)/tic.h
+lib_longname   lib             $(tinfo)
+lib_napms      lib             $(tinfo)
+lib_options    lib             $(tinfo)        ../include/term.h
+lib_raw        lib             $(tinfo)        ../include/term.h
+lib_setup      lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h
+lib_termcap    lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+lib_termname   lib             $(tinfo)        $(INCDIR)/tic.h
+lib_ti         lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+lib_tparm      lib             $(tinfo)        ../include/term.h $(INCDIR)/tic.h
+lib_tputs      lib             $(tinfo)        ../include/term.h $(INCDIR)/tic.h
+lib_trace      lib             $(trace)        $(INCDIR)/tic.h
+lib_tracebits  lib             $(trace)        ../include/term.h
+lib_tracechr   lib             $(trace)
+lib_ttyflags   lib             $(tinfo)        ../include/term.h
+lib_twait      lib             $(serial)
+name_match     lib             $(tinfo)        ../include/term.h $(INCDIR)/tic.h
 names          lib             .
-parse_entry    lib             $(srcdir)       ../include/term.h ../include/parametrized.h
-read_entry     lib             $(srcdir)       ../include/term.h $(INCDIR)/tic.h
-read_termcap   lib             $(srcdir)       ../include/term.h
-lib_setup      lib             $(srcdir)       ../include/term.h
-trace_buf      lib             $(srcdir)
-tries          lib             $(srcdir)
+parse_entry    lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h ../include/parametrized.h
+read_entry     lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+read_termcap   lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+setbuf         lib             $(tinfo)
+trace_buf      lib             $(trace)
+trace_tries    lib             $(trace)
 unctrl         lib             .
+write_entry    lib             $(tinfo)        ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
diff --git a/ncurses/read_entry.c b/ncurses/read_entry.c
deleted file mode 100644 (file)
index c783d0a..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
- *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
- ****************************************************************************/
-
-
-
-/*
- *     read_entry.c -- Routine for reading in a compiled terminfo file
- *
- */
-
-#include <curses.priv.h>
-
-#if HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include <sys/stat.h>
-
-#include <term.h>
-#include <tic.h>
-
-MODULE_ID("$Id: read_entry.c,v 1.35 1998/02/11 12:13:59 tom Exp $")
-
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
-/*
- *     int
- *     _nc_read_file_entry(filename, ptr)
- *
- *     Read the compiled terminfo entry in the given file into the
- *     structure pointed to by ptr, allocating space for the string
- *     table.
- */
-
-#undef  BYTE
-#define BYTE(p,n)      (unsigned char)((p)[n])
-
-#define IS_NEG1(p)     ((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377))
-#define IS_NEG2(p)     ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
-#define LOW_MSB(p)     (BYTE(p,0) + 256*BYTE(p,1))
-
-static bool have_tic_directory = FALSE;
-
-/*
- * Record the "official" location of the terminfo directory, according to
- * the place where we're writing to, or the normal default, if not.
- */
-const char *_nc_tic_dir(const char *path)
-{
-       static const char *result = TERMINFO;
-
-       if (path != 0) {
-               result = path;
-               have_tic_directory = TRUE;
-       } else if (!have_tic_directory) {
-               char *envp;
-               if ((envp = getenv("TERMINFO")) != 0)
-                       return _nc_tic_dir(envp);
-       }
-       return result;
-}
-
-int _nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
-/* return 1 if read, 0 if not found or garbled */
-{
-    int                name_size, bool_count, num_count, str_count, str_size;
-    int                i, fd, numread;
-    char       buf[MAX_ENTRY_SIZE];
-
-    if ((fd = open(filename, O_RDONLY|O_BINARY)) < 0)
-       return(0);
-
-    T(("read terminfo %s", filename));
-
-    /* grab the header */
-    (void) read(fd, buf, 12);
-    if (LOW_MSB(buf) != MAGIC)
-    {
-       close(fd);
-       return(0);
-    }
-    name_size  = LOW_MSB(buf + 2);
-    bool_count = LOW_MSB(buf + 4);
-    num_count  = LOW_MSB(buf + 6);
-    str_count  = LOW_MSB(buf + 8);
-    str_size   = LOW_MSB(buf + 10);
-
-    if (str_size)
-    {
-       /* try to allocate space for the string table */
-       ptr->str_table = malloc((unsigned)str_size);
-       if (ptr->str_table == 0)
-       {
-           close(fd);
-           return(0);
-       }
-    }
-
-    /* grab the name */
-    read(fd, buf, min(MAX_NAME_SIZE, (unsigned)name_size));
-    buf[MAX_NAME_SIZE] = '\0';
-    ptr->term_names = calloc(strlen(buf) + 1, sizeof(char));
-    (void) strcpy(ptr->term_names, buf);
-    if (name_size > MAX_NAME_SIZE)
-       lseek(fd, (off_t) (name_size - MAX_NAME_SIZE), 1);
-
-    /* grab the booleans */
-    read(fd, ptr->Booleans, min(BOOLCOUNT, (unsigned)bool_count));
-    if (bool_count > BOOLCOUNT)
-       lseek(fd, (off_t) (bool_count - BOOLCOUNT), 1);
-    else
-       for (i=bool_count; i < BOOLCOUNT; i++)
-           ptr->Booleans[i] = 0;
-
-    /*
-     * If booleans end on an odd byte, skip it.  The machine they
-     * originally wrote terminfo on must have been a 16-bit
-     * word-oriented machine that would trap out if you tried a
-     * word access off a 2-byte boundary.
-     */
-    if ((name_size + bool_count) % 2 != 0)
-       read(fd, buf, 1);
-
-    /* grab the numbers */
-    (void) read(fd, buf, min(NUMCOUNT*2, (unsigned)num_count*2));
-    for (i = 0; i < min(num_count, NUMCOUNT); i++)
-    {
-       if (IS_NEG1(buf + 2*i))
-           ptr->Numbers[i] = ABSENT_NUMERIC;
-       else if (IS_NEG2(buf + 2*i))
-           ptr->Numbers[i] = CANCELLED_NUMERIC;
-       else
-           ptr->Numbers[i] = LOW_MSB(buf + 2*i);
-    }
-    if (num_count > NUMCOUNT)
-       lseek(fd, (off_t) (2 * (num_count - NUMCOUNT)), 1);
-    else
-       for (i=num_count; i < NUMCOUNT; i++)
-           ptr->Numbers[i] = ABSENT_NUMERIC;
-
-    if (str_count)
-    {
-       if (str_count*2 >= MAX_ENTRY_SIZE)
-       {
-           close(fd);
-           return(0);
-       }
-       /* grab the string offsets */
-       numread = read(fd, buf, (unsigned)(str_count*2));
-       if (numread < str_count*2)
-       {
-           close(fd);
-           return(0);
-       }
-       for (i = 0; i < numread/2; i++)
-       {
-           if (i >= STRCOUNT)
-               break;
-           if (IS_NEG1(buf + 2*i))
-               ptr->Strings[i] = ABSENT_STRING;
-           else if (IS_NEG2(buf + 2*i))
-               ptr->Strings[i] = CANCELLED_STRING;
-           else
-               ptr->Strings[i] = (LOW_MSB(buf+2*i) + ptr->str_table);
-       }
-    }
-
-    if (str_count > STRCOUNT)
-       lseek(fd, (off_t) (2 * (str_count - STRCOUNT)), 1);
-    else
-       for (i = str_count; i < STRCOUNT; i++)
-           ptr->Strings[i] = ABSENT_STRING;
-
-    if (str_size)
-    {
-       /* finally, grab the string table itself */
-       numread = read(fd, ptr->str_table, (unsigned)str_size);
-       if (numread != str_size)
-       {
-           close(fd);
-           return(0);
-       }
-    }
-
-    close(fd);
-    return(1);
-}
-
-/*
- * Build a terminfo pathname and try to read the data.  Returns 1 on success,
- * 0 on failure.
- */
-static int _nc_read_tic_entry(char *const filename,
-       const char *const dir, const char *ttn, TERMTYPE *const tp)
-{
-/* maximum safe length of terminfo root directory name */
-#define MAX_TPATH      (PATH_MAX - MAX_ALIAS - 6)
-
-       if (strlen(dir) > MAX_TPATH)
-               return 0;
-       (void) sprintf(filename, "%s/%s", dir, ttn);
-       return _nc_read_file_entry(filename, tp);
-}
-
-/*
- *     _nc_read_entry(char *tn, char *filename, TERMTYPE *tp)
- *
- *     Find and read the compiled entry for a given terminal type,
- *     if it exists.  We take pains here to make sure no combination
- *     of environment variables and terminal type name can be used to
- *     overrun the file buffer.
- */
-
-int _nc_read_entry(const char *const tn, char *const filename, TERMTYPE *const tp)
-{
-char           *envp;
-char           ttn[MAX_ALIAS + 3];
-
-       /* truncate the terminal name to prevent dangerous buffer airline */
-       (void) sprintf(ttn, "%c/%.*s", *tn, MAX_ALIAS, tn);
-
-       /* This is System V behavior, in conjunction with our requirements for
-        * writing terminfo entries.
-        */
-       if (have_tic_directory
-        && _nc_read_tic_entry(filename, _nc_tic_dir(0), ttn, tp) == 1)
-               return 1;
-
-       if ((envp = getenv("TERMINFO")) != 0
-        && _nc_read_tic_entry(filename, _nc_tic_dir(envp), ttn, tp) == 1)
-               return 1;
-
-       /* this is an ncurses extension */
-       if ((envp = getenv("HOME")) != 0)
-       {
-               char *home = malloc(strlen(envp) + strlen(PRIVATE_INFO) + 2);
-
-               (void) sprintf(home, PRIVATE_INFO, envp);
-               if (_nc_read_tic_entry(filename, home, ttn, tp) == 1) {
-                       free(home);
-                       return(1);
-               }
-               free(home);
-       }
-
-       /* this is an ncurses extension */
-       if ((envp = getenv("TERMINFO_DIRS")) != 0)
-       {
-           /* strtok modifies its argument, so we must copy */
-           char *list = strcpy(malloc(strlen(envp)+1), envp);
-           const char *cp = strtok(list, ":");
-           int code = 0;
-
-           do {
-               if (cp[0] == '\0')
-                   cp = TERMINFO;
-               if (_nc_read_tic_entry(filename, cp, ttn, tp) == 1) {
-                       code = 1;
-                       break;
-               }
-           } while
-               ((cp = strtok((char *)0, ":")) != 0);
-
-           free(list);
-           return(code);
-       }
-
-       /* try the system directory */
-       return(_nc_read_tic_entry(filename, TERMINFO, ttn, tp));
-}
-
diff --git a/ncurses/softscroll.c b/ncurses/softscroll.c
deleted file mode 100644 (file)
index 160d77c..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998 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: Thomas E. Dickey <dickey@clark.net> 1997                        *
- ****************************************************************************/
-#include <curses.priv.h>
-#include <term.h>
-
-MODULE_ID("$Id: softscroll.c,v 1.6 1998/02/11 12:13:56 tom Exp $")
-
-/*
- * Compute indices for the given WINDOW, preparing it for scrolling.
- *
- * TODO (this implementation is only for proof-of-concept)
- *     (a) ensure that curscr's oldindex values are cached properly so we
- *         don't have to recompute them on each pass.
- *     (b) investigate if there are gains to be made by iterating newscr's
- *         row indices outward from the current position, rather than by
- *         all rows.
- */
-static void compute_curscr(void)
-{
-       int y, x, z;
-       for (y = 0; y < screen_lines; y++) {
-               struct ldat *nline = &curscr->_line[y];
-               int found = y;
-               for (z = 0; z < y; z++) {
-                       int same = TRUE;
-                       struct ldat *oline = &curscr->_line[z];
-                       for (x = 0; x < screen_columns; x++) {
-                               if (nline->text[x] != oline->text[x]) {
-                                       same = FALSE;
-                                       break;
-                               }
-                       }
-                       if (same) {
-                               found = z;
-                               break;
-                       }
-               }
-               nline->oldindex = found;
-       }
-}
-
-static void compute_newscr(void)
-{
-       int y, x, z;
-       for (y = 0; y < screen_lines; y++) {
-               struct ldat *nline = &newscr->_line[y];
-               int found = _NEWINDEX;
-               for (z = 0; z < screen_lines; z++) {
-                       int same = TRUE;
-                       struct ldat *oline = &curscr->_line[z];
-                       for (x = 0; x < screen_columns; x++) {
-                               if (nline->text[x] != oline->text[x]) {
-                                       same = FALSE;
-                                       break;
-                               }
-                       }
-                       if (same) {
-                               found = z;
-                               break;
-                       }
-               }
-               nline->oldindex = found;
-       }
-}
-
-void
-_nc_setup_scroll(void)
-{
-#ifdef TRACE
-       if (_nc_tracing & TRACE_UPDATE) {
-               _tracef("_nc_setup_scroll");
-               _nc_linedump();
-       }
-#endif /* TRACE */
-       compute_curscr();
-       compute_newscr();
-#ifdef TRACE
-       if (_nc_tracing & TRACE_UPDATE) {
-               _tracef("..._nc_setup_scroll");
-               _nc_linedump();
-       }
-#endif
-}
-
-#define MINDISP                2
-#define NEWNUM(n)      newscr->_line[n].oldindex
-#define OLDNUM(n)      curscr->_line[n].oldindex
-
-/*
- * This performs essentially the same function as _nc_scroll_optimize(), but
- * uses different assumptions about the .oldindex values.  More than one line
- * may have the same .oldindex value.  We don't assume the values are ordered.
- *
- * (Neither algorithm takes into account the cost of constructing the lines
- * which are scrolled)
- */
-void
-_nc_perform_scroll(void)
-{
-       int disp;
-       int row;
-       int top, bottom, maxdisp;
-       int partial;
-
-       /*
-        * Find the top/bottom lines that are different between curscr and
-        * newscr, limited by the terminal's ability to scroll portions of the
-        * screen.
-        *
-        * FIXME: this doesn't account for special cases of insert/delete line.
-        */
-       if (change_scroll_region
-        && (scroll_forward || parm_index)
-        && (scroll_reverse || parm_rindex)) {
-               partial = TRUE;
-               for (row = 0, top = -1; row < screen_lines; row++) {
-                       if (OLDNUM(row) != NEWNUM(row)) {
-                               break;
-                       }
-                       top = row;
-               }
-               top++;
-
-               for (row = screen_lines-1, bottom = screen_lines; row >= 0; row--) {
-                       if (OLDNUM(row) != NEWNUM(row)) {
-                               break;
-                       }
-                       bottom = row;
-               }
-               bottom--;
-       } else {
-               partial = FALSE;
-               top     = 0;
-               bottom  = screen_lines - 1;
-       }
-
-       maxdisp = (bottom - top + 1) / 2;
-       if (maxdisp < MINDISP)
-               return;
-
-       T(("_nc_perform_scroll %d..%d (maxdisp=%d)", top, bottom, maxdisp));
-
-       for (disp = 1; disp < maxdisp; disp++) {
-               int n;
-               int fn, fwd = 0;
-               int bn, bak = 0;
-               int first, last;
-               int moved;
-
-               do {
-                       /* check for forward-movement */
-                       for (fn = top + disp; fn < screen_lines - disp; fn++) {
-                               int eql = 0;
-                               for (n = fn, fwd = 0; n < screen_lines; n++) {
-                                       if (NEWNUM(n) == _NEWINDEX
-                                        || NEWNUM(n) != OLDNUM(n-disp))
-                                               break;
-                                       fwd++;
-                                       if (OLDNUM(n) == NEWNUM(n))
-                                               eql++;
-                               }
-                               if (eql == fwd)
-                                       fwd = 0;
-                               if (fwd >= disp)
-                                       break;
-                               fwd = 0;
-                       }
-
-                       /* check for backward-movement */
-                       for (bn = top + disp; bn < screen_lines - disp; bn++) {
-                               int eql = 0;
-                               for (n = bn, bak = 0; n < screen_lines; n++) {
-                                       if (OLDNUM(n) == _NEWINDEX
-                                        || OLDNUM(n) != NEWNUM(n-disp))
-                                               break;
-                                       bak++;
-                                       if (OLDNUM(n-disp) == NEWNUM(n-disp))
-                                               eql++;
-                               } 
-                               if (eql == bak)
-                                       bak = 0;
-                               if (bak >= disp)
-                                       break;
-                               bak = 0;
-                       }
-
-                       /* choose only one, in case they overlap */
-                       if (fwd > bak) {
-                               first = fn - disp;
-                               last  = fn + fwd - 1;
-                               moved = -disp;
-                       } else if (bak) {
-                               first = bn - disp;
-                               last  = bn + bak - 1;
-                               moved = disp;
-                       } else {
-                               break;
-                       }
-
-                       TR(TRACE_UPDATE | TRACE_MOVE, ("scroll [%d, %d] by %d", first, last, moved));
-                       if (_nc_scrolln(moved, first, last, screen_lines - 1) == ERR)
-                       {
-                               TR(TRACE_UPDATE | TRACE_MOVE, ("unable to scroll"));
-                               break;
-                       }
-
-                       /* If the scrolled text was at one end of the range
-                        * of changed lines, adjust the loop limits.
-                        */
-                       if (first == top)
-                               top = last + 1;
-                       if (last == bottom)
-                               bottom = first - 1;
-
-                       maxdisp = (bottom - top + 1) / 2;
-                       if (maxdisp < MINDISP)
-                               return;
-
-                       /* In any case, mark the lines so we don't try to
-                        * use them in a subsequent scroll.
-                        */
-                       for (fn = first; fn <= last; fn++) {
-                               OLDNUM(fn) =
-                               NEWNUM(fn) = _NEWINDEX;
-                       }
-               } while (partial);
-       }
-}
similarity index 83%
rename from ncurses/MKcaptab.awk
rename to ncurses/tinfo/MKcaptab.awk
index 7c2b58ccc4f17b1530f43b37237534aa529f7921..910af94b7a48dfbc6b02e226a9dcf896da430995 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id: MKcaptab.awk,v 1.10 1997/09/11 17:40:46 tom Exp $
+# $Id: MKcaptab.awk,v 1.11 1999/01/24 02:46:42 Jeffrey.C.Honig Exp $
 AWK=${1-awk}
 DATA=${2-../include/Caps}
 
@@ -62,4 +62,9 @@ const struct name_table_entry *_nc_get_table(bool termcap)
 {
        return termcap ? _nc_cap_table: _nc_info_table ;
 }
+
+const struct name_table_entry * const * _nc_get_hash_table(bool termcap)
+{
+       return termcap ? _nc_cap_hash_table: _nc_info_hash_table ;
+}
 EOF
similarity index 89%
rename from ncurses/MKfallback.sh
rename to ncurses/tinfo/MKfallback.sh
index 4447611d69dd24de5c98f0dfe0f9986be50295e9..2a76f6239b2b755f680b746c3b7afcc5897155b9 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id: MKfallback.sh,v 1.8 1996/09/15 01:44:13 tom Exp $
+# $Id: MKfallback.sh,v 1.9 1999/06/15 22:57:45 tom Exp $
 #
 # MKfallback.sh -- create fallback table for entry reads
 #
@@ -24,7 +24,14 @@ then
 #include <tic.h>
 
 /* fallback entries for: $* */
+EOF
+       for x in $*
+       do
+               echo "/* $x */"
+               infocmp -E $x
+       done
 
+       cat <<EOF
 static const TERMTYPE fallbacks[$#] =
 {
 EOF
similarity index 93%
rename from ncurses/MKnames.awk
rename to ncurses/tinfo/MKnames.awk
index de1182272a0126ebbce97623bd10e6ded3efc53e..b97eccc15e389e83ef2dace6d3875f4732c6e415 100644 (file)
@@ -1,14 +1,10 @@
-# $Id: MKnames.awk,v 1.9 1997/10/18 19:57:23 tom Exp $
+# $Id: MKnames.awk,v 1.10 1999/01/16 23:36:34 tom Exp $
 BEGIN          {
                        print  "/* This file was generated by MKnames.awk */" > "namehdr"
                        print  ""                               > "namehdr"
                        print  "#include <curses.priv.h>"       > "namehdr"
                        print  ""                               > "namehdr"
-                       print  "#ifdef __cplusplus"             > "namehdr"
-                       print  "#define extern IT NCURSES_CONST char * const"   > "namehdr"
-                       print  "#else"                          > "namehdr"
                        print  "#define IT NCURSES_CONST char * const"  > "namehdr"
-                       print  "#endif"                         > "namehdr"
                        print  ""                               > "namehdr"
                        print  "#if BROKEN_LINKER"              > "namehdr"
                        print  "#include <term.h>"              > "namehdr"
diff --git a/ncurses/tinfo/README b/ncurses/tinfo/README
new file mode 100644 (file)
index 0000000..8b092c1
--- /dev/null
@@ -0,0 +1,8 @@
+-- $Id: README,v 1.1 1998/11/07 22:59:07 tom Exp $
+
+The files in this directory (tinfo) are those that support the terminfo
+database and interfaces for ncurses.  The terminfo library can be built
+separately, as a lower-level library for ncurses, but usually is bundled.
+
+In addition to the standard documented interfaces, ncurses uses internal
+functions which reside in tinfo to satisfy linkage requirements.
diff --git a/ncurses/tinfo/access.c b/ncurses/tinfo/access.c
new file mode 100644 (file)
index 0000000..54e5494
--- /dev/null
@@ -0,0 +1,55 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Thomas E. Dickey <dickey@clark.net> 1998                        *
+ ****************************************************************************/
+
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: access.c,v 1.1 1998/07/25 20:17:09 tom Exp $")
+
+int _nc_access(const char *path, int mode)
+{
+       if (access(path, mode) < 0) {
+               if ((mode & W_OK) != 0
+                && errno == ENOENT) {
+                       char head[PATH_MAX];
+                       char *leaf = strrchr(strcpy(head, path), '/');
+                       if (leaf == 0)
+                               leaf = head;
+                       *leaf = '\0';
+                       if (head == leaf)
+                               (void)strcpy(head, ".");
+                       return access(head, R_OK|W_OK|X_OK);
+               }
+               return -1;
+       }
+       return 0;
+}
similarity index 71%
rename from ncurses/tries.c
rename to ncurses/tinfo/add_tries.c
index 527388665818da84eec073069261398e34ebd44e..95a9e965c5a78e0e21b5796aa2b8f7570bfaa06f 100644 (file)
  ****************************************************************************/
 
 /****************************************************************************
- *  Author: Thomas E. Dickey <dickey@clark.net> 1997                        *
+ *  Author: Thomas E. Dickey <dickey@clark.net> 1998                        *
  ****************************************************************************/
 
 /*
-**     tries.c
+**     add_tries.c
 **
-**     Functions to manage the tree of partial-completions for keycodes.
+**     Add keycode/string to tries-tree.
 **
 */
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: tries.c,v 1.7 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: add_tries.c,v 1.1 1998/11/08 00:04:18 tom Exp $")
 
 #define SET_TRY(dst,src) if ((dst->ch = *src++) == 128) dst->ch = '\0'
 #define CMP_TRY(a,b) ((a)? (a == b) : (b == 128))
@@ -122,64 +122,3 @@ void _nc_add_to_try(struct tries **tree, char *str, unsigned short code)
        ptr->value = code;
        return;
 }
-
-/*
- * Expand a keycode into the string that it corresponds to, returning null if
- * no match was found, otherwise allocating a string of the result.
- */
-char *_nc_expand_try(struct tries *tree, unsigned short code, size_t len)
-{
-       struct tries *ptr = tree;
-       char *result = 0;
-
-       if (code != 0) {
-               while (ptr != 0) {
-                       if ((result = _nc_expand_try(ptr->child, code, len + 1)) != 0) {
-                               break;
-                       }
-                       if (ptr->value == code) {
-                               result = typeCalloc(char, len+2);
-                               break;
-                       }
-                       ptr = ptr->sibling;
-               }
-       }
-       if (result != 0) {
-               if ((result[len] = ptr->ch) == 0)
-                       *((unsigned char *)(result+len)) = 128;
-#ifdef TRACE
-               if (len == 0)
-                       _tracef("expand_key %s %s", _trace_key(code), _nc_visbuf(result));
-#endif
-       }
-       return result;
-}
-
-/*
- * Remove a code from the specified tree, freeing the unused nodes.  Returns
- * true if the code was found/removed.
- */
-int _nc_remove_key(struct tries **tree, unsigned short code)
-{
-       if (code == 0)
-               return FALSE;
-               
-       while (*tree != 0) {
-               if (_nc_remove_key(&(*tree)->child, code)) {
-                       return TRUE;
-               }
-               if ((*tree)->value == code) {
-                       if((*tree)->child) {
-                               /* don't cut the whole sub-tree */
-                               (*tree)->value = 0;
-                       } else {
-                               struct tries *to_free = *tree;
-                               *tree = (*tree)->sibling;
-                               free(to_free);
-                       }
-                       return TRUE;
-               }
-               tree = &(*tree)->sibling;
-       }
-       return FALSE;
-}
similarity index 63%
rename from ncurses/alloc_entry.c
rename to ncurses/tinfo/alloc_entry.c
index 169e71cdb2c79df57de7ca6dd5d69cc5b084c30f..570b48a9af8066b1296a2df0bce35450ad05ec22 100644 (file)
 /*
  * alloc_entry.c -- allocation functions for terminfo entries
  *
+ *     _nc_copy_entry()
  *     _nc_init_entry()
+ *     _nc_merge_entry()
  *     _nc_save_str()
- *     _nc_merge_entry();
- *     _nc_wrap_entry();
+ *     _nc_wrap_entry()
  *
  */
 
 #include <curses.priv.h>
 
 #include <tic.h>
-#include <term.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: alloc_entry.c,v 1.13 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: alloc_entry.c,v 1.30 1999/03/01 02:03:45 tom Exp $")
+
+#define ABSENT_OFFSET    -1
+#define CANCELLED_OFFSET -2
 
 #define MAX_STRTAB     4096    /* documented maximum entry size */
 
@@ -60,16 +63,42 @@ void _nc_init_entry(TERMTYPE *const tp)
 {
 int    i;
 
-       for (i=0; i < BOOLCOUNT; i++)
-                   tp->Booleans[i] = FALSE;
+#if NCURSES_XNAMES
+       tp->num_Booleans = BOOLCOUNT;
+       tp->num_Numbers  = NUMCOUNT;
+       tp->num_Strings  = STRCOUNT;
+       tp->ext_Booleans = 0;
+       tp->ext_Numbers  = 0;
+       tp->ext_Strings  = 0;
+#endif
+       if (tp->Booleans == 0)
+           tp->Booleans = typeMalloc(char,BOOLCOUNT);
+       if (tp->Numbers == 0)
+           tp->Numbers = typeMalloc(short,NUMCOUNT);
+       if (tp->Strings == 0)
+           tp->Strings = typeMalloc(char *,STRCOUNT);
+
+       for_each_boolean(i,tp)
+               tp->Booleans[i] = FALSE;
+
+       for_each_number(i,tp)
+               tp->Numbers[i] = ABSENT_NUMERIC;
+
+       for_each_string(i,tp)
+               tp->Strings[i] = ABSENT_STRING;
 
-       for (i=0; i < NUMCOUNT; i++)
-                   tp->Numbers[i] = -1;
+       next_free = 0;
+}
 
-       for (i=0; i < STRCOUNT; i++)
-                   tp->Strings[i] = (char *)NULL;
+ENTRY *_nc_copy_entry(ENTRY *oldp)
+{
+       ENTRY *newp = typeCalloc(ENTRY,1);
 
-       next_free = 0;
+       if (newp != 0) {
+           *newp = *oldp;
+           _nc_copy_termtype(&(newp->tterm), &(oldp->tterm));
+       }
+       return newp;
 }
 
 char *_nc_save_str(const char *const string)
@@ -91,42 +120,64 @@ size_t     len = strlen(string) + 1;
 void _nc_wrap_entry(ENTRY *const ep)
 /* copy the string parts to allocated storage, preserving pointers to it */
 {
-int    offsets[STRCOUNT], useoffsets[MAX_USES];
+int    offsets[MAX_ENTRY_SIZE/2], useoffsets[MAX_USES];
 int    i, n;
-
-       n = ep->tterm.term_names - stringbuf;
-       for (i=0; i < STRCOUNT; i++)
-               if (ep->tterm.Strings[i] == (char *)NULL)
-                       offsets[i] = -1;
-               else if (ep->tterm.Strings[i] == CANCELLED_STRING)
-                       offsets[i] = -2;
+TERMTYPE *tp = &(ep->tterm);
+
+       n = tp->term_names - stringbuf;
+       for_each_string(i, &(ep->tterm)) {
+               if (tp->Strings[i] == ABSENT_STRING)
+                       offsets[i] = ABSENT_OFFSET;
+               else if (tp->Strings[i] == CANCELLED_STRING)
+                       offsets[i] = CANCELLED_OFFSET;
                else
-                       offsets[i] = ep->tterm.Strings[i] - stringbuf;
+                       offsets[i] = tp->Strings[i] - stringbuf;
+       }
 
-       for (i=0; i < ep->nuses; i++)
-               if (ep->uses[i].parent == (void *)NULL)
-                       useoffsets[i] = -1;
+       for (i=0; i < ep->nuses; i++) {
+               if (ep->uses[i].parent == (void *)0)
+                       useoffsets[i] = ABSENT_OFFSET;
                else
                        useoffsets[i] = (char *)(ep->uses[i].parent) - stringbuf;
+       }
 
-       if ((ep->tterm.str_table = (char *)malloc(next_free)) == (char *)NULL)
+       if ((tp->str_table = typeMalloc(char, next_free)) == (char *)0)
                _nc_err_abort("Out of memory");
-       (void) memcpy(ep->tterm.str_table, stringbuf, next_free);
-
-       ep->tterm.term_names = ep->tterm.str_table + n;
-       for (i=0; i < STRCOUNT; i++)
-               if (offsets[i] == -1)
-                       ep->tterm.Strings[i] = (char *)NULL;
-               else if (offsets[i] == -2)
-                       ep->tterm.Strings[i] = CANCELLED_STRING;
+       (void) memcpy(tp->str_table, stringbuf, next_free);
+
+       tp->term_names = tp->str_table + n;
+       for_each_string(i, &(ep->tterm)) {
+               if (offsets[i] == ABSENT_OFFSET)
+                       tp->Strings[i] = ABSENT_STRING;
+               else if (offsets[i] == CANCELLED_OFFSET)
+                       tp->Strings[i] = CANCELLED_STRING;
                else
-                       ep->tterm.Strings[i] = ep->tterm.str_table + offsets[i];
+                       tp->Strings[i] = tp->str_table + offsets[i];
+       }
 
-       for (i=0; i < ep->nuses; i++)
-               if (useoffsets[i] == -1)
-                       ep->uses[i].parent = (void *)NULL;
+#if NCURSES_XNAMES
+       if ((n = NUM_EXT_NAMES(tp)) != 0) {
+               unsigned length = 0;
+               for (i = 0; i < n; i++) {
+                       length += strlen(tp->ext_Names[i]) + 1;
+                       offsets[i] = tp->ext_Names[i] - stringbuf;
+               }
+               if ((tp->ext_str_table = typeMalloc(char, length)) == 0)
+                       _nc_err_abort("Out of memory");
+               for (i = 0, length = 0; i < n; i++) {
+                       tp->ext_Names[i] = tp->ext_str_table + length;
+                       strcpy(tp->ext_Names[i], stringbuf + offsets[i]);
+                       length += strlen(tp->ext_Names[i]) + 1;
+               }
+       }
+#endif
+
+       for (i=0; i < ep->nuses; i++) {
+               if (useoffsets[i] == ABSENT_OFFSET)
+                       ep->uses[i].parent = (void *)0;
                else
-                       ep->uses[i].parent = (char *)(ep->tterm.str_table + useoffsets[i]);
+                       ep->uses[i].parent = (char *)(tp->str_table + useoffsets[i]);
+       }
 }
 
 void _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
@@ -134,7 +185,10 @@ void _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
 {
     int        i;
 
-    for (i=0; i < BOOLCOUNT; i++)
+#if NCURSES_XNAMES
+    _nc_align_termtype(to, from);
+#endif
+    for_each_boolean(i, from)
     {
        int     mergebool = from->Booleans[i];
 
@@ -144,7 +198,7 @@ void _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
            to->Booleans[i] = mergebool;
     }
 
-    for (i=0; i < NUMCOUNT; i++)
+    for_each_number(i, from)
     {
        int     mergenum = from->Numbers[i];
 
@@ -159,7 +213,7 @@ void _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
      * storage.  This is OK right now, but will be a problem if we
      * we ever want to deallocate entries.
      */
-    for (i=0; i < STRCOUNT; i++)
+    for_each_string(i, from)
     {
        char    *mergestring = from->Strings[i];
 
@@ -169,4 +223,3 @@ void _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
            to->Strings[i] = mergestring;
     }
 }
-
diff --git a/ncurses/tinfo/alloc_ttype.c b/ncurses/tinfo/alloc_ttype.c
new file mode 100644 (file)
index 0000000..a1bf9b0
--- /dev/null
@@ -0,0 +1,461 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999                        *
+ ****************************************************************************/
+
+
+/*
+ * align_ttype.c --  functions for TERMTYPE
+ *
+ *     _nc_align_termtype()
+ *     _nc_copy_termtype()
+ *
+ */
+
+#include <curses.priv.h>
+
+#include <tic.h>
+#include <term_entry.h>
+
+MODULE_ID("$Id: alloc_ttype.c,v 1.6 1999/03/01 22:10:44 tom Exp $")
+
+#if NCURSES_XNAMES
+/*
+ * Merge the a/b lists into dst.  Both a/b are sorted (see _nc_extend_names()),
+ * so we do not have to worry about order dependencies.
+ */
+static int merge_names(char **dst, char **a, int na, char **b, int nb)
+{
+    int n = 0;
+    while (na && nb) {
+       int cmp = strcmp(*a, *b);
+       if (cmp < 0) {
+           dst[n++] = *a++;
+           na--;
+       } else if (cmp > 0) {
+           dst[n++] = *b++;
+           nb--;
+       } else if (cmp == 0) {
+           dst[n++] = *a;
+           a++, b++;
+           na--, nb--;
+       }
+    }
+    while (na-- > 0) {
+       dst[n++] = *a++;
+    }
+    while (nb-- > 0) {
+       dst[n++] = *b++;
+    }
+    DEBUG(4, ("merge_names -> %d", n));
+    return n;
+}
+
+static bool find_name(char **table, int length, char *name)
+{
+    while (length-- > 0) {
+       if (!strcmp(*table++, name)) {
+           DEBUG(4, ("found name '%s'", name));
+           return TRUE;
+       }
+    }
+    DEBUG(4, ("did not find name '%s'", name));
+    return FALSE;
+}
+
+static void realign_data(TERMTYPE *to, char **ext_Names, int ext_Booleans, int ext_Numbers, int ext_Strings)
+{
+    int n, m, base;
+    int limit = (to->ext_Booleans + to->ext_Numbers + to->ext_Strings);
+
+    if (to->ext_Booleans != ext_Booleans) {
+       to->num_Booleans += (ext_Booleans - to->ext_Booleans);
+       to->Booleans = typeRealloc(char, to->num_Booleans, to->Booleans);
+       for (n = to->ext_Booleans-1,
+            m = ext_Booleans-1,
+            base = to->num_Booleans - (m+1); m >= 0; m--) {
+           if (find_name(to->ext_Names, limit, ext_Names[m])) {
+               to->Booleans[base + m] = to->Booleans[base + n--];
+           } else {
+               to->Booleans[base + m] = FALSE;
+           }
+       }
+       to->ext_Booleans = ext_Booleans;
+    }
+    if (to->ext_Numbers != ext_Numbers) {
+       to->num_Numbers += (ext_Numbers - to->ext_Numbers);
+       to->Numbers = typeRealloc(short, to->num_Numbers, to->Numbers);
+       for (n = to->ext_Numbers-1,
+            m = ext_Numbers-1,
+            base = to->num_Numbers - (m+1); m >= 0; m--) {
+           if (find_name(to->ext_Names, limit, ext_Names[m+ext_Booleans])) {
+               to->Numbers[base + m] = to->Numbers[base + n--];
+           } else {
+               to->Numbers[base + m] = ABSENT_NUMERIC;
+           }
+       }
+       to->ext_Numbers  = ext_Numbers;
+    }
+    if (to->ext_Strings != ext_Strings) {
+       to->num_Strings += (ext_Strings - to->ext_Strings);
+       to->Strings = typeRealloc(char*, to->num_Strings, to->Strings);
+       for (n = to->ext_Strings-1,
+            m = ext_Strings-1,
+            base = to->num_Strings - (m+1); m >= 0; m--) {
+           if (find_name(to->ext_Names, limit, ext_Names[m+ext_Booleans+ext_Numbers])) {
+               to->Strings[base + m] = to->Strings[base + n--];
+           } else {
+               to->Strings[base + m] = ABSENT_STRING;
+           }
+       }
+       to->ext_Strings = ext_Strings;
+    }
+}
+
+/*
+ * Returns the first index in ext_Names[] for the given token-type
+ */
+static int _nc_first_ext_name(TERMTYPE *tp, int token_type)
+{
+    int first;
+
+    switch (token_type) {
+    case BOOLEAN:
+       first = 0;
+       break;
+    case NUMBER:
+       first = tp->ext_Booleans;
+       break;
+    case STRING:
+       first = tp->ext_Booleans + tp->ext_Numbers;
+       break;
+    default:
+       first = 0;
+       break;
+    }
+    return first;
+}
+
+/*
+ * Returns the last index in ext_Names[] for the given token-type
+ */
+static int _nc_last_ext_name(TERMTYPE *tp, int token_type)
+{
+    int last;
+
+    switch (token_type) {
+    case BOOLEAN:
+       last  = tp->ext_Booleans;
+       break;
+    case NUMBER:
+       last  = tp->ext_Booleans + tp->ext_Numbers;
+       break;
+    default:
+    case STRING:
+       last  = NUM_EXT_NAMES(tp);
+       break;
+    }
+    return last;
+}
+
+/*
+ * Lookup an entry from extended-names, returning -1 if not found
+ */
+static int _nc_find_ext_name(TERMTYPE *tp, char *name, int token_type)
+{
+    unsigned j;
+    unsigned first = _nc_first_ext_name(tp, token_type);
+    unsigned last  = _nc_last_ext_name(tp, token_type);
+
+    for (j = first; j < last; j++) {
+       if (!strcmp(name, tp->ext_Names[j])) {
+           return j;
+       }
+    }
+    return -1;
+}
+
+/*
+ * Translate an index into ext_Names[] into the corresponding index into data
+ * (e.g., Booleans[]).
+ */
+static int _nc_ext_data_index(TERMTYPE *tp, int n, int token_type)
+{
+    switch (token_type) {
+    case BOOLEAN:
+       n += (tp->num_Booleans - tp->ext_Booleans);
+       break;
+    case NUMBER:
+       n += (tp->num_Numbers - tp->ext_Numbers)
+          - (tp->ext_Booleans);
+       break;
+    default:
+    case STRING:
+       n += (tp->num_Strings - tp->ext_Strings)
+          - (tp->ext_Booleans + tp->ext_Numbers);
+    }
+    return n;
+}
+
+/*
+ * Adjust tables to remove (not free) an extended name and its corresponding
+ * data.
+ */
+static void _nc_del_ext_name(TERMTYPE *tp, char *name, int token_type)
+{
+    int j;
+    int first, last;
+
+    if ((first = _nc_find_ext_name(tp, name, token_type)) >= 0) {
+       last = NUM_EXT_NAMES(tp) - 1;
+       for (j = first; j < last; j++) {
+           tp->ext_Names[j] = tp->ext_Names[j+1];
+       }
+       first = _nc_ext_data_index(tp, first, token_type);
+       switch (token_type) {
+       case BOOLEAN:
+           last = tp->num_Booleans - 1;
+           for (j = first; j < last; j++)
+               tp->Booleans[j] = tp->Booleans[j+1];
+           tp->ext_Booleans -= 1;
+           tp->num_Booleans -= 1;
+           break;
+       case NUMBER:
+           last = tp->num_Numbers - 1;
+           for (j = first; j < last; j++)
+               tp->Numbers[j] = tp->Numbers[j+1];
+           tp->ext_Numbers -= 1;
+           tp->num_Numbers -= 1;
+           break;
+       case STRING:
+           last = tp->num_Strings - 1;
+           for (j = first; j < last; j++)
+               tp->Strings[j] = tp->Strings[j+1];
+           tp->ext_Strings -= 1;
+           tp->num_Strings -= 1;
+           break;
+       }
+    }
+}
+
+/*
+ * Adjust tables to insert an extended name, making room for new data.  The
+ * index into the corresponding data array is returned.
+ */
+static int _nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
+{
+    unsigned first = _nc_first_ext_name(tp, token_type);
+    unsigned last  = _nc_last_ext_name(tp, token_type);
+    unsigned total = NUM_EXT_NAMES(tp) + 1;
+    unsigned j, k;
+
+    for (j = first; j < last; j++) {
+       int cmp = strcmp(name, tp->ext_Names[j]);
+       if (cmp == 0)
+           /* already present */
+           return _nc_ext_data_index(tp, j, token_type);
+       if (cmp < 0) {
+           break;
+       }
+    }
+
+    tp->ext_Names = typeRealloc(char *, total, tp->ext_Names);
+    for (k = total-1; k > j; k--)
+       tp->ext_Names[k] = tp->ext_Names[k-1];
+    tp->ext_Names[j] = name;
+    j = _nc_ext_data_index(tp, j, token_type);
+
+    switch (token_type) {
+    case BOOLEAN:
+       tp->ext_Booleans += 1;
+       tp->num_Booleans += 1;
+       tp->Booleans = typeRealloc(char, tp->num_Booleans, tp->Booleans);
+       for (k = tp->num_Booleans-1; k > j; k--)
+           tp->Booleans[k] = tp->Booleans[k-1];
+       break;
+    case NUMBER:
+       tp->ext_Numbers += 1;
+       tp->num_Numbers += 1;
+       tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
+       for (k = tp->num_Numbers-1; k > j; k--)
+           tp->Numbers[k] = tp->Numbers[k-1];
+       break;
+    case STRING:
+       tp->ext_Strings += 1;
+       tp->num_Strings += 1;
+       tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
+       for (k = tp->num_Strings-1; k > j; k--)
+           tp->Strings[k] = tp->Strings[k-1];
+       break;
+    }
+    return j;
+}
+
+/*
+ * Look for strings that are marked cancelled, which happen to be the same name
+ * as a boolean or number.  We'll get this as a special case when we get a
+ * cancellation of a name that is inherited from another entry.
+ */
+static void adjust_cancels(TERMTYPE *to, TERMTYPE *from)
+{
+    int first = to->ext_Booleans + to->ext_Numbers;
+    int last  = first + to->ext_Strings;
+    int j, k;
+
+    for (j = first; j < last; ) {
+       char *name = to->ext_Names[j];
+       unsigned j_str = to->num_Strings - first - to->ext_Strings;
+
+       if (to->Strings[j + j_str] == CANCELLED_STRING) {
+           if ((k = _nc_find_ext_name(from, to->ext_Names[j], BOOLEAN)) >= 0) {
+               _nc_del_ext_name(to, name, STRING);
+               k = _nc_ins_ext_name(to, name, BOOLEAN);
+               to->Booleans[k] = FALSE;
+           } else if ((k = _nc_find_ext_name(from, to->ext_Names[j], NUMBER)) >= 0) {
+               _nc_del_ext_name(to, name, STRING);
+               k = _nc_ins_ext_name(to, name, NUMBER);
+               to->Numbers[k] = CANCELLED_NUMERIC;
+           }
+       } else {
+           j++;
+       }
+    }
+}
+
+void _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
+{
+    int na = NUM_EXT_NAMES(to);
+    int nb = NUM_EXT_NAMES(from);
+    int n;
+    bool same;
+    char **ext_Names;
+    int ext_Booleans, ext_Numbers, ext_Strings;
+
+    DEBUG(2, ("align_termtype to(%d:%s), from(%d:%s)", na, to->term_names, nb, from->term_names));
+
+    if (na != 0 || nb != 0) {
+       if ((na == nb)          /* check if the arrays are equivalent */
+        && (to->ext_Booleans == from->ext_Booleans)
+        && (to->ext_Numbers  == from->ext_Numbers)
+        && (to->ext_Strings  == from->ext_Strings)) {
+           for (n = 0, same = TRUE; n < na; n++) {
+               if (strcmp(to->ext_Names[n], from->ext_Names[n])) {
+                   same = FALSE;
+                   break;
+               }
+           }
+           if (same)
+               return;
+       }
+       /*
+        * This is where we pay for having a simple extension representation. 
+        * Allocate a new ext_Names array and merge the two ext_Names arrays
+        * into it, updating to's counts for booleans, etc.  Fortunately we do
+        * this only for the terminfo compiler (tic) and comparer (infocmp).
+        */
+       ext_Names = typeMalloc(char *, na+nb);
+
+       if (to->ext_Strings && (from->ext_Booleans + from->ext_Numbers))
+           adjust_cancels(to, from);
+
+       if (from->ext_Strings && (to->ext_Booleans + to->ext_Numbers))
+           adjust_cancels(from, to);
+
+       ext_Booleans = merge_names(ext_Names,
+                                   to->ext_Names,
+                                   to->ext_Booleans,
+                                   from->ext_Names,
+                                   from->ext_Booleans);
+       ext_Numbers  = merge_names(ext_Names + ext_Booleans,
+                                   to->ext_Names
+                                   + to->ext_Booleans,
+                                   to->ext_Numbers,
+                                   from->ext_Names
+                                   + from->ext_Booleans,
+                                   from->ext_Numbers);
+       ext_Strings  = merge_names(ext_Names + ext_Numbers + ext_Booleans,
+                                   to->ext_Names
+                                   + to->ext_Booleans
+                                   + to->ext_Numbers,
+                                   to->ext_Strings,
+                                   from->ext_Names
+                                   + from->ext_Booleans
+                                   + from->ext_Numbers,
+                                   from->ext_Strings);
+       /*
+        * Now we must reallocate the Booleans, etc., to allow the data to be
+        * overlaid.
+        */
+       if (na != (ext_Booleans + ext_Numbers + ext_Strings)) {
+           realign_data(to, ext_Names, ext_Booleans, ext_Numbers, ext_Strings);
+           free(to->ext_Names);
+           to->ext_Names = ext_Names;
+           DEBUG(2, ("realigned %d extended names for '%s' (to)", NUM_EXT_NAMES(to), to->term_names));
+       }
+       if (nb != (ext_Booleans + ext_Numbers + ext_Strings)) {
+           nb = (ext_Booleans + ext_Numbers + ext_Strings);
+           realign_data(from, ext_Names, ext_Booleans, ext_Numbers, ext_Strings);
+           from->ext_Names = typeRealloc(char *, nb, from->ext_Names);
+           memcpy(from->ext_Names, ext_Names, sizeof(char *) * nb);
+           DEBUG(2, ("realigned %d extended names for '%s' (from)", NUM_EXT_NAMES(from), from->term_names));
+       }
+    }
+}
+#endif
+
+void _nc_copy_termtype(TERMTYPE *dst, TERMTYPE *src)
+{
+    int i;
+
+    *dst = *src;       /* ...to copy the sizes and string-tables */
+    dst->Booleans = typeMalloc(char,   NUM_BOOLEANS(dst));
+    dst->Numbers  = typeMalloc(short,  NUM_NUMBERS(dst));
+    dst->Strings  = typeMalloc(char *, NUM_STRINGS(dst));
+
+    /* FIXME: use memcpy for these and similar loops */
+    for_each_boolean(i,dst)
+       dst->Booleans[i] = src->Booleans[i];
+    for_each_number(i,dst)
+       dst->Numbers[i] = src->Numbers[i];
+    for_each_string(i,dst)
+       dst->Strings[i] = src->Strings[i];
+
+    /* FIXME: we probably should also copy str_table and ext_str_table,
+     * but tic and infocmp are not written to exploit that (yet).
+     */
+
+#if NCURSES_XNAMES
+    if ((i = NUM_EXT_NAMES(src)) != 0) {
+       dst->ext_Names = typeMalloc(char *, i);
+       memcpy(dst->ext_Names, src->ext_Names, i * sizeof(char *));
+    }
+#endif
+
+}
similarity index 98%
rename from ncurses/captoinfo.c
rename to ncurses/tinfo/captoinfo.c
index 387fabd36888db434db4e0fd8c5a9a50d10ca731..d0881ecd47921728fa1aaf8435a4fd80212c7af5 100644 (file)
@@ -94,7 +94,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: captoinfo.c,v 1.17 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: captoinfo.c,v 1.24 1999/07/24 20:06:13 tom Exp $")
 
 #define MAX_PUSHED     16      /* max # args we can push onto the stack */
 #define MAX_ENTRY      2048    /* maximum chars in a translated capability */
@@ -115,7 +115,7 @@ static char *init_string(void)
 /* initialize 'my_string', 'my_length' */
 {
        if (my_string == 0)
-               my_string = malloc(my_length = 256);
+               my_string = typeMalloc(char, my_length = 256);
        if (my_string == 0)
            _nc_err_abort("Out of memory");
 
@@ -128,7 +128,9 @@ static char *save_string(char *d, const char *const s)
        size_t have = (d - my_string);
        size_t need = have + strlen(s) + 2;
        if (need > my_length) {
-               my_string = realloc(my_string, my_length = (need + need));
+               my_string = (char *)realloc(my_string, my_length = (need + need));
+               if (my_string == 0)
+                   _nc_err_abort("Out of memory");
                d = my_string + have;
        }
        (void) strcpy(d, s);
@@ -154,11 +156,12 @@ static void push(void)
 static void pop(void)
 /* pop the top of the stack into onstack */
 {
-    if (stackptr == 0)
+    if (stackptr == 0) {
        if (onstack == 0)
            _nc_warning("I'm confused");
        else
            onstack = 0;
+    }
     else
        onstack = stack[--stackptr];
     param++;
@@ -374,13 +377,14 @@ int const parametrized)           /* do % translations if 1, pad translations if >=0 */
                        *dp++ = '%'; *dp++ = '/';
                        break;
                    case '=':
-                       if (seenr)
+                       if (seenr) {
                            if (param == 1)
                                onstack = 2;
                            else if (param == 2)
                                onstack = 1;
                            else
                                onstack = param;
+                       }
                        else
                            onstack = param;
                        break;
@@ -423,7 +427,7 @@ int const parametrized)             /* do % translations if 1, pad translations if >=0 */
                pop();
                break;
            case '0':   /* not clear any of the historical termcaps did this */
-               if (*s == '3')
+               if (*s == '3')
                    goto see03;
                else if (*s != '2')
                    goto invalid;
@@ -582,7 +586,7 @@ int const parametrized)             /* do % translations if 1, pad translations if >=0 */
     for (; *str && str != trimmed; str++)
     {
        int     c1, c2;
-       char    *cp;
+       char    *cp = 0;
 
        if (str[0] == '\\' && (str[1] == '^' || str[1] == ','))
        {
@@ -600,9 +604,7 @@ int const parametrized)             /* do % translations if 1, pad translations if >=0 */
        else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1,&c2) == 2)
        {
            str = strchr(str, ';');
-           (void) sprintf(temp, "%%>");
-           (void) strcat(temp, unctrl(c1));
-           (void) strcat(temp, unctrl(c2));
+           (void) sprintf(temp, "%%>%s%s", unctrl(c1), unctrl(c2));
            bufptr = save_string(bufptr, temp);
        }
        else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1,&ch2) == 2)
similarity index 93%
rename from ncurses/comp_error.c
rename to ncurses/tinfo/comp_error.c
index 8517e9a3d57df547fb8540a113273e94b5a39a50..2b2d503013c09a4a09996fc5678f6e32c9e54b78 100644 (file)
@@ -41,7 +41,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: comp_error.c,v 1.14 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: comp_error.c,v 1.16 1998/08/01 23:39:51 tom Exp $")
 
 bool   _nc_suppress_warnings;
 int    _nc_curr_line;          /* current line # in input */
@@ -118,5 +118,15 @@ va_list argp;
        vfprintf (stderr, fmt, argp);
        fprintf (stderr, "\n");
        va_end(argp);
+
+       /* If we're debugging, try to show where the problem occurred - this
+        * will dump core.
+        */
+#if defined(TRACE) || !defined(NDEBUG)
        abort();
+#else
+       /* Dumping core in production code is not a good idea.
+        */
+       exit(EXIT_FAILURE);
+#endif
 }
similarity index 63%
rename from ncurses/comp_expand.c
rename to ncurses/tinfo/comp_expand.c
index 6cdf188ad56204f957a5b0309fa7a470b7a0f4ee..eb552fadabda0d524ad94d4c949b3ff1ed8c515e 100644 (file)
@@ -35,7 +35,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: comp_expand.c,v 1.4 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: comp_expand.c,v 1.11 1999/03/07 00:51:07 tom Exp $")
 
 static int trailing_spaces(const char *src)
 {
@@ -49,7 +49,7 @@ static int trailing_spaces(const char *src)
 #define REALCTL(s) (CHAR_OF(s) < 127 && iscntrl(CHAR_OF(s)))
 #define REALPRINT(s) (CHAR_OF(s) < 127 && isprint(CHAR_OF(s)))
 
-char *_nc_tic_expand(const char *srcp, bool tic_format)
+char *_nc_tic_expand(const char *srcp, bool tic_format, int numbers)
 {
 static char *  buffer;
 static size_t  length;
@@ -60,62 +60,114 @@ bool               islong = (strlen(str) > 3);
 size_t         need = (2 + strlen(str)) * 4;
 int            ch;
 
-       if (buffer == 0) {
-               buffer = malloc(length = need);
-       } else if (need > length) {
-               buffer = realloc(buffer, length = need);
+       if (buffer == 0 || need > length) {
+               if ((buffer = typeRealloc(char, length = need, buffer)) == 0)
+                       return 0;
        }
 
-       bufp = 0;
-       ptr = str;
-       while ((ch = (*str & 0xff)) != 0) {
+       bufp = 0;
+       ptr = str;
+       while ((ch = (*str & 0xff)) != 0) {
                if (ch == '%' && REALPRINT(str+1)) {
-                       buffer[bufp++] = *str++;
-                       buffer[bufp++] = *str;
+                       buffer[bufp++] = *str++;
+                       /*
+                        * Though the character literals are more compact, most
+                        * terminal descriptions use numbers and are not easy
+                        * to read in character-literal form.
+                        */
+                       switch (numbers) {
+                       case -1:
+                           if (str[0] == S_QUOTE
+                            && str[1] != '\\'
+                            && REALPRINT(str+1)
+                            && str[2] == S_QUOTE) {
+                               sprintf(buffer+bufp, "{%d}", str[1]);
+                               bufp += strlen(buffer+bufp);
+                               str += 2;
+                           } else {
+                               buffer[bufp++] = *str;
+                           }
+                           break;
+                       /*
+                        * If we have a "%{number}", try to translate it into
+                        * a "%'char'" form, since that will run a little faster
+                        * when we're interpreting it.  Also, having one form
+                        * for the constant makes it simpler to compare terminal
+                        * descriptions.
+                        */
+                       case 1:
+                           if (str[0] == L_BRACE
+                            && isdigit(str[1])) {
+                               char *dst = 0;
+                               long value = strtol(str+1, &dst, 0);
+                               if (dst != 0
+                                && *dst == R_BRACE
+                                && value < 127
+                                && value != '\\'       /* FIXME */
+                                && isprint((int)value)) {
+                                       ch = (int)value;
+                                       buffer[bufp++] = S_QUOTE;
+                                       if (ch == '\\'
+                                        || ch == S_QUOTE)
+                                               buffer[bufp++] = '\\';
+                                       buffer[bufp++] = ch;
+                                       buffer[bufp++] = S_QUOTE;
+                                       str = dst;
+                               } else {
+                                       buffer[bufp++] = *str;
+                               }
+                           } else {
+                                   buffer[bufp++] = *str;
+                           }
+                           break;
+                       default:
+                           buffer[bufp++] = *str;
+                           break;
+                       }
                }
                else if (ch == 128) {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = '0';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = '0';
                }
                else if (ch == '\033') {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = 'E';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = 'E';
                }
                else if (ch == '\\' && tic_format && (str == srcp || str[-1] != '^')) {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = '\\';
                }
                else if (ch == ' ' && tic_format && (str == srcp || trailing_spaces(str))) {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = 's';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = 's';
                }
                else if ((ch == ',' || ch == ':' || ch == '^') && tic_format) {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = ch;
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = ch;
                }
                else if (REALPRINT(str) && (ch != ',' && ch != ':' && !(ch == '!' && !tic_format) && ch != '^'))
-                       buffer[bufp++] = ch;
+                       buffer[bufp++] = ch;
 #if 0          /* FIXME: this would be more readable (in fact the whole 'islong' logic should be removed) */
                else if (ch == '\b') {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = 'b';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = 'b';
                }
                else if (ch == '\f') {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = 'f';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = 'f';
                }
                else if (ch == '\t' && islong) {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = 't';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = 't';
                }
 #endif
                else if (ch == '\r' && (islong || (strlen(srcp) > 2 && str[1] == '\0'))) {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = 'r';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = 'r';
                }
                else if (ch == '\n' && islong) {
-                       buffer[bufp++] = '\\';
-                       buffer[bufp++] = 'n';
+                       buffer[bufp++] = '\\';
+                       buffer[bufp++] = 'n';
                }
 #define UnCtl(c) ((c) + '@')
                else if (REALCTL(str) && ch != '\\' && (!islong || isdigit(str[1])))
@@ -130,8 +182,8 @@ int         ch;
                }
 
                str++;
-       }
+       }
 
-       buffer[bufp] = '\0';
-       return(buffer);
+       buffer[bufp] = '\0';
+       return(buffer);
 }
similarity index 96%
rename from ncurses/comp_hash.c
rename to ncurses/tinfo/comp_hash.c
index bd9d52d7690c5806a4e1dd9841a7f2007e89cbfb..7e0bdd0524fe796cdaa00738d135fb31980fe661 100644 (file)
@@ -49,7 +49,7 @@
 #define DEBUG(level, params) /*nothing*/
 #endif
 
-MODULE_ID("$Id: comp_hash.c,v 1.16 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: comp_hash.c,v 1.21 1999/06/26 21:25:11 tom Exp $")
 
 static  int hash_function(const char *);
 
@@ -63,6 +63,11 @@ static  int hash_function(const char *);
  */
 
 #ifdef MAIN_PROGRAM
+
+#undef MODULE_ID
+#define MODULE_ID(id) /*nothing*/
+#include <tinfo/doalloc.c>
+
 static void _nc_make_hash_table(struct name_table_entry *table,
                     struct name_table_entry **hash_table)
 {
@@ -180,18 +185,6 @@ struct name_table_entry    const *ptr;
  * performance enhancement).
  */
 
-#if !HAVE_STRDUP
-static char *strdup (char *s)
-{
-  char *p;
-
-  p = malloc(strlen(s)+1);
-  if (p)
-    strcpy(p,s);
-  return(p);
-}
-#endif /* not HAVE_STRDUP */
-
 #define MAX_COLUMNS BUFSIZ     /* this _has_ to be worst-case */
 
 static char **parse_columns(char *buffer)
@@ -200,8 +193,8 @@ static char **parse_columns(char *buffer)
 
        int col = 0;
 
-       if (list == 0)
-               list = typeCalloc(char *, MAX_COLUMNS);
+       if (list == 0 && (list = typeCalloc(char *, MAX_COLUMNS)) == 0)
+               return(0);
 
        if (*buffer != '#') {
                while (*buffer != '\0') {
@@ -310,9 +303,9 @@ int main(int argc, char **argv)
        printf("{\n");
        for (n = 0; n < HASHTABSIZE; n++) {
                if (hash_table[n] != 0) {
-                       sprintf(buffer, "_nc_%s_table + %3d",
+                       sprintf(buffer, "_nc_%s_table + %3ld",
                                root_name,
-                               hash_table[n] - name_table);
+                               (long) (hash_table[n] - name_table));
                } else {
                        strcpy(buffer, "0");
                }
similarity index 84%
rename from ncurses/comp_parse.c
rename to ncurses/tinfo/comp_parse.c
index 1b7ae1e8bb0976a00dd7eee3ccffa7467ec7f652..be419ca3e790c565a632ca3879b8897918459e3c 100644 (file)
 #include <ctype.h>
 
 #include <tic.h>
-#include <term.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: comp_parse.c,v 1.21 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.34 1999/02/27 22:13:02 tom Exp $")
 
 static void sanity_check(TERMTYPE *);
+void (*_nc_check_termtype)(TERMTYPE *) = sanity_check;
 
 /****************************************************************************
  *
@@ -85,13 +85,11 @@ ENTRY *_nc_head, *_nc_tail;
 static void enqueue(ENTRY *ep)
 /* add an entry to the in-core list */
 {
-       ENTRY   *newp = (ENTRY *)malloc(sizeof(ENTRY));
+       ENTRY   *newp = _nc_copy_entry(ep);
 
        if (newp == NULL)
            _nc_err_abort("Out of memory");
 
-       (void) memcpy(newp, ep, sizeof(ENTRY));
-
        newp->last = _nc_tail;
        _nc_tail = newp;
 
@@ -131,14 +129,16 @@ bool _nc_entry_match(char *n1, char *n2)
 
     if (strchr(n1, '|') == NULL)
     {
-       (void) strcpy(nc1, n1);
+       (void) strncpy(nc1, n1, sizeof(nc1) - 2);
+       nc1[sizeof(nc1) - 2] = '\0';
        (void) strcat(nc1, "|");
        n1 = nc1;
     }
 
     if (strchr(n2, '|') == NULL)
     {
-       (void) strcpy(nc2, n2);
+       (void) strncpy(nc2, n2, sizeof(nc2) - 2);
+       nc2[sizeof(nc2) - 2] = '\0';
        (void) strcat(nc2, "|");
        n2 = nc2;
     }
@@ -170,6 +170,7 @@ void _nc_read_entry_source(FILE *fp, char *buf,
     if (silent)
        _nc_suppress_warnings = TRUE;   /* shut the lexer up, too */
 
+    memset(&thisentry, 0, sizeof(thisentry));
     for (_nc_reset_input(fp, buf); _nc_parse_entry(&thisentry, literal, silent) != ERR; )
     {
        if (!isalnum(thisentry.tterm.term_names[0]))
@@ -195,8 +196,10 @@ void _nc_read_entry_source(FILE *fp, char *buf,
        DEBUG(1, ("head = %s", _nc_head->tterm.term_names));
        DEBUG(1, ("tail = %s", _nc_tail->tterm.term_names));
     }
+#ifdef TRACE
     else if (!immediate)
        DEBUG(1, ("no entries parsed"));
+#endif
 
     _nc_suppress_warnings = oldsuppress;
 }
@@ -279,13 +282,16 @@ int _nc_resolve_uses(void)
                TERMTYPE        thisterm;
                char            filename[PATH_MAX];
 
+               memset(&thisterm, 0, sizeof(thisterm));
                if (_nc_read_entry(lookfor, filename, &thisterm) == 1)
                {
                    DEBUG(2, ("%s: resolving use=%s (compiled)",
                              child, lookfor));
 
-                   rp = (ENTRY *)malloc(sizeof(ENTRY));
-                   memcpy(&rp->tterm, &thisterm, sizeof(TERMTYPE));
+                   rp = typeMalloc(ENTRY,1);
+                   if (rp == NULL)
+                       _nc_err_abort("Out of memory");
+                   rp->tterm = thisterm;
                    rp->nuses = 0;
                    rp->next = lastread;
                    lastread = rp;
@@ -326,6 +332,7 @@ int _nc_resolve_uses(void)
        keepgoing = FALSE;
 
        for_entry_list(qp)
+       {
            if (qp->nuses > 0)
            {
                DEBUG(2, ("%s: attempting merge", _nc_first_name(qp->tterm.term_names)));
@@ -347,7 +354,7 @@ int _nc_resolve_uses(void)
                 * as a side effect, copy into the merged entry the name
                 * field and string table pointer.
                 */
-               memcpy(&merged, &qp->tterm, sizeof(TERMTYPE));
+               _nc_copy_termtype(&merged, &(qp->tterm));
 
                /*
                 * Now merge in each use entry in the proper
@@ -365,7 +372,10 @@ int _nc_resolve_uses(void)
                /*
                 * Replace the original entry with the merged one.
                 */
-               memcpy(&qp->tterm, &merged, sizeof(TERMTYPE));
+               FreeIfNeeded(qp->tterm.Booleans);
+               FreeIfNeeded(qp->tterm.Numbers);
+               FreeIfNeeded(qp->tterm.Strings);
+               qp->tterm = merged;
 
                /*
                 * We know every entry is resolvable because name resolution
@@ -375,6 +385,7 @@ int _nc_resolve_uses(void)
            incomplete:
                keepgoing = TRUE;
            }
+       }
     } while
        (keepgoing);
 
@@ -387,13 +398,13 @@ int _nc_resolve_uses(void)
      */
     for_entry_list(qp)
     {
-       for (j = 0; j < BOOLCOUNT; j++)
+       for_each_boolean(j, &(qp->tterm))
            if (qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
                qp->tterm.Booleans[j] = FALSE;
-       for (j = 0; j < NUMCOUNT; j++)
+       for_each_number(j, &(qp->tterm))
            if (qp->tterm.Numbers[j] == CANCELLED_NUMERIC)
                qp->tterm.Numbers[j] = ABSENT_NUMERIC;
-       for (j = 0; j < STRCOUNT; j++)
+       for_each_string(j, &(qp->tterm))
            if (qp->tterm.Strings[j] == CANCELLED_STRING)
                qp->tterm.Strings[j] = ABSENT_STRING;
     }
@@ -407,16 +418,18 @@ int _nc_resolve_uses(void)
 
     DEBUG(2, ("RESOLUTION FINISHED"));
 
-    _nc_curr_col = -1;
-    for_entry_list(qp)
+    if (_nc_check_termtype != 0)
     {
-       _nc_curr_line = qp->startline;
-       _nc_set_type(_nc_first_name(qp->tterm.term_names));
-       sanity_check(&qp->tterm);
+       _nc_curr_col = -1;
+       for_entry_list(qp)
+       {
+           _nc_curr_line = qp->startline;
+           _nc_set_type(_nc_first_name(qp->tterm.term_names));
+           _nc_check_termtype(&qp->tterm);
+       }
+       DEBUG(2, ("SANITY CHECK FINISHED"));
     }
 
-    DEBUG(2, ("SANITY CHECK FINISHED"));
-
     return(TRUE);
 }
 
@@ -429,33 +442,12 @@ int _nc_resolve_uses(void)
 #undef CUR
 #define CUR tp->
 
-/*
- * Note that WANTED and PRESENT are not simple inverses!  If a capability
- * has been explicitly cancelled, it's not considered WANTED.
- */
-#define WANTED(s)      ((s) == ABSENT_STRING)
-#define PRESENT(s)     (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING))
-
-#define ANDMISSING(p,q) \
-               {if (PRESENT(p) && !PRESENT(q)) _nc_warning(#p " but no " #q);}
-
-#define PAIRED(p,q) \
-               { \
-               if (PRESENT(q) && !PRESENT(p)) \
-                       _nc_warning(#q " but no " #p); \
-               if (PRESENT(p) && !PRESENT(q)) \
-                       _nc_warning(#p " but no " #q); \
-               }
-
 static void sanity_check(TERMTYPE *tp)
 {
-#ifdef __UNUSED__      /* this casts too wide a net */
-    bool       terminal_entry = !strchr(tp->term_names, '+');
-#endif
-
     if (!PRESENT(exit_attribute_mode))
     {
 #ifdef __UNUSED__      /* this casts too wide a net */
+        bool       terminal_entry = !strchr(tp->term_names, '+');
        if (terminal_entry &&
                (PRESENT(set_attributes)
                || PRESENT(enter_standout_mode)
@@ -473,10 +465,6 @@ static void sanity_check(TERMTYPE *tp)
     }
 
      /* listed in structure-member order of first argument */
-#ifdef __UNUSED__
-     ANDMISSING(cursor_invisible,            cursor_normal)
-     ANDMISSING(cursor_visible,              cursor_normal)
-#endif /* __UNUSED__ */
      PAIRED(enter_alt_charset_mode,          exit_alt_charset_mode)
      ANDMISSING(enter_alt_charset_mode,      acs_chars)
      ANDMISSING(exit_alt_charset_mode,       acs_chars)
@@ -499,30 +487,4 @@ static void sanity_check(TERMTYPE *tp)
      ANDMISSING(label_off,                   label_on)
      PAIRED(display_clock,                   remove_clock)
      ANDMISSING(set_color_pair,              initialize_pair)
-
-     /* Some checks that we should make, but don't want to confuse people
-      * with.  Put those under the tic -v option so we can still get them.
-      */
-     if (_nc_tracing) {
-
-       /*
-        * From XSI & O'Reilly, we gather that sc/rc are required if csr is
-        * given, because the cursor position after the scrolling operation is
-        * performed is undefined.
-        */
-         ANDMISSING(change_scroll_region,        save_cursor)
-         ANDMISSING(change_scroll_region,        restore_cursor)
-
-         /*
-         * Some non-curses applications (e.g., jove) get confused if we have
-         * both ich/ich1 and smir/rmir.  Let's be nice and warn about that,
-         * too, even though ncurses handles it.
-          */
-         if ((PRESENT(enter_insert_mode) || PRESENT(exit_insert_mode))
-          && (PRESENT(insert_character)  || PRESENT(parm_ich))) {
-           _nc_warning("non-curses applications may be confused by ich/ich1 with smir/rmir");
-         }
-     }
-#undef PAIRED
-#undef ANDMISSING
 }
similarity index 96%
rename from ncurses/comp_scan.c
rename to ncurses/tinfo/comp_scan.c
index e12589054dfbee41446ea804a5bd716d33232c7b..152930885ab75ffa9dc459205fd85ad44dec7ac9 100644 (file)
@@ -49,7 +49,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: comp_scan.c,v 1.30 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.34 1998/11/01 00:56:39 tom Exp $")
 
 /*
  * Maximum length of string capability we'll accept before raising an error.
@@ -76,6 +76,7 @@ static char separator;                /* capability separator */
 static int pushtype;           /* type of pushback token */
 static char pushname[MAX_NAME_SIZE+1];
 
+static int  last_char(void);
 static int  next_char(void);
 static long stream_pos(void);
 static bool end_of_stream(void);
@@ -129,7 +130,9 @@ static const char terminfo_punct[] = "@%&*!#";
 long           number;
 int            type;
 int            ch;
-bool           found;
+char *         numchk;
+char           numbuf[80];
+unsigned       found;
 static char    buffer[MAX_ENTRY_SIZE];
 char           *ptr;
 int            dot_flag = FALSE;
@@ -203,7 +206,7 @@ start_token:
                        {
                            if (ch == EOF)
                                _nc_err_abort("premature EOF");
-                           else if (ch == ':')
+                           else if (ch == ':' && last_char() != ',')
                            {
                                _nc_syntax = SYN_TERMCAP;
                                separator = ':';
@@ -268,11 +271,12 @@ start_token:
                         * description field for syntax-checking purposes.
                         */
                        desc = strrchr(buffer, '|');
-                       if (desc)
+                       if (desc) {
                            if (*desc == '\0')
                                _nc_warning("empty longname field");
                            else if (strchr(desc, ' ') == (char *)NULL)
                                _nc_warning("older tic versions may treat the description field as an alias");
+                       }
                        if (!desc)
                            desc = buffer + strlen(buffer);
 
@@ -337,15 +341,17 @@ start_token:
                                break;
 
                        case '#':
-                               number = 0;
-                               found  = FALSE;
-                               while (isdigit(ch = next_char())) {
-                                       number = number * 10 + ch - '0';
-                                       found  = TRUE;
+                               found  = 0;
+                               while (isalnum(ch = next_char())) {
+                                       numbuf[found++] = ch;
+                                       if (found >= sizeof(numbuf)-1)
+                                               break;
                                }
-                               if (found == FALSE)
+                               numbuf[found] = '\0';
+                               number = strtol(numbuf, &numchk, 0);
+                               if (numchk == numbuf)
                                        _nc_warning("no value given for `%s'", buffer);
-                               if (ch != separator)
+                               if ((*numchk != '\0') || (ch != separator))
                                        _nc_warning("Missing separator");
                                _nc_curr_token.tk_name = buffer;
                                _nc_curr_token.tk_valnumber = number;
@@ -374,6 +380,8 @@ start_token:
        } /* end else (ch != EOF) */
 
 end_of_token:
+
+#ifdef TRACE
        if (dot_flag == TRUE)
            DEBUG(8, ("Commented out "));
 
@@ -418,6 +426,7 @@ end_of_token:
                    _nc_warning("Bad token type");
            }
        }
+#endif
 
        if (dot_flag == TRUE)           /* if commented out, use the next one */
            type = _nc_get_token();
@@ -633,6 +642,22 @@ void _nc_reset_input(FILE *fp, char *buf)
        _nc_curr_col = 0;
 }
 
+/*
+ *     int last_char()
+ *
+ *     Returns the final nonblank character on the current input buffer
+ */
+static int
+last_char(void)
+{
+       size_t len = strlen(bufptr);
+       while (len--) {
+               if (!isspace(bufptr[len]))
+                       return bufptr[len];
+       }
+       return 0;
+}
+
 /*
  *     int next_char()
  *
diff --git a/ncurses/tinfo/doalloc.c b/ncurses/tinfo/doalloc.c
new file mode 100644 (file)
index 0000000..84471fb
--- /dev/null
@@ -0,0 +1,74 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Thomas E. Dickey <dickey@clark.net> 1998                        *
+ ****************************************************************************/
+
+
+/*
+ * Wrapper for malloc/realloc.  Standard implementations allow realloc with
+ * a null pointer, but older libraries may not (e.g., SunOS).
+ *
+ * Also if realloc fails, we discard the old memory to avoid leaks.
+ */
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: doalloc.c,v 1.5 1999/03/14 12:25:27 tom Exp $")
+
+void *_nc_doalloc(void *oldp, size_t amount)
+{
+       void *newp;
+
+       if (oldp != 0) {
+               if ((newp = realloc(oldp, amount)) == 0) {
+                       free(oldp);
+                       errno = ENOMEM;         /* just in case 'free' reset */
+               }
+       } else {
+               newp = typeMalloc(char, amount);
+       }
+       return newp;
+}
+
+#if !HAVE_STRDUP
+char *_nc_strdup(const char *src)
+{
+    char *dst;
+    if (src != 0) {
+       dst = typeMalloc(char, strlen(src) + 1);
+       if (dst != 0) {
+           (void)strcpy(dst, src);
+       }
+    } else {
+       dst = 0;
+    }
+    return dst;
+}
+#endif
diff --git a/ncurses/tinfo/free_ttype.c b/ncurses/tinfo/free_ttype.c
new file mode 100644 (file)
index 0000000..203ec89
--- /dev/null
@@ -0,0 +1,72 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999                        *
+ ****************************************************************************/
+
+
+/*
+ * free_ttype.c -- allocation functions for TERMTYPE
+ *
+ *     _nc_free_termtype()
+ *     use_extended_names()
+ *
+ */
+
+#include <curses.priv.h>
+
+#include <tic.h>
+#include <term_entry.h>
+
+MODULE_ID("$Id: free_ttype.c,v 1.2 1999/03/01 00:30:35 tom Exp $")
+
+void _nc_free_termtype(TERMTYPE *ptr)
+{
+       FreeIfNeeded(ptr->str_table);
+       FreeIfNeeded(ptr->term_names);
+#if NCURSES_XNAMES
+       FreeIfNeeded(ptr->ext_str_table);
+       FreeIfNeeded(ptr->Booleans);
+       FreeIfNeeded(ptr->Numbers);
+       FreeIfNeeded(ptr->Strings);
+       FreeIfNeeded(ptr->ext_Names);
+#endif
+       memset(ptr, 0, sizeof(TERMTYPE));
+}
+
+#if NCURSES_XNAMES
+bool _nc_user_definable = TRUE;
+
+int use_extended_names(bool flag)
+{
+       int oldflag = _nc_user_definable;
+       _nc_user_definable = flag;
+       return oldflag;
+}
+#endif
diff --git a/ncurses/tinfo/getenv_num.c b/ncurses/tinfo/getenv_num.c
new file mode 100644 (file)
index 0000000..6294404
--- /dev/null
@@ -0,0 +1,56 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Thomas E. Dickey <dickey@clark.net> 1998                        *
+ ****************************************************************************/
+
+/*
+ *     getenv_num.c -- obtain a number from the environment
+ */
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: getenv_num.c,v 1.1 1998/09/19 21:30:23 tom Exp $")
+
+int
+_nc_getenv_num(const char *name)
+{
+       char *dst = 0;
+       char *src = getenv(name);
+       long value;
+
+       if ((src == 0)
+        || (value = strtol(src, &dst, 0)) < 0
+        || (dst == src)
+        || (*dst != '\0')
+        || (int)value < value)
+               value = -1;
+
+       return (int) value;
+}
diff --git a/ncurses/tinfo/home_terminfo.c b/ncurses/tinfo/home_terminfo.c
new file mode 100644 (file)
index 0000000..7aa4ca1
--- /dev/null
@@ -0,0 +1,62 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Thomas E. Dickey <dickey@clark.net> 1998                        *
+ ****************************************************************************/
+
+/*
+ *     home_terminfo.c -- return the $HOME/.terminfo string, expanded
+ */
+
+#include <curses.priv.h>
+#include <tic.h>
+
+MODULE_ID("$Id: home_terminfo.c,v 1.2 1999/02/27 19:58:46 tom Exp $")
+
+#define my_length (strlen(home) + sizeof(PRIVATE_INFO))
+
+/* ncurses extension...fall back on user's private directory */
+
+char *
+_nc_home_terminfo(void)
+{
+       char *home;
+       static char *temp = 0;
+
+       if (temp == 0) {
+               if ((home = getenv("HOME")) != 0
+                && my_length <= PATH_MAX) {
+                       temp = typeMalloc(char, my_length);
+                       if (temp == 0)
+                               _nc_err_abort("Out of memory");
+                       (void) sprintf(temp, PRIVATE_INFO, home);
+               }
+       }
+       return temp;
+}
diff --git a/ncurses/tinfo/init_keytry.c b/ncurses/tinfo/init_keytry.c
new file mode 100644 (file)
index 0000000..a720da1
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+ * Copyright (c) 1999 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.                                                           *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+
+#include <term.h>      /* keypad_xmit, keypad_local, meta_on, meta_off */
+                       /* cursor_visible,cursor_normal,cursor_invisible */
+#include <tic.h>       /* struct tinfo_fkeys */
+
+MODULE_ID("$Id: init_keytry.c,v 1.2 1999/09/11 17:32:57 Jeffrey.Honig Exp $")
+
+/*
+**      _nc_init_keytry()
+**
+**      Construct the try for the current terminal's keypad keys.
+**
+*/
+
+#ifdef BROKEN_LINKER
+#undef _nc_tinfo_fkeys
+#endif
+
+/* LINT_PREPRO
+#if 0*/
+#include <init_keytry.h>
+/* LINT_PREPRO
+#endif*/
+
+#ifdef BROKEN_LINKER
+struct tinfo_fkeys *_nc_tinfo_fkeysf(void)
+{
+       return _nc_tinfo_fkeys;
+}
+#endif
+
+void _nc_init_keytry(void)
+{
+       size_t n;
+
+       /* The SP->_keytry value is initialized in newterm(), where the SP
+        * structure is created, because we can not tell where keypad() or
+        * mouse_activate() (which will call keyok()) are first called.
+        */
+
+       for (n = 0; _nc_tinfo_fkeys[n].code; n++)
+               if (_nc_tinfo_fkeys[n].offset < STRCOUNT)
+               _nc_add_to_try(&(SP->_keytry),
+                       CUR Strings[_nc_tinfo_fkeys[n].offset],
+                       _nc_tinfo_fkeys[n].code);
+#ifdef TRACE
+       _nc_trace_tries(SP->_keytry);
+#endif
+}
similarity index 100%
rename from ncurses/keys.list
rename to ncurses/tinfo/keys.list
similarity index 97%
rename from ncurses/lib_acs.c
rename to ncurses/tinfo/lib_acs.c
index a1f7c03fcef5790274c8d8aa1bfd4fd5f17849eb..d3c782e8e664f2ba30f2a1785c81a5d5fa430880 100644 (file)
 #include <curses.priv.h>
 #include <term.h>      /* ena_acs, acs_chars */
 
-MODULE_ID("$Id: lib_acs.c,v 1.13 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.15 1999/02/18 11:31:43 tom Exp $")
 
 chtype acs_map[ACS_LEN];
 
-void init_acs(void)
+void _nc_init_acs(void)
 {
        T(("initializing ACS map"));
 
@@ -82,15 +82,12 @@ void init_acs(void)
         ACS_NEQUAL   = '!';    /* should be not-equal */
         ACS_STERLING = 'f';    /* should be pound-sterling symbol */
 
-#ifdef ena_acs
        if (ena_acs != NULL)
        {
                TPUTS_TRACE("ena_acs");
                putp(ena_acs);
        }
-#endif /* ena_acs */
 
-#ifdef acs_chars
 #define ALTCHAR(c)     ((chtype)(((unsigned char)(c)) | A_ALTCHARSET))
 
        if (acs_chars != NULL) {
@@ -139,6 +136,4 @@ void init_acs(void)
                        _nc_visbuf(show));
        }
 #endif /* TRACE */
-#endif /* acs_char */
 }
-
similarity index 77%
rename from ncurses/lib_baudrate.c
rename to ncurses/tinfo/lib_baudrate.c
index dca02ff7aba3f38b01e0c7c3c077b770c0272dfe..4077ba384076bf11775bb95c727ebeca6239c524 100644 (file)
@@ -39,8 +39,9 @@
 
 #include <curses.priv.h>
 #include <term.h>      /* cur_term, pad_char */
+#include <termcap.h>   /* ospeed */
 
-MODULE_ID("$Id: lib_baudrate.c,v 1.11 1998/02/11 12:13:58 tom Exp $")
+MODULE_ID("$Id: lib_baudrate.c,v 1.15 1999/01/31 03:05:25 tom Exp $")
 
 /*
  *     int
@@ -98,14 +99,52 @@ static struct speed const speeds[] = {
 #endif
 };
 
+int _nc_baudrate(int OSpeed)
+{
+       static int last_OSpeed;
+       static int last_baudrate;
+
+       int result;
+       unsigned i;
+
+       if (OSpeed == last_OSpeed) {
+               result = last_baudrate;
+       } else {
+               result = ERR;
+               if (OSpeed >= 0) {
+                       for (i = 0; i < SIZEOF(speeds); i++) {
+                               if (speeds[i].s == (speed_t)OSpeed) {
+                                       result = speeds[i].sp;
+                                       break;
+                               }
+                       }
+               }
+               last_baudrate = result;
+       }
+       return (result);
+}
+
+
+int _nc_ospeed(int BaudRate)
+{
+       speed_t result = 1;
+       unsigned i;
+
+       if (BaudRate >= 0) {
+               for (i = 0; i < SIZEOF(speeds); i++) {
+                       if (speeds[i].sp == BaudRate) {
+                               result = speeds[i].s;
+                               break;
+                       }
+               }
+       }
+       return (result);
+}
+
 int
 baudrate(void)
 {
-size_t i;
-int ret;
-#ifdef TRACE
-char *debug_rate;
-#endif
+int result;
 
        T((T_CALLED("baudrate()")));
 
@@ -116,27 +155,24 @@ char *debug_rate;
         */
 #ifdef TRACE
        if (SP && !isatty(fileno(SP->_ofp))
-        && (debug_rate = getenv("BAUDRATE")) != 0) {
-               if (sscanf(debug_rate, "%d", &ret) != 1)
+        && getenv("BAUDRATE") != 0) {
+               int ret;
+               if ((ret = _nc_getenv_num("BAUDRATE")) <= 0)
                        ret = 9600;
+               ospeed = _nc_ospeed(ret);
                returnCode(ret);
        }
        else
 #endif
 
 #ifdef TERMIOS
-       ret = cfgetospeed(&cur_term->Nttyb);
+       ospeed = cfgetospeed(&cur_term->Nttyb);
 #else
-       ret = cur_term->Nttyb.sg_ospeed;
+       ospeed = cur_term->Nttyb.sg_ospeed;
 #endif
-       if(ret < 0 || (speed_t)ret > speeds[SIZEOF(speeds)-1].s)
-               returnCode(ERR);
-       cur_term->_baudrate = ERR;
-       for (i = 0; i < SIZEOF(speeds); i++)
-               if (speeds[i].s == (speed_t)ret)
-               {
-                       cur_term->_baudrate = speeds[i].sp;
-                       break;
-               }
-       returnCode(cur_term->_baudrate);
+       result = _nc_baudrate(ospeed);
+       if (cur_term != 0)
+               cur_term->_baudrate = result;
+
+       returnCode(result);
 }
similarity index 81%
rename from ncurses/lib_cur_term.c
rename to ncurses/tinfo/lib_cur_term.c
index c757decd91ac3ad5e5e8099a9f7f8058d570388c..3250147c8066eaede2749d01a01a0362bf3ed6ad 100644 (file)
  */
 
 #include <curses.priv.h>
-#include <term.h>      /* TTY, cur_term */
+#include <term_entry.h>        /* TTY, cur_term */
+#include <termcap.h>   /* ospeed */
 
-MODULE_ID("$Id: lib_cur_term.c,v 1.2 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_cur_term.c,v 1.8 1999/07/24 20:08:19 tom Exp $")
 
 TERMINAL *cur_term;
 
-int _nc_get_curterm(TTY *buf)
-{
-       if (cur_term == 0
-        || GET_TTY(cur_term->Filedes, buf) != 0)
-               return(ERR);
-       return (OK);
-}
-
-int _nc_set_curterm(TTY *buf)
-{
-       if (cur_term == 0
-        || SET_TTY(cur_term->Filedes, buf) != 0)
-               return(ERR);
-       return (OK);
-}
-
-TERMINAL *set_curterm(TERMINAL *term)
+TERMINAL *set_curterm(TERMINAL *termp)
 {
        TERMINAL *oldterm = cur_term;
 
-       cur_term = term;
+       if ((cur_term = termp) != 0) {
+               ospeed = _nc_ospeed(cur_term->_baudrate);
+               PC = (pad_char != NULL) ? pad_char[0] : 0; 
+       }
        return oldterm;
 }
 
-int del_curterm(TERMINAL *term)
+int del_curterm(TERMINAL *termp)
 {
-       T((T_CALLED("del_curterm(%p)"), term));
+       T((T_CALLED("del_curterm(%p)"), termp));
 
-       if (term != 0) {
-               FreeIfNeeded(term->type.str_table);
-               FreeIfNeeded(term->type.term_names);
-               free(term);
+       if (termp != 0) {
+               _nc_free_termtype(&(termp->type));
+               free(termp);
+               if (termp == cur_term)
+                       cur_term = 0;
                returnCode(OK);
        }
        returnCode(ERR);
similarity index 94%
rename from ncurses/lib_data.c
rename to ncurses/tinfo/lib_data.c
index baa1db8194a72dd58cba7b42b84382491fcfcf95..d2d0d3ff6d8ec3bcfe5638e57a765e044e73f76a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
@@ -40,7 +40,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_data.c,v 1.13 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: lib_data.c,v 1.14 1999/01/31 01:34:33 Ilya.Zakharevich Exp $")
 
 /*
  * OS/2's native linker complains if we don't initialize public data when
@@ -80,5 +80,5 @@ void _nc_set_screen(SCREEN *sp)
        my_screen = sp;
 }
 #else
-SCREEN *SP;
+SCREEN *SP = NULL;             /* Some linkers require initialized data... */
 #endif
similarity index 76%
rename from ncurses/lib_ti.c
rename to ncurses/tinfo/lib_has_cap.c
index b77076f03f86400141ba8bfa469cc8c044630fb1..7121fc758f4f366498498c46d9d4d8bbbaac3549 100644 (file)
  ****************************************************************************/
 
 
+/*
+**     lib_has_cap.c
+**
+**     The routines to query terminal capabilities
+**
+*/
+
 #include <curses.priv.h>
 
 #include <term.h>
-#include <tic.h>
 
-MODULE_ID("$Id: lib_ti.c,v 1.9 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: lib_has_cap.c,v 1.1 1998/10/23 15:32:21 tom Exp $")
 
-int tigetflag(const char *str)
+bool has_ic(void)
 {
-int i;
-
-       T(("tigetflag(%s)", str));
-
-       if (cur_term != 0)
-               for (i = 0; i < BOOLCOUNT; i++)
-                       if (!strcmp(str, boolnames[i]))
-                               return cur_term->type.Booleans[i];
-
-       return ABSENT_BOOLEAN;
+       T((T_CALLED("has_ic()")));
+       returnCode(cur_term &&
+         (insert_character || parm_ich
+          ||  (enter_insert_mode && exit_insert_mode))
+         &&  (delete_character || parm_dch));
 }
 
-int tigetnum(const char *str)
+bool has_il(void)
 {
-int i;
-
-       T(("tigetnum(%s)", str));
-
-       if (cur_term != 0)
-               for (i = 0; i < NUMCOUNT; i++)
-                       if (!strcmp(str, numnames[i]))
-                               return cur_term->type.Numbers[i];
-
-       return CANCELLED_NUMERIC;
-}
-
-char *tigetstr(const char *str)
-{
-int i;
-
-       T(("tigetstr(%s)", str));
-
-       if (cur_term != 0)
-               for (i = 0; i < STRCOUNT; i++)
-                       if (!strcmp(str, strnames[i]))
-                               return cur_term->type.Strings[i];
-
-       return CANCELLED_STRING;
+       T((T_CALLED("has_il()")));
+       returnCode(cur_term
+               && (insert_line || parm_insert_line)
+               && (delete_line || parm_delete_line));
 }
similarity index 82%
rename from ncurses/lib_kernel.c
rename to ncurses/tinfo/lib_kernel.c
index 56f06a4ce59dd95e49d5062c23711d503d1999f7..3c8c88ee2aabcac7af1a880915407029d0ddad0d 100644 (file)
  *     lib_kernel.c
  *
  *     Misc. low-level routines:
- *             reset_prog_mode()
- *             reset_shell_mode()
  *             erasechar()
  *             killchar()
  *             flushinp()
- *             savetty()
- *             resetty()
  *
  * The baudrate() and delay_output() functions could logically live here,
  * but are in other modules to reduce the static-link size of programs
 #include <curses.priv.h>
 #include <term.h>      /* cur_term */
 
-MODULE_ID("$Id: lib_kernel.c,v 1.17 1998/02/11 12:13:57 tom Exp $")
-
-int reset_prog_mode(void)
-{
-       T((T_CALLED("reset_prog_mode()")));
-
-       if (cur_term != 0) {
-               _nc_set_curterm(&cur_term->Nttyb);
-               if (SP && stdscr && stdscr->_use_keypad)
-                       _nc_keypad(TRUE);
-               returnCode(OK);
-       }
-       returnCode(ERR);
-}
-
-
-int reset_shell_mode(void)
-{
-       T((T_CALLED("reset_shell_mode()")));
-
-       if (cur_term != 0) {
-               if (SP)
-               {
-                       fflush(SP->_ofp);
-                       _nc_keypad(FALSE);
-               }
-               returnCode(_nc_set_curterm(&cur_term->Ottyb));
-       }
-       returnCode(ERR);
-}
+MODULE_ID("$Id: lib_kernel.c,v 1.19 1998/12/20 00:18:45 tom Exp $")
 
 /*
  *     erasechar()
@@ -161,24 +128,3 @@ int flushinp(void)
        }
        returnCode(ERR);
 }
-
-/*
-**     savetty()  and  resetty()
-**
-*/
-
-static TTY   buf;
-
-int savetty(void)
-{
-       T((T_CALLED("savetty()")));
-
-       returnCode(_nc_get_curterm(&buf));
-}
-
-int resetty(void)
-{
-       T((T_CALLED("resetty()")));
-
-       returnCode(_nc_set_curterm(&buf));
-}
similarity index 95%
rename from ncurses/lib_longname.c
rename to ncurses/tinfo/lib_longname.c
index 0b39207ecca81c98706ff56a17d8bba672b11f53..766e56c091e6a87ffe4f121ff6274a01b45e4330 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_longname.c,v 1.6 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_longname.c,v 1.7 1999/01/03 01:47:45 tom Exp $")
 
 char *
 longname(void)
 {
 char   *ptr;
 
-       T(("longname() called"));
+       T((T_CALLED("longname()")));
 
        for (ptr = ttytype + strlen(ttytype); ptr > ttytype; ptr--)
                if (*ptr == '|')
-                       return(ptr + 1);
+                       returnPtr(ptr + 1);
 
-    return(ttytype);
+       returnPtr(ttytype);
 }
similarity index 95%
rename from ncurses/lib_napms.c
rename to ncurses/tinfo/lib_napms.c
index eec7b0a214796a9b747a7dca0d79fab5ae6af9a4..a85304bf1cb687a455c2286c6e19d101a26340ac 100644 (file)
@@ -41,7 +41,9 @@
 
 #include <curses.priv.h>
 
-#if USE_FUNC_POLL
+#if HAVE_NANOSLEEP
+#include <time.h>
+#elif USE_FUNC_POLL
 #include <stropts.h>
 #include <poll.h>
 #if HAVE_SYS_TIME_H
@@ -54,9 +56,9 @@
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#endif  
+#endif
 
-MODULE_ID("$Id: lib_napms.c,v 1.4 1998/02/13 10:24:54 jbuhler Exp $")
+MODULE_ID("$Id: lib_napms.c,v 1.6 1999/10/21 23:01:41 tom Exp $")
 
 int napms(int ms)
 {
@@ -69,8 +71,6 @@ int napms(int ms)
                ts.tv_nsec = (ms % 1000) * 1000000;
                nanosleep(&ts, NULL);
        }
-#elif HAVE_USLEEP
-       usleep(1000*(unsigned)ms);
 #elif USE_FUNC_POLL
        {
                struct pollfd fds[1];
similarity index 83%
rename from ncurses/lib_options.c
rename to ncurses/tinfo/lib_options.c
index 926a8aecf805a393bde445b298c42198c24cceb2..0bc14156d6744ab16be9037e505458f206ed5bff 100644 (file)
 #include <term.h>      /* keypad_xmit, keypad_local, meta_on, meta_off */
                        /* cursor_visible,cursor_normal,cursor_invisible */
 
-MODULE_ID("$Id: lib_options.c,v 1.29 1998/02/11 12:13:55 tom Exp $")
-
-int has_ic(void)
-{
-       T((T_CALLED("has_ic()")));
-       returnCode((insert_character || parm_ich
-          ||  (enter_insert_mode && exit_insert_mode))
-          &&  (delete_character || parm_dch));
-}
-
-int has_il(void)
-{
-       T((T_CALLED("has_il()")));
-       returnCode((insert_line || parm_insert_line)
-               && (delete_line || parm_delete_line));
-}
+MODULE_ID("$Id: lib_options.c,v 1.36 1999/10/22 21:38:57 tom Exp $")
 
 int idlok(WINDOW *win,  bool flag)
 {
@@ -122,16 +107,13 @@ int notimeout(WINDOW *win, bool f)
          returnCode(ERR);
 }
 
-int wtimeout(WINDOW *win, int delay)
+void wtimeout(WINDOW *win, int delay)
 {
        T((T_CALLED("wtimeout(%p,%d)"), win, delay));
 
        if (win) {
          win->_delay = delay;
-         returnCode(OK);
        }
-       else
-         returnCode(ERR);
 }
 
 int keypad(WINDOW *win, bool flag)
@@ -211,7 +193,7 @@ int cursor = SP->_cursor;
                break;
        }
        SP->_cursor = vis;
-       (void) fflush(SP->_ofp);
+       _nc_flush();
 
        returnCode(cursor==-1 ? 1 : cursor);
 }
@@ -230,7 +212,7 @@ int typeahead(int fd)
 **
 */
 
-
+#ifdef NCURSES_EXT_FUNCS
 static int has_key_internal(int keycode, struct tries *tp)
 {
     if (tp == 0)
@@ -247,34 +229,7 @@ int has_key(int keycode)
     T((T_CALLED("has_key(%d)"), keycode));
     returnCode(has_key_internal(keycode, SP->_keytry));
 }
-
-/*
-**      init_keytry()
-**
-**      Construct the try for the current terminal's keypad keys.
-**
-*/
-
-static void init_keytry(void)
-{
-/* LINT_PREPRO
-#if 0*/
-#include <keys.tries>
-/* LINT_PREPRO
-#endif*/
-       size_t n;
-
-       /* The SP->_keytry value is initialized in newterm(), where the SP
-        * structure is created, because we can not tell where keypad() or
-        * mouse_activate() (which will call keyok()) are first called.
-        */
-
-       for (n = 0; n < SIZEOF(table); n++)
-               if (table[n].offset < STRCOUNT)
-               _nc_add_to_try(&(SP->_keytry),
-                       CUR Strings[table[n].offset],
-                       table[n].code);
-}
+#endif /* NCURSES_EXT_FUNCS */
 
 /* Turn the keypad on/off
  *
@@ -289,17 +244,17 @@ int _nc_keypad(bool flag)
        {
            TPUTS_TRACE("keypad_xmit");
            putp(keypad_xmit);
-           (void) fflush(SP->_ofp);
+           _nc_flush();
        }
        else if (! flag  &&  keypad_local)
        {
            TPUTS_TRACE("keypad_local");
            putp(keypad_local);
-           (void) fflush(SP->_ofp);
+           _nc_flush();
        }
 
-       if (!SP->_tried) {
-           init_keytry();
+       if (flag && !SP->_tried) {
+           _nc_init_keytry();
            SP->_tried = TRUE;
        }
        return(OK);
similarity index 94%
rename from ncurses/lib_print.c
rename to ncurses/tinfo/lib_print.c
index 0ad322b48c4722eedb7d6827567bac2921e91e3d..63ac648b5439cc317543442edfedfa9340b7c8c2 100644 (file)
@@ -36,7 +36,7 @@
 
 #include <term.h>
 
-MODULE_ID("$Id: lib_print.c,v 1.9 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_print.c,v 1.11 1999/02/27 19:59:05 tom Exp $")
 
 int mcprint(char *data, int len)
 /* ship binary character data to the printer via mc4/mc5/mc5p */
@@ -45,7 +45,7 @@ int mcprint(char *data, int len)
     size_t     onsize, offsize, res;
 
     errno = 0;
-    if (!prtr_non && (!prtr_on || !prtr_off))
+    if (!cur_term || (!prtr_non && (!prtr_on || !prtr_off)))
     {
        errno = ENODEV;
        return(ERR);
@@ -64,7 +64,7 @@ int mcprint(char *data, int len)
        offsize = strlen(prtr_off);
     }
 
-    if ((mybuf = malloc(onsize + len + offsize + 1)) == (char *)NULL)
+    if ((mybuf = typeMalloc(char, onsize + len + offsize + 1)) == (char *)0)
     {
        errno = ENOMEM;
        return(ERR);
diff --git a/ncurses/tinfo/lib_raw.c b/ncurses/tinfo/lib_raw.c
new file mode 100644 (file)
index 0000000..61b422c
--- /dev/null
@@ -0,0 +1,233 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ ****************************************************************************/
+
+
+/*
+ *     raw.c
+ *
+ *     Routines:
+ *             raw()
+ *             cbreak()
+ *             noraw()
+ *             nocbreak()
+ *             qiflush()
+ *             noqiflush()
+ *             intrflush()
+ *
+ */
+
+#include <curses.priv.h>
+#include <term.h>      /* cur_term */
+
+MODULE_ID("$Id: lib_raw.c,v 1.3 1999/03/06 22:28:24 tom Exp $")
+
+#if defined(SVR4_TERMIO) && !defined(_POSIX_SOURCE)
+#define _POSIX_SOURCE
+#endif
+
+#if HAVE_SYS_TERMIO_H
+#include <sys/termio.h>        /* needed for ISC */
+#endif
+
+#ifdef __EMX__
+#include <io.h>
+#include <fcntl.h>
+#endif
+
+#define COOKED_INPUT   (IXON|BRKINT|PARMRK)
+
+#ifdef TRACE
+#define BEFORE(N)      if (_nc_tracing&TRACE_BITS) _tracef("%s before bits: %s", N, _nc_tracebits())
+#define AFTER(N)       if (_nc_tracing&TRACE_BITS) _tracef("%s after bits: %s", N, _nc_tracebits())
+#else
+#define BEFORE(s)
+#define AFTER(s)
+#endif /* TRACE */
+
+int raw(void)
+{
+       T((T_CALLED("raw()")));
+       if (SP != 0 && cur_term != 0) {
+
+               SP->_raw = TRUE;
+               SP->_cbreak = 1;
+
+#ifdef __EMX__
+               setmode(SP->_ifd, O_BINARY);
+#endif
+
+#ifdef TERMIOS
+               BEFORE("raw");
+               cur_term->Nttyb.c_lflag &= ~(ICANON|ISIG);
+               cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT);
+               cur_term->Nttyb.c_cc[VMIN] = 1;
+               cur_term->Nttyb.c_cc[VTIME] = 0;
+               AFTER("raw");
+#else
+               cur_term->Nttyb.sg_flags |= RAW;
+#endif
+               returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
+       }
+       returnCode(ERR);
+}
+
+int cbreak(void)
+{
+       T((T_CALLED("cbreak()")));
+
+       SP->_cbreak = 1;
+
+#ifdef __EMX__
+       setmode(SP->_ifd, O_BINARY);
+#endif
+
+#ifdef TERMIOS
+       BEFORE("cbreak");
+       cur_term->Nttyb.c_lflag &= ~ICANON;
+       cur_term->Nttyb.c_iflag &= ~ICRNL;
+       cur_term->Nttyb.c_lflag |= ISIG;
+       cur_term->Nttyb.c_cc[VMIN] = 1;
+       cur_term->Nttyb.c_cc[VTIME] = 0;
+       AFTER("cbreak");
+#else
+       cur_term->Nttyb.sg_flags |= CBREAK;
+#endif
+       returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+}
+
+void qiflush(void)
+{
+       T((T_CALLED("qiflush()")));
+
+       /*
+        * Note: this implementation may be wrong.  See the comment under
+        * intrflush().
+        */
+
+#ifdef TERMIOS
+       BEFORE("qiflush");
+       cur_term->Nttyb.c_lflag &= ~(NOFLSH);
+       AFTER("qiflush");
+       (void)_nc_set_tty_mode( &cur_term->Nttyb);
+       returnVoid;
+#endif
+}
+
+
+int noraw(void)
+{
+       T((T_CALLED("noraw()")));
+
+       SP->_raw = FALSE;
+       SP->_cbreak = 0;
+
+#ifdef __EMX__
+       setmode(SP->_ifd, O_TEXT);
+#endif
+
+#ifdef TERMIOS
+       BEFORE("noraw");
+       cur_term->Nttyb.c_lflag |= ISIG|ICANON;
+       cur_term->Nttyb.c_iflag |= COOKED_INPUT;
+       AFTER("noraw");
+#else
+       cur_term->Nttyb.sg_flags &= ~(RAW|CBREAK);
+#endif
+       returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+}
+
+
+int nocbreak(void)
+{
+       T((T_CALLED("nocbreak()")));
+
+       SP->_cbreak = 0;
+
+#ifdef __EMX__
+       setmode(SP->_ifd, O_TEXT);
+#endif
+
+#ifdef TERMIOS
+       BEFORE("nocbreak");
+       cur_term->Nttyb.c_lflag |= ICANON;
+       cur_term->Nttyb.c_iflag |= ICRNL;
+       AFTER("nocbreak");
+#else
+       cur_term->Nttyb.sg_flags &= ~CBREAK;
+#endif
+       returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+}
+
+void noqiflush(void)
+{
+       T((T_CALLED("noqiflush()")));
+
+       /*
+        * Note: this implementation may be wrong.  See the comment under
+        * intrflush().
+        */
+
+#ifdef TERMIOS
+       BEFORE("noqiflush");
+       cur_term->Nttyb.c_lflag |= NOFLSH;
+       AFTER("noqiflush");
+       (void)_nc_set_tty_mode( &cur_term->Nttyb);
+       returnVoid;
+#endif
+}
+
+int intrflush(WINDOW *win GCC_UNUSED, bool flag)
+{
+       T((T_CALLED("intrflush(%d)"), flag));
+
+       /*
+        * This call does the same thing as the qiflush()/noqiflush()
+        * pair.  We know for certain that SVr3 intrflush() tweaks the
+        * NOFLSH bit; on the other hand, the match (in the SVr4 man
+        * pages) between the language describing NOFLSH in termio(7)
+        * and the language describing qiflush()/noqiflush() in
+        * curs_inopts(3x) is too exact to be coincidence.
+        */
+
+#ifdef TERMIOS
+       BEFORE("intrflush");
+       if (flag)
+               cur_term->Nttyb.c_lflag &= ~(NOFLSH);
+       else
+               cur_term->Nttyb.c_lflag |= (NOFLSH);
+       AFTER("intrflush");
+       returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+#else
+       returnCode(ERR);
+#endif
+}
similarity index 72%
rename from ncurses/lib_setup.c
rename to ncurses/tinfo/lib_setup.c
index 88242974a264ee2a2b443b98ebe6e89b4aae90d7..64aa73fa8cf3a2b6177f94712b1a893a3db28d82 100644 (file)
@@ -40,6 +40,8 @@
  */
 
 #include <curses.priv.h>
+#include <tic.h>       /* for MAX_NAME_SIZE */
+#include <term_entry.h>
 
 #if defined(SVR4_TERMIO) && !defined(_POSIX_SOURCE)
 #define _POSIX_SOURCE
@@ -47,7 +49,7 @@
 
 #include <term.h>      /* lines, columns, cur_term */
 
-MODULE_ID("$Id: lib_setup.c,v 1.37 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.55 1999/08/21 23:06:08 tom Exp $")
 
 /****************************************************************************
  *
@@ -56,7 +58,7 @@ MODULE_ID("$Id: lib_setup.c,v 1.37 1998/02/11 12:13:56 tom Exp $")
  ****************************************************************************/
 
 #if HAVE_SIZECHANGE
-# if !defined(sun) || !HAVE_TERMIOS_H
+# if !defined(sun) || !TERMIOS
 #  if HAVE_SYS_IOCTL_H
 #   include <sys/ioctl.h>
 #  endif
@@ -89,8 +91,6 @@ MODULE_ID("$Id: lib_setup.c,v 1.37 1998/02/11 12:13:56 tom Exp $")
 # endif
 #endif
 
-extern TERMINAL *cur_term;
-
 static int _use_env = TRUE;
 
 static void do_prototype(void);
@@ -105,8 +105,6 @@ int LINES, COLS, TABSIZE;
 static void _nc_get_screensize(int *linep, int *colp)
 /* Obtain lines/columns values from the environment and/or terminfo entry */
 {
-char   *rows, *cols;
-
        /* figure out the size of the screen */
        T(("screen size: terminfo lines = %d columns = %d", lines, columns));
 
@@ -117,17 +115,29 @@ char      *rows, *cols;
        }
        else    /* usually want to query LINES and COLUMNS from environment */
        {
+           int value;
+
            *linep = *colp = 0;
 
            /* first, look for environment variables */
-           rows = getenv("LINES");
-           if (rows != 0)
-               *linep = atoi(rows);
-           cols = getenv("COLUMNS");
-           if (cols != 0)
-               *colp = atoi(cols);
+           if ((value = _nc_getenv_num("LINES")) > 0) {
+                   *linep = value;
+           }
+           if ((value = _nc_getenv_num("COLUMNS")) > 0) {
+                   *colp = value;
+           }
            T(("screen size: environment LINES = %d COLUMNS = %d",*linep,*colp));
 
+#ifdef __EMX__
+           if (*linep <= 0 || *colp <= 0)
+           {
+               int screendata[2];
+               _scrsize(screendata);
+               *colp  = screendata[0];
+               *linep = screendata[1];
+               T(("EMX screen size: environment LINES = %d COLUMNS = %d",*linep,*colp));
+           }
+#endif
 #if HAVE_SIZECHANGE
            /* if that didn't work, maybe we can try asking the OS */
            if (*linep <= 0 || *colp <= 0)
@@ -144,8 +154,14 @@ char       *rows, *cols;
                    } while
                        (errno == EINTR);
 
-                   *linep = WINSIZE_ROWS(size);
-                   *colp  = WINSIZE_COLS(size);
+                   /*
+                    * Solaris lets users override either dimension with an
+                    * environment variable.
+                    */
+                   if (*linep <= 0)
+                       *linep = WINSIZE_ROWS(size);
+                   if (*colp <= 0)
+                       *colp  = WINSIZE_COLS(size);
                }
                /* FALLTHRU */
            failure:;
@@ -177,11 +193,9 @@ char       *rows, *cols;
 
        T(("screen size is %dx%d", *linep, *colp));
 
-#ifdef init_tabs
        if (init_tabs != -1)
                TABSIZE = (int)init_tabs;
        else
-#endif /* init_tabs */
                TABSIZE = 8;
        T(("TABSIZE = %d", TABSIZE));
 
@@ -227,18 +241,41 @@ static int grab_entry(const char *const tn, TERMTYPE *const tp)
        char    filename[PATH_MAX];
        int     status;
 
-       if ((status = _nc_read_entry(tn, filename, tp)) == 1)
-           return(1);
-
-#ifndef PURE_TERMINFO
        /*
-        * Try falling back on the termcap file.  Note: allowing this call
-        * links the entire terminfo/termcap compiler into the startup code.
-        * It's preferable to build a real terminfo database and use that.
+        * $TERM shouldn't contain pathname delimiters.
         */
-       status = _nc_read_termcap_entry(tn, tp);
+       if (strchr(tn, '/'))
+               return 0;
+
+       if ((status = _nc_read_entry(tn, filename, tp)) != 1) {
+
+#ifndef PURE_TERMINFO
+               /*
+                * Try falling back on the termcap file.
+                * Note:  allowing this call links the entire terminfo/termcap
+                * compiler into the startup code.  It's preferable to build a
+                * real terminfo database and use that.
+                */
+               status = _nc_read_termcap_entry(tn, tp);
 #endif /* PURE_TERMINFO */
 
+       }
+
+       /*
+        * If we have an entry, force all of the cancelled strings to null
+        * pointers so we don't have to test them in the rest of the library.
+        * (The terminfo compiler bypasses this logic, since it must know if
+        * a string is cancelled, for merging entries).
+        */
+       if (status == 1) {
+               int n;
+               for_each_boolean(n,tp)
+                       if (!VALID_BOOLEAN(tp->Booleans[n]))
+                               tp->Booleans[n] = FALSE;
+               for_each_string(n,tp)
+                       if (tp->Strings[n] == CANCELLED_STRING)
+                               tp->Strings[n] = ABSENT_STRING;
+       }
        return(status);
 }
 #endif
@@ -253,25 +290,31 @@ char ttytype[NAMESIZE];
  *
  */
 
-int setupterm(const char *tname, int Filedes, int *errret)
+int setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
 {
 struct term    *term_ptr;
 int status;
 
-       T((T_CALLED("setupterm(\"%s\",%d,%p)"), tname, Filedes, errret));
+       T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, errret));
 
        if (tname == 0) {
                tname = getenv("TERM");
-               if (tname == 0 || *tname == '\0')
+               if (tname == 0 || *tname == '\0') {
                        ret_error0(-1, "TERM environment variable not set.\n");
+                }
+       }
+       if (strlen(tname) > MAX_NAME_SIZE) {
+               ret_error(-1, "TERM environment must be <= %d characters.\n",
+                   MAX_NAME_SIZE);
        }
 
        T(("your terminal name is %s", tname));
 
        term_ptr = typeCalloc(TERMINAL, 1);
 
-       if (term_ptr == 0)
+       if (term_ptr == 0) {
                ret_error0(-1, "Not enough memory to create terminal structure.\n") ;
+        }
 #if USE_DATABASE
        status = grab_entry(tname, &term_ptr->type);
 #else
@@ -285,7 +328,7 @@ int status;
 
            if (fallback)
            {
-               memcpy(&term_ptr->type, fallback, sizeof(TERMTYPE));
+               term_ptr->type = *fallback;
                status = 1;
            }
        }
@@ -299,6 +342,24 @@ int status;
                ret_error(0, "'%s': unknown terminal type.\n", tname);
        }
 
+       /*
+        * Improve on SVr4 curses.  If an application mixes curses and termcap
+        * calls, it may call both initscr and tgetent.  This is not really a
+        * good thing to do, but can happen if someone tries using ncurses with
+        * the readline library.  The problem we are fixing is that when
+        * tgetent calls setupterm, the resulting Ottyb struct in cur_term is
+        * zeroed.  A subsequent call to endwin uses the zeroed terminal
+        * settings rather than the ones saved in initscr.  So we check if
+        * cur_term appears to contain terminal settings for the same output
+        * file as our current call - and copy those terminal settings.  (SVr4
+        * curses does not do this, however applications that are working
+        * around the problem will still work properly with this feature).
+        */
+       if (cur_term != 0) {
+               if (cur_term->Filedes == Filedes)
+                       term_ptr->Ottyb = cur_term->Ottyb;
+       }
+
        set_curterm(term_ptr);
 
        if (command_character  &&  getenv("CC"))
@@ -323,11 +384,12 @@ int status;
 
        T((T_CREATE("screen %s %dx%d"), tname, LINES, COLS));
 
-       if (generic_type)
+       if (generic_type) {
                ret_error(0, "'%s': I need something more specific.\n", tname);
-       if (hard_copy)
+       }
+       if (hard_copy) {
                ret_error(1, "'%s': I can't handle hardcopy terminals.\n", tname);
-
+       }
        returnCode(OK);
 }
 
@@ -342,7 +404,7 @@ int status;
 static void
 do_prototype(void)
 {
-int    i, j;
+int    i;
 char   CC;
 char   proto;
 char    *tmp;
@@ -351,12 +413,10 @@ char    *tmp;
        CC = *tmp;
        proto = *command_character;
 
-       for (i=0; i < STRCOUNT; i++) {
-               j = 0;
-               while (cur_term->type.Strings[i][j]) {
-                       if (cur_term->type.Strings[i][j] == proto)
-                               cur_term->type.Strings[i][j] = CC;
-                       j++;
-               }
+       for_each_string(i, &(cur_term->type)) {
+           for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
+               if (*tmp == proto)
+                   *tmp = CC;
+           }
        }
 }
similarity index 68%
rename from ncurses/lib_termcap.c
rename to ncurses/tinfo/lib_termcap.c
index d8dcf3e9193c415f0060d0b6ec79cb771bea401c..8238b368eea3e581a2e6b23bda576ea9434e8005 100644 (file)
 #include <tic.h>
 
 #define __INTERNAL_CAPS_VISIBLE
-#include <term.h>
+#include <term_entry.h>
 
-MODULE_ID("$Id: lib_termcap.c,v 1.17 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_termcap.c,v 1.29 1999/09/05 01:06:43 tom Exp $")
 
 /*
    some of the code in here was contributed by:
    Magnus Bengtsson, d6mbeng@dtek.chalmers.se
 */
 
-char PC;
 char *UP;
 char *BC;
-short ospeed;
 
 /***************************************************************************
  *
@@ -69,86 +67,26 @@ short ospeed;
 int tgetent(char *bufp GCC_UNUSED, const char *name)
 {
 int errcode;
-#if defined(TERMIOS)
-speed_t speed;
-#endif
-
-       T(("calling tgetent"));
-       setupterm(name, STDOUT_FILENO, &errcode);
-
-       if (errcode != 1)
-               return(errcode);
-
-       if (cursor_left)
-           if ((backspaces_with_bs = !strcmp(cursor_left, "\b")) == 0)
-               backspace_if_not_bs = cursor_left;
-
-       /* we're required to export these */
-       if (pad_char != NULL)
-               PC = pad_char[0];
-       if (cursor_up != NULL)
-               UP = cursor_up;
-       if (backspace_if_not_bs != NULL)
-               BC = backspace_if_not_bs;
-#if defined(TERMIOS)
-       /*
-        * Back-convert to the funny speed encoding used by the old BSD
-        * curses library.  Method suggested by Andrey Chernov
-        * <ache@astral.msk.su>
-        */
-       if ((speed = cfgetospeed(&cur_term->Nttyb)) < 1)
-           ospeed = 1;         /* assume lowest non-hangup speed */
-       else
-       {
-               const speed_t *sp;
-               static const speed_t speeds[] = {
-#ifdef B115200
-                       B115200,
-#endif
-#ifdef B57600
-                       B57600,
-#endif
-#ifdef B38400
-                       B38400,
-#else
-#ifdef EXTB
-                       EXTB,
-#endif
-#endif /* B38400 */
-#ifdef B19200
-                       B19200,
-#else
-#ifdef EXTA
-                       EXTA,
-#endif
-#endif /* B19200 */
-                       B9600,
-                       B4800,
-                       B2400,
-                       B1800,
-                       B1200,
-                       B600,
-                       B300,
-                       B200,
-                       B150,
-                       B134,
-                       B110,
-                       B75,
-                       B50,
-                       B0,
-               };
-#define MAXSPEED       SIZEOF(speeds)
-
-               for (sp = speeds; sp < speeds + MAXSPEED; sp++) {
-                       if (sp[0] <= speed) {
-                               break;
-                       }
-               }
-               ospeed = MAXSPEED - (sp - speeds);
-       }
-#else
-       ospeed = cur_term->Nttyb.sg_ospeed;
-#endif
+
+       T((T_CALLED("tgetent()")));
+
+       setupterm((NCURSES_CONST char *)name, STDOUT_FILENO, &errcode);
+
+       if (errcode == 1) {
+
+               if (cursor_left)
+                   if ((backspaces_with_bs = !strcmp(cursor_left, "\b")) == 0)
+                       backspace_if_not_bs = cursor_left;
+
+               /* we're required to export these */
+               if (pad_char != NULL)
+                       PC = pad_char[0];
+               if (cursor_up != NULL)
+                       UP = cursor_up;
+               if (backspace_if_not_bs != NULL)
+                       BC = backspace_if_not_bs;
+
+               (void) baudrate();      /* sets ospeed as a side-effect */
 
 /* LINT_PREPRO
 #if 0*/
@@ -156,7 +94,8 @@ speed_t speed;
 /* LINT_PREPRO
 #endif*/
 
-       return errcode;
+       }
+       returnCode(errcode);
 }
 
 /***************************************************************************
@@ -168,17 +107,22 @@ speed_t speed;
  *
  ***************************************************************************/
 
-int tgetflag(const char *id)
+int tgetflag(NCURSES_CONST char *id)
 {
 int i;
 
-       T(("tgetflag: %s", id));
+       T((T_CALLED("tgetflag(%s)"), id));
        if (cur_term != 0) {
-               for (i = 0; i < BOOLCOUNT; i++)
-                       if (!strcmp(id, boolcodes[i]))
-                               return cur_term->type.Booleans[i];
+           TERMTYPE *tp = &(cur_term->type);
+           for_each_boolean(i, tp) {
+               const char *capname = ExtBoolname(tp, i, boolcodes);
+               if (!strncmp(id, capname, 2)) {
+                   /* setupterm forces invalid booleans to false */
+                   returnCode(tp->Booleans[i]);
+               }
+           }
        }
-       return ERR;
+       returnCode(0);  /* Solaris does this */
 }
 
 /***************************************************************************
@@ -190,17 +134,23 @@ int i;
  *
  ***************************************************************************/
 
-int tgetnum(const char *id)
+int tgetnum(NCURSES_CONST char *id)
 {
 int i;
 
-       T(("tgetnum: %s", id));
+       T((T_CALLED("tgetnum(%s)"), id));
        if (cur_term != 0) {
-               for (i = 0; i < NUMCOUNT; i++)
-                       if (!strcmp(id, numcodes[i]))
-                               return cur_term->type.Numbers[i];
+           TERMTYPE *tp = &(cur_term->type);
+           for_each_number(i, tp) {
+               const char *capname = ExtNumname(tp, i, numcodes);
+               if (!strncmp(id, capname, 2)) {
+                   if (!VALID_NUMERIC(tp->Numbers[i]))
+                       return -1;
+                   returnCode(tp->Numbers[i]);
+               }
+           }
        }
-       return ERR;
+       returnCode(ERR);
 }
 
 /***************************************************************************
@@ -212,21 +162,30 @@ int i;
  *
  ***************************************************************************/
 
-char *tgetstr(const char *id, char **area GCC_UNUSED)
+char *tgetstr(NCURSES_CONST char *id, char **area)
 {
 int i;
 
-       T(("tgetstr: %s", id));
+       T((T_CALLED("tgetstr(%s,%p)"), id, area));
        if (cur_term != 0) {
-               for (i = 0; i < STRCOUNT; i++) {
-                       T(("trying %s", strcodes[i]));
-                       if (!strcmp(id, strcodes[i])) {
-                               T(("found match : %s", cur_term->type.Strings[i]));
-                               return cur_term->type.Strings[i];
-                       }
+           TERMTYPE *tp = &(cur_term->type);
+           for_each_string(i, tp) {
+               const char *capname = ExtStrname(tp, i, strcodes);
+               T(("trying %s", capname));
+               if (!strncmp(id, capname, 2)) {
+                   T(("found match : %s", _nc_visbuf(tp->Strings[i])));
+                   /* setupterm forces cancelled strings to null */
+                   if (area != 0
+                    && *area != 0
+                    && VALID_STRING(tp->Strings[i])) {
+                       (void) strcpy(*area, tp->Strings[i]);
+                       *area += strlen(*area) + 1;
+                   }
+                   returnPtr(tp->Strings[i]);
                }
+           }
        }
-       return NULL;
+       returnPtr(NULL);
 }
 
 /*
@@ -240,5 +199,6 @@ int i;
 
 char *tgoto(const char *string, int x, int y)
 {
-       return(tparm(string, y, x));
+       T((T_CALLED("tgoto(%s,%d,%d)"), string, x, y));
+       returnPtr(tparm((NCURSES_CONST char *)string, y, x));
 }
diff --git a/ncurses/tinfo/lib_termname.c b/ncurses/tinfo/lib_termname.c
new file mode 100644 (file)
index 0000000..e705738
--- /dev/null
@@ -0,0 +1,46 @@
+/****************************************************************************
+ * Copyright (c) 1998 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.                                                           *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+#include <tic.h>       /* for MAX_ALIAS */
+
+MODULE_ID("$Id: lib_termname.c,v 1.2 1999/07/24 21:02:40 tom Exp $")
+
+char *termname(void)
+{
+char   *name = getenv("TERM");
+static char    ret[MAX_ALIAS+1];
+
+       T(("termname() called"));
+
+       if (name != 0) {
+               (void) strncpy(ret, name, sizeof(ret) - 1);
+               name = ret;
+       }
+       return name;
+}
diff --git a/ncurses/tinfo/lib_ti.c b/ncurses/tinfo/lib_ti.c
new file mode 100644 (file)
index 0000000..7b2b2f9
--- /dev/null
@@ -0,0 +1,101 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ ****************************************************************************/
+
+
+#include <curses.priv.h>
+
+#include <term_entry.h>
+#include <tic.h>
+
+MODULE_ID("$Id: lib_ti.c,v 1.16 1999/02/28 23:11:28 tom Exp $")
+
+int tigetflag(NCURSES_CONST char *str)
+{
+int i;
+
+       T((T_CALLED("tigetflag(%s)"), str));
+
+       if (cur_term != 0) {
+           TERMTYPE *tp = &(cur_term->type);
+           for_each_boolean(i,tp) {
+               const char *capname = ExtBoolname(tp, i, boolnames);
+               if (!strcmp(str, capname)) {
+                   /* setupterm forces invalid booleans to false */
+                   returnCode(tp->Booleans[i]);
+               }
+           }
+       }
+
+       returnCode(ABSENT_BOOLEAN);
+}
+
+int tigetnum(NCURSES_CONST char *str)
+{
+int i;
+
+       T((T_CALLED("tigetnum(%s)"), str));
+
+       if (cur_term != 0) {
+           TERMTYPE *tp = &(cur_term->type);
+           for_each_number(i, tp) {
+               const char *capname = ExtNumname(tp, i, numnames);
+               if (!strcmp(str, capname)) {
+                   if (!VALID_NUMERIC(tp->Numbers[i]))
+                       return -1;
+                   returnCode(tp->Numbers[i]);
+               }
+           }
+       }
+
+       returnCode(CANCELLED_NUMERIC);  /* Solaris returns a -1 instead */
+}
+
+char *tigetstr(NCURSES_CONST char *str)
+{
+int i;
+
+       T((T_CALLED("tigetstr(%s)"), str));
+
+       if (cur_term != 0) {
+           TERMTYPE *tp = &(cur_term->type);
+           for_each_string(i, tp) {
+               const char *capname = ExtStrname(tp, i, strnames);
+               if (!strcmp(str, capname)) {
+                   /* setupterm forces cancelled strings to null */
+                   returnPtr(tp->Strings[i]);
+               }
+           }
+       }
+
+       returnPtr(CANCELLED_STRING);
+}
similarity index 72%
rename from ncurses/lib_tparm.c
rename to ncurses/tinfo/lib_tparm.c
index 02125b67966eb6d7aa600f6a14987b7230904098..71b82916a356e405a4bab93694fc6de3e5824543 100644 (file)
 
 #include <curses.priv.h>
 
+#include <ctype.h>
 #include <term.h>
+#include <tic.h>
 
-MODULE_ID("$Id: lib_tparm.c,v 1.22 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.39 1999/06/06 00:04:55 tom Exp $")
 
 /*
  *     char *
@@ -59,33 +61,29 @@ MODULE_ID("$Id: lib_tparm.c,v 1.22 1998/02/11 12:13:54 tom Exp $")
  *     screen visible to the user, not to any  unseen  memory.)  If
  *     the terminal has memory relative cursor addressing, that can
  *     be indicated by
- *     
+ *
  *          The parameter mechanism uses  a  stack  and  special  %
  *     codes  to manipulate it.  Typically a sequence will push one
  *     of the parameters onto the stack and then print it  in  some
  *     format.  Often more complex operations are necessary.
- *     
+ *
  *          The % encodings have the following meanings:
- *     
+ *
  *          %%        outputs `%'
- *          %d        print pop() like %d in printf()
- *          %2d       print pop() like %2d in printf()
- *          %02d      print pop() like %02d in printf()
- *          %3d       print pop() like %3d in printf()
- *          %03d      print pop() like %03d in printf()
- *          %2x       print pop() like %2x in printf()
- *          %02x      print pop() like %02x in printf()
- *          %3x       print pop() like %3x in printf()
- *          %03x      print pop() like %03x in printf()
  *          %c        print pop() like %c in printf()
  *          %s        print pop() like %s in printf()
- *     
+ *           %[[:]flags][width[.precision]][doxXs]
+ *                     as in printf, flags are [-+#] and space
+ *
  *          %p[1-9]   push ith parm
- *          %P[a-z]   set variable [a-z] to pop()
- *          %g[a-z]   get variable [a-z] and push it
+ *          %P[a-z]   set dynamic variable [a-z] to pop()
+ *          %g[a-z]   get dynamic variable [a-z] and push it
+ *          %P[A-Z]   set static variable [A-Z] to pop()
+ *          %g[A-Z]   get static variable [A-Z] and push it
+ *          %l        push strlen(pop)
  *          %'c'      push char constant c
  *          %{nn}     push integer constant nn
- *     
+ *
  *          %+ %- %* %/ %m
  *                    arithmetic (%m is mod): push(pop() op pop())
  *          %& %| %^  bit operations: push(pop() op pop())
@@ -93,21 +91,18 @@ MODULE_ID("$Id: lib_tparm.c,v 1.22 1998/02/11 12:13:54 tom Exp $")
  *          %A %O     logical and & or operations for conditionals
  *          %! %~     unary operations push(op pop())
  *          %i        add 1 to first two parms (for ANSI terminals)
- *     
+ *
  *          %? expr %t thenpart %e elsepart %;
  *                    if-then-else, %e elsepart is optional.
  *                    else-if's are possible ala Algol 68:
  *                    %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e b5 %;
- *     
+ *
  *     For those of the above operators which are binary and not commutative,
  *     the stack works in the usual way, with
  *                     %gx %gy %m
  *     resulting in x mod y, not the reverse.
  */
 
-#define L_BRACE '{'
-#define R_BRACE '}'
-
 #define STACKSIZE      20
 
 typedef union {
@@ -136,44 +131,58 @@ void _nc_free_tparm(void)
 }
 #endif
 
-static void save_text(char *s)
+static void really_get_space(size_t need)
 {
-       size_t  want = strlen(s);
-       size_t  need = want + out_used + 1;
-
-       if (need > out_size) {
-               out_size = need * 2;
-               if (out_buff == 0)
-                       out_buff = malloc(out_size);
-               else
-                       out_buff = realloc(out_buff, out_size);
-       }
-       (void)strcpy(out_buff + out_used, s);
-       out_used += want;
+       out_size = need * 2;
+       out_buff = typeRealloc(char, out_size, out_buff);
+       if (out_buff == 0)
+               _nc_err_abort("Out of memory");
+}
+
+static inline void get_space(size_t need)
+{
+       need += out_used;
+       if (need > out_size)
+               really_get_space(need);
+}
+
+static inline void save_text(const char *fmt, char *s, int len)
+{
+       size_t s_len = strlen(s);
+       if (len > (int)s_len)
+               s_len = len;
+
+       get_space(s_len + 1);
+
+       (void)sprintf(out_buff+out_used, fmt, s);
+       out_used += strlen(out_buff+out_used);
 }
 
-static void save_number(const char *fmt, int number)
+static inline void save_number(const char *fmt, int number, int len)
 {
-       char temp[80];
-       (void)sprintf(temp, fmt, number);
-       save_text(temp);
+       if (len < 30)
+               len = 30; /* actually log10(MAX_INT)+1 */
+
+       get_space(len + 1);
+
+       (void)sprintf(out_buff+out_used, fmt, number);
+       out_used += strlen(out_buff+out_used);
 }
 
 static inline void save_char(int c)
 {
-       static char text[2];
        if (c == 0)
                c = 0200;
-       text[0] = c;
-       save_text(text);
+       get_space(1);
+       out_buff[out_used++] = c;
 }
 
 static inline void npush(int x)
 {
        if (stack_ptr < STACKSIZE) {
                stack[stack_ptr].num = x;
-        stack_ptr++;
-    }
+               stack_ptr++;
+       }
 }
 
 static inline int npop(void)
@@ -183,22 +192,88 @@ static inline int npop(void)
 
 static inline char *spop(void)
 {
-       return   (stack_ptr > 0  ?  stack[--stack_ptr].str  :  0);
+       static char dummy[] = "";       /* avoid const-cast */
+       return   (stack_ptr > 0  ?  stack[--stack_ptr].str  :  dummy);
+}
+
+static inline const char *parse_format(const char *s, char *format, int *len)
+{
+       bool done = FALSE;
+       bool allowminus = FALSE;
+       bool dot = FALSE;
+       int prec  = 0;
+       int width = 0;
+
+       *len = 0;
+       *format++ = '%';
+       while (*s != '\0' && !done) {
+               switch (*s) {
+               case 'c':       /* FALLTHRU */
+               case 'd':       /* FALLTHRU */
+               case 'o':       /* FALLTHRU */
+               case 'x':       /* FALLTHRU */
+               case 'X':       /* FALLTHRU */
+               case 's':
+                       *format++ = *s;
+                       done = TRUE;
+                       break;
+               case '.':
+                       *format++ = *s++;
+                       dot = TRUE;
+                       break;
+               case '#':
+                       *format++ = *s++;
+                       break;
+               case ' ':
+                       *format++ = *s++;
+                       break;
+               case ':':
+                       s++;
+                       allowminus = TRUE;
+                       break;
+               case '-':
+                       if (allowminus) {
+                               *format++ = *s++;
+                       } else {
+                               done = TRUE;
+                       }
+                       break;
+               default:
+                       if (isdigit(*s)) {
+                               if (dot)
+                                       prec  = (prec * 10) + (*s - '0');
+                               else
+                                       width = (width * 10) + (*s - '0');
+                               *format++ = *s++;
+                       } else {
+                               done = TRUE;
+                       }
+               }
+       }
+       *format = '\0';
+       /* return maximum string length in print */
+       *len = (prec > width) ? prec : width;
+       return s;
 }
 
+#define isUPPER(c) ((c) >= 'A' && (c) <= 'Z')
+#define isLOWER(c) ((c) >= 'a' && (c) <= 'z')
+
 static inline char *tparam_internal(const char *string, va_list ap)
 {
 #define NUM_VARS 26
 int    param[9];
 int    popcount;
-int    variable[NUM_VARS];
-char   len;
 int    number;
+int    len;
 int    level;
 int    x, y;
 int    i;
-int    varused = -1;
 register const char *cp;
+static size_t len_fmt;
+static char *format;
+static int dynamic_var[NUM_VARS];
+static int static_vars[NUM_VARS];
 
        out_used = 0;
        if (string == NULL)
@@ -235,6 +310,11 @@ register const char *cp;
                        }
                }
        }
+       if ((size_t)(cp - string) > len_fmt) {
+               len_fmt = (cp - string) + len_fmt + 2;
+               if ((format = typeRealloc(char, len_fmt, format)) == 0)
+                       return 0;
+       }
 
        if (number > 9) number = 9;
        for (i = 0; i < max(popcount, number); i++) {
@@ -247,7 +327,7 @@ register const char *cp;
 
        /*
         * This is a termcap compatibility hack.  If there are no explicit pop
-        * operations in the string, load the stack in such a way that 
+        * operations in the string, load the stack in such a way that
         * successive pops will grab successive parameters.  That will make
         * the expansion of (for example) \E[%d;%dH work correctly in termcap
         * style, which means tparam() will expand termcap strings OK.
@@ -262,17 +342,18 @@ register const char *cp;
 #ifdef TRACE
        if (_nc_tracing & TRACE_CALLS) {
                for (i = 0; i < popcount; i++)
-                       save_number(", %d", param[i]);
+                       save_number(", %d", param[i], 0);
                _tracef(T_CALLED("%s(%s%s)"), tname, _nc_visbuf(string), out_buff);
                out_used = 0;
-       }
+       }
 #endif /* TRACE */
 
        while (*string) {
-               if (*string != '%')
+               if (*string != '%') {
                        save_char(*string);
-               else {
+               else {
                        string++;
+                       string = parse_format(string, format, &len);
                        switch (*string) {
                        default:
                                break;
@@ -280,61 +361,20 @@ register const char *cp;
                                save_char('%');
                                break;
 
-                       case 'd':
-                               save_number("%d", npop());
-                               break;
-
-                       case 'x':
-                               save_number("%x", npop());
-                               break;
-
-                       case '0':
-                               string++;
-                               len = *string;
-                               if (len == '2'  ||  len == '3')
-                               {
-                                       ++string;
-                                       if (*string == 'd') {
-                                               if (len == '2')
-                                                       save_number("%02d", npop());
-                                               else
-                                                       save_number("%03d", npop());
-                                       }
-                                       else if (*string == 'x') {
-                                               if (len == '2')
-                                                       save_number("%02x", npop());
-                                               else
-                                                       save_number("%03x", npop());
-                                       }
-                               }
-                               break;
-
-                       case '2':
-                               string++;
-                               if (*string == 'd') {
-                                       save_number("%2d", npop());
-                               }
-                               else if (*string == 'x') {
-                                       save_number("%2x", npop());
-                               }
-                               break;
-
-                       case '3':
-                               string++;
-                               if (*string == 'd') {
-                                       save_number("%3d", npop());
-                               }
-                               else if (*string == 'x') {
-                                       save_number("%3x", npop());
-                               }
+                       case 'd':       /* FALLTHRU */
+                       case 'o':       /* FALLTHRU */
+                       case 'x':       /* FALLTHRU */
+                       case 'X':       /* FALLTHRU */
+                       case 'c':
+                               save_number(format, npop(), len);
                                break;
 
-                       case 'c':
-                               save_char(npop());
+                       case 'l':
+                               save_number("%d", strlen(spop()), 0);
                                break;
 
                        case 's':
-                               save_text(spop());
+                               save_text(format, spop(), len);
                                break;
 
                        case 'p':
@@ -345,25 +385,27 @@ register const char *cp;
 
                        case 'P':
                                string++;
-                               i = (*string - 'a');
-                               if (i >= 0 && i < NUM_VARS) {
-                                       while (varused < i)
-                                               variable[++varused] = 0;
-                                       variable[i] = npop();
+                               if (isUPPER(*string)) {
+                                       i = (*string - 'A');
+                                       static_vars[i] = npop();
+                               } else if (isLOWER(*string)) {
+                                       i = (*string - 'a');
+                                       dynamic_var[i] = npop();
                                }
                                break;
 
                        case 'g':
                                string++;
-                               i = (*string - 'a');
-                               if (i >= 0 && i < NUM_VARS) {
-                                       while (varused < i)
-                                               variable[++varused] = 0;
-                                       npush(variable[i]);
+                               if (isUPPER(*string)) {
+                                       i = (*string - 'A');
+                                       npush(static_vars[i]);
+                               } else if (isLOWER(*string)) {
+                                       i = (*string - 'a');
+                                       npush(dynamic_var[i]);
                                }
                                break;
 
-                       case '\'':
+                       case S_QUOTE:
                                string++;
                                npush(*string);
                                string++;
@@ -396,13 +438,13 @@ register const char *cp;
                        case '/':
                                y = npop();
                                x = npop();
-                               npush(x / y);
+                               npush(y ? (x / y) : 0);
                                break;
 
                        case 'm':
                                y = npop();
                                x = npop();
-                               npush(x % y);
+                               npush(y ? (x % y) : 0);
                                break;
 
                        case 'A':
@@ -520,16 +562,15 @@ register const char *cp;
                string++;
        } /* endwhile (*string) */
 
-       if (out_buff == 0)
-               out_buff = calloc(1,1);
-       if (out_used == 0)
-               *out_buff = '\0';
+       if (out_buff == 0 && (out_buff = typeCalloc(char,1)) == NULL)
+               return(NULL);
+       out_buff[out_used] = '\0';
 
        T((T_RETURN("%s"), _nc_visbuf(out_buff)));
        return(out_buff);
 }
 
-char *tparm(const char *string, ...)
+char *tparm(NCURSES_CONST char *string, ...)
 {
 va_list        ap;
 char *result;
@@ -542,21 +583,3 @@ char *result;
        va_end(ap);
        return result;
 }
-
-#ifdef __UNUSED__      /* we never documented this, and it confuses Emacs */
-char *tparam(const char *string, char *buffer, int bufsiz, ...)
-{
-va_list        ap;
-char *result = 0;
-
-       va_start(ap, bufsiz);
-#ifdef TRACE
-       tname = "tparam";
-#endif /* TRACE */
-       if (tparam_internal(string, ap) != 0
-        && (int)out_used < bufsiz)
-               result = strcpy(buffer, out_buff);
-       va_end(ap);
-       return result;
-}
-#endif /* __UNUSED__ */
similarity index 84%
rename from ncurses/lib_tputs.c
rename to ncurses/tinfo/lib_tputs.c
index e5b4a6bcaa14e4389df1d93e8de18866e7a49fd4..d3fd46276e6ef7a443b240eefa71f82e6ec01f71 100644 (file)
 #include <curses.priv.h>
 #include <ctype.h>
 #include <term.h>      /* padding_baud_rate, xon_xoff */
+#include <termcap.h>   /* ospeed */
 #include <tic.h>
 
-MODULE_ID("$Id: lib_tputs.c,v 1.30 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: lib_tputs.c,v 1.41 1999/10/22 23:31:24 tom Exp $")
 
-#define OUTPUT ((SP != 0) ? SP->_ofp : stdout)
+char PC;               /* used by termcap library */
+speed_t ospeed;                /* used by termcap library */
 
 int _nc_nulls_sent;    /* used by 'tack' program */
 
@@ -57,28 +59,16 @@ int delay_output(int ms)
 {
        T((T_CALLED("delay_output(%d)"), ms));
 
-       if (cur_term == 0 || cur_term->_baudrate <= 0) {
-               (void) fflush(OUTPUT);
-               _nc_timed_wait(0, ms, (int *)0);
-       }
-#ifdef no_pad_char
-       else if (no_pad_char)
+       if (no_pad_char)
                napms(ms);
-#endif /* no_pad_char */
        else {
                register int    nullcount;
-               char    null = '\0';
-
-#ifdef pad_char
-               if (pad_char)
-                       null = pad_char[0];
-#endif /* pad_char */
 
-               nullcount = ms * cur_term->_baudrate / 10000;
+               nullcount = (ms * _nc_baudrate(ospeed)) / 10000;
                for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--)
-                       my_outch(null);
+                       my_outch(PC);
                if (my_outch == _nc_outch)
-                       (void) fflush(OUTPUT);
+                       _nc_flush();
        }
 
        returnCode(OK);
@@ -90,7 +80,17 @@ int _nc_outch(int ch)
        _nc_outchars++;
 #endif /* TRACE */
 
-       putc(ch, OUTPUT);
+       if (SP != 0
+        && SP->_cleanup) {
+               char tmp = ch;
+               /*
+                * POSIX says write() is safe in a signal handler, but the
+                * buffered I/O is not.
+                */
+               write(fileno(NC_OUTPUT), &tmp, 1);
+       } else {
+               putc(ch, NC_OUTPUT);
+       }
        return OK;
 }
 
@@ -109,7 +109,7 @@ int trailpad;
 #endif /* BSD_TPUTS */
 
 #ifdef TRACE
-char   addrbuf[17];
+char   addrbuf[32];
 
        if (_nc_tracing & TRACE_TPUTS)
        {
@@ -117,15 +117,17 @@ char      addrbuf[17];
                        (void) strcpy(addrbuf, "_nc_outch");
                else
                        (void) sprintf(addrbuf, "%p", outc);
-               if (_nc_tputs_trace)
+               if (_nc_tputs_trace) {
                        TR(TRACE_MAXIMUM, ("tputs(%s = %s, %d, %s) called", _nc_tputs_trace, _nc_visbuf(string), affcnt, addrbuf));
-               else
+               }
+               else {
                        TR(TRACE_MAXIMUM, ("tputs(%s, %d, %s) called", _nc_visbuf(string), affcnt, addrbuf));
+               }
                _nc_tputs_trace = (char *)NULL;
        }
 #endif /* TRACE */
        
-       if (string == ABSENT_STRING || string == CANCELLED_STRING)
+       if (!VALID_STRING(string))
                return ERR;
 
        if (cur_term == 0) {
@@ -135,11 +137,11 @@ char      addrbuf[17];
                always_delay = (string == bell) || (string == flash_screen);
                normal_delay =
                 !xon_xoff
-#ifdef padding_baud_rate
                 && padding_baud_rate
-                && (!cur_term || cur_term->_baudrate >= padding_baud_rate)
+#ifdef NCURSES_NO_PADDING
+                && (SP == 0 || !(SP->_no_padding))
 #endif
-                ;
+                && (_nc_baudrate(ospeed) >= padding_baud_rate);
        }
 
 #ifdef BSD_TPUTS
@@ -148,24 +150,26 @@ char      addrbuf[17];
         * (like nethack) actually do the likes of tputs("50") to get delays.
         */
        trailpad = 0;
-       while (isdigit(*string)) {
-               trailpad = trailpad * 10 + (*string - '0');
-               string++;
-       }
-       trailpad *= 10;
-       if (*string == '.') {
-               string++;
-               if (isdigit(*string)) {
-                       trailpad += (*string - '0');
+       if (isdigit(*string)) {
+               while (isdigit(*string)) {
+                       trailpad = trailpad * 10 + (*string - '0');
                        string++;
                }
-               while (isdigit(*string))
+               trailpad *= 10;
+               if (*string == '.') {
                        string++;
-       }
+                       if (isdigit(*string)) {
+                               trailpad += (*string - '0');
+                               string++;
+                       }
+                       while (isdigit(*string))
+                               string++;
+               }
 
-       if (*string == '*') {
-               trailpad *= affcnt;
-               string++;
+               if (*string == '*') {
+                       trailpad *= affcnt;
+                       string++;
+               }
        }
 #endif /* BSD_TPUTS */
 
diff --git a/ncurses/tinfo/lib_ttyflags.c b/ncurses/tinfo/lib_ttyflags.c
new file mode 100644 (file)
index 0000000..0e57c51
--- /dev/null
@@ -0,0 +1,163 @@
+/****************************************************************************
+ * Copyright (c) 1998 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.                                                           *
+ ****************************************************************************/
+
+/*
+ *             def_prog_mode()
+ *             def_shell_mode()
+ *             reset_prog_mode()
+ *             reset_shell_mode()
+ *             savetty()
+ *             resetty()
+ */
+
+#include <curses.priv.h>
+#include <term.h>      /* cur_term */
+
+MODULE_ID("$Id: lib_ttyflags.c,v 1.3 1999/10/22 21:38:55 tom Exp $")
+
+#undef tabs
+
+#ifdef TAB3
+# define tabs TAB3
+#else
+# ifdef XTABS
+#  define tabs XTABS
+# else
+#  ifdef OXTABS
+#   define tabs OXTABS
+#  else
+#   define tabs 0
+#  endif
+# endif
+#endif
+
+int _nc_get_tty_mode(TTY *buf)
+{
+       if (cur_term == 0
+        || GET_TTY(cur_term->Filedes, buf) != 0)
+               return(ERR);
+       TR(TRACE_BITS,("_nc_get_tty_mode: %s", _nc_tracebits()));
+       return (OK);
+}
+
+int _nc_set_tty_mode(TTY *buf)
+{
+       if (cur_term == 0
+        || SET_TTY(cur_term->Filedes, buf) != 0)
+               return(ERR);
+       TR(TRACE_BITS,("_nc_set_tty_mode: %s", _nc_tracebits()));
+       return (OK);
+}
+
+int def_shell_mode(void)
+{
+       T((T_CALLED("def_shell_mode()")));
+
+       /*
+        * Turn off the XTABS bit in the tty structure if it was on.  If XTABS
+        * was on, remove the tab and backtab capabilities.
+        */
+
+       if (_nc_get_tty_mode(&cur_term->Ottyb) != OK)
+               returnCode(ERR);
+#ifdef TERMIOS
+       if (cur_term->Ottyb.c_oflag & tabs)
+               tab = back_tab = NULL;
+#else
+       if (cur_term->Ottyb.sg_flags & XTABS)
+               tab = back_tab = NULL;
+#endif
+       returnCode(OK);
+}
+
+int def_prog_mode(void)
+{
+       T((T_CALLED("def_prog_mode()")));
+
+       if (_nc_get_tty_mode(&cur_term->Nttyb) != OK)
+               returnCode(ERR);
+#ifdef TERMIOS
+       cur_term->Nttyb.c_oflag &= ~tabs;
+#else
+       cur_term->Nttyb.sg_flags &= ~XTABS;
+#endif
+       returnCode(OK);
+}
+
+int reset_prog_mode(void)
+{
+       T((T_CALLED("reset_prog_mode()")));
+
+       if (cur_term != 0) {
+               _nc_set_tty_mode(&cur_term->Nttyb);
+               if (SP) {
+                       if (stdscr && stdscr->_use_keypad)
+                               _nc_keypad(TRUE);
+                       NC_BUFFERED(TRUE);
+               }
+               returnCode(OK);
+       }
+       returnCode(ERR);
+}
+
+int reset_shell_mode(void)
+{
+       T((T_CALLED("reset_shell_mode()")));
+
+       if (cur_term != 0) {
+               if (SP)
+               {
+                       _nc_keypad(FALSE);
+                       _nc_flush();
+                       NC_BUFFERED(FALSE);
+               }
+               returnCode(_nc_set_tty_mode(&cur_term->Ottyb));
+       }
+       returnCode(ERR);
+}
+
+/*
+**     savetty()  and  resetty()
+**
+*/
+
+static TTY   buf;
+
+int savetty(void)
+{
+       T((T_CALLED("savetty()")));
+
+       returnCode(_nc_get_tty_mode(&buf));
+}
+
+int resetty(void)
+{
+       T((T_CALLED("resetty()")));
+
+       returnCode(_nc_set_tty_mode(&buf));
+}
similarity index 95%
rename from ncurses/make_keys.c
rename to ncurses/tinfo/make_keys.c
index c244b0c9fd616361560a7b9cd5f5146fb0e3dc09..a1fd1d0b66f89ca4f9e3bd4d21d33945d48787c4 100644 (file)
@@ -37,7 +37,7 @@
  */
 #include <curses.priv.h>
 
-MODULE_ID("$Id: make_keys.c,v 1.4 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: make_keys.c,v 1.7 1999/09/11 17:32:57 Jeffrey.Honig Exp $")
 
 #include <names.c>
 
@@ -103,14 +103,14 @@ int main(int argc, char *argv[])
                "",
                "/* This file was generated by MAKE_KEYS */",
                "",
-               "static const struct {",
-               "\tunsigned offset;",
-               "\tchtype code;",
-               "} table[] = {",
+               "#ifdef BROKEN_LINKER",
+               "static",
+               "#endif",
+               "struct tinfo_fkeys _nc_tinfo_fkeys[] = {",
                0
        };
        static const char *suffix[] = {
-               "};",
+               "\t{ 0, 0} };",
                "",
                "#endif /* NCU_KEYS_H */",
                0
similarity index 74%
rename from ncurses/name_match.c
rename to ncurses/tinfo/name_match.c
index 457f6376902af81bb431e744a43075d693763702..a9e8396959d119380c955e1858aa11713454a019 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1999 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            *
  ****************************************************************************/
 
 /****************************************************************************
- *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
- *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ *  Author: Thomas E. Dickey <dickey@clark.net> 1999                        *
  ****************************************************************************/
 
 #include <curses.priv.h>
 #include <term.h>
 #include <tic.h>
 
-MODULE_ID("$Id: name_match.c,v 1.4 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: name_match.c,v 1.8 1999/03/07 01:58:36 tom Exp $")
 
 /*
  *     _nc_first_name(char *names)
@@ -46,16 +45,16 @@ MODULE_ID("$Id: name_match.c,v 1.4 1998/02/11 12:13:55 tom Exp $")
 char *_nc_first_name(const char *const sp)
 /* get the first name from the given name list */
 {
-    static char        buf[MAX_NAME_SIZE];
-    register char *cp;
+       static char     buf[MAX_NAME_SIZE+1];
+       register unsigned n;
 
-    (void) strcpy(buf, sp);
-
-    cp = strchr(buf, '|');
-    if (cp)
-       *cp = '\0';
-
-    return(buf);
+       for (n = 0; n < sizeof(buf)-1; n++) {
+               if ((buf[n] = sp[n]) == '\0'
+                || (buf[n] == '|'))
+                       break;
+       }
+       buf[n] = '\0';
+       return(buf);
 }
 
 /*
@@ -65,21 +64,33 @@ char *_nc_first_name(const char *const sp)
  */
 
 int _nc_name_match(const char *const namelst, const char *const name, const char *const delim)
-/* microtune this, it occurs in several critical loops */
 {
-char namecopy[MAX_ENTRY_SIZE]; /* this may get called on a TERMCAP value */
-register char *cp;
+       const char *s, *d, *t;
+       int code, found;
 
-       if (namelst == 0)
-               return(FALSE);
-       (void) strcpy(namecopy, namelst);
-       if ((cp = strtok(namecopy, delim)) != 0) {
-               do {
-                       /* avoid strcmp() function-call cost if possible */
-                       if (cp[0] == name[0] && strcmp(cp, name) == 0)
-                           return(TRUE);
-               } while
-                   ((cp = strtok((char *)0, delim)) != 0);
+       if ((s = namelst) != 0) {
+               while (*s != '\0') {
+                       for (d = name; *d != '\0'; d++) {
+                               if (*s != *d)
+                                       break;
+                               s++;
+                       }
+                       found = FALSE;
+                       for (code = TRUE; *s != '\0'; code = FALSE, s++) {
+                               for (t = delim; *t != '\0'; t++) {
+                                       if (*s == *t) {
+                                               found = TRUE;
+                                               break;
+                                       }
+                               }
+                               if (found)
+                                       break;
+                       }
+                       if (code && *d == '\0')
+                               return code;
+                       if (*s++ == 0)
+                               break;
+               }
        }
-       return(FALSE);
+       return FALSE;
 }
similarity index 85%
rename from ncurses/parse_entry.c
rename to ncurses/tinfo/parse_entry.c
index fd41019bf0b747e112b249500ea7a1ff6be132cd..07f3868e0b44dd13b2172ca417161c435245708d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1999 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            *
 #include <ctype.h>
 #include <tic.h>
 #define __INTERNAL_CAPS_VISIBLE
-#include <term.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: parse_entry.c,v 1.22 1998/02/11 12:13:59 tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.39 1999/03/01 02:28:51 tom Exp $")
 
 #ifdef LINT
 static short const parametrized[] = { 0 };
@@ -63,6 +62,116 @@ static      void postprocess_termcap(TERMTYPE *, bool);
 static void postprocess_terminfo(TERMTYPE *);
 static struct name_table_entry const * lookup_fullname(const char *name);
 
+#if NCURSES_XNAMES
+
+static struct name_table_entry const *
+_nc_extend_names(ENTRY *entryp, char *name, int token_type)
+{
+    static struct name_table_entry temp;
+    TERMTYPE *tp = &(entryp->tterm);
+    unsigned offset = 0;
+    unsigned actual;
+    unsigned tindex;
+    unsigned first, last, n;
+    bool found;
+
+    switch (token_type) {
+    case BOOLEAN:
+       first  = 0;
+       last   = tp->ext_Booleans;
+       offset = tp->ext_Booleans;
+       tindex = tp->num_Booleans;
+       break;
+    case NUMBER:
+       first  = tp->ext_Booleans;
+       last   = tp->ext_Numbers  + first;
+       offset = tp->ext_Booleans + tp->ext_Numbers;
+       tindex = tp->num_Numbers;
+       break;
+    case STRING:
+       first  = tp->ext_Booleans + tp->ext_Numbers;
+       last   = tp->ext_Strings  + first;
+       offset = tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings;
+       tindex = tp->num_Strings;
+       break;
+    case CANCEL:
+       actual = NUM_EXT_NAMES(tp);
+       for (n = 0; n < actual; n++) {
+           if (!strcmp(name, tp->ext_Names[n])) {
+               if (n > (unsigned)(tp->ext_Booleans + tp->ext_Numbers)) {
+                   token_type = STRING;
+               } else if (n > tp->ext_Booleans) {
+                   token_type = NUMBER;
+               } else {
+                   token_type = BOOLEAN;
+               }
+               return _nc_extend_names(entryp, name, token_type);
+           }
+       }
+       /* Well, we are given a cancel for a name that we don't recognize */
+       return _nc_extend_names(entryp, name, STRING);
+    default:
+       return 0;
+    }
+
+    /* Adjust the 'offset' (insertion-point) to keep the lists of extended
+     * names sorted.
+     */
+    for (n = first, found = FALSE; n < last; n++) {
+       int cmp = strcmp(tp->ext_Names[n], name);
+       if (cmp == 0)
+           found = TRUE;
+       if (cmp >= 0) {
+           offset = n;
+           tindex = n - first;
+           switch (token_type) {
+           case BOOLEAN:       tindex += BOOLCOUNT;    break;
+           case NUMBER:        tindex += NUMCOUNT;     break;
+           case STRING:        tindex += STRCOUNT;     break;
+           }
+           break;
+       }
+    }
+    if (!found) {
+       switch (token_type) {
+       case BOOLEAN:
+           tp->ext_Booleans += 1;
+           tp->num_Booleans += 1;
+           tp->Booleans = typeRealloc(char, tp->num_Booleans, tp->Booleans);
+           for (last = tp->num_Booleans-1; last > tindex; last--)
+               tp->Booleans[last] = tp->Booleans[last-1];
+           break;
+       case NUMBER:
+           tp->ext_Numbers += 1;
+           tp->num_Numbers += 1;
+           tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
+           for (last = tp->num_Numbers-1; last > tindex; last--)
+               tp->Numbers[last] = tp->Numbers[last-1];
+           break;
+       case STRING:
+           tp->ext_Strings += 1;
+           tp->num_Strings += 1;
+           tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
+           for (last = tp->num_Strings-1; last > tindex; last--)
+               tp->Strings[last] = tp->Strings[last-1];
+           break;
+       }
+       actual = NUM_EXT_NAMES(tp);
+       tp->ext_Names  = typeRealloc(char *, actual, tp->ext_Names);
+       while (--actual > offset)
+           tp->ext_Names[actual] = tp->ext_Names[actual-1];
+       tp->ext_Names[offset] = _nc_save_str(name);
+    }
+
+    temp.nte_name  = tp->ext_Names[offset];
+    temp.nte_type  = token_type;
+    temp.nte_index = tindex;
+    temp.nte_link  = -1;
+
+    return &temp;
+}
+#endif /* NCURSES_XNAMES */
+
 /*
  *     int
  *     _nc_parse_entry(entry, literal, silent)
@@ -124,12 +233,12 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
     /* check for overly-long names and aliases */
     (void) strncpy(namecpy, entryp->tterm.term_names, MAX_NAME_SIZE);
     namecpy[MAX_NAME_SIZE] = '\0';
-    if ((ptr = strrchr(namecpy, '|')) != (char *)NULL)
+    if ((ptr = strrchr(namecpy, '|')) != (char *)0)
        *ptr = '\0';
     ptr = strtok(namecpy, "|");
     if (strlen(ptr) > MAX_ALIAS)
        _nc_warning("primary name may be too long");
-    while ((ptr = strtok((char *)NULL, "|")) != (char *)NULL)
+    while ((ptr = strtok((char *)0, "|")) != (char *)0)
        if (strlen(ptr) > MAX_ALIAS)
            _nc_warning("alias `%s' may be too long", ptr);
 
@@ -166,7 +275,7 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
                    for (ap = _nc_capalias_table; ap->from; ap++)
                        if (strcmp(ap->from, _nc_curr_token.tk_name) == 0)
                        {
-                           if (ap->to == (char *)NULL)
+                           if (ap->to == (char *)0)
                            {
                                _nc_warning("%s (%s termcap extension) ignored",
                                            ap->from, ap->source);
@@ -184,7 +293,7 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
                    for (ap = _nc_infoalias_table; ap->from; ap++)
                        if (strcmp(ap->from, _nc_curr_token.tk_name) == 0)
                        {
-                           if (ap->to == (char *)NULL)
+                           if (ap->to == (char *)0)
                            {
                                _nc_warning("%s (%s terminfo extension) ignored",
                                            ap->from, ap->source);
@@ -197,13 +306,24 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
                            break;
                        }
 
-                   /* last chance: a full-name */
                    if (entry_ptr == NOTFOUND) {
                        entry_ptr = lookup_fullname(_nc_curr_token.tk_name);
                    }
                }
            }
 
+#if NCURSES_XNAMES
+           /*
+            * If we have extended-names active, we will automatically
+            * define a name based on its context.
+            */
+           if (entry_ptr == NOTFOUND
+            && _nc_user_definable
+            && (entry_ptr = _nc_extend_names(entryp, _nc_curr_token.tk_name, token_type)) != 0) {
+               _nc_warning("extended capability '%s'", _nc_curr_token.tk_name);
+           }
+#endif /* NCURSES_XNAMES */
+
            /* can't find this cap name, not even as an alias */
            if (entry_ptr == NOTFOUND) {
                if (!silent)
@@ -322,7 +442,7 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
      * space-efficient to call this after use resolution, but it has
      * to be done before entry allocation is wrapped up.
      */
-    if (!literal)
+    if (!literal) {
        if (_nc_syntax == SYN_TERMCAP)
        {
            bool        has_base_entry = FALSE;
@@ -341,14 +461,14 @@ int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
                 * have picked up defaults via translation.
                 */
                for (i = 0; i < entryp->nuses; i++)
-                   if (!strchr(entryp->uses[i].parent, '+'))
+                   if (!strchr((char *)entryp->uses[i].parent, '+'))
                        has_base_entry = TRUE;
 
            postprocess_termcap(&entryp->tterm, has_base_entry);
         }
        else
            postprocess_terminfo(&entryp->tterm);
-
+    }
     _nc_wrap_entry(entryp);
 
     return(OK);
@@ -418,7 +538,7 @@ static assoc const ko_xlate[] =
     {"st",     "khts"},        /* set-tab key      -> KEY_STAB  */
     {"ta",     CANCELLED_STRING},
     {"up",     "kcuu1"},       /* up-arrow key     -> KEY_UP    */
-    {(char *)NULL, (char *)NULL},
+    {(char *)0, (char *)0},
 };
 
 /*
@@ -436,8 +556,8 @@ static const char C_HT[] = "\t";
  * Note that WANTED and PRESENT are not simple inverses!  If a capability
  * has been explicitly cancelled, it's not considered WANTED.
  */
-#define WANTED(s)      ((s) == (char *)NULL)
-#define PRESENT(s)     (((s) != (char *)NULL) && ((s) != CANCELLED_STRING))
+#define WANTED(s)      ((s) == ABSENT_STRING)
+#define PRESENT(s)     (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING))
 
 /*
  * This bit of legerdemain turns all the terminfo variable names into
@@ -467,8 +587,8 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
        if (WANTED(init_3string) && termcap_init2)
            init_3string = _nc_save_str(termcap_init2);
 
-       if (WANTED(reset_1string) && termcap_reset)
-           reset_1string = _nc_save_str(termcap_reset);
+       if (WANTED(reset_2string) && termcap_reset)
+           reset_2string = _nc_save_str(termcap_reset);
 
        if (WANTED(carriage_return)) {
            if (carriage_return_delay > 0) {
@@ -549,7 +669,7 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
         * space allocated for it is wasted.
         */
        if (return_does_clr_eol == 1 || no_correctly_working_cr == 1)
-           carriage_return = NULL;
+           carriage_return = ABSENT_STRING;
 
        /*
         * Supposedly most termcap entries have ta now and '\t' is no longer a
@@ -575,7 +695,7 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
     /*
      * Translate the old termcap :pt: capability to it#8 + ht=\t
      */
-    if (has_hardware_tabs == TRUE)
+    if (has_hardware_tabs == TRUE) {
        if (init_tabs != 8 && init_tabs != ABSENT_NUMERIC)
            _nc_warning("hardware tabs with a width other than 8: %d", init_tabs);
         else
@@ -590,7 +710,7 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
                init_tabs = 8;
            }
        }
-
+    }
     /*
      * Now translate the ko capability, if there is one.  This
      * isn't from mytinfo...
@@ -671,7 +791,7 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
 
            tp->Strings[to_ptr->nte_index] = _nc_save_str(buf2);
        } while
-           ((cp = strtok((char *)NULL, ",")) != 0);
+           ((cp = strtok((char *)0, ",")) != 0);
 
        /*
         * Note: ko=im and ko=ic both want to grab the `Insert'
@@ -783,6 +903,12 @@ void postprocess_termcap(TERMTYPE *tp, bool has_base)
            _nc_warning("acsc string synthesized from XENIX capabilities");
        }
     }
+    else if (acs_chars == 0
+       && enter_alt_charset_mode != 0
+       && exit_alt_charset_mode != 0)
+    {
+       acs_chars = _nc_save_str("``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");
+    }
 }
 
 static
diff --git a/ncurses/tinfo/read_entry.c b/ncurses/tinfo/read_entry.c
new file mode 100644 (file)
index 0000000..f60a486
--- /dev/null
@@ -0,0 +1,482 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ ****************************************************************************/
+
+
+
+/*
+ *     read_entry.c -- Routine for reading in a compiled terminfo file
+ *
+ */
+
+#include <curses.priv.h>
+
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#include <tic.h>
+#include <term_entry.h>
+
+MODULE_ID("$Id: read_entry.c,v 1.61 1999/07/24 20:07:20 tom Exp $")
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
+#if 0
+#define TRACE_IN(p) DEBUG(2, p)
+#else
+#define TRACE_IN(p) /*nothing*/
+#endif
+
+/*
+ *     int
+ *     _nc_read_file_entry(filename, ptr)
+ *
+ *     Read the compiled terminfo entry in the given file into the
+ *     structure pointed to by ptr, allocating space for the string
+ *     table.
+ */
+
+#undef  BYTE
+#define BYTE(p,n)      (unsigned char)((p)[n])
+
+#define IS_NEG1(p)     ((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377))
+#define IS_NEG2(p)     ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
+#define LOW_MSB(p)     (BYTE(p,0) + 256*BYTE(p,1))
+
+static bool have_tic_directory = FALSE;
+static bool keep_tic_directory = FALSE;
+
+/*
+ * Record the "official" location of the terminfo directory, according to
+ * the place where we're writing to, or the normal default, if not.
+ */
+const char *_nc_tic_dir(const char *path)
+{
+    static const char *result = TERMINFO;
+
+    if (!keep_tic_directory) {
+       if (path != 0) {
+           result = path;
+           have_tic_directory = TRUE;
+       } else if (!have_tic_directory) {
+           char *envp;
+           if ((envp = getenv("TERMINFO")) != 0)
+               return _nc_tic_dir(envp);
+       }
+    }
+    return result;
+}
+
+/*
+ * Special fix to prevent the terminfo directory from being moved after tic
+ * has chdir'd to it.  If we let it be changed, then if $TERMINFO has a
+ * relative path, we'll lose track of the actual directory.
+ */
+void _nc_keep_tic_dir(const char *path)
+{
+    _nc_tic_dir(path);
+    keep_tic_directory = TRUE;
+}
+
+static void convert_shorts(char *buf, short *Numbers, int count)
+{
+    int i;
+    for (i = 0; i < count; i++)
+    {
+       if (IS_NEG1(buf + 2*i))
+           Numbers[i] = ABSENT_NUMERIC;
+       else if (IS_NEG2(buf + 2*i))
+           Numbers[i] = CANCELLED_NUMERIC;
+       else
+           Numbers[i] = LOW_MSB(buf + 2*i);
+       TRACE_IN(("get Numbers[%d]=%d", i, Numbers[i]));
+    }
+}
+
+static void convert_strings(char *buf, char **Strings, int count, int size, char *table)
+{
+    int i;
+    char *p;
+
+    for (i = 0; i < count; i++) {
+       if (IS_NEG1(buf + 2*i)) {
+           Strings[i] = ABSENT_STRING;
+       } else if (IS_NEG2(buf + 2*i)) {
+           Strings[i] = CANCELLED_STRING;
+       } else if (LOW_MSB(buf + 2*i) > size) {
+           Strings[i] = ABSENT_STRING;
+       } else {
+           Strings[i] = (LOW_MSB(buf+2*i) + table);
+           TRACE_IN(("Strings[%d] = %s", i, _nc_visbuf(Strings[i])));
+       }
+
+       /* make sure all strings are NUL terminated */
+       if (VALID_STRING(Strings[i])) {
+           for (p = Strings[i]; p <= table + size; p++)
+               if (*p == '\0')
+                   break;
+           /* if there is no NUL, ignore the string */
+           if (p > table + size)
+               Strings[i] = ABSENT_STRING;
+       }
+    }
+}
+
+#define read_shorts(fd, buf, count) (read(fd, buf, (count)*2) == (count)*2)
+
+#define even_boundary(value) \
+    if ((value) % 2 != 0) read(fd, buf, 1)
+
+static int read_termtype(int fd, TERMTYPE *ptr)
+/* return 1 if read, 0 if not found or garbled */
+{
+    int                name_size, bool_count, num_count, str_count, str_size;
+    int                i;
+    char       buf[MAX_ENTRY_SIZE];
+
+    TRACE_IN(("READ termtype header @%d", tell(fd)));
+
+    /* grab the header */
+    if (!read_shorts(fd, buf, 6)
+     || LOW_MSB(buf) != MAGIC) {
+       return(0);
+    }
+
+    _nc_free_termtype(ptr);
+    name_size  = LOW_MSB(buf + 2);
+    bool_count = LOW_MSB(buf + 4);
+    num_count  = LOW_MSB(buf + 6);
+    str_count  = LOW_MSB(buf + 8);
+    str_size   = LOW_MSB(buf + 10);
+
+    TRACE_IN(("header is %d/%d/%d/%d(%d)", name_size, bool_count, num_count, str_count, str_size));
+    if (name_size  < 0
+     || bool_count < 0
+     || num_count  < 0
+     || str_count  < 0
+     || str_size   < 0) {
+       return(0);
+    }
+
+    if (str_size) {
+       /* try to allocate space for the string table */
+       if (str_count*2 >= (int) sizeof(buf)
+        || (ptr->str_table = typeMalloc(char, (unsigned)str_size)) == 0) {
+           return(0);
+       }
+    } else {
+       str_count = 0;
+    }
+
+    /* grab the name (a null-terminate string) */
+    read(fd, buf, min(MAX_NAME_SIZE, (unsigned)name_size));
+    buf[MAX_NAME_SIZE] = '\0';
+    ptr->term_names = typeCalloc(char, strlen(buf) + 1);
+    if (ptr->term_names == NULL) {
+       return(0);
+    }
+    (void) strcpy(ptr->term_names, buf);
+    if (name_size > MAX_NAME_SIZE)
+       lseek(fd, (off_t) (name_size - MAX_NAME_SIZE), 1);
+
+    /* grab the booleans */
+    if ((ptr->Booleans = typeCalloc(char, max(BOOLCOUNT, bool_count))) == 0
+     || read(fd, ptr->Booleans, (unsigned)bool_count) < bool_count) {
+       return(0);
+    }
+
+    /*
+     * If booleans end on an odd byte, skip it.  The machine they
+     * originally wrote terminfo on must have been a 16-bit
+     * word-oriented machine that would trap out if you tried a
+     * word access off a 2-byte boundary.
+     */
+    even_boundary(name_size + bool_count);
+
+    /* grab the numbers */
+    if ((ptr->Numbers = typeCalloc(short, max(NUMCOUNT, num_count))) == 0
+     || !read_shorts(fd, buf, num_count)) {
+       return(0);
+    }
+    convert_shorts(buf, ptr->Numbers, num_count);
+
+    if ((ptr->Strings = typeCalloc(char *, max(STRCOUNT, str_count))) == 0)
+       return(0);
+
+    if (str_count)
+    {
+       /* grab the string offsets */
+       if (!read_shorts(fd, buf, str_count)) {
+           return(0);
+       }
+       /* finally, grab the string table itself */
+       if (read(fd, ptr->str_table, (unsigned)str_size) != str_size)
+           return(0);
+       convert_strings(buf, ptr->Strings, str_count, str_size, ptr->str_table);
+    }
+
+#if NCURSES_XNAMES
+
+    ptr->num_Booleans = BOOLCOUNT;
+    ptr->num_Numbers  = NUMCOUNT;
+    ptr->num_Strings  = STRCOUNT;
+
+    /*
+     * Read extended entries, if any, after the normal end of terminfo data.
+     */
+    even_boundary(str_size);
+    TRACE_IN(("READ extended_header @%d", tell(fd)));
+    if (_nc_user_definable && read_shorts(fd, buf, 5)) {
+       int ext_bool_count = LOW_MSB(buf + 0);
+       int ext_num_count  = LOW_MSB(buf + 2);
+       int ext_str_count  = LOW_MSB(buf + 4);
+       int ext_str_size   = LOW_MSB(buf + 6);
+       int ext_str_limit  = LOW_MSB(buf + 8);
+       int need = (ext_bool_count + ext_num_count + ext_str_count);
+       int base = 0;
+
+       if (need >= (int) sizeof(buf)
+        || ext_str_size >= (int) sizeof(buf)
+        || ext_str_limit >= (int) sizeof(buf)
+        || ext_bool_count < 0
+        || ext_num_count  < 0
+        || ext_str_count  < 0
+        || ext_str_size   < 0
+        || ext_str_limit  < 0)
+           return(0);
+
+       ptr->num_Booleans = BOOLCOUNT + ext_bool_count;
+       ptr->num_Numbers  = NUMCOUNT + ext_num_count;
+       ptr->num_Strings  = STRCOUNT + ext_str_count;
+
+       ptr->Booleans = typeRealloc(char, ptr->num_Booleans,ptr->Booleans);
+       ptr->Numbers = typeRealloc(short, ptr->num_Numbers, ptr->Numbers);
+       ptr->Strings = typeRealloc(char*, ptr->num_Strings, ptr->Strings);
+
+       TRACE_IN(("extended header is %d/%d/%d(%d:%d)", ext_bool_count, ext_num_count, ext_str_count, ext_str_size, ext_str_limit));
+
+       TRACE_IN(("READ %d extended-booleans @%d", ext_bool_count, tell(fd)));
+       if ((ptr->ext_Booleans = ext_bool_count) != 0) {
+           if (read(fd, ptr->Booleans + BOOLCOUNT, (unsigned)ext_bool_count) != ext_bool_count)
+               return(0);
+       }
+       even_boundary(ext_bool_count);
+
+       TRACE_IN(("READ %d extended-numbers @%d", ext_num_count, tell(fd)));
+       if ((ptr->ext_Numbers = ext_num_count) != 0) {
+           if (!read_shorts(fd, buf, ext_num_count))
+               return(0);
+           TRACE_IN(("Before converting extended-numbers"));
+           convert_shorts(buf, ptr->Numbers + NUMCOUNT, ext_num_count);
+       }
+
+       TRACE_IN(("READ extended-offsets @%d", tell(fd)));
+       if ((ext_str_count || need)
+        && !read_shorts(fd, buf, ext_str_count+need))
+           return(0);
+
+       TRACE_IN(("READ %d bytes of extended-strings @%d", ext_str_limit, tell(fd)));
+       if (ext_str_limit) {
+           if ((ptr->ext_str_table = typeMalloc(char, ext_str_limit)) == 0)
+               return(0);
+           if (read(fd, ptr->ext_str_table, ext_str_limit) != ext_str_limit)
+               return(0);
+           TRACE_IN(("first extended-string is %s", _nc_visbuf(ptr->ext_str_table)));
+       }
+
+       if ((ptr->ext_Strings = ext_str_count) != 0) {
+           TRACE_IN(("Before computing extended-string capabilities str_count=%d, ext_str_count=%d", str_count, ext_str_count));
+           convert_strings(buf, ptr->Strings + str_count, ext_str_count, ext_str_limit, ptr->ext_str_table);
+           for (i = ext_str_count-1; i >= 0; i--) {
+               TRACE_IN(("MOVE from [%d:%d] %s", i, i+str_count, _nc_visbuf(ptr->Strings[i+str_count])));
+               ptr->Strings[i+STRCOUNT] = ptr->Strings[i+str_count];
+               if (VALID_STRING(ptr->Strings[i+STRCOUNT])) 
+                   base += (strlen(ptr->Strings[i+STRCOUNT]) + 1);
+               TRACE_IN(("... to    [%d] %s", i+STRCOUNT, _nc_visbuf(ptr->Strings[i+STRCOUNT])));
+           }
+       }
+
+       if (need) {
+           if ((ptr->ext_Names = typeCalloc(char *, need)) == 0)
+               return(0);
+           TRACE_IN(("ext_NAMES starting @%d in extended_strings, first = %s", base, _nc_visbuf(ptr->ext_str_table+base)));
+           convert_strings(buf + (2 * ext_str_count), ptr->ext_Names, need, ext_str_limit, ptr->ext_str_table + base);
+       }
+
+       T(("...done reading terminfo bool %d(%d) num %d(%d) str %d(%d)",
+           ptr->num_Booleans, ptr->ext_Booleans,
+           ptr->num_Numbers,  ptr->ext_Numbers,
+           ptr->num_Strings,  ptr->ext_Strings));
+
+       TRACE_IN(("extend: num_Booleans:%d", ptr->num_Booleans));
+    } else
+#endif /* NCURSES_XNAMES */
+    {
+       T(("...done reading terminfo bool %d num %d str %d",
+           bool_count,
+           num_count,
+           str_count));
+       TRACE_IN(("normal: num_Booleans:%d", ptr->num_Booleans));
+    }
+
+    for (i = bool_count; i < BOOLCOUNT; i++)
+       ptr->Booleans[i] = FALSE;
+    for (i = num_count; i < NUMCOUNT; i++)
+       ptr->Numbers[i] = ABSENT_NUMERIC;
+    for (i = str_count; i < STRCOUNT; i++)
+       ptr->Strings[i] = ABSENT_STRING;
+
+    return(1);
+}
+
+int _nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
+/* return 1 if read, 0 if not found or garbled */
+{
+    int code, fd = -1;
+
+    if (_nc_access(filename, R_OK) < 0
+     || (fd = open(filename, O_RDONLY|O_BINARY)) < 0) {
+       T(("cannot open terminfo %s (errno=%d)", filename, errno));
+       return(0);
+    }
+
+    T(("read terminfo %s", filename));
+    if ((code = read_termtype(fd, ptr)) == 0)
+       _nc_free_termtype(ptr);
+    close(fd);
+
+    return (code);
+}
+
+/*
+ * Build a terminfo pathname and try to read the data.  Returns 1 on success,
+ * 0 on failure.
+ */
+static int _nc_read_tic_entry(char *const filename,
+       const char *const dir, const char *ttn, TERMTYPE *const tp)
+{
+/* maximum safe length of terminfo root directory name */
+#define MAX_TPATH      (PATH_MAX - MAX_ALIAS - 6)
+
+       if (strlen(dir) > MAX_TPATH)
+               return 0;
+       (void) sprintf(filename, "%s/%s", dir, ttn);
+       return _nc_read_file_entry(filename, tp);
+}
+
+/*
+ * Process the list of :-separated directories, looking for the terminal type.
+ * We don't use strtok because it does not show us empty tokens.
+ */
+static int _nc_read_terminfo_dirs(const char *dirs, char *const filename, const char *const ttn, TERMTYPE *const tp)
+{
+       char *list, *a;
+       const char *b;
+       int code = 0;
+
+       /* we'll modify the argument, so we must copy */
+       if ((b = a = list = strdup(dirs)) == NULL)
+               return(0);
+
+       for (;;) {
+               int c = *a;
+               if (c == 0 || c == ':') {
+                       *a = 0;
+                       if ((b + 1) >= a)
+                               b = TERMINFO;
+                       if (_nc_read_tic_entry(filename, b, ttn, tp) == 1) {
+                               code = 1;
+                               break;
+                       }
+                       b = a + 1;
+                       if (c == 0)
+                               break;
+               }
+               a++;
+       }
+
+       free(list);
+       return(code);
+}
+
+/*
+ *     _nc_read_entry(char *tn, char *filename, TERMTYPE *tp)
+ *
+ *     Find and read the compiled entry for a given terminal type,
+ *     if it exists.  We take pains here to make sure no combination
+ *     of environment variables and terminal type name can be used to
+ *     overrun the file buffer.
+ */
+
+int _nc_read_entry(const char *const tn, char *const filename, TERMTYPE *const tp)
+{
+char           *envp;
+char           ttn[MAX_ALIAS + 3];
+
+       /* truncate the terminal name to prevent dangerous buffer airline */
+       (void) sprintf(ttn, "%c/%.*s", *tn, MAX_ALIAS, tn);
+
+       /* This is System V behavior, in conjunction with our requirements for
+        * writing terminfo entries.
+        */
+       if (have_tic_directory
+        && _nc_read_tic_entry(filename, _nc_tic_dir(0), ttn, tp) == 1)
+               return 1;
+
+       if ((envp = getenv("TERMINFO")) != 0
+        && _nc_read_tic_entry(filename, _nc_tic_dir(envp), ttn, tp) == 1)
+               return 1;
+
+       if ((envp = _nc_home_terminfo()) != 0) {
+               if (_nc_read_tic_entry(filename, envp, ttn, tp) == 1) {
+                       return(1);
+               }
+       }
+
+       /* this is an ncurses extension */
+       if ((envp = getenv("TERMINFO_DIRS")) != 0)
+               return _nc_read_terminfo_dirs(envp, filename, ttn, tp);
+
+       /* Try the system directory.  Note that the TERMINFO_DIRS value, if
+        * defined by the configure script, begins with a ":", which will be
+        * interpreted as TERMINFO.
+        */
+#ifdef TERMINFO_DIRS
+       return _nc_read_terminfo_dirs(TERMINFO_DIRS, filename, ttn, tp);
+#else
+       return _nc_read_tic_entry(filename, TERMINFO, ttn, tp);
+#endif
+}
+
similarity index 93%
rename from ncurses/read_termcap.c
rename to ncurses/tinfo/read_termcap.c
index d67a3bc9c3c55288cdeca13c8c7b512476193cb4..d60a92d63f0ad6a84747cb73a70297b4622c8fab 100644 (file)
@@ -53,7 +53,6 @@
 #include <curses.priv.h>
 
 #include <ctype.h>
-#include <term.h>
 #include <tic.h>
 #include <term_entry.h>
 
@@ -61,7 +60,9 @@
 #include <fcntl.h>
 #endif
 
-MODULE_ID("$Id: read_termcap.c,v 1.27 1998/02/11 12:13:58 tom Exp $")
+MODULE_ID("$Id: read_termcap.c,v 1.43 1999/04/10 20:52:52 tom Exp $")
+
+#ifndef PURE_TERMINFO
 
 #ifdef __EMX__
 #define is_pathname(s) ((((s) != 0) && ((s)[0] == '/')) \
@@ -155,7 +156,7 @@ _nc_cgetset(const char *ent)
                return (0);
        }
        topreclen = strlen(ent);
-       if ((toprec = malloc (topreclen + 1)) == 0) {
+       if ((toprec = typeMalloc(char, topreclen + 1)) == 0) {
                errno = ENOMEM;
                return (-1);
        }
@@ -258,6 +259,7 @@ _nc_cgetent(char **buf, int *oline, char **db_array, const char *name)
  *       names interpolated, a name can't be found, or depth exceeds
  *       MAX_RECURSION.
  */
+#define DOALLOC(size) typeRealloc(char, size, record)
 static int
 _nc_getent(
        char **cap,         /* termcap-content */
@@ -272,7 +274,7 @@ _nc_getent(
 {
        register char *r_end, *rp;
        int myfd = FALSE;
-       char *record;
+       char *record = 0;
        int tc_not_resolved;
        int current;
        int lineno;
@@ -288,7 +290,7 @@ _nc_getent(
         * Check if we have a top record from cgetset().
         */
        if (depth == 0 && toprec != 0 && _nc_cgetmatch(toprec, name) == 0) {
-               if ((record = malloc (topreclen + BFRAG)) == 0) {
+               if ((record = DOALLOC(topreclen + BFRAG)) == 0) {
                        errno = ENOMEM;
                        return (TC_SYS_ERR);
                }
@@ -302,7 +304,7 @@ _nc_getent(
                /*
                 * Allocate first chunk of memory.
                 */
-               if ((record = malloc(BFRAG)) == 0) {
+               if ((record = DOALLOC(BFRAG)) == 0) {
                        errno = ENOMEM;
                        return (TC_SYS_ERR);
                }
@@ -320,15 +322,14 @@ _nc_getent(
                         */
                        if (fd >= 0) {
                                (void)lseek(fd, (off_t)0, SEEK_SET);
+                       } else if ((_nc_access(db_array[current], R_OK) < 0)
+                         || (fd = open(db_array[current], O_RDONLY, 0)) < 0) {
+                               /* No error on unfound file. */
+                               if (errno == ENOENT)
+                                       continue;
+                               free(record);
+                               return (TC_SYS_ERR);
                        } else {
-                               fd = open(db_array[current], O_RDONLY, 0);
-                               if (fd < 0) {
-                                       /* No error on unfound file. */
-                                       if (errno == ENOENT)
-                                               continue;
-                                       free(record);
-                                       return (TC_SYS_ERR);
-                               }
                                myfd = TRUE;
                        }
                        lineno = 0;
@@ -398,11 +399,11 @@ _nc_getent(
 
                                                        pos = rp - record;
                                                        newsize = r_end - record + BFRAG;
-                                                       record = realloc(record, newsize);
+                                                       record = DOALLOC(newsize);
                                                        if (record == 0) {
-                                                               errno = ENOMEM;
                                                                if (myfd)
                                                                        (void)close(fd);
+                                                               errno = ENOMEM;
                                                                return (TC_SYS_ERR);
                                                        }
                                                        r_end = record + newsize;
@@ -533,12 +534,12 @@ _nc_getent(
                                newsize = r_end - record + diff + BFRAG;
                                tcpos = tcstart - record;
                                tcposend = tcend - record;
-                               record = realloc(record, newsize);
+                               record = DOALLOC(newsize);
                                if (record == 0) {
-                                       errno = ENOMEM;
                                        if (myfd)
                                                (void)close(fd);
                                        free(icap);
+                                       errno = ENOMEM;
                                        return (TC_SYS_ERR);
                                }
                                r_end = record + newsize;
@@ -570,9 +571,9 @@ _nc_getent(
         */
        if (myfd)
                (void)close(fd);
-       *len = rp - record - 1; /* don't count NUL */
+       *len = rp - record - 1; /* don't count NUL */
        if (r_end > rp) {
-               if ((record = realloc(record, (size_t)(rp - record))) == 0) {
+               if ((record = DOALLOC((size_t)(rp - record))) == 0) {
                        errno = ENOMEM;
                        return (TC_SYS_ERR);
                }
@@ -800,19 +801,21 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
         */
        if (!is_pathname(cp)) { /* no TERMCAP or it holds an entry */
                if ((termpath = getenv("TERMPATH")) != 0) {
-                       strncpy(pathbuf, termpath, sizeof(pathbuf)-1);
+                       strncpy(pathbuf, termpath, PBUFSIZ - 1);
                } else {
-                       if ((home = getenv("HOME")) != 0) { /* setup path */
+                       if ((home = getenv("HOME")) != 0 &&
+                           strlen(home) < PBUFSIZ) { /* setup path */
                                p += strlen(home);      /* path, looking in */
                                strcpy(pathbuf, home);  /* $HOME first */
                                *p++ = '/';
                        }       /* if no $HOME look in current directory */
 #define        MY_PATH_DEF     ".termcap /etc/termcap /usr/share/misc/termcap"
-                       strncpy(p, MY_PATH_DEF, (size_t)(PBUFSIZ - (p - pathbuf)));
+                       strncpy(p, MY_PATH_DEF, (size_t)(PBUFSIZ - (p - pathbuf) - 1));
                }
        }
        else                            /* user-defined name in TERMCAP */
-               strncpy(pathbuf, cp, PBUFSIZ);  /* still can be tokenized */
+               strncpy(pathbuf, cp, PBUFSIZ - 1); /* still can be tokenized */
+       pathbuf[PBUFSIZ - 1] = '\0';
 
        *fname++ = pathbuf;     /* tokenize path into vector of names */
        while (*++p) {
@@ -884,9 +887,8 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
         * cgetent, then it is the actual filename).
         */
        if (i >= 0) {
-               the_source = malloc(strlen(pathvec[i]) + 1);
-               if (the_source != 0)
-                       *sourcename = strcpy(the_source, pathvec[i]);
+               if ((the_source = strdup(pathvec[i])) != 0)
+                       *sourcename = the_source;
        }
 
        return(i);
@@ -894,6 +896,24 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
 #endif /* USE_BSD_TGETENT */
 #endif /* USE_GETCAP */
 
+#define MAXPATHS       32
+
+/*
+ * Add a filename to the list in 'termpaths[]', checking that we really have
+ * a right to open the file.
+ */
+#if !USE_GETCAP
+static int add_tc(char *termpaths[], char *path, int count)
+{
+       if (count < MAXPATHS
+        && _nc_access(path, R_OK) == 0)
+               termpaths[count++] = path;
+       termpaths[count] = 0;
+       return count;
+}
+#define ADD_TC(path, count) filecount = add_tc(termpaths, path, count)
+#endif /* !USE_GETCAP */
+
 int _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
 {
        int found = FALSE;
@@ -941,19 +961,18 @@ int _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
         * if the database is not accessible.
         */
        FILE    *fp;
-#define MAXPATHS       32
        char    *tc, *termpaths[MAXPATHS];
-       int     filecount = 0;
+       int     filecount = 0;
        bool    use_buffer = FALSE;
        char    tc_buf[1024];
        char    pathbuf[PATH_MAX];
 
+       termpaths[filecount] = 0;
        if ((tc = getenv("TERMCAP")) != 0)
        {
                if (is_pathname(tc))    /* interpret as a filename */
                {
-                       termpaths[0] = tc;
-                       termpaths[filecount = 1] = 0;
+                       ADD_TC(tc, 0);
                }
                else if (_nc_name_match(tc, tn, "|:")) /* treat as a capability file */
                {
@@ -970,13 +989,9 @@ int _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
                                        *cp = '\0';
                                else if (cp == tc || cp[-1] == '\0')
                                {
-                                       if (filecount >= MAXPATHS - 1)
-                                               return(-1);
-
-                                       termpaths[filecount++] = cp;
+                                       ADD_TC(cp, filecount);
                                }
                        }
-                       termpaths[filecount] = 0;
                }
        }
        else    /* normal case */
@@ -989,21 +1004,21 @@ int _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
                 * Probably /etc/termcap is a symlink to /usr/share/misc/termcap.
                 * Avoid reading the same file twice.
                 */
-               if (access("/etc/termcap", R_OK) == 0)
-                       termpaths[filecount++] = "/etc/termcap";
-               else if (access("/usr/share/misc/termcap", R_OK) == 0)
-                       termpaths[filecount++] = "/usr/share/misc/termcap";
+               if (_nc_access("/etc/termcap", F_OK) == 0)
+                       ADD_TC("/etc/termcap", filecount);
+               else
+                       ADD_TC("/usr/share/misc/termcap", filecount);
+
+#define PRIVATE_CAP "%s/.termcap"
 
-               if ((h = getenv("HOME")) != (char *)NULL)
+               if ((h = getenv("HOME")) != NULL
+                && (strlen(h) + sizeof(PRIVATE_CAP)) < PATH_MAX)
                {
-               /* user's .termcap, if any, should override it */
-                   (void) strncpy(envhome, h, PATH_MAX - 10);
-               envhome[PATH_MAX - 10] = '\0';
-               (void) sprintf(pathbuf, "%s/.termcap", envhome);
-               termpaths[filecount++] = pathbuf;
+                   /* user's .termcap, if any, should override it */
+                   (void) strcpy(envhome, h);
+                   (void) sprintf(pathbuf, PRIVATE_CAP, envhome);
+                   ADD_TC(pathbuf, filecount);
                }
-
-               termpaths[filecount] = 0;
        }
 
        /* parse the sources */
@@ -1062,7 +1077,7 @@ int _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
                                 * we disconnected from the list by NULLing out
                                 * ep->tterm.str_table above).
                                 */
-                               memcpy(tp, &ep->tterm, sizeof(TERMTYPE));
+                               *tp = ep->tterm;
                                ep->tterm.str_table = (char *)0;
 
                                /*
@@ -1095,3 +1110,7 @@ int _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
        _nc_free_entries(_nc_head);
        return(found);
 }
+#else
+extern void _nc_read_termcap(void);
+       void _nc_read_termcap(void) { }
+#endif /* PURE_TERMINFO */
diff --git a/ncurses/tinfo/setbuf.c b/ncurses/tinfo/setbuf.c
new file mode 100644 (file)
index 0000000..c0e7356
--- /dev/null
@@ -0,0 +1,144 @@
+/****************************************************************************
+ * Copyright (c) 1998 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
+ *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ ****************************************************************************/
+
+
+
+/*
+**     setbuf.c
+**
+**     Support for set_term(), reset_shell_mode(), reset_prog_mode().
+**
+*/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: setbuf.c,v 1.5 1999/02/27 20:00:15 tom Exp $")
+
+/*
+ * If the output file descriptor is connected to a tty (the typical case) it
+ * will probably be line-buffered.  Keith Bostic pointed out that we don't want
+ * this; it hoses people running over networks by forcing out a bunch of small
+ * packets instead of one big one, so screen updates on ptys look jerky.
+ * Restore block buffering to prevent this minor lossage.
+ *
+ * The buffer size is a compromise.  Ideally we'd like a buffer that can hold
+ * the maximum possible update size (the whole screen plus cup commands to
+ * change lines as it's painted).  On a 66-line xterm this can become
+ * excessive.  So we min it with the amount of data we think we can get through
+ * two Ethernet packets (maximum packet size - 100 for TCP/IP overhead).
+ *
+ * Why two ethernet packets?  It used to be one, on the theory that said
+ * packets define the maximum size of atomic update.  But that's less than the
+ * 2000 chars on a 25 x 80 screen, and we don't want local updates to flicker
+ * either.  Two packet lengths will handle up to a 35 x 80 screen.
+ *
+ * The magic '6' is the estimated length of the end-of-line cup sequence to go
+ * to the next line.  It's generous.  We used to mess with the buffering in
+ * init_mvcur() after cost computation, but that lost the sequences emitted by
+ * init_acs() in setupscreen().
+ *
+ * "The setvbuf function may be used only after the stream pointed to by stream
+ * has been associated with an open file and before any other operation is
+ * performed on the stream." (ISO 7.9.5.6.)
+ *
+ * Grrrr...
+ *
+ * On a lighter note, many implementations do in fact allow an application to
+ * reset the buffering after it has been written to.  We try to do this because
+ * otherwise we leave stdout in buffered mode after endwin() is called.  (This
+ * also happens with SVr4 curses).
+ *
+ * There are pros/cons:
+ *
+ * con:
+ *     There is no guarantee that we can reestablish buffering once we've
+ *     dropped it.
+ *
+ *     We _may_ lose data if the implementation does not coordinate this with
+ *     fflush.
+ *
+ * pro:
+ *     An implementation is more likely to refuse to change the buffering than
+ *     to do it in one of the ways mentioned above.
+ *
+ *     The alternative is to have the application try to change buffering
+ *     itself, which is certainly no improvement.
+ *
+ * Just in case it does not work well on a particular system, the calls to
+ * change buffering are all via the macro NC_BUFFERED.  Some implementations
+ * do indeed get confused by changing setbuf on/off, and will overrun the
+ * buffer.  So we disable this by default (there may yet be a workaround).
+ */
+void _nc_set_buffer(FILE *ofp, bool buffered)
+{
+       /* optional optimization hack -- do before any output to ofp */
+#if HAVE_SETVBUF || HAVE_SETBUFFER
+       unsigned buf_len;
+       char *buf_ptr;
+
+       if (getenv("NCURSES_NO_SETBUF") != 0)
+               return;
+
+       fflush(ofp);
+       if ((SP->_buffered = buffered) != 0) {
+               buf_len = min(LINES * (COLS + 6), 2800);
+               if ((buf_ptr = SP->_setbuf) == 0) {
+                       if ((buf_ptr = typeMalloc(char, buf_len)) == NULL)
+                               return;
+                       SP->_setbuf = buf_ptr;
+                       /* Don't try to free this! */
+               }
+#if !USE_SETBUF_0
+               else return;
+#endif
+       } else {
+#if !USE_SETBUF_0
+               return;
+#else
+               buf_len = 0;
+               buf_ptr = 0;
+#endif
+       }
+
+#if HAVE_SETVBUF
+#ifdef SETVBUF_REVERSED        /* pre-svr3? */
+       (void) setvbuf(ofp, buf_ptr, buf_len, buf_len ? _IOFBF : _IOLBF);
+#else
+       (void) setvbuf(ofp, buf_ptr, buf_len ? _IOFBF : _IOLBF, buf_len);
+#endif
+#elif HAVE_SETBUFFER
+       (void) setbuffer(ofp, buf_ptr, (int)buf_len);
+#endif
+
+#endif /* HAVE_SETVBUF || HAVE_SETBUFFER */
+}
similarity index 61%
rename from ncurses/write_entry.c
rename to ncurses/tinfo/write_entry.c
index c0b245479b2fcbc24675065fe62297e1e73da3b2..4829fa936d016d1bb326ea14f17a67b63510b891 100644 (file)
 #include <sys/stat.h>
 
 #include <tic.h>
-#include <term.h>
 #include <term_entry.h>
 
 #ifndef S_ISDIR
 #define S_ISDIR(mode) ((mode & S_IFMT) == S_IFDIR)
 #endif
 
-MODULE_ID("$Id: write_entry.c,v 1.22 1998/02/11 12:13:59 tom Exp $")
+#if 0
+#define TRACE_OUT(p) DEBUG(2, p)
+#else
+#define TRACE_OUT(p) /*nothing*/
+#endif
+
+MODULE_ID("$Id: write_entry.c,v 1.47 1999/07/10 20:29:22 tom Exp $")
 
 static int total_written;
 
@@ -57,7 +62,7 @@ static int write_object(FILE *, TERMTYPE *);
 
 static void write_file(char *filename, TERMTYPE *tp)
 {
-       FILE *fp = fopen(filename, "wb");
+       FILE *fp = (_nc_access(filename, W_OK) == 0) ? fopen(filename, "wb") : 0;
        if (fp == 0) {
                perror(filename);
                _nc_syserr_abort("can't open %s/%s", _nc_tic_dir(0), filename);
@@ -82,15 +87,20 @@ struct      stat    statbuf;
 char   fullpath[PATH_MAX];
 const char *destination = _nc_tic_dir(0);
 
-       if (path == destination || *path == '/')
+       if (path == destination || *path == '/') {
+               if (strlen(path) + 1 > sizeof(fullpath))
+                       return(-1);
                (void)strcpy(fullpath, path);
-       else
+       } else {
+               if (strlen(destination) + strlen(path) + 2 > sizeof(fullpath))
+                       return(-1);
                (void)sprintf(fullpath, "%s/%s", destination, path);
+       }
 
        if ((rc = stat(path, &statbuf)) < 0) {
                rc = mkdir(path, 0777);
        } else {
-               if (access(path, R_OK|W_OK|X_OK) < 0) {
+               if (_nc_access(path, R_OK|W_OK|X_OK) < 0) {
                        rc = -1;        /* permission denied */
                } else if (!(S_ISDIR(statbuf.st_mode))) {
                        rc = -1;        /* not a directory */
@@ -103,6 +113,7 @@ void  _nc_set_writedir(char *dir)
 /* set the write directory for compiled entries */
 {
     const char *destination;
+    char actual[PATH_MAX];
 
     if (dir != 0)
        (void) _nc_tic_dir(dir);
@@ -112,15 +123,10 @@ void  _nc_set_writedir(char *dir)
     destination = _nc_tic_dir(0);
     if (make_directory(destination) < 0)
     {
-       char    *home;
-
-       /* ncurses extension...fall back on user's private directory */
-       if ((home = getenv("HOME")) != (char *)NULL)
-       {
-           char *temp = malloc(sizeof(PRIVATE_INFO) + strlen(home));
-           (void) sprintf(temp, PRIVATE_INFO, home);
-           destination = temp;
+       char    *home = _nc_home_terminfo();
 
+       if (home != 0) {
+           destination = home;
            if (make_directory(destination) < 0)
                _nc_err_abort("%s: permission denied (errno %d)",
                        destination, errno);
@@ -131,8 +137,10 @@ void  _nc_set_writedir(char *dir)
      * Note: because of this code, this logic should be exercised
      * *once only* per run.
      */
-    if (chdir(_nc_tic_dir(destination)) < 0)
+    if (chdir(_nc_tic_dir(destination)) < 0
+     || getcwd(actual, sizeof(actual)) == 0)
        _nc_err_abort("%s: not a directory", destination);
+    _nc_keep_tic_dir(strdup(actual));
 }
 
 /*
@@ -279,6 +287,10 @@ static time_t      start_time;             /* time at start of writes */
                        _nc_warning("terminal alias %s too long.", ptr);
                        continue;
                }
+               if (strchr(ptr, '/') != 0) {
+                       _nc_warning("cannot link alias %s.", ptr);
+                       continue;
+               }
 
                check_writeable(ptr[0]);
                sprintf(linkname, "%c/%s", ptr[0], ptr);
@@ -291,25 +303,45 @@ static time_t     start_time;             /* time at start of writes */
                {
                        _nc_warning("alias %s multiply defined.", ptr);
                }
-               else
+               else if (_nc_access(linkname, W_OK) == 0)
 #if HAVE_LINK
                {
+                       int code;
 #if USE_SYMLINKS
                        strcpy(symlinkname, "../");
-                       strcat(symlinkname, filename);
+                       strncat(symlinkname, filename, sizeof(symlinkname) - 4);
+                       symlinkname[sizeof(symlinkname) - 1] = '\0';
 #endif /* USE_SYMLINKS */
 #if HAVE_REMOVE
-                       remove(linkname);
+                       code = remove(linkname);
 #else
-                       unlink(linkname);
+                       code = unlink(linkname);
 #endif
+                       if (code != 0 && errno == ENOENT)
+                               code = 0;
 #if USE_SYMLINKS
                        if (symlink(symlinkname, linkname) < 0)
 #else
                        if (link(filename, linkname) < 0)
 #endif /* USE_SYMLINKS */
-                           _nc_syserr_abort("can't link %s to %s", filename, linkname);
-                       DEBUG(1, ("Linked %s", linkname));
+                       {
+                           /*
+                            * If there wasn't anything there, and we cannot
+                            * link to the target because it is the same as the
+                            * target, then the source must be on a filesystem
+                            * that uses caseless filenames, such as Win32, etc.
+                            */
+                           if (code == 0 && errno == EEXIST)
+                               _nc_warning("can't link %s to %s", filename, linkname);
+                           else if (code == 0 && errno == EPERM)
+                               write_file(linkname, tp);
+                           else
+                               _nc_syserr_abort("can't link %s to %s", filename, linkname);
+                       }
+                       else
+                       {
+                           DEBUG(1, ("Linked %s", linkname));
+                       }
                }
 #else /* just make copies */
                write_file(linkname, tp);
@@ -322,6 +354,46 @@ static time_t      start_time;             /* time at start of writes */
 #define LO(x)                  ((x) % 256)
 #define LITTLE_ENDIAN(p, x)    (p)[0] = LO(x), (p)[1] = HI(x)
 
+#define WRITE_STRING(str) (fwrite(str, sizeof(char), strlen(str) + 1, fp) == strlen(str) + 1)
+
+static int compute_offsets(char **Strings, int strmax, short *offsets)
+{
+    size_t nextfree = 0;
+    int i;
+
+    for (i = 0; i < strmax; i++) {
+       if (Strings[i] == ABSENT_STRING) {
+           offsets[i] = -1;
+       } else if (Strings[i] == CANCELLED_STRING) {
+           offsets[i] = -2;
+       } else {
+           offsets[i] = nextfree;
+           nextfree += strlen(Strings[i]) + 1;
+           TRACE_OUT(("put Strings[%d]=%s(%d)", i, _nc_visbuf(Strings[i]), nextfree));
+       }
+    }
+    return nextfree;
+}
+
+static void convert_shorts(unsigned char *buf, short *Numbers, int count)
+{
+    int i;
+    for (i = 0; i < count; i++) {
+       if (Numbers[i] == -1) {         /* HI/LO won't work */
+           buf[2*i] = buf[2*i + 1] = 0377;
+       } else if (Numbers[i] == -2) {  /* HI/LO won't work */
+           buf[2*i] = 0376;
+           buf[2*i + 1] = 0377;
+       } else {
+           LITTLE_ENDIAN(buf + 2*i, Numbers[i]);
+           TRACE_OUT(("put Numbers[%d]=%d", i, Numbers[i]));
+       }
+    }
+}
+
+#define even_boundary(value) \
+           ((value) % 2 != 0 && fwrite(&zero, sizeof(char), 1, fp) != 1)
+
 static int write_object(FILE *fp, TERMTYPE *tp)
 {
 char           *namelist;
@@ -329,38 +401,35 @@ size_t            namelen, boolmax, nummax, strmax;
 char           zero = '\0';
 size_t         i;
 short          nextfree;
-short          offsets[STRCOUNT];
+short          offsets[MAX_ENTRY_SIZE/2];
 unsigned char  buf[MAX_ENTRY_SIZE];
 
        namelist = tp->term_names;
        namelen = strlen(namelist) + 1;
 
+       /*
+        * BOOLWRITE, etc., are less than BOOLCOUNT because we store some
+        * values internally.
+        */
        boolmax = 0;
-       for (i = 0; i < BOOLWRITE; i++)
-               if (tp->Booleans[i])
-                       boolmax = i+1;
+       for (i = 0; i < BOOLWRITE; i++) {
+           if (tp->Booleans[i])
+               boolmax = i+1;
+       }
 
        nummax = 0;
-       for (i = 0; i < NUMWRITE; i++)
-               if (tp->Numbers[i] != ABSENT_NUMERIC)
-                       nummax = i+1;
+       for (i = 0; i < NUMWRITE; i++) {
+           if (tp->Numbers[i] != ABSENT_NUMERIC)
+               nummax = i+1;
+       }
 
        strmax = 0;
-       for (i = 0; i < STRWRITE; i++)
-               if (tp->Strings[i] != ABSENT_STRING)
-                       strmax = i+1;
+       for (i = 0; i < STRWRITE; i++) {
+           if (tp->Strings[i] != ABSENT_STRING)
+               strmax = i+1;
+       }
 
-       nextfree = 0;
-       for (i = 0; i < strmax; i++)
-           if (tp->Strings[i] == ABSENT_STRING)
-               offsets[i] = -1;
-           else if (tp->Strings[i] == CANCELLED_STRING)
-               offsets[i] = -2;
-           else
-           {
-               offsets[i] = nextfree;
-               nextfree += strlen(tp->Strings[i]) + 1;
-           }
+       nextfree = compute_offsets(tp->Strings, strmax, offsets);
 
        /* fill in the header */
        LITTLE_ENDIAN(buf,    MAGIC);
@@ -371,60 +440,112 @@ unsigned char    buf[MAX_ENTRY_SIZE];
        LITTLE_ENDIAN(buf+10, nextfree);
 
        /* write out the header */
+       TRACE_OUT(("Header of %s @%ld", namelist, ftell(fp)));
        if (fwrite(buf, 12, 1, fp) != 1
-               ||  fwrite(namelist, sizeof(char), (size_t)namelen, fp) != namelen
-               ||  fwrite(tp->Booleans, sizeof(char), (size_t)boolmax, fp) != boolmax)
-               return(ERR);
+           ||  fwrite(namelist, sizeof(char), namelen, fp) != namelen
+           ||  fwrite(tp->Booleans, sizeof(char), boolmax, fp) != boolmax)
+           return(ERR);
 
-       /* the even-boundary padding byte */
-       if ((namelen+boolmax) % 2 != 0 &&  fwrite(&zero, sizeof(char), 1, fp) != 1)
-               return(ERR);
+       if (even_boundary(namelen+boolmax))
+           return(ERR);
 
-#ifdef SHOWOFFSET
-       (void) fprintf(stderr, "Numerics begin at %04lx\n", ftell(fp));
-#endif /* SHOWOFFSET */
+       TRACE_OUT(("Numerics begin at %04lx", ftell(fp)));
 
        /* the numerics */
-       for (i = 0; i < nummax; i++)
-       {
-               if (tp->Numbers[i] == -1)       /* HI/LO won't work */
-                       buf[2*i] = buf[2*i + 1] = 0377;
-               else
-                       LITTLE_ENDIAN(buf + 2*i, tp->Numbers[i]);
-       }
-       if (fwrite(buf, 2, (size_t)nummax, fp) != nummax)
-               return(ERR);
+       convert_shorts(buf, tp->Numbers, nummax);
+       if (fwrite(buf, 2, nummax, fp) != nummax)
+           return(ERR);
 
-#ifdef SHOWOFFSET
-       (void) fprintf(stderr, "String offets begin at %04lx\n", ftell(fp));
-#endif /* SHOWOFFSET */
+       TRACE_OUT(("String offsets begin at %04lx", ftell(fp)));
 
        /* the string offsets */
-       for (i = 0; i < strmax; i++)
-               if (offsets[i] == -1)   /* HI/LO won't work */
-                       buf[2*i] = buf[2*i + 1] = 0377;
-               else if (offsets[i] == -2)      /* HI/LO won't work */
-               {
-                       buf[2*i] = 0376;
-                       buf[2*i + 1] = 0377;
-               }
-               else
-                       LITTLE_ENDIAN(buf + 2*i, offsets[i]);
-       if (fwrite(buf, 2, (size_t)strmax, fp) != strmax)
-               return(ERR);
+       convert_shorts(buf, offsets, strmax);
+       if (fwrite(buf, 2, strmax, fp) != strmax)
+           return(ERR);
 
-#ifdef SHOWOFFSET
-       (void) fprintf(stderr, "String table begins at %04lx\n", ftell(fp));
-#endif /* SHOWOFFSET */
+       TRACE_OUT(("String table begins at %04lx", ftell(fp)));
 
        /* the strings */
        for (i = 0; i < strmax; i++)
-           if (tp->Strings[i] != ABSENT_STRING && tp->Strings[i] != CANCELLED_STRING)
-               if (fwrite(tp->Strings[i], sizeof(char), strlen(tp->Strings[i]) + 1, fp) != strlen(tp->Strings[i]) + 1)
+           if (VALID_STRING(tp->Strings[i]))
+               if (!WRITE_STRING(tp->Strings[i]))
+                   return(ERR);
+
+#if NCURSES_XNAMES
+       if (NUM_EXT_NAMES(tp)) {
+           unsigned extcnt = NUM_EXT_NAMES(tp);
+
+           if (even_boundary(nextfree))
+               return(ERR);
+
+           nextfree = compute_offsets(tp->Strings + STRCOUNT, tp->ext_Strings, offsets);
+           TRACE_OUT(("after extended string capabilities, nextfree=%d", nextfree));
+           nextfree += compute_offsets(tp->ext_Names, extcnt, offsets + tp->ext_Strings);
+           TRACE_OUT(("after extended capnames, nextfree=%d", nextfree));
+           strmax = tp->ext_Strings + extcnt;
+
+           /*
+            * Write the extended header
+            */
+           LITTLE_ENDIAN(buf+0, tp->ext_Booleans);
+           LITTLE_ENDIAN(buf+2, tp->ext_Numbers);
+           LITTLE_ENDIAN(buf+4, tp->ext_Strings);
+           LITTLE_ENDIAN(buf+6, strmax);
+           LITTLE_ENDIAN(buf+8, nextfree);
+           TRACE_OUT(("WRITE extended-header @%ld", ftell(fp)));
+           if (fwrite(buf, 10, 1, fp) != 1)
+               return(ERR);
+
+           TRACE_OUT(("WRITE %d booleans @%ld", tp->ext_Booleans, ftell(fp)));
+           if (tp->ext_Booleans
+            && fwrite(tp->Booleans + BOOLCOUNT, sizeof(char), tp->ext_Booleans, fp) != tp->ext_Booleans)
+               return(ERR);
+
+           if (even_boundary(tp->ext_Booleans))
+               return(ERR);
+
+           TRACE_OUT(("WRITE %d numbers @%ld", tp->ext_Numbers, ftell(fp)));
+           if (tp->ext_Numbers) {
+               convert_shorts(buf, tp->Numbers + NUMCOUNT, tp->ext_Numbers);
+               if (fwrite(buf, 2, tp->ext_Numbers, fp) != tp->ext_Numbers)
                    return(ERR);
+           }
+
+           /*
+            * Convert the offsets for the ext_Strings and ext_Names tables,
+            * in that order.
+            */
+           convert_shorts(buf, offsets, strmax);
+           TRACE_OUT(("WRITE offsets @%ld", ftell(fp)));
+           if (fwrite(buf, 2, strmax, fp) != strmax)
+               return(ERR);
+
+           /*
+            * Write the string table after the offset tables so we do not
+            * have to do anything about alignment.
+            */
+           for (i = 0; i < tp->ext_Strings; i++) {
+               if (VALID_STRING(tp->Strings[i+STRCOUNT])) {
+                   TRACE_OUT(("WRITE ext_Strings[%d]=%s", i, _nc_visbuf(tp->Strings[i+STRCOUNT])));
+                   if (!WRITE_STRING(tp->Strings[i+STRCOUNT]))
+                       return(ERR);
+               }
+           }
+
+           /*
+            * Write the extended names
+            */
+           for (i = 0; i < extcnt; i++) {
+               TRACE_OUT(("WRITE ext_Names[%d]=%s", i, tp->ext_Names[i]));
+               if (!WRITE_STRING(tp->ext_Names[i]))
+                   return(ERR);
+           }
+
+       }
+#endif /* NCURSES_XNAMES */
 
        total_written++;
-        return(OK);
+       return(OK);
 }
 
 /*
diff --git a/ncurses/trace/README b/ncurses/trace/README
new file mode 100644 (file)
index 0000000..a627a53
--- /dev/null
@@ -0,0 +1,5 @@
+-- $Id: README,v 1.1 1998/11/08 00:11:01 tom Exp $
+
+The files in this directory (trace) support both the terminfo and ncurses
+libraries.  Most of the functions are linked in only when the libraries
+are compiled with TRACE defined.
similarity index 92%
rename from ncurses/lib_trace.c
rename to ncurses/trace/lib_trace.c
index a9accd56fc844926189afc53dffcf6f51aebb9a0..aa4b887111a7cd7ac2c3b94d4acb270c19e55a51 100644 (file)
  *     lib_trace.c - Tracing/Debugging routines
  */
 
-#ifndef TRACE
-#define TRACE                  /* turn on internal defs for this module */
-#endif
-
 #include <curses.priv.h>
+#include <tic.h>
 
-MODULE_ID("$Id: lib_trace.c,v 1.25 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_trace.c,v 1.30 1998/10/03 23:41:42 tom Exp $")
 
 #include <ctype.h>
 #if HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
 
-unsigned _nc_tracing = 0;
+unsigned _nc_tracing = 0;      /* always define this */
+
+#ifdef TRACE
 const char *_nc_tputs_trace = "";
 long _nc_outchars;
-int _nc_optimize_enable = OPTIMIZE_ALL;
 
 static FILE *  tracefp;        /* default to writing to stderr */
+#endif
 
-void trace(const unsigned int tracelevel)
+void trace(const unsigned int tracelevel GCC_UNUSED)
 {
+#ifdef TRACE
 static bool    been_here = FALSE;
+static char    my_name[] = "trace";
 
        _nc_tracing = tracelevel;
        if (! been_here && tracelevel) {
                been_here = TRUE;
 
-               if ((tracefp = fopen("trace", "w")) == 0) {
+               if (_nc_access(my_name, W_OK) < 0
+                || (tracefp = fopen(my_name, "w")) == 0) {
                        perror("curses: Can't open 'trace' file: ");
                        exit(EXIT_FAILURE);
                }
@@ -79,6 +81,7 @@ static bool   been_here = FALSE;
                _tracef("TRACING NCURSES version %s (%d)",
                        NCURSES_VERSION, NCURSES_VERSION_PATCH);
        }
+#endif
 }
 
 const char *_nc_visbuf2(int bufnum, const char *buf)
@@ -90,6 +93,8 @@ int c;
 
        if (buf == 0)
            return("(null)");
+       if (buf == CANCELLED_STRING)
+           return("(cancelled)");
 
        tp = vbuf = _nc_trace_buf(bufnum, (strlen(buf) * 4) + 5);
        *tp++ = '"';
@@ -123,6 +128,7 @@ const char *_nc_visbuf(const char *buf)
        return _nc_visbuf2(0, buf);
 }
 
+#ifdef TRACE
 void
 _tracef(const char *fmt, ...)
 {
@@ -191,3 +197,4 @@ WINDOW *_nc_retrace_win(WINDOW *code)
        T((T_RETURN("%p"), code));
        return code;
 }
+#endif /* TRACE */
similarity index 97%
rename from ncurses/lib_traceatr.c
rename to ncurses/trace/lib_traceatr.c
index c6023b2b53060a1dd0233f53c9d01ca4fb9e5a5a..d9e007517f76b72cd7ecb8f10d72ade4c2b2a927 100644 (file)
  *     lib_traceatr.c - Tracing/Debugging routines (attributes)
  */
 
-#ifndef TRACE
-#define TRACE                  /* turn on internal defs for this module */
-#endif
-
 #include <curses.priv.h>
 #include <term.h>      /* acs_chars */
 
-MODULE_ID("$Id: lib_traceatr.c,v 1.25 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: lib_traceatr.c,v 1.28 1998/03/21 18:39:36 tom Exp $")
 
 #define COLOR_OF(c) (c < 0 || c > 7 ? "default" : colors[c].name)
 
+#ifdef TRACE
 char *_traceattr2(int bufnum, attr_t newmode)
 {
 char   *buf = _nc_trace_buf(bufnum, BUFSIZ);
@@ -215,3 +212,7 @@ char *_tracechtype(chtype ch)
 {
        return _tracechtype2(0, ch);
 }
+#else
+extern void _nc_lib_traceatr(void);
+       void _nc_lib_traceatr(void) { }
+#endif /* TRACE */
similarity index 64%
rename from ncurses/lib_raw.c
rename to ncurses/trace/lib_tracebits.c
index e2573c729d6fa4c2e6ce501b8dcc46269279553d..a92e00a8624e4341e752616d12777f01aed3a24f 100644 (file)
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
  ****************************************************************************/
 
-
-/*
- *     raw.c
- *
- *     Routines:
- *             raw()
- *             cbreak()
- *             noraw()
- *             nocbreak()
- *             qiflush()
- *             noqiflush()
- *             intrflush()
- *
- */
-
 #include <curses.priv.h>
 #include <term.h>      /* cur_term */
 
-MODULE_ID("$Id: lib_raw.c,v 1.25 1998/02/11 12:13:59 tom Exp $")
+MODULE_ID("$Id: lib_tracebits.c,v 1.3 1999/08/21 21:43:48 tom Exp $")
 
 #if defined(SVR4_TERMIO) && !defined(_POSIX_SOURCE)
 #define _POSIX_SOURCE
@@ -72,8 +57,6 @@ MODULE_ID("$Id: lib_raw.c,v 1.25 1998/02/11 12:13:59 tom Exp $")
 #define IEXTEN 0
 #endif
 
-#define COOKED_INPUT   (IXON|BRKINT|PARMRK)
-
 #ifdef TRACE
 
 typedef struct {unsigned int val; const char *name;} BITNAMES;
@@ -96,7 +79,7 @@ static void lookup_bits(char *buf, const BITNAMES *table, const char *label, uns
        (void) strcat(buf,"} ");
 }
 
-char *_tracebits(void)
+char *_nc_tracebits(void)
 /* describe the state of the terminal control bits exactly */
 {
 char   *buf;
@@ -173,10 +156,18 @@ lflags[] =
 
 #if defined(CS5) && defined(CS8)
     switch (cur_term->Nttyb.c_cflag & CSIZE) {
+#if defined(CS5) && (CS5 != 0)
     case CS5:  strcat(buf, "CS5 ");    break;
+#endif
+#if defined(CS6) && (CS6 != 0)
     case CS6:  strcat(buf, "CS6 ");    break;
+#endif
+#if defined(CS7) && (CS7 != 0)
     case CS7:  strcat(buf, "CS7 ");    break;
+#endif
+#if defined(CS8) && (CS8 != 0)
     case CS8:  strcat(buf, "CS8 ");    break;
+#endif
     default:   strcat(buf, "CSIZE? "); break;
     }
 #endif
@@ -229,170 +220,6 @@ cflags[] =
 #endif
     return(buf);
 }
-
-#define BEFORE(N)      if (_nc_tracing&TRACE_BITS) _tracef("%s before bits: %s", N, _tracebits())
-#define AFTER(N)       if (_nc_tracing&TRACE_BITS) _tracef("%s after bits: %s", N, _tracebits())
 #else
-#define BEFORE(s)
-#define AFTER(s)
+char *_nc_tracebits(void) { static char tmp[] = ""; return tmp; }
 #endif /* TRACE */
-
-int raw(void)
-{
-       T((T_CALLED("raw()")));
-       if (SP != 0 && cur_term != 0) {
-
-               SP->_raw = TRUE;
-               SP->_cbreak = TRUE;
-
-#ifdef __EMX__
-               setmode(SP->_ifd, O_BINARY);
-#endif
-
-#ifdef TERMIOS
-               BEFORE("raw");
-               cur_term->Nttyb.c_lflag &= ~(ICANON|ISIG);
-               cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT);
-               cur_term->Nttyb.c_cc[VMIN] = 1;
-               cur_term->Nttyb.c_cc[VTIME] = 0;
-               AFTER("raw");
-#else
-               cur_term->Nttyb.sg_flags |= RAW;
-#endif
-               returnCode(_nc_set_curterm(&cur_term->Nttyb));
-       }
-       returnCode(ERR);
-}
-
-int cbreak(void)
-{
-       T((T_CALLED("cbreak()")));
-
-       SP->_cbreak = TRUE;
-
-#ifdef __EMX__
-       setmode(SP->_ifd, O_BINARY);
-#endif
-
-#ifdef TERMIOS
-       BEFORE("cbreak");
-       cur_term->Nttyb.c_lflag &= ~ICANON;
-       cur_term->Nttyb.c_iflag &= ~ICRNL;
-       cur_term->Nttyb.c_lflag |= ISIG;
-       cur_term->Nttyb.c_cc[VMIN] = 1;
-       cur_term->Nttyb.c_cc[VTIME] = 0;
-       AFTER("cbreak");
-#else
-       cur_term->Nttyb.sg_flags |= CBREAK;
-#endif
-       returnCode(_nc_set_curterm( &cur_term->Nttyb));
-}
-
-int qiflush(void)
-{
-       T((T_CALLED("qiflush()")));
-
-       /*
-        * Note: this implementation may be wrong.  See the comment under
-        * intrflush().
-        */
-
-#ifdef TERMIOS
-       BEFORE("qiflush");
-       cur_term->Nttyb.c_lflag &= ~(NOFLSH);
-       AFTER("qiflush");
-       returnCode(_nc_set_curterm( &cur_term->Nttyb));
-#else
-       returnCode(ERR);
-#endif
-}
-
-
-int noraw(void)
-{
-       T((T_CALLED("noraw()")));
-
-       SP->_raw = FALSE;
-       SP->_cbreak = FALSE;
-
-#ifdef __EMX__
-       setmode(SP->_ifd, O_TEXT);
-#endif
-
-#ifdef TERMIOS
-       BEFORE("noraw");
-       cur_term->Nttyb.c_lflag |= ISIG|ICANON;
-       cur_term->Nttyb.c_iflag |= COOKED_INPUT;
-       AFTER("noraw");
-#else
-       cur_term->Nttyb.sg_flags &= ~(RAW|CBREAK);
-#endif
-       returnCode(_nc_set_curterm( &cur_term->Nttyb));
-}
-
-
-int nocbreak(void)
-{
-       T((T_CALLED("nocbreak()")));
-
-       SP->_cbreak = FALSE;
-
-#ifdef __EMX__
-       setmode(SP->_ifd, O_TEXT);
-#endif
-
-#ifdef TERMIOS
-       BEFORE("nocbreak");
-       cur_term->Nttyb.c_lflag |= ICANON;
-       cur_term->Nttyb.c_iflag |= ICRNL;
-       AFTER("nocbreak");
-#else
-       cur_term->Nttyb.sg_flags &= ~CBREAK;
-#endif
-       returnCode(_nc_set_curterm( &cur_term->Nttyb));
-}
-
-int noqiflush(void)
-{
-       T((T_CALLED("noqiflush()")));
-
-       /*
-        * Note: this implementation may be wrong.  See the comment under
-        * intrflush().
-        */
-
-#ifdef TERMIOS
-       BEFORE("noqiflush");
-       cur_term->Nttyb.c_lflag |= NOFLSH;
-       AFTER("noqiflush");
-       returnCode(_nc_set_curterm( &cur_term->Nttyb));
-#else
-       returnCode(ERR);
-#endif
-}
-
-int intrflush(WINDOW *win GCC_UNUSED, bool flag)
-{
-       T((T_CALLED("intrflush(%d)"), flag));
-
-       /*
-        * This call does the same thing as the qiflush()/noqiflush()
-        * pair.  We know for certain that SVr3 intrflush() tweaks the
-        * NOFLSH bit; on the other hand, the match (in the SVr4 man
-        * pages) between the language describing NOFLSH in termio(7)
-        * and the language describing qiflush()/noqiflush() in
-        * curs_inopts(3x) is too exact to be coincidence.
-        */
-
-#ifdef TERMIOS
-       BEFORE("intrflush");
-       if (flag)
-               cur_term->Nttyb.c_lflag &= ~(NOFLSH);
-       else
-               cur_term->Nttyb.c_lflag |= (NOFLSH);
-       AFTER("intrflush");
-       returnCode(_nc_set_curterm( &cur_term->Nttyb));
-#else
-       returnCode(ERR);
-#endif
-}
similarity index 97%
rename from ncurses/lib_tracechr.c
rename to ncurses/trace/lib_tracechr.c
index 3e726547c085305700ad47326f55bf70d899c08e..e97e67931464f1a18f5c7c29d5a53005f3c51737 100644 (file)
@@ -45,6 +45,7 @@
 
 #include <ctype.h>
 
+#ifdef TRACE
 char *_tracechar(const unsigned char ch)
 {
     static char crep[20];
@@ -62,3 +63,7 @@ char *_tracechar(const unsigned char ch)
        (void) sprintf(crep, "0x%02x", (unsigned)ch);
     return(crep);
 }
+#else
+extern void _nc_lib_tracechr(void);
+       void _nc_lib_tracechr(void) { }
+#endif
similarity index 96%
rename from ncurses/lib_tracedmp.c
rename to ncurses/trace/lib_tracedmp.c
index be1cd7cd71c364c34327fe014f04c6e7fcd19bad..a67a37ef7edd49f5e17e302b66d54ca0a50d93a0 100644 (file)
  *     lib_tracedmp.c - Tracing/Debugging routines
  */
 
-#ifndef TRACE
-#define TRACE                  /* turn on internal defs for this module */
-#endif
-
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_tracedmp.c,v 1.11 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: lib_tracedmp.c,v 1.13 1998/03/21 18:39:44 tom Exp $")
 
+#ifdef TRACE
 void _tracedump(const char *name, WINDOW *win)
 {
     int        i, j, n, width;
@@ -125,3 +122,7 @@ void _tracedump(const char *name, WINDOW *win)
        }
     }
 }
+#else
+extern void _nc_lib_tracedmp(void);
+       void _nc_lib_tracedmp(void) { }
+#endif /* TRACE */
similarity index 95%
rename from ncurses/lib_tracemse.c
rename to ncurses/trace/lib_tracemse.c
index 9a64dfbbd64c9ee2f127fd9080b42de6c997423c..fbdd2c006de0078d4c4759198a1d81212da459cf 100644 (file)
  *     lib_tracemse.c - Tracing/Debugging routines (mouse events)
  */
 
-#ifndef TRACE
-#define TRACE                  /* turn on internal defs for this module */
-#endif
-
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_tracemse.c,v 1.5 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_tracemse.c,v 1.6 1998/11/16 14:28:17 Alexander.V.Lukyanov Exp $")
+
+#ifdef TRACE
 
 char *_tracemouse(MEVENT const *ep)
 {
@@ -90,5 +88,8 @@ char *_tracemouse(MEVENT const *ep)
        return(buf);
 }
 
-
-
+#else /* !TRACE */
+/* don't make empty module */
+void _nc_lib_tracemouse(void);
+void _nc_lib_tracemouse(void) {}
+#endif
similarity index 85%
rename from ncurses/trace_buf.c
rename to ncurses/trace/trace_buf.c
index 688ee3eee3d53051987fd3b9296c9a4a619e0d5a..48f93d43d1ef1a45d204da0ca895346ad188dd6e 100644 (file)
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: trace_buf.c,v 1.3 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: trace_buf.c,v 1.7 1999/02/27 19:50:58 tom Exp $")
+
+typedef struct {
+       char *text;
+       size_t size;
+} LIST;
 
 char * _nc_trace_buf(int bufnum, size_t want)
 {
-       static struct {
-               char *text;
-               size_t size;
-       } *list;
+       static LIST *list;
        static size_t have;
 
 #if NO_LEAKS
@@ -59,21 +61,20 @@ char * _nc_trace_buf(int bufnum, size_t want)
 
        if ((size_t)(bufnum+1) > have) {
                size_t need = (bufnum + 1) * 2;
-               size_t used = sizeof(*list) * need;
-               list = (list == 0) ? malloc(used) : realloc(list, used);
+               if ((list = typeRealloc(LIST, need, list)) == 0)
+                       return(0);
                while (need > have)
                        list[have++].text = 0;
        }
 
-       if (list[bufnum].text == 0)
+       if (list[bufnum].text == 0
+        || want > list[bufnum].size)
        {
-               list[bufnum].text = malloc(want);
-               list[bufnum].size = want;
-       }
-       else if (want > list[bufnum].size) {
-               list[bufnum].text = realloc(list[bufnum].text, want);
-               list[bufnum].size = want;
+               if ((list[bufnum].text = typeRealloc(char, want, list[bufnum].text)) != 0)
+                       list[bufnum].size = want;
        }
-       *(list[bufnum].text) = '\0';
+
+       if (list[bufnum].text != 0)
+               *(list[bufnum].text) = '\0';
        return list[bufnum].text;
 }
diff --git a/ncurses/trace/trace_tries.c b/ncurses/trace/trace_tries.c
new file mode 100644 (file)
index 0000000..abd5db4
--- /dev/null
@@ -0,0 +1,74 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999                        *
+ ****************************************************************************/
+/*
+ *     trace_tries.c - Tracing/Debugging buffers (keycode tries-trees)
+ */
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: trace_tries.c,v 1.6 1999/03/06 22:51:07 tom Exp $")
+
+#ifdef TRACE
+static unsigned char *buffer;
+static unsigned len;
+
+static void recur_tries(struct tries *tree, unsigned level)
+{
+       if (level > len)
+               buffer = (unsigned char *)realloc(buffer, len = (level + 1) * 4);
+
+       while (tree != 0) {
+               if ((buffer[level] = tree->ch) == 0)
+                       buffer[level] = 128;
+               buffer[level+1] = 0;
+               if (tree->value != 0) {
+                       _tracef("%5d: %s (%s)", tree->value, _nc_visbuf((char *)buffer), keyname(tree->value));
+               }
+               if (tree->child)
+                       recur_tries(tree->child, level+1);
+               tree = tree->sibling;
+       }
+}
+
+void _nc_trace_tries(struct tries *tree)
+{
+       buffer = typeMalloc(unsigned char, len = 80);
+       _tracef("BEGIN tries %p", tree);
+       recur_tries(tree, 0);
+       _tracef(". . . tries %p", tree);
+       free(buffer);
+}
+#else
+void _nc_trace_tries(struct tries *tree GCC_UNUSED)
+{
+}
+#endif
diff --git a/ncurses/trace/trace_xnames.c b/ncurses/trace/trace_xnames.c
new file mode 100644 (file)
index 0000000..6287fc8
--- /dev/null
@@ -0,0 +1,74 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999                        *
+ ****************************************************************************/
+/*
+ *     trace_xnames.c - Tracing/Debugging buffers (TERMTYPE extended names)
+ */
+
+#include <curses.priv.h>
+#include <term_entry.h>
+
+MODULE_ID("$Id: trace_xnames.c,v 1.3 1999/03/02 01:20:38 tom Exp $")
+
+void _nc_trace_xnames(TERMTYPE *tp GCC_UNUSED)
+{
+#ifdef TRACE
+#if NCURSES_XNAMES
+    int limit = tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings;
+    int n, m;
+    if (limit) {
+       int begin_num = tp->ext_Booleans;
+       int begin_str = tp->ext_Booleans + tp->ext_Numbers;
+
+       _tracef("extended names (%s) %d = %d+%d+%d of %d+%d+%d",
+               tp->term_names,
+               limit,
+               tp->ext_Booleans, tp->ext_Numbers, tp->ext_Strings,
+               tp->num_Booleans, tp->num_Numbers, tp->num_Strings);
+       for (n = 0; n < limit; n++) {
+           if ((m = n - begin_str) >= 0) {
+               _tracef("[%d] %s = %s", n,
+                   tp->ext_Names[n],
+                   _nc_visbuf(tp->Strings[tp->num_Strings + m - tp->ext_Strings]));
+           } else if ((m = n - begin_num) >= 0) {
+               _tracef("[%d] %s = %d (num)", n,
+                   tp->ext_Names[n],
+                   tp->Numbers[tp->num_Numbers + m - tp->ext_Numbers]);
+           } else {
+               _tracef("[%d] %s = %d (bool)", n,
+                   tp->ext_Names[n],
+                   tp->Booleans[tp->num_Booleans + n - tp->ext_Booleans]);
+           }
+       }
+    }
+#endif
+#endif
+}
similarity index 95%
rename from ncurses/MKexpanded.sh
rename to ncurses/tty/MKexpanded.sh
index c0fca5f28af0d7b85bb1d3b7118cd4edfe83db28..b008becc4f07c4e2d8d54350e618579228b04985 100755 (executable)
@@ -29,7 +29,7 @@
 #
 # Author: Thomas E. Dickey <dickey@clark.net> 1997
 #
-# $Id: MKexpanded.sh,v 1.6 1998/02/11 12:13:54 tom Exp $
+# $Id: MKexpanded.sh,v 1.7 1998/11/11 20:15:39 Alexander.V.Lukyanov Exp $
 #
 # Script to generate 'expanded.c', a dummy source that contains functions
 # corresponding to complex macros used in this library.  By making functions,
@@ -50,7 +50,7 @@ fi
 TMP=gen$$.c
 trap "rm -f $TMP" 0 1 2 5 15
 
-cat >expanded.c <<EOF
+cat <<EOF
 /* generated by MKexpanded.sh */
 #include <curses.priv.h>
 #include <term.h>
@@ -94,9 +94,9 @@ void _nc_UpdateAttrs(chtype c)
 }
 EOF
 
-$preprocessor $TMP 2>/dev/null | sed -e '1,/^IGNORE$/d' >>expanded.c
+$preprocessor $TMP 2>/dev/null | sed -e '1,/^IGNORE$/d'
 
-cat >>expanded.c <<EOF
+cat <<EOF
 #else /* ! NCURSES_EXPANDED */
 void _nc_expanded(void) { }
 #endif /* NCURSES_EXPANDED */
similarity index 89%
rename from ncurses/hardscroll.c
rename to ncurses/tty/hardscroll.c
index f37008e76073f6b571e2c376ba5fa69cbdb8d0ac..b80d08aa5467764cf5fe0a6d0dd30e7a243d0d10 100644 (file)
@@ -146,19 +146,32 @@ AUTHOR
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: hardscroll.c,v 1.29 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: hardscroll.c,v 1.33 1999/02/27 20:01:29 tom Exp $")
 
 #if defined(SCROLLDEBUG) || defined(HASHDEBUG)
+
+# undef screen_lines
+# define screen_lines MAXLINES
 int oldnums[MAXLINES];
-#define OLDNUM(n)      oldnums[n]
-#undef T
-#define T(x)           (void) printf x ; (void) putchar('\n');
-#else
-#include <curses.h>
-#define OLDNUM(n)      newscr->_line[n].oldindex
-#ifndef _NEWINDEX
-#define _NEWINDEX      -1
-#endif /* _NEWINDEX */
+# define OLDNUM(n)     oldnums[n]
+# define _tracef       printf
+# undef TR
+# define TR(n, a)      if (_nc_tracing & (n)) { _tracef a ; putchar('\n'); }
+
+#else /* no debug */
+
+/* OLDNUM(n) indicates which line will be shifted to the position n.
+   if OLDNUM(n) == _NEWINDEX, then the line n in new, not shifted from
+   somewhere. */
+# if USE_HASHMAP
+int *_nc_oldnums = 0;
+static int oldnums_allocated = 0;
+#  define oldnums       _nc_oldnums
+#  define OLDNUM(n)    oldnums[n]
+# else /* !USE_HASHMAP */
+#  define OLDNUM(n)    newscr->_line[n].oldindex
+# endif /* !USE_HASHMAP */
+
 #endif /* defined(SCROLLDEBUG) || defined(HASHDEBUG) */
 
 
@@ -170,6 +183,22 @@ void _nc_scroll_optimize(void)
 
     TR(TRACE_ICALLS, ("_nc_scroll_optimize() begins"));
 
+#if !defined(SCROLLDEBUG) && !defined(HASHDEBUG)
+#if USE_HASHMAP
+    /* get enough storage */
+    if (oldnums_allocated < screen_lines)
+    {
+       int *new_oldnums = typeRealloc(int, screen_lines, oldnums);
+       if (!new_oldnums)
+           return;
+       oldnums = new_oldnums;
+       oldnums_allocated = screen_lines;
+    }
+    /* calculate the indices */
+    _nc_hash_map();
+#endif
+#endif /* !defined(SCROLLDEBUG) && !defined(HASHDEBUG) */
+
 #ifdef TRACE
     if (_nc_tracing & (TRACE_UPDATE | TRACE_MOVE))
        _nc_linedump();
@@ -182,10 +211,10 @@ void _nc_scroll_optimize(void)
            i++;
        if (i >= screen_lines)
            break;
-           
+
        shift = OLDNUM(i) - i; /* shift > 0 */
        start = i;
-       
+
        i++;
        while (i < screen_lines && OLDNUM(i) != _NEWINDEX && OLDNUM(i) - i == shift)
            i++;
@@ -208,10 +237,10 @@ void _nc_scroll_optimize(void)
            i--;
        if (i < 0)
            break;
-           
+
        shift = OLDNUM(i) - i; /* shift < 0 */
        end = i;
-       
+
        i--;
        while (i >= 0 && OLDNUM(i) != _NEWINDEX && OLDNUM(i) - i == shift)
            i--;
@@ -228,7 +257,7 @@ void _nc_scroll_optimize(void)
     }
 }
 
-#if defined(TRACE) || defined(SCROLLDEBUG)
+#if defined(TRACE) || defined(SCROLLDEBUG) || defined(HASHDEBUG)
 void _nc_linedump(void)
 /* dump the state of the real and virtual oldnum fields */
 {
@@ -239,7 +268,7 @@ void _nc_linedump(void)
     size_t     want = (screen_lines + 1) * 4;
 
     if (have < want)
-       buf = malloc(have = want);
+       buf = typeMalloc(char, have = want);
 
     (void) strcpy(buf, "virt");
     for (n = 0; n < screen_lines; n++)
similarity index 78%
rename from ncurses/hashmap.c
rename to ncurses/tty/hashmap.c
index 7a929f89d7afce0473fb1520ac16e06ce56b3d78..f6a58bc6e112390578e3ad12ef9287e4748baaa1 100644 (file)
@@ -63,34 +63,42 @@ hashmap: hashmap.c
 
 AUTHOR
     Eric S. Raymond <esr@snark.thyrsus.com>, May 1996
+    Bug fixes and improvements by Alexander V. Lukyanov <lav@yars.free.net>, 1997
 
 *****************************************************************************/
 
 #include <curses.priv.h>
+#include <term.h> /* for back_color_erase */
 
-MODULE_ID("$Id: hashmap.c,v 1.24 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: hashmap.c,v 1.33 1999/03/18 02:09:45 Alexander.V.Lukyanov Exp $")
 
 #ifdef HASHDEBUG
-#define TEXTWIDTH      1
+
+# define _tracef       printf
+# undef TR
+# define TR(n, a)      if (_nc_tracing & (n)) { _tracef a ; putchar('\n'); }
+# undef screen_lines
+# define screen_lines MAXLINES
+# define TEXTWIDTH     1
 int oldnums[MAXLINES], reallines[MAXLINES];
 static chtype oldtext[MAXLINES][TEXTWIDTH], newtext[MAXLINES][TEXTWIDTH];
-#define OLDNUM(n)      oldnums[n]
-#define REAL(m)                reallines[m]
-#define OLDTEXT(n)     oldtext[n]
-#define NEWTEXT(m)     newtext[m]
-#undef T
-#define T(x)           (void) printf x ; (void) putchar('\n');
-#else
-#include <curses.h>
-#define OLDNUM(n)      newscr->_line[n].oldindex
-#define REAL(m)                curscr->_line[m].oldindex
-#define OLDTEXT(n)     curscr->_line[n].text
-#define NEWTEXT(m)     newscr->_line[m].text
-#define TEXTWIDTH      (curscr->_maxx+1)
-#ifndef _NEWINDEX
-#define _NEWINDEX      -1
-#endif /* _NEWINDEX */
-#endif /* HASHDEBUG */
+# define OLDNUM(n)     oldnums[n]
+# define OLDTEXT(n)    oldtext[n]
+# define NEWTEXT(m)    newtext[m]
+# define PENDING(n)     1
+
+#else /* !HASHDEBUG */
+
+# define OLDNUM(n)     _nc_oldnums[n]
+# define OLDTEXT(n)    curscr->_line[n].text
+# define NEWTEXT(m)    newscr->_line[m].text
+# define TEXTWIDTH     (curscr->_maxx+1)
+# define PENDING(n)     (newscr->_line[n].firstchar != _NOCHANGE)
+
+#endif /* !HASHDEBUG */
+
+#define oldhash        (SP->oldhash)
+#define newhash        (SP->newhash)
 
 static inline unsigned long hash(chtype *text)
 {
@@ -100,7 +108,7 @@ static inline unsigned long hash(chtype *text)
     for (i = TEXTWIDTH; i>0; i--)
     {
        ch = *text++;
-       result += (result<<5) + ch + (ch>>16);
+       result += (result<<5) + ch;
     }
     return result;
 }
@@ -112,7 +120,7 @@ static int update_cost(chtype *from,chtype *to)
     int i;
 
     for (i=TEXTWIDTH; i>0; i--)
-        if (*from++ != *to++)
+       if (*from++ != *to++)
            cost++;
 
     return cost;
@@ -121,10 +129,13 @@ static int update_cost_from_blank(chtype *to)
 {
     int cost=0;
     int i;
+    chtype blank = BLANK;
+
+    if (back_color_erase)
+       blank |= (stdscr->_bkgd & A_COLOR);
 
-    /* FIXME: ClrBlank should be used */
     for (i=TEXTWIDTH; i>0; i--)
-        if (BLANK != *to++)
+       if (blank != *to++)
            cost++;
 
     return cost;
@@ -145,7 +156,7 @@ static inline bool cost_effective(const int from, const int to, const bool blank
     if (new_from == _NEWINDEX)
        new_from = from;
 
-    /* 
+    /*
      * On the left side of >= is the cost before moving;
      * on the right side -- cost after moving.
      */
@@ -167,9 +178,7 @@ typedef struct
     sym;
 
 static sym *hashtab=0;
-static int lines_alloc=0; 
-static long *oldhash=0;
-static long *newhash=0;
+static int lines_alloc=0;
 
 static void grow_hunks(void)
 {
@@ -193,7 +202,7 @@ static void grow_hunks(void)
     {
        start = i;
        shift = OLDNUM(i) - i;
-       
+
        /* get forward limit */
        i = start+1;
        while (i < screen_lines && OLDNUM(i) != _NEWINDEX && OLDNUM(i) - i == shift)
@@ -231,7 +240,7 @@ static void grow_hunks(void)
            }
            i--;
        }
-       
+
        i = end;
        /* grow forward */
        if (shift > 0)
@@ -255,7 +264,7 @@ static void grow_hunks(void)
            }
            i++;
        }
-       
+
        back_ref_limit = back_limit = i;
        if (shift > 0)
            back_ref_limit += shift;
@@ -273,7 +282,7 @@ void _nc_hash_map(void)
     {
        if (hashtab)
            free (hashtab);
-       hashtab = malloc (sizeof(*hashtab)*(screen_lines+1)*2);
+       hashtab = typeMalloc(sym, (screen_lines+1)*2);
        if (!hashtab)
        {
            if (oldhash)
@@ -281,21 +290,43 @@ void _nc_hash_map(void)
            lines_alloc = 0;
            return;
        }
-  
-       if (oldhash)
-           free (oldhash);
-       oldhash = malloc (sizeof(*oldhash)*screen_lines*2);
-       if (!oldhash)
+       lines_alloc = screen_lines;
+    }
+
+    if (oldhash && newhash)
+    {
+       /* re-hash only changed lines */
+       for (i = 0; i < screen_lines; i++)
+       {
+           if (PENDING(i))
+               newhash[i] = hash(NEWTEXT(i));
+       }
+    }
+    else
+    {
+       /* re-hash all */
+       if (oldhash == 0)
+           oldhash = typeCalloc (unsigned long, screen_lines);
+       if (newhash == 0)
+           newhash = typeCalloc (unsigned long, screen_lines);
+       if (!oldhash || !newhash)
+           return; /* malloc failure */
+       for (i = 0; i < screen_lines; i++)
        {
-           if (hashtab)
-               FreeAndNull(hashtab);
-           lines_alloc = 0;
-           return;
+           newhash[i] = hash(NEWTEXT(i));
+           oldhash[i] = hash(OLDTEXT(i));
        }
-       
-       lines_alloc = screen_lines;
     }
-    newhash = oldhash + screen_lines;  /* two arrays in the same memory block */
+
+#ifdef HASH_VERIFY
+    for (i = 0; i < screen_lines; i++)
+    {
+       if(newhash[i] != hash(NEWTEXT(i)))
+           fprintf(stderr,"error in newhash[%d]\n",i);
+       if(oldhash[i] != hash(OLDTEXT(i)))
+           fprintf(stderr,"error in oldhash[%d]\n",i);
+    }
+#endif
 
     /*
      * Set up and count line-hash values.
@@ -303,34 +334,32 @@ void _nc_hash_map(void)
     memset(hashtab, '\0', sizeof(*hashtab)*(screen_lines+1)*2);
     for (i = 0; i < screen_lines; i++)
     {
-       unsigned long hashval = hash(OLDTEXT(i));
+       unsigned long hashval = oldhash[i];
 
        for (sp = hashtab; sp->hashval; sp++)
            if (sp->hashval == hashval)
                break;
        sp->hashval = hashval;  /* in case this is a new entry */
-       oldhash[i] = hashval;
        sp->oldcount++;
        sp->oldindex = i;
     }
     for (i = 0; i < screen_lines; i++)
     {
-       unsigned long hashval = hash(NEWTEXT(i));
+       unsigned long hashval = newhash[i];
 
        for (sp = hashtab; sp->hashval; sp++)
            if (sp->hashval == hashval)
                break;
        sp->hashval = hashval;  /* in case this is a new entry */
-       newhash[i] = hashval;
        sp->newcount++;
        sp->newindex = i;
-    
-       OLDNUM(i) = _NEWINDEX;
+
+       OLDNUM(i) = _NEWINDEX;  /* initialize old indices array */
     }
 
     /*
      * Mark line pairs corresponding to unique hash pairs.
-     * 
+     *
      * We don't mark lines with offset 0, because it can make fail
      * extending hunks by cost_effective. Otherwise, it does not
      * have any side effects.
@@ -365,7 +394,7 @@ void _nc_hash_map(void)
        while (i < screen_lines && OLDNUM(i) != _NEWINDEX && OLDNUM(i) - i == shift)
            i++;
        size = i - start;
-       if (size <= abs(shift))
+       if (size < 3 || size+min(size/8,2) < abs(shift))
        {
            while (start < i)
            {
@@ -374,18 +403,65 @@ void _nc_hash_map(void)
            }
        }
     }
-    
+
     /* After clearing invalid hunks, try grow the rest. */
     grow_hunks();
 
 #if NO_LEAKS
     FreeAndNull(hashtab);
-    FreeAndNull(oldhash);
     lines_alloc = 0;
 #endif
 }
 
+void _nc_make_oldhash(int i)
+{
+    if (oldhash)
+       oldhash[i] = hash(OLDTEXT(i));
+}
+
+void _nc_scroll_oldhash(int n, int top, int bot)
+{
+    int size;
+    int i;
+
+    if (!oldhash)
+       return;
+
+    size = sizeof(*oldhash) * (bot-top+1-abs(n));
+    if (n > 0)
+    {
+       memmove (oldhash+top, oldhash+top+n, size);
+       for (i = bot; i > bot-n; i--)
+           oldhash[i] = hash(OLDTEXT(i));
+    }
+    else
+    {
+       memmove (oldhash+top-n, oldhash+top, size);
+       for (i = top; i < top-n; i++)
+           oldhash[i] = hash(OLDTEXT(i));
+    }
+}
+
+
 #ifdef HASHDEBUG
+static void
+usage(void)
+{
+    static const char *table[] = {
+       "hashmap test-driver",
+       "",
+       "#  comment",
+       "l  get initial line number vector",
+       "n  use following letters as text of new lines",
+       "o  use following letters as text of old lines",
+       "d  dump state of test arrays",
+       "h  apply hash mapper and see scroll optimization",
+       "?  this message"
+    };
+    size_t n;
+    for (n = 0; n < sizeof(table)/sizeof(table[0]); n++)
+       fprintf(stderr, "%s\n", table[n]);
+}
 
 int
 main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
@@ -393,6 +469,7 @@ main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
     char       line[BUFSIZ], *st;
     int                n;
 
+    SP = typeCalloc(SCREEN,1);
     for (n = 0; n < screen_lines; n++)
     {
        reallines[n] = n;
@@ -400,6 +477,9 @@ main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
        oldtext[n][0] = newtext[n][0] = '.';
     }
 
+    if (isatty(fileno(stdin)))
+       usage();
+
 #ifdef TRACE
     _nc_tracing = TRACE_MOVE;
 #endif
@@ -474,6 +554,9 @@ main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
            _nc_scroll_optimize();
            (void) fputs("Done.\n", stderr);
            break;
+       case '?':
+           usage();
+           break;
        }
     }
     return EXIT_SUCCESS;
similarity index 94%
rename from ncurses/lib_mvcur.c
rename to ncurses/tty/lib_mvcur.c
index 2e9948f9721a0ee56029826e27fe5b47d17b9da2..955eb8c6cd84b99ed4356c96193e002f043646f9 100644 (file)
 #include <term.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_mvcur.c,v 1.50 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.60 1999/10/03 01:08:27 Alexander.V.Lukyanov Exp $")
 
 #define STRLEN(s)       (s != 0) ? strlen(s) : 0
 
@@ -175,6 +175,24 @@ static float diff;
 
 static int normalized_cost(const char *const cap, int affcnt);
 
+#if !HAVE_STRSTR
+char * _nc_strstr(const char *haystack, const char *needle)
+{
+       size_t len1 = strlen(haystack);
+       size_t len2 = strlen(needle);
+       char *result = 0;
+
+       while ((len1 != 0) && (len1-- >= len2)) {
+               if (!strncmp(haystack, needle, len2)) {
+                       result = haystack;
+                       break;
+               }
+               haystack++;
+       }
+       return result;
+}
+#endif
+
 /****************************************************************************
  *
  * Initialization/wrapup (including cost pre-computation)
@@ -228,10 +246,10 @@ int _nc_msec_cost(const char *const cap, int affcnt)
                {
                    if (isdigit(*cp))
                        number = number * 10 + (*cp - '0');
-                   else if (*cp == '.')
-                       number += (*++cp - 10) / 10.0;
                    else if (*cp == '*')
                        number *= affcnt;
+                   else if (*cp == '.' && (*++cp != '>') && isdigit(*cp))
+                       number += (*cp - '0') / 10.0;
                }
 
                cum_cost += number * 10;
@@ -284,7 +302,7 @@ void _nc_mvcur_resume(void)
      */
     reset_scroll_region();
     SP->_cursrow = SP->_curscol = -1;
-    
+
     /* restore cursor shape */
     if (SP->_cursor != -1)
     {
@@ -318,6 +336,13 @@ void _nc_mvcur_init(void)
     SP->_cud1_cost = CostOf(cursor_down, 0);
     SP->_cuu1_cost = CostOf(cursor_up, 0);
 
+    SP->_smir_cost = CostOf(enter_insert_mode, 0);
+    SP->_rmir_cost = CostOf(exit_insert_mode, 0);
+    SP->_ip_cost = 0;
+    if (insert_padding) {
+       SP->_ip_cost = CostOf(insert_padding, 0);
+    }
+
     /*
      * Assumption: if the terminal has memory_relative addressing, the
      * initialization strings or smcup will set single-page mode so we
@@ -379,6 +404,20 @@ void _nc_mvcur_init(void)
     SP->_cursor_home_length     = STRLEN(cursor_home);
     SP->_cursor_to_ll_length    = STRLEN(cursor_to_ll);
 
+    /*
+     * If save_cursor is used within enter_ca_mode, we should not use it for
+     * scrolling optimization, since the corresponding restore_cursor is not
+     * nested on the various terminals (vt100, xterm, etc.) which use this
+     * feature.
+     */
+    if (save_cursor != 0
+     && enter_ca_mode != 0
+     && strstr(enter_ca_mode, save_cursor) != 0) {
+       T(("...suppressed sc/rc capability due to conflict with smcup/rmcup"));
+       save_cursor = 0;
+       restore_cursor = 0;
+    }
+
     /*
      * A different, possibly better way to arrange this would be to set
      * SP->_endwin = TRUE at window initialization time and let this be
@@ -567,6 +606,20 @@ relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
 #endif /* USE_HARD_TABS */
 
 #if defined(REAL_ATTR) && defined(WANT_CHAR)
+#ifdef BSD_TPUTS
+               /*
+                * If we're allowing BSD-style padding in tputs, don't generate
+                * a string with a leading digit.  Otherwise, that will be
+                * interpreted as a padding value rather than sent to the
+                * screen.
+                */
+               if (ovw
+                && n > 0
+                && vcost == 0
+                && str[0] == '\0'
+                && isdigit(TextOf(WANT_CHAR(to_y, from_x))))
+                       ovw = FALSE;
+#endif
                /*
                 * If we have no attribute changes, overwrite is cheaper.
                 * Note: must suppress this by passing in ovw = FALSE whenever
@@ -597,7 +650,7 @@ relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
                        *sp++ = WANT_CHAR(to_y, from_x + i);
                    *sp = '\0';
                    lhcost += n * SP->_char_padding;
-               }
+               }
                else
 #endif /* defined(REAL_ATTR) && defined(WANT_CHAR) */
                {
@@ -681,6 +734,7 @@ onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
 {
     char       use[OPT_SIZE], *sp;
     int                tactic = 0, newcost, usecost = INFINITY;
+    int                t5_cr_cost;
 
 #if defined(MAIN) || defined(NCURSES_TEST)
     struct timeval before, after;
@@ -764,13 +818,14 @@ onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
      * tactic #5: use left margin for wrap to right-hand side,
      * unless strange wrap behavior indicated by xenl might hose us.
      */
+    t5_cr_cost = (xold>0 ? SP->_cr_cost : 0);
     if (auto_left_margin && !eat_newline_glitch
        && yold > 0 && cursor_left
        && ((newcost=relative_move(NULL, yold-1, screen_columns-1, ynew, xnew, ovw)) != INFINITY)
-       && SP->_cr_cost + SP->_cub1_cost + newcost + newcost < usecost)
+       && t5_cr_cost + SP->_cub1_cost + newcost < usecost)
     {
        tactic = 5;
-       usecost = SP->_cr_cost + SP->_cub1_cost + newcost;
+       usecost = t5_cr_cost + SP->_cub1_cost + newcost;
     }
 
     /*
@@ -890,6 +945,10 @@ int mvcur(int yold, int xold, int ynew, int xnew)
     return(onscreen_mvcur(yold, xold, ynew, xnew, TRUE));
 }
 
+#if defined(TRACE) || defined(NCURSES_TEST)
+int _nc_optimize_enable = OPTIMIZE_ALL;
+#endif
+
 #if defined(MAIN) || defined(NCURSES_TEST)
 /****************************************************************************
  *
@@ -950,17 +1009,7 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
     baudrate();
 
     _nc_mvcur_init();
-#if HAVE_SETVBUF || HAVE_SETBUFFER
-    /*
-     * Undo the effects of our optimization hack, otherwise our interactive
-     * prompts don't flush properly.
-     */
-#if HAVE_SETVBUF
-    (void) setvbuf(SP->_ofp, malloc(BUFSIZ), _IOLBF, BUFSIZ);
-#elif HAVE_SETBUFFER
-    (void) setbuffer(SP->_ofp, malloc(BUFSIZ), BUFSIZ);
-#endif
-#endif /* HAVE_SETVBUF || HAVE_SETBUFFER */
+    NC_BUFFERED(FALSE);
 
     (void) puts("The mvcur tester.  Type ? for help");
 
@@ -1057,8 +1106,8 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
        }
        else if (buf[0] == 'i')
        {
-            dump_init((char *)NULL, F_TERMINFO, S_TERMINFO, 70, 0);
-            dump_entry(&cur_term->type, 0, 0);
+            dump_init((char *)NULL, F_TERMINFO, S_TERMINFO, 70, 0, FALSE);
+            dump_entry(&cur_term->type, FALSE, TRUE, 0);
             putchar('\n');
        }
        else if (buf[0] == 'o')
similarity index 85%
rename from ncurses/lib_tstp.c
rename to ncurses/tty/lib_tstp.c
index 0fb8b848986c3f6b2748d62195fea2e59746e28a..6fb912cf5096d2bd7ef3b988d146d05df886ceb9 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
 #define _POSIX_SOURCE
 #endif
 
-MODULE_ID("$Id: lib_tstp.c,v 1.15 1998/02/11 12:13:57 tom Exp $")
+MODULE_ID("$Id: lib_tstp.c,v 1.20 1999/10/22 23:11:09 tom Exp $")
+
+#if defined(SIGTSTP) && (HAVE_SIGACTION || HAVE_SIGVEC)
+#define USE_SIGTSTP 1
+#else
+#define USE_SIGTSTP 0
+#endif
 
 /*
  * Note: This code is fragile!  Its problem is that different OSs
@@ -93,18 +99,32 @@ MODULE_ID("$Id: lib_tstp.c,v 1.15 1998/02/11 12:13:57 tom Exp $")
  * the future.  If nothing else, it's simpler...
  */
 
-#ifdef SIGTSTP
+#if USE_SIGTSTP
 static void tstp(int dummy GCC_UNUSED)
 {
        sigset_t mask, omask;
        sigaction_t act, oact;
 
+#ifdef SIGTTOU
+       int sigttou_blocked;
+#endif
+
        T(("tstp() called"));
 
        /*
         * The user may have changed the prog_mode tty bits, so save them.
+        *
+        * But first try to detect whether we still are in the foreground
+        * process group - if not, an interactive shell may already have
+        * taken ownership of the tty and modified the settings when our
+        * parent was stopped before us, and we would likely pick up the
+        * settings already modified by the shell.
         */
-       def_prog_mode();
+       if (SP != 0 && !SP->_endwin) /* don't do this if we're not in curses */
+#if HAVE_TCGETPGRP
+       if (tcgetpgrp(STDIN_FILENO) == getpgrp())
+#endif
+           def_prog_mode();
 
        /*
         * Block window change and timer signals.  The latter
@@ -118,6 +138,15 @@ static void tstp(int dummy GCC_UNUSED)
 #endif
        (void)sigprocmask(SIG_BLOCK, &mask, &omask);
 
+#ifdef SIGTTOU
+       sigttou_blocked = sigismember(&omask, SIGTTOU);
+       if (!sigttou_blocked) {
+           (void)sigemptyset(&mask);
+           (void)sigaddset(&mask, SIGTTOU);
+           (void)sigprocmask(SIG_BLOCK, &mask, NULL);
+       }
+#endif
+
        /*
         * End window mode, which also resets the terminal state to the
         * original (pre-curses) modes.
@@ -127,6 +156,12 @@ static void tstp(int dummy GCC_UNUSED)
        /* Unblock SIGTSTP. */
        (void)sigemptyset(&mask);
        (void)sigaddset(&mask, SIGTSTP);
+#ifdef SIGTTOU
+       if (!sigttou_blocked) {
+            /* Unblock this too if it wasn't blocked on entry */
+           (void)sigaddset(&mask, SIGTTOU);
+       }
+#endif
        (void)sigprocmask(SIG_UNBLOCK, &mask, NULL);
 
        /* Now we want to resend SIGSTP to this process and suspend it */
@@ -160,17 +195,20 @@ static void tstp(int dummy GCC_UNUSED)
        /* Reset the signals. */
        (void)sigprocmask(SIG_SETMASK, &omask, NULL);
 }
-#endif /* defined(SIGTSTP) */
+#endif /* USE_SIGTSTP */
 
 static void cleanup(int sig)
 {
+       static int nested;
+
        /*
         * Actually, doing any sort of I/O from within an signal handler is
         * "unsafe".  But we'll _try_ to clean up the screen and terminal
         * settings on the way out.
         */
-       if (sig == SIGINT
-        || sig == SIGQUIT) {
+       if (!nested++
+        && (sig == SIGINT
+         || sig == SIGQUIT)) {
 #if HAVE_SIGACTION || HAVE_SIGVEC
                sigaction_t act;
                sigemptyset(&act.sa_mask);
@@ -184,9 +222,15 @@ static void cleanup(int sig)
                    SCREEN *scan = _nc_screen_chain;
                    while(scan)
                    {
+                       if (SP != 0
+                       && SP->_ofp != 0
+                       && isatty(fileno(SP->_ofp))) {
+                           SP->_cleanup = TRUE;
+                       }
                        set_term(scan);
                        endwin();
-                       SP->_endwin = FALSE; /* in case we have an atexit! */
+                       if (SP)
+                           SP->_endwin = FALSE; /* in case we have an atexit! */
                        scan = scan->_next_screen;
                    }
                }
@@ -227,9 +271,9 @@ static int CatchIfDefault(int sig, sigaction_t *act)
        return FALSE;
 }
 #else
-static int CatchIfDefault(int sig, RETSIGTYPE (*handler)())
+static int CatchIfDefault(int sig, RETSIGTYPE (*handler)(int))
 {
-       void    (*ohandler)();
+       void    (*ohandler)(int);
 
        ohandler = signal(sig, SIG_IGN);
        if (ohandler == SIG_DFL
@@ -259,7 +303,7 @@ static int CatchIfDefault(int sig, RETSIGTYPE (*handler)())
  */
 void _nc_signal_handler(bool enable)
 {
-#ifdef SIGTSTP         /* Xenix 2.x doesn't have this */
+#if USE_SIGTSTP                /* Xenix 2.x doesn't have SIGTSTP, for example */
 static sigaction_t act, oact;
 static int ignore;
 
@@ -295,7 +339,7 @@ static int ignore;
                                ignore = TRUE;
                }
        }
-#else /* !SIGTSTP */
+#else /* !USE_SIGTSTP */
        if (enable)
        {
 #if HAVE_SIGACTION || HAVE_SIGVEC
@@ -321,5 +365,5 @@ static int ignore;
 #endif
 #endif /* !(HAVE_SIGACTION || HAVE_SIGVEC) */
        }
-#endif /* !SIGTSTP */
+#endif /* !USE_SIGTSTP */
 }
similarity index 54%
rename from ncurses/lib_twait.c
rename to ncurses/tty/lib_twait.c
index 93f24d72488956d2e40cf244a40eb22a1884e974..f095c9b53c0c8c5e6c04c7ab56b764d14bb131f5 100644 (file)
 **     comments, none of the original code remains - T.Dickey).
 */
 
+#ifdef __BEOS__
+#include <OS.h>
+#endif
+
 #include <curses.priv.h>
 
 #if USE_FUNC_POLL
 # endif
 #endif
 
-#ifdef __BEOS__
-/* BeOS select() only works on sockets.  Use the tty hack instead */
-#include <socket.h>
-#define select check_select
-#endif
-
-MODULE_ID("$Id: lib_twait.c,v 1.30 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: lib_twait.c,v 1.34 1999/10/16 21:25:10 tom Exp $")
 
-/*
- * We want to define GOOD_SELECT if the last argument of select(2) is
- * modified to indicate time left.  The code will deal gracefully with
- * the other case, this is just an optimization to reduce the number
- * of system calls per input event.
- *
- * In general, expect System-V-like UNIXes to have this behavior and BSD-like
- * ones to not have it.  Check your manual page.  If it doesn't explicitly
- * say the last argument is modified, assume it's not.
- *
- * (We'd really like configure to autodetect this, but writing a proper test
- * turns out to be hard.)
- */
+static long _nc_gettime(bool first)
+{
+       long res;
 
 #if HAVE_GETTIMEOFDAY
-#if (defined(TRACE) && !HAVE_USLEEP) || ! GOOD_SELECT
-static void _nc_gettime(struct timeval *tp)
-{
-       gettimeofday(tp, (struct timezone *)0);
-       T(("time: %ld.%06ld", (long) tp->tv_sec, (long) tp->tv_usec));
-}
-#endif
+# define PRECISE_GETTIME 1
+       static struct timeval t0;
+       struct timeval t1;
+       gettimeofday(&t1, (struct timezone *)0);
+       if (first) {
+               t0 = t1;
+       }
+       res = (t1.tv_sec  - t0.tv_sec)  * 1000
+           + (t1.tv_usec - t0.tv_usec) / 1000;
+#else
+# define PRECISE_GETTIME 0
+       static time_t t0;
+       time_t t1 = time((time_t*)0);
+       if (first) {
+               t0 = t1;
+       }
+       res = (t1 - t0) * 1000;
 #endif
+       T(("%s time: %ld msec", first ? "get" : "elapsed", res));
+       return res;
+}
 
 /*
  * Wait a specified number of milliseconds, returning nonzero if the timer
@@ -105,132 +106,128 @@ static void _nc_gettime(struct timeval *tp)
 int _nc_timed_wait(int mode, int milliseconds, int *timeleft)
 {
 int    fd;
-int    count = 0;
-long   whole_secs = milliseconds / 1000;
-long   micro_secs = (milliseconds % 1000) * 1000;
+int    count;
 
-int result = 0;
-struct timeval ntimeout;
+int result;
 
 #if USE_FUNC_POLL
 struct pollfd fds[2];
+#elif defined(__BEOS__)
 #elif HAVE_SELECT
 static fd_set set;
 #endif
 
-#if !GOOD_SELECT && HAVE_GETTIMEOFDAY
-struct timeval starttime, returntime;
-long delta;
+long starttime, returntime;
+
+       T(("start twait: %d milliseconds, mode: %d", milliseconds, mode));
 
-       _nc_gettime(&starttime);
+#if PRECISE_GETTIME
+retry:
 #endif
+       starttime = _nc_gettime(TRUE);
 
-       if (milliseconds >= 0) {
-               ntimeout.tv_sec  = whole_secs;
-               ntimeout.tv_usec = micro_secs;
-       } else {
-               ntimeout.tv_sec  = 0;
-               ntimeout.tv_usec = 0;
-       }
+       count = 0;
 
-       T(("start twait: %lu.%06lu secs, mode: %d", (long) ntimeout.tv_sec, (long) ntimeout.tv_usec, mode));
+#if USE_FUNC_POLL
+       if (mode & 1) {
+               fds[count].fd     = SP->_ifd;
+               fds[count].events = POLLIN;
+               count++;
+       }
+       if ((mode & 2)
+        && (fd = SP->_mouse_fd) >= 0) {
+               fds[count].fd     = fd;
+               fds[count].events = POLLIN;
+               count++;
+       }
+       result = poll(fds, count, milliseconds);
 
-#ifdef HIDE_EINTR
+#elif defined(__BEOS__)
        /*
-        * The do loop tries to make it look like we have restarting signals,
-        * even if we don't.
+        * BeOS's select() is declared in socket.h, so the configure script does
+        * not see it.  That's just as well, since that function works only for
+        * sockets.  This (using snooze and ioctl) was distilled from Be's patch
+        * for ncurses which uses a separate thread to simulate select().
+        *
+        * FIXME: the return values from the ioctl aren't very clear if we get
+        * interrupted.
         */
-       do {
-#endif /* HIDE_EINTR */
-#if !GOOD_SELECT && HAVE_GETTIMEOFDAY
-       retry:
-#endif
-               count = 0;
-#if USE_FUNC_POLL
+       result = 0;
+       if (mode & 1) {
+               bigtime_t d;
+               bigtime_t useconds = milliseconds * 1000;
+               int n, howmany;
 
-               if (mode & 1) {
-                       fds[count].fd     = SP->_ifd;
-                       fds[count].events = POLLIN;
-                       count++;
-               }
-               if ((mode & 2)
-                && (fd = SP->_mouse_fd) >= 0) {
-                       fds[count].fd     = fd;
-                       fds[count].events = POLLIN;
-                       count++;
+               if (useconds == 0) /* we're here to go _through_ the loop */
+                       useconds = 1;
+
+               for (d = 0; d < useconds; d += 5000) {
+                       n = 0;
+                       howmany = ioctl(0, 'ichr', &n);
+                       if (howmany >= 0 && n > 0) {
+                               result = 1;
+                               break;
+                       }
+                       if (useconds > 1)
+                               snooze(5000);
+                       milliseconds -= 5;
                }
-               result = poll(fds, count, milliseconds);
+       } else if (milliseconds > 0) {
+               snooze(milliseconds * 1000);
+               milliseconds = 0;
+       }
 #elif HAVE_SELECT
-               /*
-                * Some systems modify the fd_set arguments; do this in the
-                * loop.
-                */
-               FD_ZERO(&set);
+       /*
+        * select() modifies the fd_set arguments; do this in the
+        * loop.
+        */
+       FD_ZERO(&set);
 
-               if (mode & 1) {
-                       FD_SET(SP->_ifd, &set);
-                       count = SP->_ifd + 1;
-               }
-               if ((mode & 2)
-                && (fd = SP->_mouse_fd) >= 0) {
-                       FD_SET(fd, &set);
-                       count = max(fd, count) + 1;
-               }
+       if (mode & 1) {
+               FD_SET(SP->_ifd, &set);
+               count = SP->_ifd + 1;
+       }
+       if ((mode & 2)
+        && (fd = SP->_mouse_fd) >= 0) {
+               FD_SET(fd, &set);
+               count = max(fd, count) + 1;
+       }
 
-               errno = 0;
-               result = select(count, &set, NULL, NULL, milliseconds >= 0 ? &ntimeout : 0);
+       if (milliseconds >= 0) {
+               struct timeval ntimeout;
+               ntimeout.tv_sec  = milliseconds / 1000;
+               ntimeout.tv_usec = (milliseconds % 1000) * 1000;
+               result = select(count, &set, NULL, NULL, &ntimeout);
+       } else {
+               result = select(count, &set, NULL, NULL, NULL);
+       }
 #endif
 
-#if !GOOD_SELECT && HAVE_GETTIMEOFDAY
-               _nc_gettime(&returntime);
-
-               /* The contents of ntimeout aren't guaranteed after return from
-                * 'select()', so we disregard its contents.  Also, note that
-                * on some systems, tv_sec and tv_usec are unsigned.
-                */
-               ntimeout.tv_sec  = whole_secs;
-               ntimeout.tv_usec = micro_secs;
-
-#define DELTA(f) (long)ntimeout.f - (long)returntime.f + (long)starttime.f
-
-               delta = DELTA(tv_sec);
-               if (delta < 0)
-                       delta = 0;
-               ntimeout.tv_sec = delta;
+       returntime = _nc_gettime(FALSE);
 
-               delta = DELTA(tv_usec);
-               while (delta < 0 && ntimeout.tv_sec != 0) {
-                       ntimeout.tv_sec--;
-                       delta += 1000000;
-               }
-               ntimeout.tv_usec = delta;
-               if (delta < 0)
-                       ntimeout.tv_sec = ntimeout.tv_usec = 0;
+       if (milliseconds >= 0)
+               milliseconds -= (returntime - starttime);
 
-               /*
-                * If the timeout hasn't expired, and we've gotten no data,
-                * this is probably a system where 'select()' needs to be left
-                * alone so that it can complete.  Make this process sleep,
-                * then come back for more.
-                */
-               if (result == 0
-                && (ntimeout.tv_sec != 0 || ntimeout.tv_usec > 100000)) {
-                       napms(100);
-                       goto retry;
-               }
-#endif
-#ifdef HIDE_EINTR
-       } while (result == -1 && errno == EINTR);
+#if PRECISE_GETTIME
+       /*
+        * If the timeout hasn't expired, and we've gotten no data,
+        * this is probably a system where 'select()' needs to be left
+        * alone so that it can complete.  Make this process sleep,
+        * then come back for more.
+        */
+       if (result == 0 && milliseconds > 100) {
+               napms(100);
+               milliseconds -= 100;
+               goto retry;
+       }
 #endif
 
-       /* return approximate time left on the ntimeout, in milliseconds */
+       /* return approximate time left in milliseconds */
        if (timeleft)
-               *timeleft = (ntimeout.tv_sec * 1000) + (ntimeout.tv_usec / 1000);
+               *timeleft = milliseconds;
 
-       T(("end twait: returned %d (%d), remaining time %lu.%06lu secs (%d msec)",
-               result, errno,
-               (long) ntimeout.tv_sec, (long) (ntimeout.tv_usec / 1000),
-               timeleft ? *timeleft : -1));
+       T(("end twait: returned %d (%d), remaining time %d msec",
+               result, errno, milliseconds));
 
        /*
         * Both 'poll()' and 'select()' return the number of file descriptors
@@ -249,6 +246,8 @@ long delta;
                                        count++;
                                }
                        }
+#elif defined(__BEOS__)
+                       result = 1;     /* redundant, but simple */
 #elif HAVE_SELECT
                        if ((mode & 2)
                         && (fd = SP->_mouse_fd) >= 0
similarity index 90%
rename from ncurses/lib_vidattr.c
rename to ncurses/tty/lib_vidattr.c
index cbd4634a79a543fb6d6b520351c3d79bc715007c..20cc2b138011c528a4f162aadee7ecfedb58d239 100644 (file)
@@ -64,7 +64,7 @@
 #include <curses.priv.h>
 #include <term.h>
 
-MODULE_ID("$Id: lib_vidattr.c,v 1.20 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.23 1999/06/12 21:20:41 tom Exp $")
 
 #define doPut(mode) TPUTS_TRACE(#mode); tputs(mode, 1, outc)
 
@@ -74,11 +74,22 @@ MODULE_ID("$Id: lib_vidattr.c,v 1.20 1998/02/11 12:13:56 tom Exp $")
 #define TurnOff(mask,mode) \
        if ((turn_off & mask) && mode) { doPut(mode); turn_off &= ~mask; }
 
+       /* if there is no current screen, assume we *can* do color */
+#define SetColorsIf(why,old_attr) \
+       if ((!SP || SP->_coloron) && (why)) { \
+               int old_pair = PAIR_NUMBER(old_attr); \
+               T(("old pair = %d -- new pair = %d", old_pair, pair)); \
+               if ((pair != old_pair) \
+                || (reverse ^ ((old_attr & A_REVERSE) != 0))) { \
+                       _nc_do_color(pair, reverse, outc); \
+               } \
+       }
+
 int vidputs(attr_t newmode, int  (*outc)(int))
 {
 static attr_t previous_attr = A_NORMAL;
 attr_t turn_on, turn_off;
-int pair, current_pair;
+int pair;
 bool reverse = FALSE;
 bool used_ncv = FALSE;
 
@@ -91,7 +102,8 @@ bool used_ncv = FALSE;
        T(("previous attribute was %s", _traceattr(previous_attr)));
 
 #if !USE_XMC_SUPPORT
-       if (magic_cookie_glitch > 0)
+       if ((SP != 0)
+        && (magic_cookie_glitch > 0))
                newmode &= ~(SP->_xmc_suppress);
 #endif
 
@@ -132,26 +144,15 @@ bool used_ncv = FALSE;
                returnCode(OK);
 
        pair = PAIR_NUMBER(newmode);
-       current_pair = PAIR_NUMBER(previous_attr);
 
        if (reverse) {
                newmode &= ~A_REVERSE;
-               pair = -pair;
        }
-       if (previous_attr & A_REVERSE)
-               current_pair = -current_pair;
 
        turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR;
        turn_on  = (newmode & ~previous_attr) & ALL_BUT_COLOR;
 
-       /* if there is no current screen, assume we *can* do color */
-       if ((!SP || SP->_coloron) && pair == 0) {
-               T(("old pair = %d -- new pair = %d", current_pair, pair));
-               if (pair != current_pair) {
-                       _nc_do_color(pair, reverse, outc);
-                       previous_attr &= ~A_COLOR;
-               }
-       }
+       SetColorsIf(pair == 0, previous_attr);
 
        if (newmode == A_NORMAL) {
                if((previous_attr & A_ALTCHARSET) && exit_alt_charset_mode) {
@@ -163,6 +164,7 @@ bool used_ncv = FALSE;
                        previous_attr &= ~A_COLOR;
                }
 
+               SetColorsIf(pair != 0, previous_attr);
        } else if (set_attributes && !used_ncv) {
                if (turn_on || turn_off) {
                        TPUTS_TRACE("set_attributes");
@@ -178,19 +180,27 @@ bool used_ncv = FALSE;
                                (newmode & A_ALTCHARSET) != 0), 1, outc);
                        previous_attr &= ~A_COLOR;
                }
+               SetColorsIf(pair != 0, previous_attr);
        } else {
 
                T(("turning %s off", _traceattr(turn_off)));
 
                TurnOff(A_ALTCHARSET,  exit_alt_charset_mode);
-               TurnOff(A_UNDERLINE,   exit_underline_mode);
-               TurnOff(A_STANDOUT,    exit_standout_mode);
+
+               if (!SP || SP->_use_rmul) {
+                       TurnOff(A_UNDERLINE,   exit_underline_mode);
+               }
+
+               if (!SP || SP->_use_rmso) {
+                       TurnOff(A_STANDOUT,    exit_standout_mode);
+               }
 
                if (turn_off && exit_attribute_mode) {
                        doPut(exit_attribute_mode);
                        turn_on  |= (newmode & (chtype)(~A_COLOR));
                        previous_attr &= ~A_COLOR;
                }
+               SetColorsIf(pair != 0, previous_attr);
 
                T(("turning %s on", _traceattr(turn_on)));
 
@@ -211,15 +221,6 @@ bool used_ncv = FALSE;
                TurnOn (A_VERTICAL,   enter_vertical_hl_mode);
        }
 
-       /* if there is no current screen, assume we *can* do color */
-       if ((!SP || SP->_coloron) && pair != 0) {
-               current_pair = PAIR_NUMBER(previous_attr);
-               T(("old pair = %d -- new pair = %d", current_pair, pair));
-               if (pair != current_pair) {
-                       _nc_do_color(pair, reverse, outc);
-               }
-       }
-
        if (reverse)
                newmode |= A_REVERSE;
 
diff --git a/ncurses/tty/tty_display.h b/ncurses/tty/tty_display.h
new file mode 100644 (file)
index 0000000..1bc0d2d
--- /dev/null
@@ -0,0 +1,146 @@
+/****************************************************************************
+ * Copyright (c) 1998 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.                                                           *
+ ************************************************************************** */
+
+#ifndef TTY_DISPLAY_H
+#define TTY_DISPLAY_H 1
+
+extern bool _nc_tty_beep(void);
+extern bool _nc_tty_check_resize(void);
+extern bool _nc_tty_cursor(int);
+extern bool _nc_tty_flash(void);
+extern bool _nc_tty_init_color(int,int,int,int);
+extern bool _nc_tty_init_pair(int,int,int);
+extern bool _nc_tty_slk_hide(bool);
+extern bool _nc_tty_slk_update(int,const char *);
+extern bool _nc_tty_start_color(void);
+extern void _nc_tty_display_resume(void);
+extern void _nc_tty_display_suspend(void);
+extern void _nc_tty_dispose(void);     /* frees SP->_term */
+extern void _nc_tty_switch_to(void);
+extern void _nc_tty_update(void);
+
+struct tty_display_data {
+       int             _fifohold;      /* set if breakout marked           */
+       unsigned long   _current_attr;  /* terminal attribute current set   */
+       int             _cursrow;       /* physical cursor row (-1=unknown) */
+       int             _curscol;       /* physical cursor column           */
+
+       /* cursor movement costs; units are 10ths of milliseconds */
+       int             _char_padding;  /* cost of character put            */
+       int             _cr_cost;       /* cost of (carriage_return)        */
+       int             _cup_cost;      /* cost of (cursor_address)         */
+       int             _home_cost;     /* cost of (cursor_home)            */
+       int             _ll_cost;       /* cost of (cursor_to_ll)           */
+#if USE_HARD_TABS
+       int             _ht_cost;       /* cost of (tab)                    */
+       int             _cbt_cost;      /* cost of (backtab)                */
+#endif /* USE_HARD_TABS */
+       int             _cub1_cost;     /* cost of (cursor_left)            */
+       int             _cuf1_cost;     /* cost of (cursor_right)           */
+       int             _cud1_cost;     /* cost of (cursor_down)            */
+       int             _cuu1_cost;     /* cost of (cursor_up)              */
+       int             _cub_cost;      /* cost of (parm_cursor_left)       */
+       int             _cuf_cost;      /* cost of (parm_cursor_right)      */
+       int             _cud_cost;      /* cost of (parm_cursor_down)       */
+       int             _cuu_cost;      /* cost of (parm_cursor_up)         */
+       int             _hpa_cost;      /* cost of (column_address)         */
+       int             _vpa_cost;      /* cost of (row_address)            */
+       /* used in lib_doupdate.c, must be chars */
+       int             _ed_cost;       /* cost of (clr_eos)                */
+       int             _el_cost;       /* cost of (clr_eol)                */
+       int             _el1_cost;      /* cost of (clr_bol)                */
+       int             _dch1_cost;     /* cost of (delete_character)       */
+       int             _ich1_cost;     /* cost of (insert_character)       */
+       int             _dch_cost;      /* cost of (parm_dch)               */
+       int             _ich_cost;      /* cost of (parm_ich)               */
+       int             _ech_cost;      /* cost of (erase_chars)            */
+       int             _rep_cost;      /* cost of (repeat_char)            */
+       int             _hpa_ch_cost;   /* cost of (column_address)         */
+       int             _cup_ch_cost;   /* cost of (cursor_address)         */
+       int             _smir_cost;     /* cost of (enter_insert_mode)      */
+       int             _rmir_cost;     /* cost of (exit_insert_mode)       */
+       int             _ip_cost;       /* cost of (insert_padding)         */
+       /* used in lib_mvcur.c */
+       char *          _address_cursor;
+       int             _carriage_return_length;
+       int             _cursor_home_length;
+       int             _cursor_to_ll_length;
+
+       chtype          _xmc_suppress;  /* attributes to suppress if xmc     */
+       chtype          _xmc_triggers;  /* attributes to process if xmc      */
+
+       bool            _sig_winch;
+};
+
+
+#define DelCharCost(count) \
+               ((parm_dch != 0) \
+               ? D->_dch_cost \
+               : ((delete_character != 0) \
+                       ? (D->_dch1_cost * count) \
+                       : INFINITY))
+
+#define InsCharCost(count) \
+               ((parm_ich != 0) \
+               ? D->_ich_cost \
+               : ((enter_insert_mode && exit_insert_mode) \
+                 ? D->_smir_cost + D->_rmir_cost + (D->_ip_cost * count) \
+                 : ((insert_character != 0) \
+                   ? (D->_ich1_cost * count) \
+                   : INFINITY)))
+
+#if USE_XMC_SUPPORT
+#define UpdateAttrs(c) if (D->_current_attr != AttrOf(c)) { \
+                               attr_t chg = D->_current_attr; \
+                               vidattr(AttrOf(c)); \
+                               if (magic_cookie_glitch > 0 \
+                                && XMC_CHANGES((chg ^ D->_current_attr))) { \
+                                       T(("%s @%d before glitch %d,%d", \
+                                               __FILE__, __LINE__, \
+                                               D->_cursrow, \
+                                               D->_curscol)); \
+                                       _nc_do_xmc_glitch(chg); \
+                               } \
+                       }
+#else
+#define UpdateAttrs(c) if (D->_current_attr != AttrOf(c)) \
+                               vidattr(AttrOf(c));
+#endif
+
+/*
+ * Check whether the given character can be output by clearing commands.  This
+ * includes test for being a space and not including any 'bad' attributes, such
+ * as A_REVERSE.  All attribute flags which don't affect appearance of a space
+ * or can be output by clearing (A_COLOR in case of bce-terminal) are excluded.
+ */
+#define can_clear_with(ch) \
+       ((ch & ~(NONBLANK_ATTR|(back_color_erase ? A_COLOR:0))) == BLANK)
+
+#define XMC_CHANGES(c) ((c) & D->_xmc_suppress)
+
+#endif /* TTY_DISPLAY_H */
diff --git a/ncurses/tty/tty_input.h b/ncurses/tty/tty_input.h
new file mode 100644 (file)
index 0000000..41c2283
--- /dev/null
@@ -0,0 +1,61 @@
+/****************************************************************************
+ * Copyright (c) 1998 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.                                                           *
+ ****************************************************************************/
+
+/*
+ * $Id: tty_input.h,v 1.1 1998/12/19 22:42:57 tom Exp $
+ */
+
+#ifndef TTY_INPUT_H
+#define TTY_INPUT_H 1
+
+extern bool _nc_tty_mouse_mask(mmask_t);
+extern bool _nc_tty_pending(void);
+extern int  _nc_tty_next_event(int);
+extern void _nc_tty_flags_changed(void);
+extern void _nc_tty_flush(void);
+extern void _nc_tty_input_resume(void);
+extern void _nc_tty_input_suspend(void);
+
+struct tty_input_data {
+       int             _ifd;           /* input file ptr for screen        */
+       int             _keypad_xmit;   /* current terminal state           */
+       int             _meta_on;       /* current terminal state           */
+
+       /*
+        * These are the data that support the mouse interface.
+        */
+       bool            (*_mouse_event) (SCREEN *);
+       bool            (*_mouse_inline)(SCREEN *);
+       bool            (*_mouse_parse) (int);
+       void            (*_mouse_resume)(SCREEN *);
+       void            (*_mouse_wrap)  (SCREEN *);
+       int             _mouse_fd;      /* file-descriptor, if any */
+       int             mousetype;
+};
+
+#endif /* TTY_INPUT_H */
similarity index 92%
rename from ncurses/lib_doupdate.c
rename to ncurses/tty/tty_update.c
index b0daf4fc144985b434426735c52a05e143894d82..a5a640f8663c7da328ff6f6286ab5be2e5d8c716 100644 (file)
  *
  *-----------------------------------------------------------------*/
 
+#ifdef __BEOS__
+#include <OS.h>
+#endif
+
 #include <curses.priv.h>
 
 #if defined(TRACE) && HAVE_SYS_TIMES_H && HAVE_TIMES
 #endif
 #endif
 
-#ifdef __BEOS__
-/* BeOS select() only works on sockets.  Use the tty hack instead */
-#include <socket.h>
-#define select check_select
-#endif
-
 #include <term.h>
 
-MODULE_ID("$Id: lib_doupdate.c,v 1.98 1998/02/11 12:14:00 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.117 1999/10/22 23:28:46 tom Exp $")
 
 /*
  * This define controls the line-breakout optimization.  Every once in a
@@ -97,10 +95,10 @@ MODULE_ID("$Id: lib_doupdate.c,v 1.98 1998/02/11 12:14:00 tom Exp $")
 
 static inline chtype ClrBlank ( WINDOW *win );
 static int ClrBottom(int total);
-static int InsStr( chtype *line, int count );
 static void ClearScreen( chtype blank );
-static void ClrUpdate( WINDOW *win );
+static void ClrUpdate( void );
 static void DelChar( int count );
+static void InsStr( chtype *line, int count );
 static void TransformLine( int const lineno );
 
 #ifdef POSITION_DEBUG
@@ -110,29 +108,40 @@ static void TransformLine( int const lineno );
  *
  ****************************************************************************/
 
-void position_check(int expected_y, int expected_x, char *legend)
+static void position_check(int expected_y, int expected_x, char *legend)
 /* check to see if the real cursor position matches the virtual */
 {
-    static char  buf[9];
+    char  buf[20];
     int y, x;
 
-    if (_nc_tracing)
+    if (!_nc_tracing || (expected_y < 0 && expected_x < 0))
        return;
 
     memset(buf, '\0', sizeof(buf));
-    (void) write(1, "\033[6n", 4);     /* only works on ANSI-compatibles */
-    (void) read(0, (void *)buf, 8);
+    putp("\033[6n");   /* only works on ANSI-compatibles */
+    _nc_flush();
+    (void) read(0, buf, sizeof(buf)-1);
     _tracef("probe returned %s", _nc_visbuf(buf));
 
     /* try to interpret as a position report */
-    if (sscanf(buf, "\033[%d;%dR", &y, &x) != 2)
+    if (sscanf(buf, "\033[%d;%dR", &y, &x) != 2) {
        _tracef("position probe failed in %s", legend);
-    else if (y - 1 != expected_y || x - 1 != expected_x)
-       _tracef("position seen (%d, %d) doesn't match expected one (%d, %d) in %s",
-               y-1, x-1, expected_y, expected_x, legend);
-    else
-       _tracef("position matches OK in %s", legend);
+    } else {
+       if (expected_x < 0)
+           expected_x = x - 1;
+       if (expected_y < 0)
+           expected_y = y - 1;
+       if (y - 1 != expected_y || x - 1 != expected_x) {
+           beep();
+           _tracef("position seen (%d, %d) doesn't match expected one (%d, %d) in %s",
+                   y-1, x-1, expected_y, expected_x, legend);
+       } else {
+           _tracef("position matches OK in %s", legend);
+       }
+    }
 }
+#else
+#define position_check(expected_y, expected_x, legend) /* nothing */
 #endif /* POSITION_DEBUG */
 
 /****************************************************************************
@@ -148,9 +157,7 @@ static inline void GoTo(int const row, int const col)
        TR(TRACE_MOVE, ("GoTo(%d, %d) from (%d, %d)",
                        row, col, SP->_cursrow, SP->_curscol));
 
-#ifdef POSITION_DEBUG
        position_check(SP->_cursrow, SP->_curscol, "GoTo");
-#endif /* POSITION_DEBUG */
 
        /*
         * Force restore even if msgr is on when we're in an alternate
@@ -168,6 +175,7 @@ static inline void GoTo(int const row, int const col)
        mvcur(SP->_cursrow, SP->_curscol, row, col);
        SP->_cursrow = row;
        SP->_curscol = col;
+       position_check(SP->_cursrow, SP->_curscol, "GoTo2");
 }
 
 static inline void PutAttrChar(chtype ch)
@@ -179,10 +187,14 @@ static inline void PutAttrChar(chtype ch)
                          _tracechtype(ch),
                           SP->_cursrow, SP->_curscol));
        UpdateAttrs(ch);
-       putc((int)TextOf(ch), SP->_ofp);
+       if (SP->_cleanup) {
+               _nc_outch((int)TextOf(ch));
+       } else {
+               putc((int)TextOf(ch), SP->_ofp); /* macro's fastest... */
 #ifdef TRACE
-       _nc_outchars++;
+               _nc_outchars++;
 #endif /* TRACE */
+       }
        SP->_curscol++;
        if (char_padding) {
                TPUTS_TRACE("char_padding");
@@ -212,6 +224,21 @@ static bool check_pending(void)
                {
                        have_pending = TRUE;
                }
+#elif defined(__BEOS__)
+               /*
+                * BeOS's select() is declared in socket.h, so the configure script does
+                * not see it.  That's just as well, since that function works only for
+                * sockets.  This (using snooze and ioctl) was distilled from Be's patch
+                * for ncurses which uses a separate thread to simulate select().
+                *
+                * FIXME: the return values from the ioctl aren't very clear if we get
+                * interrupted.
+                */
+               int n = 0;
+               int howmany = ioctl(0, 'ichr', &n);
+               if (howmany >= 0 && n > 0) {
+                       have_pending = TRUE;
+               }
 #elif HAVE_SELECT
                fd_set fdset;
                struct timeval ktimeout;
@@ -221,7 +248,7 @@ static bool check_pending(void)
 
                FD_ZERO(&fdset);
                FD_SET(SP->_checkfd, &fdset);
-               if (select(SP->_checkfd+1, &fdset, NULL, NULL, &ktimeout) > 0)
+               if (select(SP->_checkfd+1, &fdset, NULL, NULL, &ktimeout) != 0)
                {
                        have_pending = TRUE;
                }
@@ -229,7 +256,7 @@ static bool check_pending(void)
        }
        if (have_pending) {
                SP->_fifohold = 5;
-               fflush(SP->_ofp);
+               _nc_flush();
        }
        return FALSE;
 }
@@ -261,6 +288,8 @@ static void PutCharLR(chtype const ch)
        putp(exit_am_mode);
 
        PutAttrChar(ch);
+       SP->_curscol--;
+       position_check(SP->_cursrow, SP->_curscol, "exit_am_mode");
 
        TPUTS_TRACE("enter_am_mode");
        putp(enter_am_mode);
@@ -307,6 +336,7 @@ static void wrap_cursor(void)
     {
        SP->_curscol--;
     }
+    position_check(SP->_cursrow, SP->_curscol, "wrap_cursor");
 }
 
 static inline void PutChar(chtype const ch)
@@ -320,9 +350,7 @@ static inline void PutChar(chtype const ch)
     if (SP->_curscol >= screen_columns)
        wrap_cursor();
 
-#ifdef POSITION_DEBUG
     position_check(SP->_cursrow, SP->_curscol, "PutChar");
-#endif /* POSITION_DEBUG */
 }
 
 /*
@@ -680,19 +708,11 @@ struct tms before, after;
 #endif /* USE_XMC_SUPPORT */
 
        nonempty = 0;
-       if (curscr->_clear) {           /* force refresh ? */
-               /* yes, clear all & update */
-               T(("clearing and updating curscr"));
-               if (is_wintouched(newscr))
-                       ClrUpdate(newscr);
-               else
-                       ClrUpdate(curscr);
+       if (curscr->_clear || newscr->_clear) {         /* force refresh ? */
+               T(("clearing and updating from scratch"));
+               ClrUpdate();
                curscr->_clear = FALSE; /* reset flag */
                newscr->_clear = FALSE; /* reset flag */
-       } else if (newscr->_clear) {
-               T(("clearing and updating newscr"));
-               ClrUpdate(newscr);
-               newscr->_clear = FALSE;
        } else {
                int changedlines = CHECK_INTERVAL;
 
@@ -702,22 +722,7 @@ struct tms before, after;
                nonempty = min(screen_lines, newscr->_maxy+1);
 
                if (SP->_scrolling) {
-#if USE_HASHMAP
-#if defined(TRACE) || defined(NCURSES_TEST)
-               if (_nc_optimize_enable & OPTIMIZE_HASHMAP)
-#endif /*TRACE */
-                       _nc_hash_map();
-#elif !USE_SCROLL_HINTS
-               _nc_setup_scroll();
-#endif
-#if defined(TRACE) || defined(NCURSES_TEST)
-               if (_nc_optimize_enable & OPTIMIZE_SCROLL)
-#endif /*TRACE */
-#if USE_SCROLL_HINTS || USE_HASHMAP
                        _nc_scroll_optimize();
-#else
-                       _nc_perform_scroll();
-#endif
                }
 
                nonempty = ClrBottom(nonempty);
@@ -761,10 +766,13 @@ struct tms before, after;
        for (i = nonempty; i <= curscr->_maxy; i++)
                MARK_NOCHANGE(curscr,i)
 
-       curscr->_curx = newscr->_curx;
-       curscr->_cury = newscr->_cury;
+       if (!newscr->_leaveok)
+       {
+               curscr->_curx = newscr->_curx;
+               curscr->_cury = newscr->_cury;
 
-       GoTo(curscr->_cury, curscr->_curx);
+               GoTo(curscr->_cury, curscr->_curx);
+       }
 
     cleanup:
        /*
@@ -773,7 +781,7 @@ struct tms before, after;
         */
        UpdateAttrs(A_NORMAL);
 
-       fflush(SP->_ofp);
+       _nc_flush();
        curscr->_attrs = newscr->_attrs;
 /*     curscr->_bkgd  = newscr->_bkgd; */
 
@@ -812,29 +820,20 @@ chtype    blank = BLANK;
 }
 
 /*
-**     ClrUpdate(win)
+**     ClrUpdate()
 **
 **     Update by clearing and redrawing the entire screen.
 **
 */
 
-static void ClrUpdate(WINDOW *win)
+static void ClrUpdate(void)
 {
        int i;
-       chtype blank = ClrBlank(win);
+       chtype blank = ClrBlank(stdscr);
        int nonempty = min(screen_lines, newscr->_maxy+1);
 
        T(("ClrUpdate() called"));
 
-       if (win == curscr) {
-               /* discard updates */
-               for (i = 0; i < screen_lines ; i++) {
-                       memcpy( newscr->_line[i].text,
-                               curscr->_line[i].text,
-                               screen_columns * sizeof(chtype));
-               }
-       }
-
        ClearScreen(blank);
 
        T(("updating screen from scratch"));
@@ -928,16 +927,16 @@ chtype    blank  = newscr->_line[total-1].text[last-1]; /* lower right char */
        if(!clr_eos || !can_clear_with(blank))
                return total;
 
-       if (tstLine == 0)
-               tstLine = (chtype *)malloc(length);
-       else if (length > lenLine)
-               tstLine = (chtype *)realloc(tstLine, length);
+       if ((tstLine == 0) || (last > (int)lenLine)) {
+               tstLine = typeRealloc(chtype, last, tstLine);
+               if (tstLine != 0) {
+                       lenLine = last;
+                       for (col = 0; col < last; col++)
+                               tstLine[col] = blank;
+               }
+       }
 
        if (tstLine != 0) {
-               lenLine = length;
-               for (col = 0; col < last; col++)
-                       tstLine[col] = blank;
-
                for (row = total-1; row >= 0; row--) {
                        if (memcmp(tstLine, newscr->_line[row].text, length))
                                break;
@@ -950,10 +949,16 @@ chtype    blank  = newscr->_line[total-1].text[last-1]; /* lower right char */
                        GoTo(top,0);
                        ClrToEOS(blank);
                        total = top;
+                       if (SP->oldhash && SP->newhash)
+                       {
+                               for (row = top; row < screen_lines; row++)
+                                       SP->oldhash[row] = SP->newhash[row];
+                       }
                }
        }
 #if NO_LEAKS
-       FreeAndNull(tstLine);
+       if (tstLine != 0)
+               FreeAndNull(tstLine);
 #endif
        return total;
 }
@@ -987,6 +992,10 @@ bool       attrchanged = FALSE;
 
        T(("TransformLine(%d) called", lineno));
 
+       /* copy new hash value to old one */
+       if (SP->oldhash && SP->newhash)
+               SP->oldhash[lineno] = SP->newhash[lineno];
+
        if(ceol_standout_glitch && clr_eol) {
                firstChar = 0;
                while(firstChar < screen_columns) {
@@ -1141,8 +1150,9 @@ bool      attrchanged = FALSE;
                        if(newLine[firstChar] != blank )
                                PutChar(newLine[firstChar]);
                        ClrToEOL(blank);
-               } else if( newLine[nLastChar] != oldLine[oLastChar]
-                               || !(_nc_idcok && has_ic()) ) {
+               } else if( (nLastChar != oLastChar)
+                       && (newLine[nLastChar] != oldLine[oLastChar]
+                               || !(_nc_idcok && has_ic())) ) {
                        GoTo(lineno, firstChar);
                        if ((oLastChar - nLastChar) > SP->_el_cost) {
                                if(PutRange(oldLine, newLine, lineno, firstChar, nLastChar))
@@ -1172,10 +1182,10 @@ bool    attrchanged = FALSE;
                                GoTo(lineno, firstChar);
                                PutRange(oldLine, newLine, lineno, firstChar, n);
                        }
-                       GoTo(lineno, n+1);
 
                        if (oLastChar < nLastChar) {
                                int m = max(nLastNonblank, oLastNonblank);
+                               GoTo(lineno, n+1);
                                if (InsCharCost(nLastChar - oLastChar)
                                 > (m - n)) {
                                        PutRange(oldLine, newLine, lineno, n+1, m);
@@ -1183,6 +1193,7 @@ bool      attrchanged = FALSE;
                                        InsStr(&newLine[n+1], nLastChar - oLastChar);
                                }
                        } else if (oLastChar > nLastChar ) {
+                               GoTo(lineno, n+1);
                                if (DelCharCost(oLastChar - nLastChar)
                                    > SP->_el_cost + nLastNonblank - (n+1)) {
                                        if(PutRange(oldLine, newLine, lineno,
@@ -1230,9 +1241,7 @@ static void ClearScreen(chtype blank)
                TPUTS_TRACE("clear_screen");
                putp(clear_screen);
                SP->_cursrow = SP->_curscol = 0;
-#ifdef POSITION_DEBUG
                position_check(SP->_cursrow, SP->_curscol, "ClearScreen");
-#endif /* POSITION_DEBUG */
        } else if (clr_eos) {
                SP->_cursrow = SP->_curscol = -1;
                GoTo(0,0);
@@ -1270,30 +1279,36 @@ static void ClearScreen(chtype blank)
 **
 */
 
-static int InsStr(chtype *line, int count)
+static void InsStr(chtype *line, int count)
 {
        T(("InsStr(%p,%d) called", line, count));
 
-       if (enter_insert_mode  &&  exit_insert_mode) {
-               TPUTS_TRACE("enter_insert_mode");
-               putp(enter_insert_mode);
+       /* Prefer parm_ich as it has the smallest cost - no need to shift
+        * the whole line on each character. */
+       /* The order must match that of InsCharCost. */
+       if (parm_ich) {
+               TPUTS_TRACE("parm_ich");
+               tputs(tparm(parm_ich, count), count, _nc_outch);
                while (count) {
                        PutAttrChar(*line);
                        line++;
                        count--;
                }
-               TPUTS_TRACE("exit_insert_mode");
-               putp(exit_insert_mode);
-               return(OK);
-       } else if (parm_ich) {
-               TPUTS_TRACE("parm_ich");
-               tputs(tparm(parm_ich, count), count, _nc_outch);
+       } else if (enter_insert_mode  &&  exit_insert_mode) {
+               TPUTS_TRACE("enter_insert_mode");
+               putp(enter_insert_mode);
                while (count) {
                        PutAttrChar(*line);
+                       if (insert_padding)
+                       {
+                               TPUTS_TRACE("insert_padding");
+                               putp(insert_padding);
+                       }
                        line++;
                        count--;
                }
-               return(OK);
+               TPUTS_TRACE("exit_insert_mode");
+               putp(exit_insert_mode);
        } else {
                while (count) {
                        TPUTS_TRACE("insert_character");
@@ -1307,8 +1322,8 @@ static int InsStr(chtype *line, int count)
                        line++;
                        count--;
                }
-               return(OK);
        }
+       position_check(SP->_cursrow, SP->_curscol, "InsStr");
 }
 
 /*
@@ -1342,14 +1357,8 @@ static void DelChar(int count)
 
 void _nc_outstr(const char *str)
 {
-    FILE *ofp = SP ? SP->_ofp : stdout;
-
-    (void) fputs(str, ofp);
-    (void) fflush(ofp);
-
-#ifdef TRACE
-    _nc_outchars += strlen(str);
-#endif /* TRACE */
+    (void) putp(str);
+    _nc_flush();
 }
 
 /*
@@ -1652,17 +1661,17 @@ int _nc_scrolln(int n, int top, int bot, int maxy)
        if (res == ERR && change_scroll_region)
        {
            if (top != 0 && (SP->_cursrow == top || SP->_cursrow == top-1)
-               && save_cursor && restore_cursor)
+               && save_cursor && restore_cursor)
            {
                cursor_saved=TRUE;
-               TPUTS_TRACE("save_cursor");
+               TPUTS_TRACE("save_cursor");
                tputs(save_cursor, 0, _nc_outch);
            }
            TPUTS_TRACE("change_scroll_region");
            tputs(tparm(change_scroll_region, top, bot), 0, _nc_outch);
            if (cursor_saved)
            {
-               TPUTS_TRACE("restore_cursor");
+               TPUTS_TRACE("restore_cursor");
                tputs(restore_cursor, 0, _nc_outch);
            }
            else
@@ -1686,6 +1695,9 @@ int _nc_scrolln(int n, int top, int bot, int maxy)
 
     _nc_scroll_window(curscr, n, top, bot, blank);
 
+    /* shift hash values too - they can be reused */
+    _nc_scroll_oldhash(n, top, bot);
+
     return(OK);
 }
 
index 645e21084be606e2fbce8e4a9bf4ec28deeb024d..3110f830558c0b97131a4e30fba68041d82ded5b 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.26 1998/02/11 12:14:02 tom Exp $
+# $Id: Makefile.in,v 1.28 1998/11/29 01:03:31 Rick.Ohnemus Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -84,8 +84,11 @@ CFLAGS_DEFAULT       = $(CFLAGS_@DFT_UPR_MODEL@)
 LINK           = $(CC)
 LDFLAGS                = @LDFLAGS@ @LD_MODEL@ @LIBS@
 
-SHLIB_LIST     = -lncurses @SHLIB_LIST@
+SHLIB_DIRS     = -L../lib -L$(libdir)
+SHLIB_LIST     = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+
 MK_SHARED_LIB  = @MK_SHARED_LIB@
+
 REL_VERSION    = @cf_cv_rel_version@
 ABI_VERSION    = @cf_cv_abi_version@
 
@@ -98,7 +101,7 @@ LINT_OPTS    = @LINT_OPTS@
 LINT_LIBS      = -lpanel -lncurses @LIBS@
 
 AUTO_SRC       = \
-               ../include/panel.h 
+               ../include/panel.h
 
 ################################################################################
 all install :: $(AUTO_SRC) $(LIBRARIES)
@@ -127,7 +130,7 @@ TAGS:
 mostlyclean ::
        -rm -f core tags TAGS *~ *.ln *.atac trace
 
-clean ::
+clean :: mostlyclean
        -rm -f $(AUTO_SRC)
 
 distclean :: clean
index 0c3d10fc224c20f5a827b01a0390c938e40ff6ad..fa32196db42b109c459cc3a3e434b2992734a693 100644 (file)
@@ -35,7 +35,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_above.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_above.c,v 1.3 1999/09/18 11:03:28 juergen Exp $")
 
 PANEL*
 panel_above(const PANEL *pan)
@@ -44,7 +44,7 @@ panel_above(const PANEL *pan)
     {
       /* if top and bottom are equal, we have no or only the pseudo panel;
         if not, we return the panel above the pseudo panel */
-      return(_nc_bottom_panel==_nc_top_panel ? (PANEL*)0 : _nc_bottom_panel->above);
+      return(EMPTY_STACK() ? (PANEL*)0 : _nc_bottom_panel->above);
     }
   else
     return(pan->above);
index 7e0f2b24d07d46b64d6c041c99c25a4355dfa7ed..a7eb4705789e87bb75fdeedcb8bad315f0ba1e07 100644 (file)
@@ -35,7 +35,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_below.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_below.c,v 1.3 1999/09/18 11:03:33 juergen Exp $")
 
 PANEL*
 panel_below(const PANEL *pan)
@@ -43,11 +43,11 @@ panel_below(const PANEL *pan)
   if(!pan)
     {
       /* if top and bottom are equal, we have no or only the pseudo panel */
-      return(_nc_top_panel==_nc_bottom_panel ? (PANEL*)0 : _nc_top_panel);
+      return(EMPTY_STACK() ? (PANEL*)0 : _nc_top_panel);
     }
   else
     {
       /* we must not return the pseudo panel */
-      return(pan->below==_nc_bottom_panel ? (PANEL*) 0 : pan->below);
+      return(Is_Pseudo(pan->below) ? (PANEL*) 0 : pan->below);
     }
 }
index 47abc694a8f41df28612e690c54de6f7ec04dbfe..4e6e11d183b3a1d8a823b1d49ffdc6dbb2b6f722 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_bottom.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_bottom.c,v 1.5 1999/09/29 15:22:32 juergen Exp $")
+
+/*+-------------------------------------------------------------------------
+       __panel_link_bottom(pan) - link panel into stack at bottom
+--------------------------------------------------------------------------*/
+static void
+panel_link_bottom(PANEL *pan)
+{
+#ifdef TRACE
+  dStack("<lb%d>",1,pan);
+  if(_nc_panel_is_linked(pan))
+    return;
+#endif
+  
+  pan->above = (PANEL *)0;
+  pan->below = (PANEL *)0;
+  
+  assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
+
+  pan->below = _nc_bottom_panel;
+  pan->above = _nc_bottom_panel->above;
+  if (pan->above)
+    pan->above->below = pan;
+  _nc_bottom_panel->above = pan;
+    
+  dStack("<lb%d>",9,pan);
+}
 
 int
 bottom_panel(PANEL *pan)
 {
   if(!pan)
     return(ERR);
-  if(pan == _nc_bottom_panel)
+  if(Is_Bottom(pan))
     return(OK);
   dBug(("--> bottom_panel %s", USER_PTR(pan->user)));
   if(_nc_panel_is_linked(pan))
     (void)hide_panel(pan);
-  _nc_panel_link_bottom(pan);
+  panel_link_bottom(pan);
   return(OK);
 }
index 4b90a619da0b1ea15fb708bebaa54f2cd2aa5175..fa05e6ab23df3baa65ac4ce6580bf8f21f04bc92 100644 (file)
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_hidden.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_hidden.c,v 1.3 1999/09/18 11:04:19 juergen Exp $")
 
 int
 panel_hidden(const PANEL *pan)
 {
   if(!pan)
     return(ERR);
-  return(_nc_panel_is_linked(pan) ? TRUE : FALSE);
+  return(_nc_panel_is_linked(pan) ? FALSE : TRUE);
 } 
index bc7c192156cf872e426c2e8a66f2a1519f2fd230..d61429538440a22bca87dcff058aa1ed1881947d 100644 (file)
@@ -36,7 +36,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_hide.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_hide.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
 
 /*+-------------------------------------------------------------------------
        __panel_unlink(pan) - unlink panel from stack
@@ -53,8 +53,7 @@ __panel_unlink(PANEL *pan)
     return;
 #endif
 
-  _nc_override(pan,P_TOUCH);
-  _nc_free_obscure(pan);
+  PANEL_UPDATE(pan,(PANEL*)0);
 
   prev = pan->below;
   next = pan->above;
@@ -72,8 +71,6 @@ __panel_unlink(PANEL *pan)
   if(pan == _nc_top_panel)
     _nc_top_panel = prev;
 
-  _nc_calculate_obscure();
-
   pan->above = (PANEL *)0;
   pan->below = (PANEL *)0;
   dStack("<u%d>",9,pan);
index 6bec36b91246ae9b6553963ee2b039fe2257f91a..3bc6328fa6c6ec63355a5e4d3c2f2d902e3acaf9 100644 (file)
@@ -36,7 +36,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_move.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_move.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
 
 int
 move_panel(PANEL *pan, int starty, int startx)
@@ -46,14 +46,9 @@ move_panel(PANEL *pan, int starty, int startx)
   if(!pan)
     return(ERR);
   if(_nc_panel_is_linked(pan))
-    _nc_override(pan,P_TOUCH);
+    PANEL_UPDATE(pan,(PANEL*)0);
   win = pan->win;
   if(mvwin(win,starty,startx))
     return(ERR);
-  getbegyx(win, pan->wstarty, pan->wstartx);
-  pan->wendy = pan->wstarty + getmaxy(win);
-  pan->wendx = pan->wstartx + getmaxx(win);
-  if(_nc_panel_is_linked(pan))
-    _nc_calculate_obscure();
   return(OK);
 }
index b4acc27983cbfe68fa79635453008eef4247a7f2..f2f208d6ec7b68cb2a9ebb9eaa302d4fbdd5b8fb 100644 (file)
@@ -36,7 +36,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_new.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_new.c,v 1.4 1999/09/29 15:22:32 juergen Exp $")
 
 /*+-------------------------------------------------------------------------
   Get root (i.e. stdscr's) panel.
@@ -54,18 +54,14 @@ root_panel(void)
        PANEL* pan  = _nc_stdscr_pseudo_panel;
        WINDOW* win = stdscr;
        pan->win = win;
-       getbegyx(win, pan->wstarty, pan->wstartx);
-       pan->wendy   = pan->wstarty + getmaxy(win);
-       pan->wendx   = pan->wstartx + getmaxx(win);
        pan->below   = (PANEL*)0;
        pan->above   = (PANEL*)0;
-        pan->obscure = (PANELCONS*)0;
 #ifdef TRACE
        pan->user = "stdscr";
 #else
        pan->user = (void*)0;
 #endif
-       _nc_panel_link_bottom(pan);
+       _nc_bottom_panel = _nc_top_panel = pan;
       }
     }
   return _nc_stdscr_pseudo_panel;
@@ -84,15 +80,11 @@ new_panel(WINDOW *win)
       pan->win = win;
       pan->above = (PANEL *)0;
       pan->below = (PANEL *)0;
-      getbegyx(win, pan->wstarty, pan->wstartx);
-      pan->wendy = pan->wstarty + getmaxy(win);
-      pan->wendx = pan->wstartx + getmaxx(win);
 #ifdef TRACE
       pan->user = "new";
 #else
       pan->user = (char *)0;
 #endif
-      pan->obscure = (PANELCONS *)0;
       (void)show_panel(pan);
     }
   return(pan);
index c34d51d3813c901f0cf6a16ce6b4bad5c58c96b4..3c4aca185d4f5bde0a5b7d2ffd8378f0c3175b04 100644 (file)
@@ -36,7 +36,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_replace.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_replace.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
 
 int
 replace_panel(PANEL *pan, WINDOW *win)
@@ -44,9 +44,7 @@ replace_panel(PANEL *pan, WINDOW *win)
   if(!pan)
     return(ERR);
   if(_nc_panel_is_linked(pan))
-    _nc_override(pan,P_TOUCH);
+    PANEL_UPDATE(pan,(PANEL*)0);
   pan->win = win;
-  if(_nc_panel_is_linked(pan))
-    _nc_calculate_obscure();
   return(OK);
 }
index 10781efb73a2b9708560a28f7b339574a35405a2..d129fd50715b35355ba9718aed55cef82149ed0c 100644 (file)
@@ -36,7 +36,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_show.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_show.c,v 1.5 1999/09/29 15:22:32 juergen Exp $")
 
 static void
 panel_link_top(PANEL *pan)
@@ -47,17 +47,15 @@ panel_link_top(PANEL *pan)
     return;
 #endif
 
+  assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
+
   pan->above = (PANEL *)0;
   pan->below = (PANEL *)0;
-  if(_nc_top_panel)
-    {
-      _nc_top_panel->above = pan;
-      pan->below = _nc_top_panel;
-    }
+  
+  _nc_top_panel->above = pan;
+  pan->below = _nc_top_panel;  
   _nc_top_panel = pan;
-  if(!_nc_bottom_panel)
-    _nc_bottom_panel = pan;
-  _nc_calculate_obscure();
+  
   dStack("<lt%d>",9,pan);
 }
 
@@ -66,11 +64,16 @@ show_panel(PANEL *pan)
 {
   if(!pan)
     return(ERR);
-  if(pan == _nc_top_panel)
+
+  if (Is_Top(pan))
     return(OK);
+
   dBug(("--> show_panel %s", USER_PTR(pan->user)));
+
   if(_nc_panel_is_linked(pan))
     (void)hide_panel(pan);
+
   panel_link_top(pan);
+
   return(OK);
 }
index e7e31ef69295060e3d9c22eb6bcef1f4d66b009f..692a3f33b95d5c2129a37cf758237aad5ff33abb 100644 (file)
@@ -36,7 +36,7 @@
  */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: p_update.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_update.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
 
 void
 update_panels(void)
@@ -45,9 +45,9 @@ update_panels(void)
 
   dBug(("--> update_panels"));
   pan = _nc_bottom_panel;
-  while(pan)
+  while(pan && pan->above)
     {
-      _nc_override(pan,P_UPDATE);
+      PANEL_UPDATE(pan,pan->above);
       pan = pan->above;
     }
 
index c90ad4f558026691e08a51ffe949dfbc89a9d3d6..1b79b77f147e0abd95aee4d678c3ea27c76c6d7d 100644 (file)
 /* panel.c -- implementation of panels library, some core routines */
 #include "panel.priv.h"
 
-MODULE_ID("$Id: panel.c,v 1.15 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: panel.c,v 1.18 1999/09/29 15:22:32 juergen Exp $")
 
 #ifdef TRACE
 #ifndef TRACE_TXT
 const char *_nc_my_visbuf(const void *ptr)
 {
-       char temp[20];
+       char temp[32];
        if (ptr != 0)
                sprintf(temp, "ptr:%p", ptr);
        else
@@ -62,7 +62,7 @@ _nc_dPanel(const char *text, const PANEL *pan)
                text, USER_PTR(pan->user),
                (pan->below) ?  USER_PTR(pan->below->user) : "--",
                (pan->above) ?  USER_PTR(pan->above->user) : "--",
-               pan->wstarty, pan->wstartx);
+               PSTARTY(pan), PSTARTX(pan));
 }
 #endif
 
@@ -128,181 +128,9 @@ _nc_Touchline(const PANEL *pan, int start, int count)
 }
 #endif
 
-/*+-------------------------------------------------------------------------
-       __panels_overlapped(pan1,pan2) - check panel overlapped
---------------------------------------------------------------------------*/
-static INLINE bool
-__panels_overlapped(register const PANEL *pan1, register const PANEL *pan2)
-{
-  if(!pan1 || !pan2)
-    return(FALSE);
-
-  dBug(("__panels_overlapped %s %s", USER_PTR(pan1->user), USER_PTR(pan2->user)));
-  /* pan1 intersects with pan2 ? */
-  if( (((pan1->wstarty >= pan2->wstarty) && (pan1->wstarty < pan2->wendy)) ||
-       ((pan2->wstarty >= pan1->wstarty) && (pan2->wstarty < pan1->wendy))) &&
-      (((pan1->wstartx >= pan2->wstartx) && (pan1->wstartx < pan2->wendx)) ||
-       ((pan2->wstartx >= pan1->wstartx) && (pan2->wstartx < pan1->wendx)))
-      ) return(TRUE);
-  else {
-    dBug(("  no"));
-    return(FALSE);
-  }
-}
-
-/*+-------------------------------------------------------------------------
-       _nc_free_obscure(pan)
---------------------------------------------------------------------------*/
-void
-_nc_free_obscure(PANEL *pan)
-{
-  PANELCONS *tobs = pan->obscure;                      /* "this" one */
-  PANELCONS *nobs;                                     /* "next" one */
-
-  while(tobs)
-    {
-      nobs = tobs->above;
-      free((char *)tobs);
-      tobs = nobs;
-    }
-  pan->obscure = (PANELCONS *)0;
-}
-
-/*+-------------------------------------------------------------------------
-       __override(pan,show)
---------------------------------------------------------------------------*/
-void
-_nc_override(const PANEL *pan, int show)
-{
-  int y;
-  PANEL *pan2;
-  PANELCONS *tobs = pan->obscure;                         /* "this" one */
-
-  dBug(("_nc_override %s,%d", USER_PTR(pan->user),show));
-
-  switch (show)
-    {
-    case P_TOUCH:
-      Touchpan(pan);
-      /* The following while loop will now mark all panel window lines
-       * obscured by use or obscuring us as touched, so they will be
-       * updated.
-       */
-      break;
-    case P_UPDATE:
-      while(tobs && (tobs->pan != pan))
-       tobs = tobs->above;
-      /* The next loop will now only go through the panels obscuring pan;
-       * it updates all the lines in the obscuring panels in sync. with
-       * the lines touched in pan itself. This is called in update_panels()
-       * in a loop from the bottom_panel to the top_panel, resulting in
-       * the desired update effect.
-       */
-      break;
-    default:
-      return;
-    }
-
-  while(tobs)
-    {
-      if((pan2 = tobs->pan) != pan) {
-       dBug(("test obs pan=%s pan2=%s", USER_PTR(pan->user), USER_PTR(pan2->user)));
-       for(y = pan->wstarty; y < pan->wendy; y++) {
-         if( (y >= pan2->wstarty) && (y < pan2->wendy) &&
-             ((is_linetouched(pan->win,y - pan->wstarty) == TRUE)) )
-           Touchline(pan2,y - pan2->wstarty,1);
-       }
-      }
-      tobs = tobs->above;
-    }
-}
-
-/*+-------------------------------------------------------------------------
-       __calculate_obscure()
---------------------------------------------------------------------------*/
-void
-_nc_calculate_obscure(void)
-{
-  PANEL *pan;
-  PANEL *pan2;
-  PANELCONS *tobs;                     /* "this" one */
-  PANELCONS *lobs = (PANELCONS *)0;    /* last one */
-
-  pan = _nc_bottom_panel;
-  while(pan)
-    {
-      if(pan->obscure)
-       _nc_free_obscure(pan);
-      dBug(("--> __calculate_obscure %s", USER_PTR(pan->user)));
-      lobs = (PANELCONS *)0;           /* last one */
-      pan2 = _nc_bottom_panel;
-      /* This loop builds a list of panels obsured by pan or obscuring
-        pan; pan itself is in the list; all panels before pan are
-        obscured by pan, all panels after pan are obscuring pan. */
-      while(pan2)
-       {
-         if(__panels_overlapped(pan,pan2))
-           {
-             if(!(tobs = (PANELCONS *)malloc(sizeof(PANELCONS))))
-               return;
-             tobs->pan = pan2;
-             dPanel("obscured",pan2);
-             tobs->above = (PANELCONS *)0;
-             if(lobs)
-               lobs->above = tobs;
-             else
-               pan->obscure = tobs;
-             lobs  = tobs;
-           }
-         pan2 = pan2->above;
-       }
-      _nc_override(pan,P_TOUCH);
-      pan = pan->above;
-    }
-}
-
-/*+-------------------------------------------------------------------------
-       _nc_panel_is_linked(pan) - check to see if panel is in the stack
---------------------------------------------------------------------------*/
-bool
-_nc_panel_is_linked(const PANEL *pan)
-{
-  /* This works! The only case where it would fail is, when the list has
-     only one element. But this could only be the pseudo panel at the bottom */
-  return ( ((pan->above!=(PANEL *)0) ||
-           (pan->below!=(PANEL *)0) ||
-           (pan==_nc_bottom_panel)) ? TRUE : FALSE );
-}
-
-
-/*+-------------------------------------------------------------------------
-       __panel_link_bottom(pan) - link panel into stack at bottom
---------------------------------------------------------------------------*/
-void
-_nc_panel_link_bottom(PANEL *pan)
-{
-#ifdef TRACE
-  dStack("<lb%d>",1,pan);
-  if(_nc_panel_is_linked(pan))
-    return;
+#ifndef TRACE
+#  ifndef __GNUC__
+     /* Some C compilers need something defined in a source file */
+     static char GCC_UNUSED dummy;
+#  endif
 #endif
-
-  pan->above = (PANEL *)0;
-  pan->below = (PANEL *)0;
-  if(_nc_bottom_panel)
-    { /* the stdscr pseudo panel always stays real bottom;
-         so we insert after bottom panel*/
-      pan->below = _nc_bottom_panel;
-      pan->above = _nc_bottom_panel->above;
-      if (pan->above)
-       pan->above->below = pan;
-      _nc_bottom_panel->above = pan;
-    }
-  else
-    _nc_bottom_panel = pan;
-  if(!_nc_top_panel)
-    _nc_top_panel = pan;
-  assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
-  _nc_calculate_obscure();
-  dStack("<lb%d>",9,pan);
-}
index 2ebc3292b3b10372a098323682db0e839f5d5232..dc33071ba1757f29ad5ef0f9c3b8e2e39ff21eef 100644 (file)
 
 typedef struct panel
 {
-       WINDOW *win;
-       int wstarty;
-       int wendy;
-       int wstartx;
-       int wendx;
-       struct panel *below;
-       struct panel *above;
-       NCURSES_CONST void *user;
-       struct panelcons *obscure;
-}
-PANEL;
+  WINDOW *win;
+  struct panel *below;
+  struct panel *above;
+  NCURSES_CONST void *user;
+} PANEL;
 
 #if    defined(__cplusplus)
 extern "C" {
 #endif
 
-extern  WINDOW *panel_window(const PANEL *);
-extern  void update_panels(void);
-extern  int hide_panel(PANEL *);
-extern  int show_panel(PANEL *);
-extern  int del_panel(PANEL *);
-extern  int top_panel(PANEL *);
-extern  int bottom_panel(PANEL *);
-extern  PANEL *new_panel(WINDOW *);
-extern  PANEL *panel_above(const PANEL *);
-extern  PANEL *panel_below(const PANEL *);
-extern  int set_panel_userptr(PANEL *, NCURSES_CONST void *);
+extern  WINDOWpanel_window(const PANEL *);
+extern  void    update_panels(void);
+extern  int     hide_panel(PANEL *);
+extern  int     show_panel(PANEL *);
+extern  int     del_panel(PANEL *);
+extern  int     top_panel(PANEL *);
+extern  int     bottom_panel(PANEL *);
+extern  PANEL*  new_panel(WINDOW *);
+extern  PANEL*  panel_above(const PANEL *);
+extern  PANEL*  panel_below(const PANEL *);
+extern  int     set_panel_userptr(PANEL *, NCURSES_CONST void *);
 extern  NCURSES_CONST void* panel_userptr(const PANEL *);
-extern  int move_panel(PANEL *, int, int);
-extern  int replace_panel(PANEL *,WINDOW *);
-extern int panel_hidden(const PANEL *);
+extern  int     move_panel(PANEL *, int, int);
+extern  int     replace_panel(PANEL *,WINDOW *);
+extern int     panel_hidden(const PANEL *);
 
 #if    defined(__cplusplus)
 }
index 80b1d8f9f27d639acd608ba55220e9395e85bb1c..cd470a983b16e3c2101f9d262aac42162d00d103 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: panel.priv.h,v 1.8 1997/10/21 10:19:37 juergen Exp $ */
+/* $Id: panel.priv.h,v 1.10 1999/09/29 15:21:58 juergen Exp $ */
 
 #ifndef _PANEL_PRIV_H
 #define _PANEL_PRIV_H
 #  define INLINE
 #endif
 
-typedef struct panelcons
-{
-  struct panelcons *above;
-  struct panel *pan;
-} PANELCONS;
-
 #ifdef USE_RCS_IDS
 #  define MODULE_ID(id) static const char Ident[] = id;
 #else
 #  define MODULE_ID(id) /*nothing*/
 #endif
 
-#define P_TOUCH  (0)
-#define P_UPDATE (1)
 
 #ifdef TRACE
    extern const char *_nc_my_visbuf(const void *);
@@ -76,10 +68,47 @@ typedef struct panelcons
 #define _nc_top_panel _nc_panelhook()->top_panel
 #define _nc_bottom_panel _nc_panelhook()->bottom_panel
 
-extern void _nc_panel_link_bottom(PANEL*);
-extern bool _nc_panel_is_linked(const PANEL*);
-extern void _nc_calculate_obscure(void);
-extern void _nc_free_obscure(PANEL*);
-extern void _nc_override(const PANEL*,int);
-
+#define EMPTY_STACK() (_nc_top_panel==_nc_bottom_panel)
+#define Is_Bottom(p)  (((p)!=(PANEL*)0) && !EMPTY_STACK() && (_nc_bottom_panel->above==(p))) 
+#define Is_Top(p) (((p)!=(PANEL*)0) && !EMPTY_STACK() && (_nc_top_panel==(p)))
+#define Is_Pseudo(p) ((p) && ((p)==_nc_bottom_panel))
+
+/*+-------------------------------------------------------------------------
+       _nc_panel_is_linked(pan) - check to see if panel is in the stack
+--------------------------------------------------------------------------*/
+/* This works! The only case where it would fail is, when the list has
+   only one element. But this could only be the pseudo panel at the bottom */
+#define _nc_panel_is_linked(p) ((((p)->above!=(PANEL*)0)||((p)->below!=(PANEL*)0)||((p)==_nc_bottom_panel)) ? TRUE : FALSE)
+
+#define PSTARTX(pan) ((pan)->win->_begx)
+#define PENDX(pan)   ((pan)->win->_begx + getmaxx((pan)->win))
+#define PSTARTY(pan) ((pan)->win->_begy)
+#define PENDY(pan)   ((pan)->win->_begy + getmaxy((pan)->win))
+
+/*+-------------------------------------------------------------------------
+       PANELS_OVERLAPPED(pan1,pan2) - check panel overlapped
+---------------------------------------------------------------------------*/
+#define PANELS_OVERLAPPED(pan1,pan2) \
+(( !(pan1) || !(pan2) || \
+       PSTARTY(pan1) >= PENDY(pan2) || PENDY(pan1) <= PSTARTY(pan2) ||\
+       PSTARTX(pan1) >= PENDX(pan2) || PENDX(pan1) <= PSTARTX(pan2) ) \
+     ? FALSE : TRUE)
+
+
+#define PANEL_UPDATE(pan,panstart) { int y; PANEL* pan2 = panstart;\
+   if (!pan2) {\
+      Touchpan(pan);\
+      pan2 = _nc_bottom_panel;\
+   }\
+   while(pan2) {\
+      if ((pan2 != pan) && PANELS_OVERLAPPED(pan,pan2)) {\
+       for(y = PSTARTY(pan); y < PENDY(pan); y++) {\
+         if( (y >= PSTARTY(pan2)) && (y < PENDY(pan2)) &&\
+             ((is_linetouched(pan->win,y - PSTARTY(pan)) == TRUE)) )\
+           Touchline(pan2,y - PSTARTY(pan2),1);\
+       }\
+      }\
+      pan2 = pan2->above;\
+    }\
+}
 #endif /* _PANEL_PRIV_H */
index 598c218e706a8088629fa07b87e896e4e4e6be36..f22a016843bc857d28426feaa2ca05daaff0f422 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.35 1998/02/11 12:14:03 tom Exp $
+# $Id: Makefile.in,v 1.37 1998/05/31 00:07:33 tom Exp $
 ##############################################################################
 # Copyright (c) 1998 Free Software Foundation, Inc.                          #
 #                                                                            #
@@ -84,14 +84,14 @@ CFLAGS_SHARED       = $(CCFLAGS) # @CC_SHARED_OPTS@
 CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
 
 LD             = @LD@
-LINK           = $(CC)
+LINK           = @LINK_PROGS@ $(CC)
 LDFLAGS                = @EXTRA_LDFLAGS@ \
                @PROG_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@ @EXTRA_LIBS@
 
 LDFLAGS_NORMAL = $(LDFLAGS)
 LDFLAGS_DEBUG  = $(LDFLAGS) @CC_G_OPT@
 LDFLAGS_PROFILE        = $(LDFLAGS) -pg
-LDFLAGS_SHARED = $(LDFLAGS) @CC_SHARED_OPTS@ # @LD_SHARED_OPTS@
+LDFLAGS_SHARED = $(LDFLAGS) @LD_SHARED_OPTS@
 
 LDFLAGS_DEFAULT        = $(LDFLAGS_@DFT_UPR_MODEL@)
 
index b813f0e40635a4fbe10e28d454f7dc95945fbb7e..d27b62544a9424ec60118d5817e737815bbbd70f 100644 (file)
@@ -40,7 +40,7 @@
 
 #include <curses.h>
 
-MODULE_ID("$Id: clear.c,v 1.7 1998/02/11 12:14:02 tom Exp $")
+MODULE_ID("$Id: clear.c,v 1.8 1998/09/26 11:42:50 tom Exp $")
 
 static int putch(int c)
 {
@@ -52,8 +52,7 @@ int main(
        char *argv[] GCC_UNUSED)
 {
        setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
-       if (clear_screen == (char *) 0)
-               return EXIT_FAILURE;
-       tputs(clear_screen, lines > 0 ? lines : 1, putch);
-       return EXIT_SUCCESS;
+       return (tputs(clear_screen, lines > 0 ? lines : 1, putch) == ERR)
+               ? EXIT_FAILURE
+               : EXIT_SUCCESS;
 }
index 605b14c7c515af959ea26003691f469d31fdfe09..8324fe2252286b887773707110a3d3072ee1aa9e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
 
 #include "dump_entry.h"
 #include "termsort.c"          /* this C file is generated */
-#include "parametrized.h"      /* so is this */
+#include <parametrized.h>      /* so is this */
 
-MODULE_ID("$Id: dump_entry.c,v 1.25 1998/02/11 12:14:02 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.37 1999/03/14 12:29:30 tom Exp $")
 
 #define INDENT                 8
 
+#define DISCARD(string) string = ABSENT_STRING
+
 static int tversion;           /* terminfo version */
 static int outform;            /* output format to use */
 static int sortmode;           /* sort mode to use */
@@ -49,6 +51,7 @@ static int width = 60;                /* max line width for listings */
 static int column;             /* current column, limited by 'width' */
 static int oldcol;             /* last value of column before wrap */
 static int tracelevel;         /* level of debug output */
+static bool pretty;            /* true if we format if-then-else strings */
 
 static char *outbuf;           /* the output-buffer */
 static size_t out_used;                /* ...its current length */
@@ -71,6 +74,16 @@ static const char *separator, *trailer;
 
 #define OBSOLETE(n) (n[0] == 'O' && n[1] == 'T')
 
+#if NCURSES_XNAMES
+#define BoolIndirect(j) ((j >= BOOLCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : bool_indirect[j]))
+#define NumIndirect(j)  ((j >= NUMCOUNT)  ? (j) : ((sortmode == S_NOSORT) ? j : num_indirect[j]))
+#define StrIndirect(j)  ((j >= STRCOUNT)  ? (j) : ((sortmode == S_NOSORT) ? j : str_indirect[j]))
+#else
+#define BoolIndirect(j) ((sortmode == S_NOSORT) ? (j) : bool_indirect[j])
+#define NumIndirect(j)  ((sortmode == S_NOSORT) ? (j) : num_indirect[j])
+#define StrIndirect(j)  ((sortmode == S_NOSORT) ? (j) : str_indirect[j])
+#endif
+
 #if NO_LEAKS
 void _nc_leaks_dump_entry(void)
 {
@@ -86,7 +99,7 @@ NCURSES_CONST char *nametrans(const char *name)
 {
     const struct name_table_entry      *np;
 
-    if ((np = _nc_find_entry(name, _nc_info_hash_table)) != NULL)
+    if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0)
         switch(np->nte_type)
        {
        case BOOLEAN:
@@ -105,17 +118,18 @@ NCURSES_CONST char *nametrans(const char *name)
            break;
        }
 
-    return((char *)NULL);
+    return(0);
 }
 
-void dump_init(const char *version, int mode, int sort, int twidth, int traceval)
+void dump_init(const char *version, int mode, int sort, int twidth, int traceval, bool formatted)
 /* set up for entry display */
 {
     width = twidth;
+    pretty = formatted;
     tracelevel = traceval;
 
     /* versions */
-    if (version == (char *)NULL)
+    if (version == 0)
        tversion = V_ALLCAPS;
     else if (!strcmp(version, "SVr1") || !strcmp(version, "SVR1")
                                        || !strcmp(version, "Ultrix"))
@@ -161,7 +175,7 @@ void dump_init(const char *version, int mode, int sort, int twidth, int traceval
 
     /* implement sort modes */
     switch(sortmode = sort)
-    { 
+    {
     case S_NOSORT:
        if (traceval)
            (void) fprintf(stderr,
@@ -386,13 +400,75 @@ static int termcap_length(const char *src)
 #define termcap_length(src) strlen(src)
 #endif
 
+static char * fmt_complex(char *dst, char *src, int level)
+{
+       int percent = 0;
+       int n;
+
+       dst += strlen(dst);
+       while (*src != '\0') {
+               switch (*src) {
+               case '\\':
+                       percent = 0;
+                       *dst++ = *src++;
+                       break;
+               case '%':
+                       percent = 1;
+                       break;
+               case '?':       /* "if" */
+               case 't':       /* "then" */
+               case 'e':       /* "else" */
+                       if (percent) {
+                               percent = 0;
+                               dst[-1] = '\n';
+                               for (n = 0; n <= level; n++)
+                                       *dst++ = '\t';
+                               *dst++ = '%';
+                               *dst++ = *src;
+                               *dst   = '\0';
+                               if (*src++ == '?') {
+                                       src = fmt_complex(dst, src, level+1);
+                                       dst += strlen(dst);
+                               } else if (level == 1) {
+                                       _nc_warning("%%%c without %%?", *src);
+                               }
+                               continue;
+                       }
+                       break;
+               case ';':       /* "endif" */
+                       if (percent) {
+                               percent = 0;
+                               if (level > 1) {
+                                       dst[-1] = '\n';
+                                       for (n = 0; n < level; n++)
+                                               *dst++ = '\t';
+                                       *dst++ = '%';
+                                       *dst++ = *src++;
+                                       *dst   = '\0';
+                                       return src;
+                               }
+                               _nc_warning("%%; without %%?");
+                       }
+                       break;
+               default:
+                       percent = 0;
+                       break;
+               }
+               *dst++ = *src++;
+       }
+       *dst = '\0';
+       return src;
+}
+
 int fmt_entry(TERMTYPE *tterm,
                           int (*pred)(int type, int idx),
                           bool suppress_untranslatable,
-                          bool infodump)
+                          bool infodump,
+                          int numbers)
 {
 int    i, j;
 char    buffer[MAX_TERMINFO_LENGTH];
+NCURSES_CONST char *name;
 int    predval, len;
 int    num_bools = 0;
 int    num_values = 0;
@@ -405,32 +481,30 @@ bool      outcount = 0;
 
     len = 12;                  /* terminfo file-header */
 
-    if (pred == NULL) {
+    if (pred == 0) {
        cur_type = tterm;
        pred = dump_predicate;
     }
 
-    append_output(NULL);
+    append_output(0);
     append_output(tterm->term_names);
     append_output(separator);
     column = out_used;
     force_wrap();
 
-    for (j=0; j < BOOLCOUNT; j++) {
-       if (sortmode == S_NOSORT)
-           i = j;
-       else
-           i = bool_indirect[j];
+    for_each_boolean(j,tterm) {
+       i = BoolIndirect(j);
+       name = ExtBoolname(tterm,i,bool_names);
 
        if (!version_filter(BOOLEAN, i))
            continue;
        else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
-                && (OBSOLETE(bool_names[i]) && outform != F_LITERAL))
+                && (OBSOLETE(name) && outform != F_LITERAL))
            continue;
 
        predval = pred(BOOLEAN, i);
        if (predval != FAIL) {
-           (void) strcpy(buffer, bool_names[i]);
+           (void) strcpy(buffer, name);
            if (predval <= 0)
                (void) strcat(buffer, "@");
            else if (i + 1 > num_bools)
@@ -442,24 +516,22 @@ bool      outcount = 0;
     if (column != INDENT)
        force_wrap();
 
-    for (j=0; j < NUMCOUNT; j++) {
-       if (sortmode == S_NOSORT)
-           i = j;
-       else
-           i = num_indirect[j];
+    for_each_number(j,tterm) {
+       i = NumIndirect(j);
+       name = ExtNumname(tterm,i,num_names);
 
        if (!version_filter(NUMBER, i))
            continue;
        else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
-                && (OBSOLETE(num_names[i]) && outform != F_LITERAL))
+                && (OBSOLETE(name) && outform != F_LITERAL))
            continue;
 
        predval = pred(NUMBER, i);
        if (predval != FAIL) {
            if (tterm->Numbers[i] < 0) {
-               sprintf(buffer, "%s@", num_names[i]);
+               sprintf(buffer, "%s@", name);
            } else {
-               sprintf(buffer, "%s#%d", num_names[i], tterm->Numbers[i]);
+               sprintf(buffer, "%s#%d", name, tterm->Numbers[i]);
                if (i + 1 > num_values)
                    num_values = i + 1;
            }
@@ -477,16 +549,14 @@ bool      outcount = 0;
        len++;
 
     repair_acsc(tterm);
-    for (j=0; j < STRCOUNT; j++) {
-       if (sortmode == S_NOSORT)
-           i = j;
-       else
-           i = str_indirect[j];
+    for_each_string(j, tterm) {
+       i = StrIndirect(j);
+       name = ExtStrname(tterm,i,str_names);
 
        if (!version_filter(STRING, i))
            continue;
        else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
-                && (OBSOLETE(str_names[i]) && outform != F_LITERAL))
+                && (OBSOLETE(name) && outform != F_LITERAL))
            continue;
 
        /*
@@ -495,6 +565,7 @@ bool        outcount = 0;
         * them to be output as defined and empty.
         */
        if (outform==F_TERMCAP)
+       {
 #undef CUR
 #define CUR tterm->
            if (insert_character || parm_ich)
@@ -514,6 +585,17 @@ bool       outcount = 0;
                }
            }
 
+           if (init_3string != 0
+            && termcap_reset != 0
+            && !strcmp(init_3string, termcap_reset))
+               DISCARD(init_3string);
+
+           if (reset_2string != 0
+            && termcap_reset != 0
+            && !strcmp(reset_2string, termcap_reset))
+               DISCARD(reset_2string);
+       }
+
        predval = pred(STRING, i);
        buffer[0] = '\0';
        if (predval != FAIL) {
@@ -521,28 +603,33 @@ bool      outcount = 0;
             && i + 1 > num_strings)
                num_strings = i + 1;
            if (!VALID_STRING(tterm->Strings[i]))
-               sprintf(buffer, "%s@", str_names[i]);
+               sprintf(buffer, "%s@", name);
            else if (outform == F_TERMCAP || outform == F_TCONVERR)
            {
-               char *srccap = _nc_tic_expand(tterm->Strings[i], FALSE);
-               char *cv = _nc_infotocap(str_names[i], srccap, parametrized[i]);
+               char *srccap = _nc_tic_expand(tterm->Strings[i], FALSE, numbers);
+               char *cv = _nc_infotocap(name, srccap, parametrized[i]);
 
-               if (cv == (char *)NULL)
+               if (cv == 0)
                {
                    if (outform == F_TCONVERR)
-                       sprintf(buffer, "%s=!!! %s WILL NOT CONVERT !!!", str_names[i], srccap);
+                       sprintf(buffer, "%s=!!! %s WILL NOT CONVERT !!!", name, srccap);
                    else if (suppress_untranslatable)
                        continue;
                    else
-                       sprintf(buffer, "..%s=%s", str_names[i], srccap);
+                       sprintf(buffer, "..%s=%s", name, srccap);
                }
                else
-                   sprintf(buffer, "%s=%s", str_names[i], cv);
+                   sprintf(buffer, "%s=%s", name, cv);
                len += strlen(tterm->Strings[i]) + 1;
            }
            else
            {
-               sprintf(buffer, "%s=%s", str_names[i], _nc_tic_expand(tterm->Strings[i], outform==F_TERMINFO));
+               char *src = _nc_tic_expand(tterm->Strings[i], outform==F_TERMINFO, numbers);
+               sprintf(buffer, "%s=", name);
+               if (pretty && outform==F_TERMINFO)
+                   fmt_complex(buffer + strlen(buffer), src, 1);
+               else
+                   strcat(buffer, src);
                len += strlen(tterm->Strings[i]) + 1;
            }
 
@@ -596,7 +683,7 @@ bool        outcount = 0;
            if (box_ok)
            {
                (void) strcpy(buffer, "box1=");
-               (void) strcat(buffer, _nc_tic_expand(boxchars, outform==F_TERMINFO));
+               (void) strcat(buffer, _nc_tic_expand(boxchars, outform==F_TERMINFO, numbers));
                WRAP_CONCAT;
            }
        }
@@ -641,7 +728,7 @@ bool        outcount = 0;
     return(infodump ? len : termcap_length(outbuf));
 }
 
-int dump_entry(TERMTYPE *tterm, bool limited, int (*pred)(int type, int idx))
+int dump_entry(TERMTYPE *tterm, bool limited, int numbers, int (*pred)(int type, int idx))
 /* dump a single entry */
 {
     int        len, critlen;
@@ -662,21 +749,21 @@ int dump_entry(TERMTYPE *tterm, bool limited, int (*pred)(int type, int idx))
        infodump = TRUE;
     }
 
-    if (((len = fmt_entry(tterm, pred, FALSE, infodump)) > critlen) && limited)
+    if (((len = fmt_entry(tterm, pred, FALSE, infodump, numbers)) > critlen) && limited)
     {
        (void) printf("# (untranslatable capabilities removed to fit entry within %d bytes)\n",
                      critlen);
-       if ((len = fmt_entry(tterm, pred, TRUE, infodump)) > critlen)
+       if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen)
        {
            /*
             * We pick on sgr because it's a nice long string capability that
             * is really just an optimization hack.
             */
            char *oldsgr = set_attributes;
-           set_attributes = ABSENT_STRING; 
+           set_attributes = ABSENT_STRING;
            (void) printf("# (sgr removed to fit entry within %d bytes)\n",
                          critlen);
-           if ((len = fmt_entry(tterm, pred, TRUE, infodump)) > critlen)
+           if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen)
            {
                int oldversion = tversion;
 
@@ -684,7 +771,7 @@ int dump_entry(TERMTYPE *tterm, bool limited, int (*pred)(int type, int idx))
                (void) printf("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n",
                              critlen);
 
-               if ((len = fmt_entry(tterm, pred, TRUE, infodump)) > critlen)
+               if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen)
                {
                    (void) fprintf(stderr,
                               "warning: %s entry is %d bytes long\n",
@@ -709,65 +796,60 @@ int dump_uses(const char *name, bool infodump)
 {
     char buffer[MAX_TERMINFO_LENGTH];
 
-    append_output(NULL);
+    append_output(0);
     (void)sprintf(buffer, "%s%s", infodump ? "use=" : "tc=", name);
     wrap_concat(buffer);
     (void) fputs(outbuf, stdout);
     return out_used;
 }
 
-void compare_entry(void (*hook)(int t, int i, const char *name))
+void compare_entry(void (*hook)(int t, int i, const char *name), TERMTYPE *tp GCC_UNUSED)
 /* compare two entries */
 {
     int        i, j;
+    NCURSES_CONST char * name;
 
     (void) fputs("    comparing booleans.\n", stdout);
-    for (j=0; j < BOOLCOUNT; j++)
+    for_each_boolean(j,tp)
     {
-       if (sortmode == S_NOSORT)
-           i = j;
-       else
-           i = bool_indirect[j];
+       i = BoolIndirect(j);
+       name = ExtBoolname(tp,i,bool_names);
 
        if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
-                && (OBSOLETE(bool_names[i]) && outform != F_LITERAL))
+                && (OBSOLETE(name) && outform != F_LITERAL))
            continue;
 
-       (*hook)(BOOLEAN, i, bool_names[i]);
+       (*hook)(BOOLEAN, i, name);
     }
 
     (void) fputs("    comparing numbers.\n", stdout);
-    for (j=0; j < NUMCOUNT; j++)
+    for_each_number(j,tp)
     {
-       if (sortmode == S_NOSORT)
-           i = j;
-       else
-           i = num_indirect[j];
+       i = NumIndirect(j);
+       name = ExtNumname(tp,i,num_names);
 
        if ((outform==F_LITERAL || outform==F_TERMINFO || outform==F_VARIABLE)
-                && (OBSOLETE(num_names[i]) && outform != F_LITERAL))
+                && (OBSOLETE(name) && outform != F_LITERAL))
            continue;
 
-       (*hook)(NUMBER, i, num_names[i]);
+       (*hook)(NUMBER, i, name);
     }
 
     (void) fputs("    comparing strings.\n", stdout);
-    for (j=0; j < STRCOUNT; j++)
+    for_each_string(j,tp)
     {
-       if (sortmode == S_NOSORT)
-           i = j;
-       else
-           i = str_indirect[j];
+       i = StrIndirect(j);
+       name = ExtStrname(tp,i,str_names);
 
        if ((outform==F_LITERAL || outform==F_TERMINFO || outform==F_VARIABLE)
-                && (OBSOLETE(str_names[i]) && outform != F_LITERAL))
+                && (OBSOLETE(name) && outform != F_LITERAL))
            continue;
 
-       (*hook)(STRING, i, str_names[i]);
+       (*hook)(STRING, i, name);
     }
 }
 
-#define NOTSET(s)      ((s) == (char *)NULL)
+#define NOTSET(s)      ((s) == 0)
 
 /*
  * This bit of legerdemain turns all the terminfo variable names into
index 2a24ea9d91979d818f3444391002b6058a550d81..d7e27c53f667465bd1a9f84898b8dbef8a6d9b39 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
 #define S_TERMCAP      4       /* sort by termcap names */
 
 extern NCURSES_CONST char *nametrans(const char *);
-extern void dump_init(const char *, int, int, int, int);
-extern int fmt_entry(TERMTYPE *, int (*)(int, int), bool, bool);
-extern int dump_entry(TERMTYPE *, bool, int (*)(int, int));
+extern void dump_init(const char *, int, int, int, int, bool);
+extern int fmt_entry(TERMTYPE *, int (*)(int, int), bool, bool, int);
+extern int dump_entry(TERMTYPE *, bool, int, int (*)(int, int));
 extern int dump_uses(const char *, bool);
-extern void compare_entry(void (*)(int, int, const char *));
+extern void compare_entry(void (*)(int, int, const char *), TERMTYPE *);
 
 #define FAIL   -1
index d603353b4d56c2efb84880eca1674d1f57354135..5965224085154dba62b640f5fd9c4e908772da9a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
@@ -42,7 +42,7 @@
 #include <term_entry.h>
 #include <dump_entry.h>
 
-MODULE_ID("$Id: infocmp.c,v 1.34 1998/02/11 12:14:03 tom Exp $")
+MODULE_ID("$Id: infocmp.c,v 1.44 1999/06/16 00:39:48 tom Exp $")
 
 #define L_CURL "{"
 #define R_CURL "}"
@@ -65,6 +65,7 @@ static TERMTYPE term[MAXTERMS];       /* terminfo entries */
 static int termcount;          /* count of terminal entries */
 
 static const char *tversion;   /* terminfo version selected */
+static int numbers = 0;                /* format "%'char'" to/from "%{number}" */
 static int outform;            /* output format */
 static int sortmode;           /* sort_mode */
 static int itrace;             /* trace flag for debugging */
@@ -85,7 +86,7 @@ static void ExitProgram(int code) GCC_NORETURN;
 static void ExitProgram(int code)
 {
        while (termcount-- > 0)
-               _nc_free_termtype(&term[termcount], FALSE);
+               _nc_free_termtype(&term[termcount]);
        _nc_leaks_dump_entry();
        _nc_free_and_exit(code);
 }
@@ -205,21 +206,23 @@ static bool entryeq(TERMTYPE *t1, TERMTYPE *t2)
 {
     int        i;
 
-    for (i = 0; i < BOOLCOUNT; i++)
+    for (i = 0; i < NUM_BOOLEANS(t1); i++)
        if (t1->Booleans[i] != t2->Booleans[i])
            return(FALSE);
 
-    for (i = 0; i < NUMCOUNT; i++)
+    for (i = 0; i < NUM_NUMBERS(t1); i++)
        if (t1->Numbers[i] != t2->Numbers[i])
            return(FALSE);
 
-    for (i = 0; i < STRCOUNT; i++)
+    for (i = 0; i < NUM_STRINGS(t1); i++)
        if (capcmp(t1->Strings[i], t2->Strings[i]))
            return(FALSE);
 
     return(TRUE);
 }
 
+#define TIC_EXPAND(result) _nc_tic_expand(result, outform==F_TERMINFO, numbers)
+
 static void compare_predicate(int type, int idx, const char *name)
 /* predicate function to use for entry difference reports */
 {
@@ -289,7 +292,7 @@ static void compare_predicate(int type, int idx, const char *name)
                                else
                                {
                                        (void) strcpy(buf1, "'");
-                                       (void) strcat(buf1, _nc_tic_expand(s1, outform==F_TERMINFO));
+                                       (void) strcat(buf1, TIC_EXPAND(s1));
                                        (void) strcat(buf1, "'");
                                }
 
@@ -298,18 +301,19 @@ static void compare_predicate(int type, int idx, const char *name)
                                else
                                {
                                        (void) strcpy(buf2, "'");
-                                       (void) strcat(buf2, _nc_tic_expand(s2, outform==F_TERMINFO));
+                                       (void) strcat(buf2, TIC_EXPAND(s2));
                                        (void) strcat(buf2, "'");
                                }
 
-                               (void) printf("\t%s: %s, %s.\n",
-                                             name, buf1, buf2);
+                               if (strcmp(buf1, buf2))
+                                       (void) printf("\t%s: %s, %s.\n",
+                                                     name, buf1, buf2);
                        }
                        break;
 
                case C_COMMON:
                        if (s1 && s2 && !capcmp(s1, s2))
-                               (void) printf("\t%s= '%s'.\n", name, _nc_tic_expand(s1, outform==F_TERMINFO));
+                               (void) printf("\t%s= '%s'.\n", name, TIC_EXPAND(s1));
                        break;
 
                case C_NAND:
@@ -580,7 +584,7 @@ static void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
            /* couldn't match anything */
            buf2[0] = *sp;
            buf2[1] = '\0';
-           (void) strcat(buf, _nc_tic_expand(buf2, outform==F_TERMINFO));
+           (void) strcat(buf, TIC_EXPAND(buf2));
        }
     }
     (void) printf("%s\n", buf);
@@ -602,7 +606,7 @@ static void file_comparison(int argc, char *argv[])
     ENTRY      *qp, *rp;
     int                i, n;
 
-    dump_init((char *)NULL, F_LITERAL, S_TERMINFO, 0, itrace);
+    dump_init((char *)NULL, F_LITERAL, S_TERMINFO, 0, itrace, FALSE);
 
     for (n = 0; n < argc && n < MAXCOMPARE; n++)
     {
@@ -736,12 +740,16 @@ static void file_comparison(int argc, char *argv[])
     {
        rp = (ENTRY *)qp->uses[0].parent;
 
+#if NCURSES_XNAMES
+       if (termcount > 1)
+           _nc_align_termtype(&qp->tterm, &rp->tterm);
+#endif
        if (qp->nuses == 1 && !entryeq(&qp->tterm, &rp->tterm))
        {
            char name1[NAMESIZE], name2[NAMESIZE];
 
-           memcpy(&term[0], &qp->tterm, sizeof(TERMTYPE));
-           memcpy(&term[1], &rp->tterm, sizeof(TERMTYPE));
+           term[0] = qp->tterm;
+           term[1] = rp->tterm;
 
            (void) canonical_name(qp->tterm.term_names, name1);
            (void) canonical_name(rp->tterm.term_names, name2);
@@ -752,7 +760,7 @@ static void file_comparison(int argc, char *argv[])
                if (itrace)
                    (void)fprintf(stderr, "infocmp: dumping differences\n");
                (void) printf("comparing %s to %s.\n", name1, name2);
-               compare_entry(compare_predicate);
+               compare_entry(compare_predicate, term);
                break;
 
            case C_COMMON:
@@ -760,7 +768,7 @@ static void file_comparison(int argc, char *argv[])
                    (void) fprintf(stderr,
                                   "infocmp: dumping common capabilities\n");
                (void) printf("comparing %s to %s.\n", name1, name2);
-               compare_entry(compare_predicate);
+               compare_entry(compare_predicate, term);
                break;
 
            case C_NAND:
@@ -768,7 +776,7 @@ static void file_comparison(int argc, char *argv[])
                    (void) fprintf(stderr,
                                   "infocmp: dumping differences\n");
                (void) printf("comparing %s to %s.\n", name1, name2);
-               compare_entry(compare_predicate);
+               compare_entry(compare_predicate, term);
                break;
 
            }
@@ -778,11 +786,202 @@ static void file_comparison(int argc, char *argv[])
 
 static void usage(void)
 {
-       fprintf(stderr,
-"usage: infocmp [-dcnILCuvV1T] [-s d| i| l| c] [-w width] [-A directory] [-B directory] [termname...]\n");
+       static const char *tbl[] = {
+            "Usage: infocmp [options] [-A directory] [-B directory] [termname...]"
+           ,""
+           ,"Options:"
+           ,"  -1    print single-column"
+           ,"  -C    use termcap-names"
+           ,"  -F    compare terminfo-files"
+           ,"  -I    use terminfo-names"
+           ,"  -L    use long names"
+           ,"  -R subset (see manpage)"
+           ,"  -T    eliminate size limits (test)"
+           ,"  -V    print version"
+           ,"  -c    list common capabilities"
+           ,"  -d    list different capabilities"
+           ,"  -e    format output for C initializer"
+           ,"  -E    format output as C tables"
+           ,"  -f    with -1, format complex strings"
+           ,"  -G    format %{number} to %'char'"
+           ,"  -g    format %'char' to %{number}"
+           ,"  -i    analyze initialization/reset"
+           ,"  -l    output terminfo names"
+           ,"  -n    list capabilities in neither"
+           ,"  -p    ignore padding specifiers"
+           ,"  -r    with -C, output in termcap form"
+           ,"  -s [d|i|l|c] sort fields"
+           ,"  -u    produce source with 'use='"
+           ,"  -v number  (verbose)"
+           ,"  -w number  (width)"
+       };
+       const size_t first = 3;
+       const size_t last = sizeof(tbl)/sizeof(tbl[0]);
+       const size_t left = (last - first + 1) / 2 + first;
+       size_t n;
+
+       for (n = 0; n < left; n++) {
+               size_t m = (n < first) ? last : n + left - first;
+               if (m < last)
+                       fprintf(stderr, "%-40.40s%s\n", tbl[n], tbl[m]);
+               else
+                       fprintf(stderr, "%s\n", tbl[n]);
+       }
        exit(EXIT_FAILURE);
 }
 
+static char * name_initializer(const char *type)
+{
+    static char *initializer;
+    char *s;
+
+    if (initializer == 0)
+       initializer = malloc(strlen(term->term_names) + 20);
+
+    (void) sprintf(initializer, "%s_data_%s", type, term->term_names);
+    for (s = initializer; *s != 0 && *s != '|'; s++)
+    {
+       if (!isalnum(*s))
+           *s = '_';
+    }
+    *s = 0;
+    return initializer;
+}
+
+/* dump C initializers for the terminal type */
+static void dump_initializers(void)
+{
+    int        n;
+    const char *str = 0;
+    int        size;
+
+    (void) printf("static bool %s[] = %s\n", name_initializer("bool"), L_CURL);
+
+    for_each_boolean(n,term)
+    {
+       switch((int)(term->Booleans[n]))
+       {
+       case TRUE:
+           str = "TRUE";
+           break;
+
+       case FALSE:
+           str = "FALSE";
+           break;
+
+       case ABSENT_BOOLEAN:
+           str = "ABSENT_BOOLEAN";
+           break;
+
+       case CANCELLED_BOOLEAN:
+           str = "CANCELLED_BOOLEAN";
+           break;
+       }
+       (void) printf("\t/* %3d: %-8s */\t%s,\n",
+                     n, ExtBoolname(term,n,boolnames), str);
+    }
+    (void) printf("%s;\n", R_CURL);
+
+    (void) printf("static short %s[] = %s\n", name_initializer("number"), L_CURL);
+
+    for_each_number(n,term)
+    {
+       char    buf[BUFSIZ];
+       switch (term->Numbers[n])
+       {
+       case ABSENT_NUMERIC:
+           str = "ABSENT_NUMERIC";
+           break;
+       case CANCELLED_NUMERIC:
+           str = "CANCELLED_NUMERIC";
+           break;
+       default:
+           sprintf(buf, "%d", term->Numbers[n]);
+           str = buf;
+           break;
+       }
+       (void) printf("\t/* %3d: %-8s */\t%s,\n", n, ExtNumname(term,n,numnames), str);
+    }
+    (void) printf("%s;\n", R_CURL);
+
+    size = sizeof(TERMTYPE)
+       + (NUM_BOOLEANS(term) * sizeof(term->Booleans[0]))
+       + (NUM_NUMBERS(term) * sizeof(term->Numbers[0]));
+
+    (void) printf("static char * %s[] = %s\n", name_initializer("string"), L_CURL);
+
+    for_each_string(n,term)
+    {
+       char    buf[BUFSIZ], *sp, *tp;
+
+       if (term->Strings[n] == ABSENT_STRING)
+           str = "ABSENT_STRING";
+       else if (term->Strings[n] == CANCELLED_STRING)
+           str = "CANCELLED_STRING";
+       else
+       {
+           tp = buf;
+           *tp++ = '"';
+           for (sp = term->Strings[n]; *sp; sp++)
+           {
+               if (isascii(*sp) && isprint(*sp) && *sp !='\\' && *sp != '"')
+                   *tp++ = *sp;
+               else
+               {
+                   (void) sprintf(tp, "\\%03o", *sp & 0xff);
+                   tp += 4;
+               }
+           }
+           *tp++ = '"';
+           *tp = '\0';
+           size += (strlen(term->Strings[n]) + 1);
+           str = buf;
+       }
+#if NCURSES_XNAMES
+       if (n == STRCOUNT)
+       {
+           (void) printf("%s;\n", R_CURL);
+
+           (void) printf("static char * %s[] = %s\n", name_initializer("string_ext"), L_CURL);
+       }
+#endif
+       (void) printf("\t/* %3d: %-8s */\t%s,\n", n, ExtStrname(term,n,strnames), str);
+    }
+    (void) printf("%s;\n", R_CURL);
+}
+
+/* dump C initializers for the terminal type */
+static void dump_termtype(void)
+{
+    (void) printf("\t%s\n\t\t\"%s\",\n", L_CURL, term->term_names);
+    (void) printf("\t\t(char *)0,\t/* pointer to string table */\n");
+
+    (void) printf("\t\t%s,\n", name_initializer("bool"));
+    (void) printf("\t\t%s,\n", name_initializer("number"));
+
+    (void) printf("\t\t%s,\n", name_initializer("string"));
+
+#if NCURSES_XNAMES
+    (void) printf("#if NCURSES_XNAMES\n");
+    (void) printf("\t\t(char *)0,\t/* pointer to extended string table */\n");
+    (void) printf("\t\t%s,\t/* ...corresponding names */\n",
+       (NUM_STRINGS(term) != STRCOUNT)
+           ? name_initializer("string_ext")
+           : "(char **)0");
+
+    (void) printf("\t\t%d,\t\t/* count total Booleans */\n", NUM_BOOLEANS(term));
+    (void) printf("\t\t%d,\t\t/* count total Numbers */\n",  NUM_NUMBERS(term));
+    (void) printf("\t\t%d,\t\t/* count total Strings */\n",  NUM_STRINGS(term));
+
+    (void) printf("\t\t%d,\t\t/* count extensions to Booleans */\n", NUM_BOOLEANS(term) - BOOLCOUNT);
+    (void) printf("\t\t%d,\t\t/* count extensions to Numbers */\n",  NUM_NUMBERS(term) - NUMCOUNT);
+    (void) printf("\t\t%d,\t\t/* count extensions to Strings */\n",  NUM_STRINGS(term) - STRCOUNT);
+
+    (void) printf("#endif /* NCURSES_XNAMES */\n");
+#endif /* NCURSES_XNAMES */
+    (void) printf("\t%s\n", R_CURL);
+}
+
 /***************************************************************************
  *
  * Main sequence
@@ -796,8 +995,9 @@ int main(int argc, char *argv[])
        /* Also avoid overflowing smaller stacks on systems like AmigaOS */
        path *tfile = malloc(sizeof(path)*MAXTERMS);
        int c, i, len;
+       bool formatted = FALSE;
        bool filecompare = FALSE;
-       bool initdump = FALSE;
+       int initdump = 0;
        bool init_analyze = FALSE;
        bool limited = TRUE;
 
@@ -811,7 +1011,7 @@ int main(int argc, char *argv[])
        /* where is the terminfo database location going to default to? */
        restdir = firstdir = 0;
 
-       while ((c = getopt(argc, argv, "decCFIinlLprR:s:uv:Vw:A:B:1T")) != EOF)
+       while ((c = getopt(argc, argv, "deEcCfFGgIinlLprR:s:uv:Vw:A:B:1T")) != EOF)
                switch (c)
                {
                case 'd':
@@ -819,7 +1019,11 @@ int main(int argc, char *argv[])
                        break;
 
                case 'e':
-                       initdump = TRUE;
+                       initdump |= 1;
+                       break;
+
+               case 'E':
+                       initdump |= 2;
                        break;
 
                case 'c':
@@ -833,6 +1037,18 @@ int main(int argc, char *argv[])
                            sortmode = S_TERMCAP;
                        break;
 
+               case 'f':
+                       formatted = TRUE;
+                       break;
+
+               case 'G':
+                       numbers = 1;
+                       break;
+
+               case 'g':
+                       numbers = -1;
+                       break;
+
                case 'F':
                        filecompare = TRUE;
                        break;
@@ -868,6 +1084,7 @@ int main(int argc, char *argv[])
 
                case 'r':
                        tversion = 0;
+                       limited = FALSE;
                        break;
 
                case 'R':
@@ -920,6 +1137,7 @@ int main(int argc, char *argv[])
                case '1':
                        mwidth = 0;
                        break;
+
                case 'T':
                        limited = FALSE;
                        break;
@@ -932,7 +1150,7 @@ int main(int argc, char *argv[])
                sortmode = S_TERMINFO;
 
        /* set up for display */
-       dump_init(tversion, outform, sortmode, mwidth, itrace);
+       dump_init(tversion, outform, sortmode, mwidth, itrace, formatted);
 
        /* make sure we have at least one terminal name to work with */
        if (optind >= argc)
@@ -1002,103 +1220,18 @@ int main(int argc, char *argv[])
                }
            }
 
+#if NCURSES_XNAMES
+           if (termcount > 1)
+               _nc_align_termtype(&term[0], &term[1]);
+#endif
+
            /* dump as C initializer for the terminal type */
            if (initdump)
            {
-               int     n;
-               const char *str = 0;
-               int     size;
-
-               (void) printf("\t%s\n\t\t\"%s\",\n",
-                             L_CURL, term->term_names);
-               (void) printf("\t\t(char *)0,\n");
-
-               (void) printf("\t\t%s /* BOOLEANS */\n", L_CURL);
-               for (n = 0; n < BOOLCOUNT; n++)
-               {
-                   switch((int)(term->Booleans[n]))
-                   {
-                   case TRUE:
-                       str = "TRUE";
-                       break;
-
-                   case FALSE:
-                       str = "FALSE";
-                       break;
-
-                   case ABSENT_BOOLEAN:
-                       str = "ABSENT_BOOLEAN";
-                       break;
-
-                   case CANCELLED_BOOLEAN:
-                       str = "CANCELLED_BOOLEAN";
-                       break;
-                   }
-                   (void) printf("\t\t/* %s */\t%s%s,\n",
-                                 boolnames[n], str,
-                                 n == BOOLCOUNT-1 ? R_CURL : "");
-               }
-
-               (void) printf("\t\t%s /* NUMERICS */\n", L_CURL);
-               for (n = 0; n < NUMCOUNT; n++)
-               {
-                   char        buf[BUFSIZ];
-                   switch (term->Numbers[n])
-                   {
-                   case ABSENT_NUMERIC:
-                       str = "ABSENT_NUMERIC";
-                       break;
-                   case CANCELLED_NUMERIC:
-                       str = "CANCELLED_NUMERIC";
-                       break;
-                   default:
-                       sprintf(buf, "%d", term->Numbers[n]);
-                       str = buf;
-                       break;
-                   }
-                   (void) printf("\t\t/* %s */\t%s%s,\n",
-                       numnames[n], str,
-                       n == NUMCOUNT-1 ? R_CURL : "");
-               }
-
-               size = sizeof(TERMTYPE)
-                   + (BOOLCOUNT * sizeof(term->Booleans[0]))
-                   + (NUMCOUNT * sizeof(term->Numbers[0]));
-
-               (void) printf("\t\t%s /* STRINGS */\n", L_CURL);
-               for (n = 0; n < STRCOUNT; n++)
-               {
-                   char        buf[BUFSIZ], *sp, *tp;
-
-                   if (term->Strings[n] == ABSENT_STRING)
-                       str = "ABSENT_STRING";
-                   else if (term->Strings[n] == CANCELLED_STRING)
-                       str = "CANCELLED_STRING";
-                   else
-                   {
-                       tp = buf;
-                       *tp++ = '"';
-                       for (sp = term->Strings[n]; *sp; sp++)
-                       {
-                           if (isascii(*sp) && isprint(*sp) && *sp !='\\' && *sp != '"')
-                               *tp++ = *sp;
-                           else
-                           {
-                               (void) sprintf(tp, "\\%03o", *sp & 0xff);
-                               tp += 4;
-                           }
-                       }
-                       *tp++ = '"';
-                       *tp = '\0';
-                       size += (strlen(term->Strings[n]) + 1);
-                       str = buf;
-                   }
-                   (void) printf("\t\t/* %s */\t%s%s%s\n",
-                       strnames[n], str,
-                       n == STRCOUNT-1 ? R_CURL : "",
-                       n == STRCOUNT-1 ? ""     : ",");
-               }
-               (void) printf("\t%s /* size = %d */\n", R_CURL, size);
+               if (initdump & 1)
+                   dump_termtype();
+               if (initdump & 2)
+                   dump_initializers();
                ExitProgram(EXIT_SUCCESS);
            }
 
@@ -1131,7 +1264,7 @@ int main(int argc, char *argv[])
                                   tname[0]);
                (void) printf("#\tReconstructed via infocmp from file: %s\n",
                              tfile[0]);
-               len = dump_entry(&term[0], limited, NULL);
+               len = dump_entry(&term[0], limited, numbers, NULL);
                putchar('\n');
                if (itrace)
                    (void)fprintf(stderr, "infocmp: length %d\n", len);
@@ -1141,7 +1274,7 @@ int main(int argc, char *argv[])
                if (itrace)
                    (void)fprintf(stderr, "infocmp: dumping differences\n");
                (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
-               compare_entry(compare_predicate);
+               compare_entry(compare_predicate, term);
                break;
 
            case C_COMMON:
@@ -1149,7 +1282,7 @@ int main(int argc, char *argv[])
                    (void) fprintf(stderr,
                                   "infocmp: dumping common capabilities\n");
                (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
-               compare_entry(compare_predicate);
+               compare_entry(compare_predicate, term);
                break;
 
            case C_NAND:
@@ -1157,13 +1290,13 @@ int main(int argc, char *argv[])
                    (void) fprintf(stderr,
                                   "infocmp: dumping differences\n");
                (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
-               compare_entry(compare_predicate);
+               compare_entry(compare_predicate, term);
                break;
 
            case C_USEALL:
                if (itrace)
                    (void) fprintf(stderr, "infocmp: dumping use entry\n");
-               len = dump_entry(&term[0], limited, use_predicate);
+               len = dump_entry(&term[0], limited, numbers, use_predicate);
                for (i = 1; i < termcount; i++)
                    len += dump_uses(tname[i], !(outform==F_TERMCAP || outform==F_TCONVERR));
                putchar('\n');
index fb5a84760733940511a27d3f02e32e7467e3ea2c..3384d37c4e6dea01c97e86a765539ffb4ab5aab2 100644 (file)
@@ -30,7 +30,7 @@
  *  Author: Thomas E. Dickey <dickey@clark.net> 1997,1998                   *
  ****************************************************************************/
 /*
- * $Id: progs.priv.h,v 1.17 1998/02/11 12:14:03 tom Exp $
+ * $Id: progs.priv.h,v 1.19 1999/02/23 11:10:32 tom Exp $
  *
  *     progs.priv.h
  *
 # include <sys/param.h>
 #endif
 
-#ifndef PATH_MAX
-# if defined(_POSIX_PATH_MAX)
-#  define PATH_MAX _POSIX_PATH_MAX
-# elif defined(MAXPATHLEN)
-#  define PATH_MAX MAXPATHLEN
-# else
-#  define PATH_MAX 255 /* the Posix minimum pathsize */
-# endif
-#endif
-
 #if HAVE_DIRENT_H
 # include <dirent.h>
 # define NAMLEN(dirent) strlen((dirent)->d_name)
@@ -112,7 +102,7 @@ extern int optind;
 #endif /* HAVE_GETOPT_H */
 
 #include <curses.h>
-#include <term.h>
+#include <term_entry.h>
 #include <tic.h>
 #include <nc_alloc.h>
 
@@ -146,6 +136,17 @@ extern int optind;
 #define STDERR_FILENO 2
 #endif
 
+/* may be in limits.h, included from various places */
+#ifndef PATH_MAX
+# if defined(_POSIX_PATH_MAX)
+#  define PATH_MAX _POSIX_PATH_MAX
+# elif defined(MAXPATHLEN)
+#  define PATH_MAX MAXPATHLEN
+# else
+#  define PATH_MAX 255 /* the Posix minimum pathsize */
+# endif
+#endif
+
 /* We use isascii only to guard against use of 7-bit ctype tables in the
  * isprint test in infocmp.
  */
index 6163e32961c39900dc60aa1c815d76c044ef6169..5f08270963715febfc3c27a3ddda3966efa5107d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
 #include <dump_entry.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: tic.c,v 1.28 1998/02/11 12:14:02 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.52 1999/09/25 22:47:54 tom Exp $")
 
 const char *_nc_progname = "tic";
 
 static FILE    *log_fp;
+static FILE    *tmp_fp;
 static bool    showsummary = FALSE;
+static const char *to_remove;
 
-static const   char usage_string[] = "[-hc] [-v[n]] [-e names] [-CILNRTrsw1] source-file\n";
+static void    (*save_check_termtype)(TERMTYPE *);
+static void    check_termtype(TERMTYPE *tt);
+
+static const   char usage_string[] = "[-h] [-v[n]] [-e names] [-CILNRTcfrswx1] source-file\n";
+
+static void cleanup(void)
+{
+       if (tmp_fp != 0)
+               fclose(tmp_fp);
+       if (to_remove != 0) {
+#if HAVE_REMOVE
+               remove(to_remove);
+#else
+               unlink(to_remove);
+#endif
+       }
+}
+
+static void failed(const char *msg)
+{
+       perror(msg);
+       cleanup();
+       exit(EXIT_FAILURE);
+}
 
 static void usage(void)
 {
@@ -63,12 +88,18 @@ static void usage(void)
        "  -R         restrict translation to given terminfo/termcap version",
        "  -T         remove size-restrictions on compiled description",
        "  -c         check only, validate input without compiling or translating",
+       "  -f         format complex strings for readability",
+       "  -G         format %{number} to %'char'",
+       "  -g         format %'char' to %{number}",
        "  -e<names>  translate/compile only entries named by comma-separated list",
        "  -o<dir>    set output directory for compiled entry writes",
        "  -r         force resolution of all use entries in source translation",
        "  -s         print summary statistics",
        "  -v[n]      set verbosity level",
        "  -w[n]      set format width for translation output",
+#if NCURSES_XNAMES
+       "  -x         treat unknown capabilities as user-defined",
+#endif
        "",
        "Parameters:",
        "  <file>     file to translate or compile"
@@ -81,7 +112,60 @@ static void usage(void)
        exit(EXIT_FAILURE);
 }
 
-static bool immedhook(ENTRY *ep)
+#define L_BRACE '{'
+#define R_BRACE '}'
+#define S_QUOTE '\'';
+
+static void write_it(ENTRY *ep)
+{
+       unsigned n;
+       int ch;
+       char *s, *d, *t;
+       char result[MAX_ENTRY_SIZE];
+
+       /*
+        * Look for strings that contain %{number}, convert them to %'char',
+        * which is shorter and runs a little faster.
+        */
+       for (n = 0; n < STRCOUNT; n++) {
+               s = ep->tterm.Strings[n];
+               if (VALID_STRING(s)
+                && strchr(s, L_BRACE) != 0) {
+                       d = result;
+                       t = s;
+                       while ((ch = *t++) != 0) {
+                               *d++ = ch;
+                               if (ch == '\\') {
+                                       *d++ = *t++;
+                               } else if ((ch == '%')
+                                && (*t == L_BRACE)) {
+                                       char *v = 0;
+                                       long value = strtol(t+1, &v, 0);
+                                       if (v != 0
+                                        && *v == R_BRACE
+                                        && value > 0
+                                        && value != '\\'       /* FIXME */
+                                        && value < 127
+                                        && isprint((int)value)) {
+                                               *d++ = S_QUOTE;
+                                               *d++ = (int)value;
+                                               *d++ = S_QUOTE;
+                                               t = (v + 1);
+                                       }
+                               }
+                       }
+                       *d = 0;
+                       if (strlen(result) < strlen(s))
+                               strcpy(s, result);
+               }
+       }
+
+       _nc_set_type(_nc_first_name(ep->tterm.term_names));
+       _nc_curr_line = ep->startline;
+       _nc_write_entry(&ep->tterm);
+}
+
+static bool immedhook(ENTRY *ep GCC_UNUSED)
 /* write out entries with no use capabilities immediately to save storage */
 {
 #ifndef HAVE_BIG_CORE
@@ -122,16 +206,13 @@ static bool immedhook(ENTRY *ep)
     {
        int     oldline = _nc_curr_line;
 
-       _nc_set_type(_nc_first_name(ep->tterm.term_names));
-       _nc_curr_line = ep->startline;
-       _nc_write_entry(&ep->tterm);
+       write_it(ep);
        _nc_curr_line = oldline;
        free(ep->tterm.str_table);
        return(TRUE);
     }
-    else
 #endif /* HAVE_BIG_CORE */
-       return(FALSE);
+    return(FALSE);
 }
 
 static void put_translate(int c)
@@ -217,15 +298,16 @@ static const char **make_namelist(char *src)
        const char **dst = 0;
 
        char *s, *base;
-       size_t pass, n, nn;
+       unsigned pass, n, nn;
        char buffer[BUFSIZ];
 
-       if (strchr(src, '/') != 0) {    /* a filename */
+       if (src == 0) {
+               /* EMPTY */;
+       } else if (strchr(src, '/') != 0) {     /* a filename */
                FILE *fp = fopen(src, "r");
-               if (fp == 0) {
-                       perror(src);
-                       exit(EXIT_FAILURE);
-               }
+               if (fp == 0)
+                       failed(src);
+
                for (pass = 1; pass <= 2; pass++) {
                        nn = 0;
                        while (fgets(buffer, sizeof(buffer), fp) != 0) {
@@ -294,6 +376,7 @@ static bool matches(const char **needle, const char *haystack)
 
 int main (int argc, char *argv[])
 {
+char   my_tmpname[PATH_MAX];
 int    v_opt = -1, debug_level;
 int    smart_defaults = TRUE;
 char    *termcap;
@@ -305,6 +388,8 @@ int outform = F_TERMINFO;   /* output format */
 int    sortmode = S_TERMINFO;  /* sort_mode */
 
 int    width = 60;
+bool   formatted = FALSE;      /* reformat complex strings? */
+int    numbers = 0;            /* format "%'char'" to/from "%{number}" */
 bool   infodump = FALSE;       /* running as captoinfo? */
 bool   capdump = FALSE;        /* running as infotocap? */
 bool   forceresolve = FALSE;   /* force resolution */
@@ -324,13 +409,16 @@ bool      check_only = FALSE;
 
        infodump = (strcmp(_nc_progname, "captoinfo") == 0);
        capdump = (strcmp(_nc_progname, "infotocap") == 0);
+#if NCURSES_XNAMES
+       use_extended_names(FALSE);
+#endif
 
        /*
         * Processing arguments is a little complicated, since someone made a
         * design decision to allow the numeric values for -w, -v options to
         * be optional.
         */
-       while ((this_opt = getopt(argc, argv, "0123456789CILNR:TVce:o:rsvw")) != EOF) {
+       while ((this_opt = getopt(argc, argv, "0123456789CILNR:TVce:fGgo:rsvwx")) != EOF) {
                if (isdigit(this_opt)) {
                        switch (last_opt) {
                        case 'v':
@@ -381,6 +469,15 @@ bool       check_only = FALSE;
                case 'e':
                        namelst = make_namelist(optarg);
                        break;
+               case 'f':
+                       formatted = TRUE;
+                       break;
+               case 'G':
+                       numbers = 1;
+                       break;
+               case 'g':
+                       numbers = -1;
+                       break;
                case 'o':
                        outdir = optarg;
                        break;
@@ -396,6 +493,11 @@ bool       check_only = FALSE;
                case 'w':
                        width = 0;
                        break;
+#if NCURSES_XNAMES
+               case 'x':
+                       use_extended_names(TRUE);
+                       break;
+#endif
                default:
                        usage();
                }
@@ -405,6 +507,32 @@ bool       check_only = FALSE;
        debug_level = (v_opt > 0) ? v_opt : (v_opt == 0);
        _nc_tracing = (1 << debug_level) - 1;
 
+       if (_nc_tracing)
+       {
+               save_check_termtype = _nc_check_termtype;
+               _nc_check_termtype = check_termtype;
+       }
+
+#ifndef HAVE_BIG_CORE
+       /*
+        * Aaargh! immedhook seriously hoses us!
+        *
+        * One problem with immedhook is it means we can't do -e.  Problem
+        * is that we can't guarantee that for each terminal listed, all the
+        * terminals it depends on will have been kept in core for reference
+        * resolution -- in fact it's certain the primitive types at the end
+        * of reference chains *won't* be in core unless they were explicitly
+        * in the select list themselves.
+        */
+       if (namelst && (!infodump && !capdump))
+       {
+           (void) fprintf(stderr,
+                          "Sorry, -e can't be used without -I or -C\n");
+           cleanup();
+           return EXIT_FAILURE;
+       }
+#endif /* HAVE_BIG_CORE */
+
        if (optind < argc) {
                source_file = argv[optind++];
                if (optind < argc) {
@@ -419,10 +547,20 @@ bool      check_only = FALSE;
                if (infodump == TRUE) {
                        /* captoinfo's no-argument case */
                        source_file = "/etc/termcap";
-                       if ((termcap = getenv("TERMCAP")) != NULL) {
+                       if ((termcap = getenv("TERMCAP")) != 0
+                        && (namelst = make_namelist(getenv("TERM"))) != 0) {
                                if (access(termcap, F_OK) == 0) {
                                        /* file exists */
                                        source_file = termcap;
+                               } else
+                               if ((source_file = tmpnam(my_tmpname)) != 0
+                                && (tmp_fp = fopen(source_file, "w")) != 0) {
+                                       fprintf(tmp_fp, "%s\n", termcap);
+                                       fclose(tmp_fp);
+                                       tmp_fp = fopen(source_file, "r");
+                                       to_remove = source_file;
+                               } else {
+                                       failed("tmpnam");
                                }
                        }
                } else {
@@ -432,11 +570,13 @@ bool      check_only = FALSE;
                                _nc_progname,
                                _nc_progname,
                                usage_string);
+                       cleanup();
                        return EXIT_FAILURE;
                }
        }
 
-       if (freopen(source_file, "r", stdin) == NULL) {
+       if (tmp_fp == 0
+        && (tmp_fp = fopen(source_file, "r")) == 0) {
                fprintf (stderr, "%s: Can't open %s\n", _nc_progname, source_file);
                return EXIT_FAILURE;
        }
@@ -446,11 +586,11 @@ bool      check_only = FALSE;
                          smart_defaults
                                ? outform
                                : F_LITERAL,
-                         sortmode, width, debug_level);
+                         sortmode, width, debug_level, formatted);
        else if (capdump)
                dump_init(tversion,
                          outform,
-                         sortmode, width, debug_level);
+                         sortmode, width, debug_level, FALSE);
 
        /* parse entries out of the source file */
        _nc_set_source(source_file);
@@ -458,33 +598,17 @@ bool      check_only = FALSE;
        if (!(check_only || infodump || capdump))
            _nc_set_writedir(outdir);
 #endif /* HAVE_BIG_CORE */
-       _nc_read_entry_source(stdin, (char *)NULL,
+       _nc_read_entry_source(tmp_fp, (char *)NULL,
                              !smart_defaults, FALSE,
                              (check_only || infodump || capdump) ? NULLHOOK : immedhook);
 
        /* do use resolution */
-       if (check_only || (!infodump && !capdump) || forceresolve)
-           if (!_nc_resolve_uses() && !check_only)
+       if (check_only || (!infodump && !capdump) || forceresolve) {
+           if (!_nc_resolve_uses() && !check_only) {
+               cleanup();
                return EXIT_FAILURE;
-
-#ifndef HAVE_BIG_CORE
-       /*
-        * Aaargh! immedhook seriously hoses us!
-        *
-        * One problem with immedhook is it means we can't do -e.  Problem
-        * is that we can't guarantee that for each terminal listed, all the
-        * terminals it depends on will have been kept in core for reference
-        * resolution -- in fact it's certain the primitive types at the end
-        * of reference chains *won't* be in core unless they were explicitly
-        * in the select list themselves.
-        */
-       if (namelst && (!infodump && !capdump))
-       {
-           (void) fprintf(stderr,
-                          "Sorry, -e can't be used without -I or -C\n");
-           return EXIT_FAILURE;
+           }
        }
-#endif /* HAVE_BIG_CORE */
 
        /* length check */
        if (check_only && (capdump || infodump))
@@ -493,7 +617,7 @@ bool        check_only = FALSE;
            {
                if (matches(namelst, qp->tterm.term_names))
                {
-                   int len = fmt_entry(&qp->tterm, NULL, TRUE, infodump);
+                   int len = fmt_entry(&qp->tterm, NULL, TRUE, infodump, numbers);
 
                    if (len>(infodump?MAX_TERMINFO_LENGTH:MAX_TERMCAP_LENGTH))
                            (void) fprintf(stderr,
@@ -512,11 +636,7 @@ bool       check_only = FALSE;
                _nc_set_writedir(outdir);
                for_entry_list(qp)
                    if (matches(namelst, qp->tterm.term_names))
-                   {
-                       _nc_set_type(_nc_first_name(qp->tterm.term_names));
-                       _nc_curr_line = qp->startline;
-                       _nc_write_entry(&qp->tterm);
-                   }
+                       write_it(qp);
            }
            else
            {
@@ -532,16 +652,16 @@ bool      check_only = FALSE;
                        /* this is in case infotocap() generates warnings */
                        _nc_set_type(_nc_first_name(qp->tterm.term_names));
 
-                       (void) fseek(stdin, qp->cstart, SEEK_SET);
+                       (void) fseek(tmp_fp, qp->cstart, SEEK_SET);
                        while (j-- )
                            if (infodump)
-                               (void) putchar(getchar());
+                               (void) putchar(fgetc(tmp_fp));
                            else
-                               put_translate(getchar());
+                               put_translate(fgetc(tmp_fp));
 
-                       len = dump_entry(&qp->tterm, limited, NULL);
+                       len = dump_entry(&qp->tterm, limited, numbers, NULL);
                        for (j = 0; j < qp->nuses; j++)
-                           len += dump_uses((char *)(qp->uses[j].parent), infodump);
+                           len += dump_uses((char *)(qp->uses[j].parent), !capdump);
                        (void) putchar('\n');
                        if (debug_level != 0 && !limited)
                            printf("# length=%d\n", len);
@@ -552,8 +672,8 @@ bool        check_only = FALSE;
                    bool in_comment = FALSE;
                    bool trailing_comment = FALSE;
 
-                   (void) fseek(stdin, _nc_tail->cend, SEEK_SET);
-                   while ((c = getchar()) != EOF)
+                   (void) fseek(tmp_fp, _nc_tail->cend, SEEK_SET);
+                   while ((c = fgetc(tmp_fp)) != EOF)
                    {
                        if (oldc == '\n') {
                            if (c == '#') {
@@ -585,5 +705,108 @@ bool      check_only = FALSE;
                else
                        fprintf(log_fp, "No entries written\n");
        }
+       cleanup();
        return(EXIT_SUCCESS);
 }
+
+/*
+ * This bit of legerdemain turns all the terminfo variable names into
+ * references to locations in the arrays Booleans, Numbers, and Strings ---
+ * precisely what's needed (see comp_parse.c).
+ */
+
+TERMINAL *cur_term;    /* tweak to avoid linking lib_cur_term.c */
+
+#undef CUR
+#define CUR tp->
+
+/* other sanity-checks (things that we don't want in the normal
+ * logic that reads a terminfo entry)
+ */
+static void check_termtype(TERMTYPE *tp)
+{
+       bool conflict = FALSE;
+       unsigned j, k;
+       char  fkeys[STRCOUNT];
+
+       /*
+        * A terminal entry may contain more than one keycode assigned to
+        * a given string (e.g., KEY_END and KEY_LL).  But curses will only
+        * return one (the last one assigned).
+        */
+       memset(fkeys, 0, sizeof(fkeys));
+       for (j = 0; _nc_tinfo_fkeys[j].code; j++) {
+           char *a = tp->Strings[_nc_tinfo_fkeys[j].offset];
+           bool first = TRUE;
+           if (!VALID_STRING(a))
+               continue;
+           for (k = j+1; _nc_tinfo_fkeys[k].code; k++) {
+               char *b = tp->Strings[_nc_tinfo_fkeys[k].offset];
+               if (!VALID_STRING(b)
+                || fkeys[k])
+                   continue;
+               if (!strcmp(a,b)) {
+                   fkeys[j] = 1;
+                   fkeys[k] = 1;
+                   if (first) {
+                       if (!conflict) {
+                           _nc_warning("Conflicting key definitions (using the last)");
+                           conflict = TRUE;
+                       }
+                       fprintf(stderr, "... %s is the same as %s",
+                               keyname(_nc_tinfo_fkeys[j].code),
+                               keyname(_nc_tinfo_fkeys[k].code));
+                       first = FALSE;
+                   } else {
+                       fprintf(stderr, ", %s",
+                               keyname(_nc_tinfo_fkeys[k].code));
+                   }
+               }
+           }
+           if (!first)
+               fprintf(stderr, "\n");
+       }
+
+       /*
+        * Quick check for color.  We could also check if the ANSI versus
+        * non-ANSI strings are misused.
+        */
+       if ((max_colors > 0) != (max_pairs > 0)
+        || (max_colors > max_pairs))
+               _nc_warning("inconsistent values for max_colors and max_pairs");
+
+       PAIRED(set_foreground,                  set_background)
+       PAIRED(set_a_foreground,                set_a_background)
+
+       /*
+        * These may be mismatched because the terminal description relies on
+        * restoring the cursor visibility by resetting it.
+        */
+       ANDMISSING(cursor_invisible,            cursor_normal)
+       ANDMISSING(cursor_visible,              cursor_normal)
+
+       /*
+        * From XSI & O'Reilly, we gather that sc/rc are required if csr is
+        * given, because the cursor position after the scrolling operation is
+        * performed is undefined.
+        */
+       ANDMISSING(change_scroll_region,        save_cursor)
+       ANDMISSING(change_scroll_region,        restore_cursor)
+
+       /*
+        * Some standard applications (e.g., vi) and some non-curses
+        * applications (e.g., jove) get confused if we have both ich/ich1 and
+        * smir/rmir.  Let's be nice and warn about that, too, even though
+        * ncurses handles it.
+        */
+       if ((PRESENT(enter_insert_mode) || PRESENT(exit_insert_mode))
+        && (PRESENT(insert_character)  || PRESENT(parm_ich))) {
+          _nc_warning("non-curses applications may be confused by ich/ich1 with smir/rmir");
+       }
+
+       /*
+        * Finally, do the non-verbose checks
+        */
+       if (save_check_termtype != 0)
+           save_check_termtype(tp);
+}
index 85f135e3560be0fc1970e5fc049794d24be6c68e..f2c5c5ec832d3cc9518c53d0854e99e5f7f59515 100644 (file)
 
 #include <progs.priv.h>
 
+#include <sys/stat.h>
+
 #include <dump_entry.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: toe.c,v 0.18 1998/02/11 12:14:02 tom Exp $")
+MODULE_ID("$Id: toe.c,v 0.19 1998/03/08 01:02:46 tom Exp $")
 
 const char *_nc_progname;
 
@@ -181,9 +183,11 @@ int main (int argc, char *argv[])
            if ((home = getenv("HOME")) != (char *)NULL)
            {
                char    personal[PATH_MAX];
+               struct  stat sb;
 
                (void) sprintf(personal, PRIVATE_INFO, home);
-               if (access(personal, F_OK) == 0)
+               if (stat(personal, &sb) == 0
+                && (sb.st_mode & S_IFMT) == S_IFDIR)
                    eargv[j++] = personal;
            }
            eargv[j++] = TERMINFO;
index e14140eba7c268e13e36199a3ae3fd8b6ba41d47..7a859f1641118def2f3612c024771a3c1ec6fa64 100644 (file)
  */
 
 #include <progs.priv.h>
+#ifndef        PURE_TERMINFO
+#include <termsort.c>
+#endif
 
-#include <curses.h>
-
-MODULE_ID("$Id: tput.c,v 1.11 1998/02/11 12:14:02 tom Exp $")
+MODULE_ID("$Id: tput.c,v 1.14 1999/07/31 21:18:29 Goran.Uddeborg Exp $")
 
 #define PUTS(s)                fputs(s, stdout)
 #define PUTCHAR(c)     putchar(c)
@@ -70,16 +71,18 @@ static void usage(void)
 
 static int tput(int argc, char *argv[])
 {
+char *name;
 char *s;
 int i, j, c;
 int reset, status;
 FILE *f;
 
        reset = 0;
-       if (strcmp(argv[0], "reset") == 0) {
+       name = argv[0];
+       if (strcmp(name, "reset") == 0) {
                reset = 1;
        }
-       if (reset || strcmp(argv[0], "init") == 0) {
+       if (reset || strcmp(name, "init") == 0) {
                if (init_prog != NULL) {
                        system(init_prog);
                }
@@ -91,14 +94,14 @@ FILE *f;
                        PUTS(init_1string);
                }
                FLUSH;
-       
+
                if (reset && reset_2string != NULL) {
                        PUTS(reset_2string);
                } else if (init_2string != NULL) {
                        PUTS(init_2string);
                }
                FLUSH;
-       
+
                if (set_lr_margin != NULL) {
                        PUTS(tparm(set_lr_margin, 0, columns - 1));
                } else if (set_left_margin_parm != NULL
@@ -129,14 +132,14 @@ FILE *f;
                        }
                }
                FLUSH;
-       
+
                if (init_tabs != 8) {
                        if (clear_all_tabs != NULL && set_tab != NULL) {
                                for(i = 0; i < columns - 1; i += 8) {
                                        if (parm_right_cursor) {
                                                PUTS(tparm(parm_right_cursor, 8));
                                        } else {
-                                               for(j = 0; j < 8; j++) 
+                                               for(j = 0; j < 8; j++)
                                                        PUTCHAR(' ');
                                        }
                                        PUTS(set_tab);
@@ -144,7 +147,7 @@ FILE *f;
                                FLUSH;
                        }
                }
-       
+
                if (reset && reset_file != NULL) {
                        f = fopen(reset_file, "r");
                        if (f == NULL) {
@@ -165,7 +168,7 @@ FILE *f;
                        fclose(f);
                }
                FLUSH;
-       
+
                if (reset && reset_3string != NULL) {
                        PUTS(reset_3string);
                } else if (init_2string != NULL) {
@@ -174,20 +177,45 @@ FILE *f;
                FLUSH;
                return 0;
        }
-       
-       if (strcmp(argv[0], "longname") == 0) {
+
+       if (strcmp(name, "longname") == 0) {
                PUTS(longname());
                return 0;
        }
 
-       if ((status = tigetflag(argv[0])) != -1)
+#ifndef        PURE_TERMINFO
+       {
+               const struct name_table_entry   *np;
+
+               if ((np = _nc_find_entry(name, _nc_get_hash_table(1))) != 0)
+                       switch(np->nte_type)
+                       {
+                       case BOOLEAN:
+                               if (bool_from_termcap[np->nte_index])
+                                       name = boolnames[np->nte_index];
+                               break;
+
+                       case NUMBER:
+                               if (num_from_termcap[np->nte_index])
+                                       name = numnames[np->nte_index];
+                               break;
+
+                       case STRING:
+                               if (str_from_termcap[np->nte_index])
+                                       name = strnames[np->nte_index];
+                               break;
+                       }
+       }
+#endif
+
+       if ((status = tigetflag(name)) != -1)
                return(status != 0);
-       else if ((status = tigetnum(argv[0])) != CANCELLED_NUMERIC) {
+       else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) {
                (void) printf("%d\n", status);
                return(0);
        }
-       else if ((s = tigetstr(argv[0])) == CANCELLED_STRING)
-               quit(4, "%s: unknown terminfo capability '%s'", prg_name, argv[0]);
+       else if ((s = tigetstr(name)) == CANCELLED_STRING)
+               quit(4, "%s: unknown terminfo capability '%s'", prg_name, name);
        else if (s != (char *)NULL) {
                if (argc > 1) {
                int k;
@@ -255,7 +283,7 @@ int errors = 0;
        if (term == NULL || *term == '\0')
                quit(2, "No value for $TERM and no -T specified");
 
-       if (setupterm(term, STDOUT_FILENO, &errret) != OK)
+       if (setupterm(term, STDOUT_FILENO, &errret) != OK && errret <= 0) 
                quit(3, "unknown terminal \"%s\"", term);
 
        if (cmdline)
index 1df3fd64986923cdb79957030eefbd81dd91b315..cef980ad9737b566c5eb434d1f53e0c7c0c28e52 100644 (file)
@@ -103,7 +103,7 @@ char *ttyname(int fd);
 #include <curses.h>    /* for bool typedef */
 #include <dump_entry.h>
 
-MODULE_ID("$Id: tset.c,v 0.31 1998/02/11 12:14:02 tom Exp $")
+MODULE_ID("$Id: tset.c,v 0.37 1999/03/14 12:30:02 tom Exp $")
 
 extern char **environ;
 
@@ -135,15 +135,8 @@ CaselessCmp(const char *a, const char *b) /* strcasecmp isn't portable */
 }
 
 #if !HAVE_STRDUP
-static char *strdup (char *s)
-{
-  char *p;
-
-  p = malloc(strlen(s)+1);
-  if (p)
-    strcpy(p,s);
-  return(p);
-}
+#define strdup _nc_strdup
+extern char *_nc_strdup(const char *);
 #endif /* not HAVE_STRDUP */
 
 static void
@@ -246,7 +239,7 @@ typedef struct map {
        const char *porttype;   /* Port type, or "" for any. */
        const char *type;       /* Terminal type to select. */
        int conditional;        /* Baud rate conditionals bitmask. */
-       int speed;              /* Baud rate to compare against. */
+       speed_t speed;          /* Baud rate to compare against. */
 } MAP;
 
 static MAP *cur, *maplist;
@@ -340,7 +333,7 @@ add_mapping(const char *port, char *arg)
        char *base = 0;
 
        copy = strdup(arg);
-       mapp = malloc((u_int)sizeof(MAP));
+       mapp = malloc(sizeof(MAP));
        if (copy == 0 || mapp == 0)
                failed("malloc");
        mapp->next = 0;
@@ -585,22 +578,21 @@ found:    if ((p = getenv("TERMCAP")) != 0 && *p != '/') {
         * ttype now contains a pointer to the type of the terminal.
         * If the first character is '?', ask the user.
         */
-       if (ttype[0] == '?')
+       if (ttype[0] == '?') {
                if (ttype[1] != '\0')
                        ttype = askuser(ttype + 1);
                else
                        ttype = askuser(0);
-
+       }
        /* Find the terminfo entry.  If it doesn't exist, ask the user. */
-       while ((rval = setupterm(ttype, STDOUT_FILENO, &errret)) != OK) {
+       while ((rval = setupterm((NCURSES_CONST char *)ttype, STDOUT_FILENO, &errret)) != OK) {
                if (errret == 0) {
                        (void)fprintf(stderr, "tset: unknown terminal type %s\n",
                            ttype);
                        ttype = 0;
                }
                else {
-                       (void)fprintf(stderr, "tset: can't initialize terminal\
-                           type %s (error %d)\n", ttype, errret);
+                       (void)fprintf(stderr, "tset: can't initialize terminal type %s (error %d)\n", ttype, errret);
                        ttype = 0;
                }
                ttype = askuser(ttype);
@@ -965,10 +957,10 @@ set_tabs()
  * Tell the user if a control key has been changed from the default value.
  */
 static void
-report(const char *name, int which, u_int def)
+report(const char *name, int which, unsigned def)
 {
 #ifdef TERMIOS
-       u_int older, newer;
+       unsigned older, newer;
        char *p;
 
        newer = mode.c_cc[which];
@@ -986,7 +978,7 @@ report(const char *name, int which, u_int def)
        if (newer == 0177)
                (void)fprintf(stderr, "delete.\n");
        else if ((p = key_backspace) != 0
-        && newer == (u_int)p[0]
+        && newer == (unsigned char)p[0]
         && p[1] == '\0')
                (void)fprintf(stderr, "backspace.\n");
        else if (newer < 040) {
index 6f4b789abb41db75812450d7240296f239c7be4d..25d3f06d0b265e411313d1eb794d2a6d81a0a491 100755 (executable)
@@ -23,7 +23,7 @@ rm -f ncurses/MKterm.h.awk \
        ncurses/expanded.c \
        ncurses/fallback.c \
        ncurses/hashsize.h \
-       ncurses/keys.tries \
+       ncurses/init_keytry.h \
        ncurses/lib_gen.c \
        ncurses/lib_keyname.c \
        ncurses/names.c \
@@ -46,6 +46,10 @@ s%@DEFS@%-DHAVE_CONFIG_H%g
 s%@NCURSES_MAJOR@%$NCURSES_MAJOR%g
 s%@NCURSES_MINOR@%$NCURSES_MINOR%g
 s%@NCURSES_PATCH@%$NCURSES_PATCH%g
+s%@NCURSES_CONST@%%g
+s%@NCURSES_XNAMES@%1%g
+s%@OSPEED_TYPE@%speed_t%g
+s%@OSPEED_INCLUDES@%#include <termios.h>%g
 s%@cf_cv_rel_version@%$cf_cv_rel_version%g
 s%@cf_cv_abi_version@%$cf_cv_abi_version%g
 s%@cf_cv_builtin_bool@%1%g
@@ -54,6 +58,7 @@ s%@cf_cv_shift_limit@%32%g
 s%@cf_cv_widec_shift@%8%g
 s%@cf_cv_typeof_chtype@%long%g
 s%@cf_cv_1UL@%1UL%g
+s%@cf_cv_cc_bool_type@%0%g
 
 EOF
 
@@ -189,9 +194,9 @@ for nc_file in .. $NC_CONFIG_HEADERS; do if test "x$nc_file" != x..; then
 #define GCC_SCANF 1
 #define GCC_UNUSED __attribute__((unused))
 #define GOOD_SELECT 1
-#define HAVE_ISASCII 1
 #define HAVE_BUILTIN_H 1
 #define HAVE_DIRENT_H 1
+#define HAVE_ERRNO 1
 #define HAVE_FCNTL_H 1
 #define HAVE_FORM_H 1
 #define HAVE_GETOPT_H 1
@@ -199,6 +204,7 @@ CEOF
   cat >> conftest.frag <<CEOF
 #define HAVE_GETTIMEOFDAY 1
 #define HAVE_GETTTYNAM 1
+#define HAVE_ISASCII 1
 #define HAVE_LIBFORM 1
 #define HAVE_LIBMENU 1
 #define HAVE_LIBPANEL 1
@@ -208,6 +214,7 @@ CEOF
 #define HAVE_LONG_FILE_NAMES 1
 #define HAVE_MEMCCPY 1
 #define HAVE_MENU_H 1
+#define HAVE_NANOSLEEP 1
 #define HAVE_NC_ALLOC_H 1
 CEOF
   cat >> conftest.frag <<CEOF
@@ -226,6 +233,7 @@ CEOF
 CEOF
   cat >> conftest.frag <<CEOF
 #define HAVE_STRDUP 1
+#define HAVE_SYMLINK 1
 #define HAVE_SYS_IOCTL_H 1
 #define HAVE_SYS_PARAM_H 1
 #define HAVE_SYS_SELECT_H 1
@@ -241,7 +249,6 @@ CEOF
   cat >> conftest.frag <<CEOF
 #define HAVE_TYPEINFO 1
 #define HAVE_UNISTD_H 1
-#define HAVE_USLEEP 1
 #define HAVE_VALUES_H 1
 #define HAVE_VFSCANF 1
 #define HAVE_VSNPRINTF 1
@@ -256,7 +263,11 @@ CEOF
 #define SYSTEM_NAME "linux-gnu"
 #define TYPEOF_CHTYPE long
 #define USE_DATABASE 1
+#define USE_HASHMAP 1
 #define USE_SCROLL_HINTS 1
+#define USE_LINKS 1
+#define NCURSES_NO_PADDING 1
+#define USE_SIGWINCH 1
 CEOF
   cat >> conftest.edit <<CEOF
 /@DEFS@/r conftest.frag
@@ -361,38 +372,37 @@ echo creating ncurses/termsort.c
 sh ${nc_given_srcdir}/progs/MKtermsort.sh "${NC_AWK}" ${nc_given_srcdir}/include/Caps > ncurses/termsort.c
 
 echo creating ncurses/fallback.c
-sh ${nc_given_srcdir}/ncurses/MKfallback.sh > ncurses/fallback.c
+sh ${nc_given_srcdir}/ncurses/tinfo/MKfallback.sh > ncurses/fallback.c
 
 echo creating ncurses/lib_gen.c
-sh ${nc_given_srcdir}/ncurses/MKlib_gen.sh "${NC_CPP}" "${NC_AWK}" < ncurses/curses.h > ncurses/lib_gen.c
+sh ${nc_given_srcdir}/ncurses/base/MKlib_gen.sh "${NC_CPP}" "${NC_AWK}" < ncurses/curses.h > ncurses/lib_gen.c
 
 echo creating ncurses/nomacros.h
-sh ${nc_given_srcdir}/ncurses/MKlib_gen.sh "${NC_CPP}" "${NC_AWK}" < ncurses/curses.h | fgrep undef > ncurses/nomacros.h
+sh ${nc_given_srcdir}/ncurses/base/MKlib_gen.sh "${NC_CPP}" "${NC_AWK}" < ncurses/curses.h | fgrep undef > ncurses/nomacros.h
 
 echo creating ncurses/expanded.c
-sh ${nc_given_srcdir}/ncurses/MKexpanded.sh "${NC_CPP}"
-mv expanded.c ncurses/expanded.c
+sh ${nc_given_srcdir}/ncurses/tty/MKexpanded.sh "${NC_CPP}" >ncurses/expanded.c
 
 echo creating ncurses/comp_captab.c
-${NC_CC} -o make_hash -DMAIN_PROGRAM ${nc_given_srcdir}/ncurses/comp_hash.c
-sh ${nc_given_srcdir}/ncurses/MKcaptab.awk "${NC_AWK}" ${nc_given_srcdir}/include/Caps > ncurses/comp_captab.c
+${NC_CC} -o make_hash -DMAIN_PROGRAM ${nc_given_srcdir}/ncurses/tinfo/comp_hash.c
+sh ${nc_given_srcdir}/ncurses/tinfo/MKcaptab.awk "${NC_AWK}" ${nc_given_srcdir}/include/Caps > ncurses/comp_captab.c
 rm -f make_hash
 
 echo creating ncurses/lib_keyname.c
-${NC_AWK} -f ${nc_given_srcdir}/ncurses/MKkeyname.awk ${nc_given_srcdir}/ncurses/keys.list > ncurses/lib_keyname.c
+${NC_AWK} -f ${nc_given_srcdir}/ncurses/base/MKkeyname.awk ${nc_given_srcdir}/ncurses/tinfo/keys.list > ncurses/lib_keyname.c
 
 echo creating ncurses/names.c and ncurses/codes.c
-${NC_AWK} -f ${nc_given_srcdir}/ncurses/MKnames.awk ${nc_given_srcdir}/include/Caps
+${NC_AWK} -f ${nc_given_srcdir}/ncurses/tinfo/MKnames.awk ${nc_given_srcdir}/include/Caps
 cat namehdr boolnames boolfnames numnames numfnames strnames strfnames nameftr >ncurses/names.c
 cat namehdr boolcodes numcodes strcodes codeftr > ncurses/codes.c
 rm -f namehdr nameftr codeftr boolnames boolfnames boolcodes numnames numfnames numcodes strnames strfnames strcodes
 
-echo creating ncurses/keys.tries
-${NC_CC} -o make_key ${nc_given_srcdir}/ncurses/make_keys.c
-./make_key ${nc_given_srcdir}/ncurses/keys.list > ncurses/keys.tries
+echo creating ncurses/init_keytry.h
+${NC_CC} -o make_key ${nc_given_srcdir}/ncurses/tinfo/make_keys.c
+./make_key ${nc_given_srcdir}/ncurses/keys.list > ncurses/init_keytry.h
 rm -f make_key
 
 echo creating ncurses/unctrl.c
-echo | ${NC_AWK} -f ${nc_given_srcdir}/ncurses/MKunctrl.awk > ncurses/unctrl.c
+echo | ${NC_AWK} -f ${nc_given_srcdir}/ncurses/base/MKunctrl.awk > ncurses/unctrl.c
 echo creating ncurses/terminfo.5
 sh ${nc_given_srcdir}/man/MKterminfo.sh ${nc_given_srcdir}/man/terminfo.head ${nc_given_srcdir}/include/Caps ${nc_given_srcdir}/man/terminfo.tail > ncurses/terminfo.5
index 4488fad75f2568d39b4acdc4ee0e17de79ac9c6d..558fff8848d87752f42e3d68ee1a3da10cbc1b78 100755 (executable)
@@ -23,7 +23,7 @@ case $i in
                $MKDIRS $mandir/man$section
        fi
        source=`basename $i`
-       target=`grep "^$source" man/man_db.renames | mawk '{print $2}'`
+       target=`grep "^$source" man/man_db.renames | awk '{print $2}'` 
        if test -z "$target" ; then
                echo '? missing rename for '$source
                target="$source"
diff --git a/tack/COPYING b/tack/COPYING
new file mode 100644 (file)
index 0000000..60549be
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/tack/HISTORY b/tack/HISTORY
new file mode 100644 (file)
index 0000000..b1de61d
--- /dev/null
@@ -0,0 +1,42 @@
+
+Current history:
+
+1999/05/16             Minor fix to build/link on CLIX
+1999/05/09             Update to build/link on NeXT
+1999/04/17             Update to work with ncurses 5.0 beta1 (TERMTYPE struct)
+1999/02/07             Build with ncurses 4.2 981219 (renamed function)
+1998/01/09     1.00    First release under GPL
+1997/12/24     0.02    First version that requires ncurses
+1997/10/29     0.01    Second beta release to the ncurses mailing list.
+1997/10/06     0.00    First beta release to the ncurses mailing list.
+
+Ancient history:       TACK -- the terminfo action checker
+
+   The purpose of this program is to verify the correctness of
+terminfos and to calculate the pads needed for each capability.
+This program is not designed to test curses and therefore uses
+as little of curses as possible.
+
+   This program was originally called TED.  In 1991 it was
+released to USENET in comp.sources.  TED was originally written to
+test both terminfos and termcaps.  The original intent was to
+create a terminfo editor.  This code fell quite short of its goal.
+Tests were controled by command line switches and editing was done
+with pen and paper.
+
+   In 1995 Eric S. Raymond got interested in the program and added
+a first cut at making the program menu driven.  He also converted
+the code from K&R C to an ANSI/POSIX-conforming C.  He re-christened
+the program TAC (Terminfo Action Checker).  Eric also wrote a man
+page for TAC.
+
+   In 1997 I decided to dust off the code and make it easier to
+use by the novice.  I totally rewrote the menu system and added
+the editing features I originally planned for TED.  I also did
+a total rewrite of the code that does the timings.  In the process
+of rewriting the code I changed it to be more tightly coupled
+with ncurses.  By this time someone had taken the name TAC so
+I re-christened the program TACK.
+
+Daniel Weaver
+<danw@znyx.com>
index 1e5a011a927727b488a2b161c804c3bf57a2a7ff..48f4619a8bf2ca8a46582ed28a5f9cfa9eba8784 100644 (file)
@@ -1,47 +1,11 @@
-# $Id: Makefile.in,v 1.6 1998/02/11 12:14:03 tom Exp $
-##############################################################################
-# Copyright (c) 1998 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.                                                             #
-##############################################################################
+# $Id: Makefile.in,v 1.9 1999/09/18 23:33:48 tom Exp $
+# Makefile for tack
 #
-# Author: Thomas E. Dickey <dickey@clark.net> 1997
+# The variable 'srcdir' refers to the source-distribution, and can be set with
+# the configure script by "--srcdir=DIR".
 #
-# Makefile for terminfo/termcap test program
-#
-# The following pre-processor variables may be set.
-# 
-# SELECT       Use this define if your operating system has the select
-#              system call.
-#
-# WAIT_MODE    Use this define if your operating system cannot tell if
-#              a chracter is ready in the input queue.  Funtion keys
-#              must be padded with blanks.
-#
-#      If generated without pre-processor variables, a terminfo test
-#      program will be generated for System V Release 3.
+# The rules are organized to produce the libraries for the configured models,
+# and the programs with the configured default model.
 
 # turn off _all_ suffix rules; we'll generate our own
 .SUFFIXES:
 SHELL          = /bin/sh
 THIS           = Makefile
 
+CF_MFLAGS      = @cf_cv_makeflags@
+@SET_MAKE@
+x              = @PROG_EXT@
+
 MODEL          = ../@DFT_OBJ_SUBDIR@
 INSTALL_PREFIX = @INSTALL_PREFIX@
 srcdir         = @srcdir@
@@ -56,16 +24,22 @@ prefix              = @prefix@
 exec_prefix    = @exec_prefix@
 bindir         = @bindir@
 libdir         = @libdir@
+includedir     = @includedir@
+datadir                = @datadir@
+
+ticdir         = $(datadir)/terminfo
 
 INSTALL                = @INSTALL@
 INSTALL_PROGRAM        = @INSTALL_PROGRAM@
 
+AWK            = @AWK@
+LN_S           = @LN_S@
+
 CC             = @CC@
 CFLAGS         = @CFLAGS@
 
 INCDIR         = $(srcdir)/../include
-CPPFLAGS       = -I../tack -I$(srcdir) @CPPFLAGS@ \
-                 -DHAVE_CONFIG_H -DSELECT 
+CPPFLAGS       = -DHAVE_CONFIG_H -I../tack -I$(srcdir) @CPPFLAGS@
 
 CCFLAGS                = $(CPPFLAGS) $(CFLAGS)
 
@@ -79,14 +53,12 @@ CFLAGS_DEFAULT      = $(CFLAGS_@DFT_UPR_MODEL@)
 LD             = @LD@
 LINK           = $(CC)
 LDFLAGS                = @EXTRA_LDFLAGS@ \
-               -L../lib \
-               -L$(libdir) \
-               -lncurses@DFT_ARG_SUFFIX@ @LDFLAGS@ @LD_MODEL@ @LIBS@ @EXTRA_LIBS@
+               @PROG_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@ @EXTRA_LIBS@
 
 LDFLAGS_NORMAL = $(LDFLAGS)
 LDFLAGS_DEBUG  = $(LDFLAGS) @CC_G_OPT@
 LDFLAGS_PROFILE        = $(LDFLAGS) -pg
-LDFLAGS_SHARED = $(LDFLAGS) @CC_SHARED_OPTS@ @LD_SHARED_OPTS@
+LDFLAGS_SHARED = $(LDFLAGS) @CC_SHARED_OPTS@ @LD_SHARED_OPTS@
 
 LDFLAGS_DEFAULT        = $(LDFLAGS_@DFT_UPR_MODEL@)
 
@@ -94,8 +66,37 @@ LINT         = @LINT@
 LINT_OPTS      = @LINT_OPTS@
 LINT_LIBS      = -lncurses @LIBS@
 
-# This would be $(SHARED_OBJS), but make cannot handle this much forward ref.
-TACK_DEPS      = \
+PROGS = tack$x
+
+# Default library, for linking applications
+DEPS_CURSES = ../lib/libncurses@DFT_DEP_SUFFIX@
+
+################################################################################
+all:   $(PROGS)
+
+sources:
+
+install: install.tack
+uninstall: uninstall.tack
+
+# this line simplifies the configure-script
+install.libs:
+uninstall.libs:
+
+install.tack: $(PROGS) $(INSTALL_PREFIX)$(bindir)
+       $(INSTALL_PROGRAM) tack$x    $(INSTALL_PREFIX)$(bindir)/tack$x
+
+uninstall.tack:
+       -@rm -f $(INSTALL_PREFIX)$(bindir)/tack$x
+
+$(INSTALL_PREFIX)$(bindir) :
+       $(srcdir)/../mkinstalldirs $@
+
+#
+# Rules for building tack
+#
+
+DEPS_TACK = \
        $(MODEL)/ansi.o \
        $(MODEL)/charset.o \
        $(MODEL)/color.o \
@@ -113,55 +114,45 @@ TACK_DEPS = \
        $(MODEL)/sysdep.o \
        $(MODEL)/tack.o
 
-TARGET         = tack
-
-all:   $(TACK_DEPS) $(TARGET) 
-
-sources:
+tack$x: $(DEPS_TACK) $(DEPS_CURSES)
+       @ECHO_LINK@ $(LINK) $(DEPS_TACK) $(LDFLAGS_DEFAULT) -o $@
 
-$(TARGET): $(TACK_DEPS)
-       @ echo linking $@ ... ; $(LINK) $(TACK_DEPS) $(LDFLAGS_DEFAULT) -o $@
+#
+# Utility productions start here
+#
 
-$(TACK_DEPS): $(srcdir)/tack.h
+tags:
+       ctags *.[ch]
 
-lint:
-       lint $(C_SRC)
+TAGS:
+       etags *.[ch]
 
-mostlyclean :
-       -rm -f core tags TAGS *~ *.ln *.atac trace
-
-clean :: mostlyclean 
-       rm -f $(TACK_DEPS) $(TARGET) tack.tar tack.tar.gz
+clean ::
+       -rm -f tags TAGS do.tic *~
+       -rm -f $(PROGS)
 
 distclean :: clean
        -rm -f Makefile
 
-realclean : distclean
-
-# vi tags
-tags: $(C_SRC) $(DIR)/tack.h
-       ctags $(>)
+mostlyclean :: clean
 
-# emacs tags
-TAGS: $(C_SRC)
-       etags $(C_SRC)
+realclean :: distclean
 
-install: $(TARGET)
-       $(INSTALL_PROGRAM) $(TARGET) $(INSTALL_PREFIX)$(bindir)/$(TARGET)
+tack.tar: Makefile.in modules *.[ch] tack.1 HISTORY COPYING
+       tar -cvf tack.tar Makefile.in modules *.[ch] tack.1 HISTORY COPYING
 
-list: $(srcdir)/tack.h $(C_SRC)
-       for name in $(>) ; \
-       do \
-               ucb cat -n $$name | ucb pr -h "$$name" | ucb lpr ; \
-       done
+# These rules are used to allow "make -n" to work on a clean directory-tree
+../include/hashsize.h \
+../include/parametrized.h \
+../include/term.h :
+       cd ../include; $(MAKE) $(CF_MFLAGS)
 
-#      archive a backup copy
-arch: $(srcdir)/Makefile $(srcdir)/tack.h $(C_SRC)
-       rm -f tack.a
-       ar q tack.a $(>)
+$(DEPS_CURSES) :
+       cd ../ncurses; $(MAKE) $(CF_MFLAGS)
 
-tack.tar.gz: tack.tar
-       gzip tack.tar
+lint:
+       $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/clear.c                          $(LINT_LIBS)
 
-tack.tar: makefile *.[ch] tack.1 HISTORY
-       tar -cvf tack.tar makefile *.[ch] tack.1 HISTORY
+###############################################################################
+# The remainder of this file is automatically generated during configuration
+###############################################################################
diff --git a/tack/README b/tack/README
new file mode 100644 (file)
index 0000000..c1b0286
--- /dev/null
@@ -0,0 +1,5 @@
+-- $Id: README,v 1.1 1999/04/18 01:41:31 tom Exp $
+
+The 'tack' program is distributed with ncurses, but is not an integral
+part of ncurses (the two are licensed differently, and the tack directory
+may be removed without causing ncurses to configure or build properly).
diff --git a/tack/ansi.c b/tack/ansi.c
new file mode 100644 (file)
index 0000000..a514a9c
--- /dev/null
@@ -0,0 +1,889 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: ansi.c,v 1.2 1999/08/21 23:11:57 tom Exp $")
+
+/*
+ * Standalone tests for ANSI terminals.  Three entry points:
+ * test_ansi_graphics(), test_ansi_reports() and test_ansi_sgr().
+ */
+
+/*****************************************************************************
+ *
+ * Test ANSI status reports
+ *
+ *****************************************************************************/
+
+/* ASCII control characters */
+#define A_DC1 0x11             /* Control Q */
+#define A_DC3 0x13             /* Control S */
+#define A_ESC 0x1b
+#define A_DCS 0x90
+#define A_CSI 0x9b
+#define A_ST  0x9c
+
+#define MAX_MODES 256
+
+static char default_bank[] = "\033(B\017";
+static int private_use, ape, terminal_class, got_escape;
+static short ansi_value[256];
+static char ansi_buf[512], pack_buf[512];
+static char *ach, *pch;
+
+struct ansi_reports {
+       int lvl, final;
+       const char *text;
+       const char *request;
+};
+
+static struct ansi_reports report_list[] = {
+       {0, 'c', "(DA) Primary device attributes", "\033[0c"},
+       {1, 0, "(DSR) Terminal status", "\033[5n"},
+       {1, 'R', "(DSR) Cursor position", "\033[6n"},
+       {62, 0, "(DA) Secondary device attributes", "\033[>0c"},
+       {62, 0, "(DSR) Printer status", "\033[?15n"},
+       {62, 0, "(DSR) Function key definition", "\033[?25n"},
+       {62, 0, "(DSR) Keyboard language", "\033[?26n"},
+       {63, 0, "(DECRQSS) Data destination", "\033P$q$}\033\\"},
+       {63, 0, "(DECRQSS) Status line type", "\033P$q$~\033\\"},
+       {63, 0, "(DECRQSS) Erase attribute", "\033P$q\"q\033\\"},
+       {63, 0, "(DECRQSS) Personality", "\033P$q\"p\033\\"},
+       {63, 0, "(DECRQSS) Top and bottom margins", "\033P$qr\033\\"},
+       {63, 0, "(DECRQSS) Character attributes", "\033P$qm\033\\"},
+       {63, 0, "(DECRQSS) Illegal request", "\033P$q@\033\\"},
+       {63, 0, "(DECRQUPSS) User pref suplemental set", "\033[&u"},
+       {63, 0, "(DECRQPSR) Cursor information", "\033[1$w"},
+       {63, 0, "(DECRQPSR) Tab stop information", "\033[2$w"},
+       {64, 0, "(DA) Tertiary device attributes", "\033[=0c"},
+       {64, 0, "(DSR) Extended cursor position", "\033[?6n"},
+       {64, 0, "(DSR) Macro space", "\033[?62n"},
+       {64, 0, "(DSR) Memory checksum", "\033[?63n"},
+       {64, 0, "(DSR) Data integrity", "\033[?75n"},
+       {64, 0, "(DSR) Multiple session status", "\033[?85n"},
+       {64, 0, "(DECRQSS) Attribute change extent", "\033P$q*x\033\\"},
+       {64, 0, "(DECRQSS) Columns per page", "\033P$q$|\033\\"},
+       {64, 0, "(DECRQSS) Lines per page", "\033P$qt\033\\"},
+       {64, 0, "(DECRQSS) Lines per screen", "\033P$q*|\033\\"},
+       {64, 0, "(DECRQSS) Left and right margins", "\033P$qs\033\\"},
+       {64, 0, "(DECRQSS) Local functions", "\033P$q+q\033\\"},
+       {64, 0, "(DECRQSS) Local function key control", "\033P$q=}\033\\"},
+       {64, 0, "(DECRQSS) Select modifier key reporting", "\033P$q+r\033\\"},
+       {64, 0, "(DECRQDE) Window report", "\033[\"v"},
+       {0, 0, 0, 0}
+};
+
+struct request_control {
+       const char *text;
+       const char *expect;
+       const char *request;
+       const char *set_mode;
+       const char *reset_mode;
+};
+
+/* Request control function selection or setting */
+static const struct request_control rqss[] = {
+       {"Data sent to screen", "0", "$}", "\033[0$}", 0},
+       {"Data sent to disabled status line", "0", "$}", 0, 0},
+       {"\033[0$~\033[1$}", "\033[0$}", 0, 0, 0},
+       {"Data sent to enabled status line", "1", "$}", 0, 0},
+       {"\033[2$~\033[1$}", "\033[0$}", 0, 0, 0},
+       {"Disbale status line", "0", "$~", "\033[0$~", 0},
+       {"Top status line", "1", "$~", "\033[1$~", 0},
+       {"Bottom status line", "2", "$~", "\033[2$~", 0},
+       {"Eraseable character", "0", "\"q", "\033[0\"q", 0},
+       {"Noneraseable character", "1", "\"q", "\033[1\"q", "\033[0\"q"},
+       {"Top and bottom margins", "3;10", "r", "\0337\033[3;10r", 0},
+       {"\033[r\0338", 0, 0, 0, 0},
+       {"Top and bottom margins", "default", "r", "\0337\033[r", "\0338"},
+       {"Character attributes, dim, bold", "1", "m", "\033[2;1m", "\033[m"},
+       {"Character attributes, bold, dim", "2", "m", "\033[1;2m", "\033[m"},
+       {"Character attributes, under, rev", "4;7", "m", "\033[4;7m", "\033[m"},
+       {"Character attributes, color", "35;42", "m", "\033[35;42m", "\033[m"},
+       {"All character attributes", "", "m", "\033[1;2;3;4;5;6;7;8;9m", 0},
+       {"\033[m", 0, 0, 0, 0},
+       {0, 0, 0, 0, 0}
+};
+
+/*
+**     pack_ansi()
+**
+**     read and pack an ANSI character
+*/
+static int 
+pack_ansi(void)
+{
+       int ch;
+
+       if (*pch)
+               return *pch++;
+
+       while (1) {
+               ch = getchp(char_mask);
+               if (ch == EOF)
+                       return EOF;
+               if (ch == A_DC1 || ch == A_DC3)
+                       continue;
+               *ach++ = ch;
+               *ach = '\0';
+               if (got_escape && ch >= ' ') {
+                       got_escape = 0;
+                       if (ch < '@' || ch > '_') {
+                               *pch++ = A_ESC;
+                               *pch = ch;
+                               pch[1] = '\0';
+                               return A_ESC;
+                       }
+                       ch += 0x40;
+                       break;
+               } else if (ch == A_ESC) {
+                       got_escape = 1;
+               } else {
+                       break;
+               }
+       }
+       *pch++ = ch;
+       *pch = '\0';
+       return ch;
+}
+
+
+/*
+**     read_ansi()
+**
+**     read an ANSI status report from terminal
+*/
+static void
+read_ansi(void)
+{
+       int ch;
+
+       fflush(stdout);
+       ach = ansi_buf;
+       pch = pack_buf;
+       ansi_buf[0] = pack_buf[0] = '\0';
+       got_escape = 0;
+       ch = pack_ansi();
+       if (ch == A_ESC)
+               do {
+                       ch = pack_ansi();
+                       if (ch == EOF)
+                               return;
+               } while (ch < '0' || ch > '~');
+       else
+       if (ch == A_CSI)
+               do {
+                       ch = pack_ansi();
+                       if (ch == EOF)
+                               return;
+               } while (ch < '@' || ch > '~');
+       else
+       if (ch == A_DCS)
+               do {
+                       ch = pack_ansi();
+                       if (ch == EOF)
+                               return;
+               } while (ch != A_ST);
+       return;
+}
+
+/*
+**     valid_mode(expected)
+**
+**     read a terminal mode status report and parse the result
+**     Return TRUE if we got the expected terminating character.
+*/
+static int
+valid_mode(int expected)
+{
+       char *s;
+       int ch, terminator;
+
+       read_ansi();
+
+       ape = 0;
+       ch = pack_buf[0] & 0xff;
+       ansi_value[0] = 0;
+       if (ch != A_CSI && ch != A_DCS)
+               return FALSE;
+
+       s = pack_buf + 1;
+       private_use = 0;
+       if ((*s >= '<') & (*s <= '?')) {
+               private_use = *s++;
+       }
+       terminator = 0;
+       for (; (ch = *s); s++) {
+               if (ch >= '0' && ch <= '9')
+                       ansi_value[ape] = ansi_value[ape] * 10 + ch - '0';
+               else if (ch == ';' || ch == ':')
+                       ansi_value[++ape] = 0;
+               else if (ch >= '<' && ch <= '?')
+                       private_use = ch;
+               else if (ch >= ' ')
+                       terminator = (terminator << 8) | ch;
+               else
+                       break;
+       }
+       return terminator == expected;
+}
+
+/*
+**     read_reports()
+**
+**     read all the reports in the ANSI report structure
+*/
+static int
+read_reports(void)
+{
+       int i, j, k, tc, vcr, lc;
+       char *s;
+
+       lc = 5;
+       terminal_class = tc = 0;
+       for (i = 0; report_list[i].text; i++, lc++) {
+               if (terminal_class < report_list[i].lvl &&
+                       tc < report_list[i].lvl) {
+                       put_crlf();
+                       menu_prompt();
+                       ptext(" <return> to continue > ");
+                       j = wait_here();
+                       if (j != 'c' && j != 'C')
+                               return j;
+                       tc = report_list[i].lvl;
+               } else if (lc + 2 >= lines) {
+                       put_crlf();
+                       ptext("Hit any key to continue ");
+                       (void) wait_here();
+                       lc = 1;
+               }
+               sprintf(temp, "%s (%s) ", report_list[i].text,
+                       expand_command(report_list[i].request));
+               ptext(temp);
+               for (j = strlen(temp); j < 49; j++)
+                       putchp(' ');
+               tc_putp(report_list[i].request);
+               vcr = 0;
+               if (report_list[i].final == 0) {
+                       read_ansi();
+               } else if (valid_mode(report_list[i].final))
+                       switch (report_list[i].final) {
+                       case 'c':
+                               terminal_class = ansi_value[0];
+                               break;
+                       case 'R':
+                               vcr = TRUE;
+                               break;
+                       }
+               j = pack_buf[0] & 0xff;
+               if (j == A_CSI || j == A_DCS) {
+                       s = expand(ansi_buf);
+                       if (char_count + expand_chars >= columns) {
+                               put_str("\r\n        ");
+                               lc++;
+                       }
+                       put_str(s);
+               }
+               put_crlf();
+               if (vcr) {      /* find out how big the screen is */
+                       tc_putp(report_list[i].request);
+                       if (!valid_mode('R'))
+                               continue;
+                       j = ansi_value[0];
+                       k = ansi_value[1];
+                       tc_putp("\033[255B\033[255C\033[6n");
+                       if (!valid_mode('R'))
+                               continue;
+                       sprintf(temp, "\033[%d;%dH", j, k);
+                       tc_putp(temp);
+                       ptext("(DSR) Screen size (CSI 6 n)");
+                       for (j = char_count; j < 50; j++)
+                               putchp(' ');
+                       sprintf(temp, "%d x %d", ansi_value[1], ansi_value[0]);
+                       ptextln(temp);
+
+               }
+       }
+       menu_prompt();
+       ptext(" r->repeat test, <return> to continue > ");
+       return wait_here();
+}
+
+/*
+**     request_cfss()
+**
+**     Request Control function selection or settings
+*/
+static int
+request_cfss(void)
+{
+       int i, j, k, l, ch;
+       char *s;
+
+       put_clear();
+       ptextln("Request                         Expected  Received");
+       put_crlf();
+       for (i = 0; rqss[i].text; i++) {
+               ptext(rqss[i].text);
+               j = strlen(rqss[i].text) + strlen(rqss[i].expect);
+               putchp(' ');
+               for (j++; j < 40; j++)
+                       putchp(' ');
+               ptext(rqss[i].expect);
+               putchp(' ');
+               tc_putp(rqss[i].set_mode);
+               sprintf(temp, "\033P$q%s\033\\", rqss[i].request);
+               tc_putp(temp);
+               read_ansi();
+               tc_putp(rqss[i].reset_mode);
+               putchp(' ');
+               for (j = 0; ansi_buf[j]; j++) {
+                       if (ansi_buf[j] == 'r') {
+                               for (k = j++; (ch = (ansi_buf[k] & 0xff)); k++)
+                                       if (ch == A_ESC) {
+                                               break;
+                                       } else if (ch == A_ST) {
+                                               break;
+                                       }
+                               ansi_buf[k] = '\0';
+                               s = expand(&ansi_buf[j]);
+                               if (char_count + expand_chars >= columns)
+                                       put_str("\r\n        ");
+                               put_str(s);
+                       }
+               }
+               put_crlf();
+       }
+       /* calculate the valid attributes */
+       ptext("Valid attributes:         0");
+       j = 0;
+       for (i = 1; i < 20; i++) {
+               sprintf(temp, "\033[0;%dm\033P$qm\033\\", i);
+               tc_putp(temp);
+               (void) valid_mode('m');
+               if (ape > 0) {
+                       j = i;
+                       sprintf(temp, "\033[0m; %d", i);
+                       tc_putp(temp);
+               }
+       }
+       put_crlf();
+       /* calculate how many parameters can be sent */
+       ptext("Max number of parameters: ");
+       sprintf(temp, "%dm\033P$qm\033\\", j);
+       l = -1;
+       if (j > 0)
+               for (l = 1; l < 33; l++) {
+                       tc_putp("\033[0");
+                       for (ch = 1; ch <= l; ch++)
+                               put_this(';');
+                       tc_putp(temp);
+                       (void) valid_mode('m');
+                       if (ape == 0)
+                               break;
+               }
+       tc_putp("\033[m");
+       if (l >= 0) {
+               sprintf(temp, "%d", l);
+               ptext(temp);
+       } else
+               ptext("unknown");
+       put_crlf();
+       return wait_here();
+}
+
+/*
+**     mode_display(puc, mode, initial, set, reset)
+**
+**     print the mode display entry
+*/
+static void
+mode_display(const char *p, int n, int c, char s, char r)
+{
+       int k;
+
+       sprintf(temp, "%s%d (%c, %c, %c)", p, n, c, s, r);
+       k = strlen(temp);
+       if (char_count + k >= columns)
+               put_crlf();
+       for (; k < 14; k++)
+               putchp(' ');
+       put_str(temp);
+}
+
+/*
+**     terminal_state()
+**
+**     test DECRQM status reports
+*/
+static void
+terminal_state(void)
+{
+       static const char *puc[] = {"", "<", "=", ">", "?", 0};
+
+       int i, j, k, l, modes_found;
+       char *s;
+       char buf[256], tms[256];
+       int mode_puc[MAX_MODES], mode_number[MAX_MODES];
+       char set_value[MAX_MODES], reset_value[MAX_MODES];
+       char current_value[MAX_MODES];
+
+       ptext("Testing terminal mode status. (CSI 0 $ p)");
+       tc_putp("\033[0$p");
+       modes_found = 0;
+       tms[0] = '\0';
+       if (valid_mode(('$' << 8) | 'y')) {
+               for (i = 0; puc[i]; i++) {
+                       put_crlf();
+                       if (i) {
+                               sprintf(temp, "Private use: %c", puc[i][0]);
+                       } else {
+                               strcpy(temp, "Standard modes:");
+                       }
+                       k = strlen(temp);
+                       ptext(temp);
+                       for (j = 0; j < (int) sizeof(buf); buf[j++] = ' ')
+                               ;
+                       for (j = l = 0; j < 255 && j - l < 50; j++) {
+                               sprintf(temp, "\033[%s%d$p", puc[i], j);
+                               tc_putp(temp);
+                               if (!valid_mode(('$' << 8) | 'y')) {
+                                       /* not valid, save terminating value */
+                                       s = expand(ansi_buf);
+                                       sprintf(tms, "%s%s%d %s  ", tms,
+                                               puc[i], j, s);
+                                       break;
+                               }
+                               if (private_use != puc[i][0])
+                                       break;
+                               if (ansi_value[0] != j)
+                                       break;
+                               if (ansi_value[1]) {
+                                       l = j;
+                                       if (k > 70) {
+                                               buf[k] = '\0';
+                                               put_crlf();
+                                               ptextln(buf);
+                                               for (k = 0; k < (int) sizeof(buf);) {
+                                                       buf[k++] = ' ';
+                                               }
+                                               k = 0;
+                                       }
+                                       sprintf(temp, " %d", j);
+                                       ptext(temp);
+                                       k += strlen(temp);
+                                       buf[k - 1] = ansi_value[1] + '0';
+                                       if (modes_found >= MAX_MODES)
+                                               continue;
+                                       current_value[modes_found] =
+                                               ansi_value[1] + '0';
+                                       /* some modes never return */
+                                       if ((i == 0 && j == 13) /* control execution */
+                                               || (puc[i][0] == '?' && j == 2))        /* VT52 */
+                                               set_value[modes_found] =
+                                                       reset_value[modes_found] = '-';
+                                       else
+                                               set_value[modes_found] =
+                                                       reset_value[modes_found] = ' ';
+                                       mode_puc[modes_found] = i;
+                                       mode_number[modes_found++] = j;
+                               }
+                       }
+                       buf[k] = '\0';
+                       if (buf[k - 1] != ' ') {
+                               put_crlf();
+                               ptext(buf);
+                       }
+               }
+
+       if ((i = modes_found) != 0) {
+               put_crlf();
+               put_crlf();
+               if (tms[0]) {
+                       ptextln(tms);
+               }
+               ptext("Hit 'Y' to test mode set/reset states: ");
+               i = wait_here();
+       }
+       if (i == 'y' || i == 'Y')
+               while (1) {
+#ifdef STATUSFIX
+                       FILE *fp;
+
+#ifdef TEDANSI
+                       fp = fopen("ted.ansi", "w");
+#else
+                       fp = fopen("/dev/console", "w");
+#endif
+#endif
+                       for (i = j = 0; j < modes_found; j = ++i >> 1) {
+                               if (set_value[j] == '-')
+                                       continue;
+                               k = (current_value[j] ^ i) & 1;
+                               sprintf(temp, "\033[%s%d%c\033[%s%d$p",
+                                       puc[mode_puc[j]], mode_number[j],
+                                       k ? 'l' : 'h',
+                                       puc[mode_puc[j]], mode_number[j]);
+#ifdef STATUSFIX
+                               if (fp) {
+                                       fprintf(fp, "%s\n", expand(temp));
+                                       fflush(fp);
+                               }
+#endif
+                               tc_putp(temp);
+                               if (!valid_mode(('$' << 8) | 'y'))
+                                       continue;
+                               if (k) {
+                                       reset_value[j] = ansi_value[1] + '0';
+                               } else {
+                                       set_value[j] = ansi_value[1] + '0';
+                               }
+                       }
+                       put_str("\033[30l");    /* added for GORT bug
+                                                  (WY-185) */
+#ifdef STATUSFIX
+                       if (fp)
+                               fclose(fp);
+#endif
+                       tty_set();
+                       /* print the results */
+                       put_clear();
+                       putln("mode (initial, set, reset)");
+                       for (j = 0; j < modes_found; j++) {
+                               mode_display(puc[mode_puc[j]], mode_number[j],
+                                       current_value[j], set_value[j], reset_value[j]);
+                       }
+                       ptext("\n\nHit 'R' to repeat test.  'S' to sort results: ");
+                       i = wait_here();
+                       if (i == 's' || i == 'S') {     /* print the same stuff,
+                                                          sorted by
+                                                          current_value */
+                               put_crlf();
+                               for (i = '1'; i <= '4'; i++) {
+                                       for (j = 0; j < modes_found; j++) {
+                                               if (current_value[j] == i)
+                                                       mode_display(puc[mode_puc[j]],
+                                                               mode_number[j], current_value[j],
+                                                               set_value[j], reset_value[j]);
+                                       }
+                               }
+                               ptext("\n\nHit 'R' to repeat test: ");
+                               i = wait_here();
+                       }
+                       if (i != 'r' && i != 'R')
+                               break;
+                       tty_raw(1, char_mask);
+               }
+       } else {
+               tty_set();
+       }
+}
+
+
+/*
+**     ansi_report_help()
+**
+**     Display the informational data for the ANSI report test.
+*/
+static void
+ansi_report_help(void)
+{
+       ptext("Begin ANSI status report testing. ");
+       ptext(" Parity bit set will be displayed in reverse video. ");
+       ptext(" If the terminal hangs, hit any alphabetic key. ");
+       ptextln(" Use c to continue testing.  Use any other letter to quit.");
+       put_crlf();
+}
+
+/*
+**     test_ansi_reports()
+**
+**     Test the ANSI status report functions
+*/
+void
+tools_status(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       int i;
+
+       put_clear();
+       ansi_report_help();
+       tty_raw(1, char_mask);
+
+       do {
+               i = read_reports();
+               if (i != 'r' && i != 'R') {
+                       *ch = i;
+                       return;
+               }
+       } while (i);
+
+       if (terminal_class >= 63) {
+               do {
+                       i = request_cfss();
+               } while (i == 'r' || i == 'R');
+               *ch = i;
+               terminal_state();
+       } else {
+               tty_set();
+       }
+}
+
+
+/*
+**     display_sgr()
+**
+**     Test a range of ANSI sgr attributes
+**     puc -> Private Use Character
+*/
+static void 
+display_sgr(int puc)
+{
+       int k;
+
+       temp[0] = puc;
+       temp[1] = '\0';
+       for (k = 0; k < 80; k++) {
+               if (char_count + 8 > 80)
+                       put_crlf();
+               else if (char_count + 8 > columns)
+                       put_crlf();
+               else if (k > 0)
+                       printf(" ");
+               printf("\033[%s%dmMode %2d\033[0m", temp, k, k);
+               char_count += 8;
+               if (puc == '\0') {
+                       if (k == 19)
+                               printf("\033[10m");
+                       if (k == 39)
+                               printf("\033[37m");
+                       if (k == 49)
+                               printf("\033[40m");
+               }
+       }
+       put_crlf();
+       if (puc == '<')
+               printf("\033[<1m");
+       else if (puc)
+               printf("\033[%s0m", temp);
+       set_attr(0);
+}
+
+/*
+**     print_sgr20(on, off)
+**
+**     print the sgr line for sgr20()
+*/
+static void 
+print_sgr20(int on, int off)
+{
+       if (char_count > columns - 13) {
+               put_crlf();
+       } else if (char_count) {
+               put_str("  ");
+       }
+       char_count += 11;
+       printf("%d/%d \033[%dmon\033[%dm off\033[0m", on, off, on, off);
+}
+
+/*
+**     sgr20(void)
+**
+**     display the enter/exit attributes 1-9 and 20-29
+*/
+static void 
+sgr20(void)
+{
+       int k;
+
+       put_crlf();
+       ptextln("Test enter/exit attributes 1-9 and 21-29.");
+       for (k = 1; k < 10; k++) {
+               print_sgr20(k, k + 20);
+       }
+       print_sgr20(1, 22);     /* bold */
+       print_sgr20(2, 22);     /* dim */
+       print_sgr20(8, 22);     /* blank */
+       printf("\033[0m");
+       set_attr(0);
+}
+
+/*
+**     tools_sgr(testlist, state, ch)
+**
+**     Run the ANSI graphics rendition mode tool
+**     Return the last character typed.
+*/
+void
+tools_sgr(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       int k;
+
+       put_clear();
+       for (k = 0;;) {
+               display_sgr(k);
+               put_crlf();
+               menu_prompt();
+               ptext("/sgr Enter =><?r [<cr>] > ");
+               k = wait_here();
+               if ((k == 'r') || (k == 'R')) {
+                       k = 0;
+               } else if ((k < '<') || (k > '?')) {
+                       break;
+               }
+       }
+       sgr20();
+
+       put_newlines(2);
+       *ch = REQUEST_PROMPT;
+}
+
+/*****************************************************************************
+ *
+ * Test ANSI graphics
+ *
+ *****************************************************************************/
+/*
+**     select_bank(bank)
+**
+**     select a graphics character set for ANSI terminals
+*/
+static void
+select_bank(char *bank)
+{
+       tc_putp(bank);
+       switch (bank[1] & 3) {
+       case 0:
+               putchp('O' & 0x1f);     /* control O */
+               break;
+       case 1:
+               putchp('N' & 0x1f);     /* control N */
+               tc_putp("\033~");
+               break;
+       case 2:
+               tc_putp("\033n\033}");
+               break;
+       case 3:
+               tc_putp("\033o\033|");
+               break;
+       }
+}
+
+/*
+**     show_characters(bank, bias)
+**
+**     print the ANSI graphics characters
+*/
+static void
+show_characters(char *bank, int bias)
+{
+       int i;
+
+       sprintf(temp, "G%d GL   ", bank[1] & 3);
+       ptext(temp);
+       select_bank(bank);
+       for (i = ' '; i < 0x80; i++) {
+               if (char_count >= columns ||
+                       (i != ' ' && (i & 31) == 0))
+                       put_str("\n        ");
+               putchp(i + bias);
+       }
+       select_bank(default_bank);
+       put_str("   DEL <");
+       select_bank(bank);
+       putchp(0x7f + bias);
+       select_bank(default_bank);
+       putchp('>');
+       put_crlf();
+       put_crlf();
+}
+
+
+/* ANSI graphics test
+        94     96   character sets
+   G0   (      ,
+   G1   )      -
+   G2   *      .
+   G3   +      /
+
+Standard Definitions
+   A    UK
+   B    US ASCII
+
+Dec extended definitions
+   0    Special graphics
+
+ */
+
+/*
+**     tools_charset(testlist, state, ch)
+**
+**     Run the ANSI alt-charset mode tool
+*/
+void
+tools_charset(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *chp GCC_UNUSED)
+{
+       int j, ch;
+       char bank[32];
+
+       put_clear();
+       ptext("Enter the bank ()*+,-./ followed by the character set");
+       ptext(" 0123456789:;<=>? for private use, and");
+       ptextln(" @A...Z[\\]^_`a...z{|}~ for standard sets.");
+       strcpy(bank, "\033)0");
+       for (; bank[0];) {
+               put_crlf();
+               show_characters(bank, 0);
+
+               /* G0 will not print in GR */
+               if (bank[1] & 3) {
+                       show_characters(bank, 0x80);
+               }
+               ptext("bank+set> ");
+               for (j = 1; (ch = getchp(char_mask)); j++) {
+                       if (ch == EOF)
+                               break;
+                       putchp(ch);
+                       if (j == 1 && ch > '/')
+                               j++;
+                       bank[j] = ch;
+                       if (ch < ' ' || ch > '/')
+                               break;
+                       if (j + 1 >= (int) sizeof(bank))
+                               break;
+               }
+               if (j == 1)
+                       break;
+               if (bank[j] < '0' || bank[j] > '~')
+                       break;
+               bank[j + 1] = '\0';
+       }
+       put_crlf();
+}
diff --git a/tack/charset.c b/tack/charset.c
new file mode 100644 (file)
index 0000000..c31b78b
--- /dev/null
@@ -0,0 +1,709 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: charset.c,v 1.2 1999/05/09 18:30:49 tom Exp $")
+
+/*
+       Menu definitions for alternate character set and SGR tests.
+*/
+
+static void charset_bel(struct test_list *t, int *state, int *ch);
+static void charset_flash(struct test_list *t, int *state, int *ch);
+static void charset_civis(struct test_list *t, int *state, int *ch);
+static void charset_cvvis(struct test_list *t, int *state, int *ch);
+static void charset_cnorm(struct test_list *t, int *state, int *ch);
+static void charset_hs(struct test_list *t, int *state, int *ch);
+static void charset_status(struct test_list *t, int *state, int *ch);
+static void charset_dsl(struct test_list *t, int *state, int *ch);
+static void charset_enacs(struct test_list *t, int *state, int *ch);
+static void charset_smacs(struct test_list *t, int *state, int *ch);
+static void charset_attributes(struct test_list *t, int *state, int *ch);
+static void charset_sgr(struct test_list *t, int *state, int *ch);
+
+const struct test_list acs_test_list[] = {
+       {0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
+       {MENU_NEXT, 3, "bel", 0, 0, charset_bel, 0},
+       {MENU_NEXT, 3, "flash", 0, 0, charset_flash, 0},
+       {MENU_NEXT, 3, "civis", 0, 0, charset_civis, 0},
+       {MENU_NEXT, 3, "cvvis", 0, 0, charset_cvvis, 0},
+       {MENU_NEXT, 3, "cnorm", 0, 0, charset_cnorm, 0},
+       {MENU_NEXT, 3, "hs", 0, 0, charset_hs, 0},
+       {MENU_NEXT, 3, "tsl) (fsl) (wsl", "hs", 0, charset_status, 0},
+       {MENU_NEXT, 3, "dsl", "hs", 0, charset_dsl, 0},
+       {MENU_NEXT, 0, "acsc) (enacs) (smacs) (rmacs", 0, 0, charset_enacs, 0},
+       {MENU_NEXT, 0, "smacs) (rmacs", 0, 0, charset_smacs, 0},
+       {MENU_NEXT, 11, 0, 0, 0, charset_attributes, 0},
+       {MENU_NEXT, 11, "sgr) (sgr0", "ma", 0, charset_sgr, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+const struct mode_list alt_modes[] = {
+       {"normal", "(sgr0)", "(sgr0)", 1},
+       {"standout", "(smso)", "(rmso)", 2},
+       {"underline", "(smul)", "(rmul)", 4},
+       {"reverse", "(rev)", "(sgr0)", 8},
+       {"blink", "(blink)", "(sgr0)", 16},
+       {"dim", "(dim)", "(sgr0)", 32},
+       {"bold", "(bold)", "(sgr0)", 64},
+       {"invis", "(invis)", "(sgr0)", 128},
+       {"protect", "(prot)", "(sgr0)", 256},
+       {"altcharset", "(smacs)", "(rmacs)", 512}
+};
+
+/* On many terminals the underline attribute is the last scan line.
+   This is OK unless the following line is reverse video.
+   Then the underline attribute does not show up.  The following map
+   will reorder the display so that the underline attribute will
+   show up. */
+const int mode_map[10] = {0, 1, 3, 4, 5, 6, 7, 8, 9, 2};
+
+struct graphics_pair {
+       unsigned char c;
+       const char *name;
+};
+
+static struct graphics_pair glyph[] = {
+       {'+', "arrow pointing right"},
+       {',', "arrow pointing left"},
+       {'.', "arrow pointing down"},
+       {'0', "solid square block"},
+       {'i', "lantern symbol"},
+       {'-', "arrow pointing up"},
+       {'`', "diamond"},
+       {'a', "checker board (stipple)"},
+       {'f', "degree symbol"},
+       {'g', "plus/minus"},
+       {'h', "board of squares"},
+       {'j', "lower right corner"},
+       {'k', "upper right corner"},
+       {'l', "upper left corner"},
+       {'m', "lower left corner"},
+       {'n', "plus"},
+       {'o', "scan line 1"},
+       {'p', "scan line 3"},
+       {'q', "horizontal line"},
+       {'r', "scan line 7"},
+       {'s', "scan line 9"},
+       {'t', "left tee (|-)"},
+       {'u', "right tee (-|)"},
+       {'v', "bottom tee(_|_)"},
+       {'w', "top tee (T)"},
+       {'x', "vertical line"},
+       {'y', "less/equal"},
+       {'z', "greater/equal"},
+       {'{', "Pi"},
+       {'|', "not equal"},
+       {'}', "UK pound sign"},
+       {'~', "bullet"},
+       {'\0', "\0"}
+};
+
+/*
+**     charset_hs(test_list, status, ch)
+**
+**     (hs) test Has status line
+*/
+static void
+charset_hs(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (has_status_line != 1) {
+               ptext("(hs) Has-status line is not defined.  ");
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     charset_status(test_list, status, ch)
+**
+**     (tsl) (fsl) (wsl) test Status line
+*/
+static void
+charset_status(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, max;
+       char *s;
+       static char m[] = "*** status line *** 123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.";
+
+       if (has_status_line != 1) {
+               return;
+       }
+       put_clear();
+       max = width_status_line == -1 ? columns : width_status_line;
+       sprintf(temp, "Terminal has status line of %d characters", max);
+       ptextln(temp);
+
+       put_str("This line s");
+       s = tparm(to_status_line, 0);
+       tc_putp(s);
+       for (i = 0; i < max; i++)
+               putchp(m[i]);
+       tc_putp(from_status_line);
+       putln("hould not be broken.");
+       ptextln("If the previous line is not a complete sentence then (tsl) to-status-line, (fsl) from-status-line, or (wsl) width-of-status-line is incorrect."  );
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     charset_dsl(test_list, status, ch)
+**
+**     (dsl) test Disable status line
+*/
+static void
+charset_dsl(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (has_status_line != 1) {
+               return;
+       }
+       if (dis_status_line) {
+               ptextln("Disable status line (dsl)");
+               tc_putp(dis_status_line);
+               ptext("If you can still see the status line then (dsl) disable-status-line has failed.  ");
+       } else {
+               ptext("(dsl) Disable-status-line is not defined.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+
+void 
+eat_cookie(void)
+{                              /* put a blank if this is not a magic cookie
+                                  terminal */
+       if (magic_cookie_glitch < 1)
+               putchp(' ');
+}
+
+
+void 
+put_mode(char *s)
+{                              /* send the attribute string (with or without
+                                  % execution) */
+       tc_putp(tparm(s));              /* allow % execution */
+}
+
+
+void
+set_attr(int a)
+{                              /* set the attribute from the bits in a */
+       int i, b[32];
+
+       if (magic_cookie_glitch > 0) {
+               char_count += magic_cookie_glitch;
+       }
+       if (a == 0 && exit_attribute_mode) {
+               put_mode(exit_attribute_mode);
+               return;
+       }
+       for (i = 0; i < 31; i++) {
+               b[i] = (a >> i) & 1;
+       }
+       tc_putp(tparm(set_attributes, b[1], b[2], b[3], b[4], b[5],
+                       b[6], b[7], b[8], b[9]));
+}
+
+/*
+**     charset_sgr(test_list, status, ch)
+**
+**     (sgr) test Set Graphics Rendition
+*/
+static void
+charset_sgr(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!set_attributes) {
+               ptext("(sgr) Set-graphics-rendition is not defined.  ");
+               generic_done_message(t, state, ch);
+               return;
+       }
+       if (!exit_attribute_mode) {
+               ptextln("(sgr0) Set-graphics-rendition-zero is not defined.");
+               /* go ahead and test anyway */
+       }
+       ptext("Test video attributes (sgr)");
+
+       for (i = 0; i < (int) (sizeof(alt_modes) / sizeof(struct mode_list));
+               i++) {
+               put_crlf();
+               sprintf(temp, "%d %-20s", i, alt_modes[i].name);
+               put_str(temp);
+               set_attr(alt_modes[i].number);
+               sprintf(temp, "%s", alt_modes[i].name);
+               put_str(temp);
+               set_attr(0);
+       }
+
+       putln("\n\nDouble mode test");
+       for (i = 0; i <= 9; i++) {
+               sprintf(temp, " %2d ", mode_map[i]);
+               put_str(temp);
+       }
+       for (i = 0; i <= 9; i++) {
+               put_crlf();
+               sprintf(temp, "%d", mode_map[i]);
+               put_str(temp);
+               for (j = 0; j <= 9; j++) {
+                       eat_cookie();
+                       set_attr((1 << mode_map[i]) | (1 << mode_map[j]));
+                       put_str("Aa");
+                       set_attr(0);
+                       if (j < 9)
+                               eat_cookie();
+               }
+       }
+       put_crlf();
+
+       if (max_attributes >= 0) {
+               sprintf(temp, "(ma) Maximum attributes %d  ", max_attributes);
+               ptext(temp);
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     test_one_attr(mode-number, begin-string, end-string)
+**
+**     Display one attribute line.
+*/
+static void
+test_one_attr(
+       int n,
+       char *begin_mode,
+       char *end_mode)
+{
+       int i;
+
+       sprintf(temp, "%-10s %s ", alt_modes[n].name, alt_modes[n].begin_mode);
+       ptext(temp);
+       for (; char_count < 19;) {
+               putchp(' ');
+       }
+       if (begin_mode) {
+               putchp('.');
+               put_mode(begin_mode);
+               put_str(alt_modes[n].name);
+               for (i = strlen(alt_modes[n].name); i < 13; i++) {
+                       putchp(' ');
+               }
+               if (end_mode) {
+                       put_mode(end_mode);
+                       sprintf(temp, ". %s", alt_modes[n].end_mode);
+               } else {
+                       set_attr(0);
+                       strcpy(temp, ". (sgr)");
+               }
+               ptextln(temp);
+       } else {
+               for (i = 0; i < magic_cookie_glitch; i++)
+                       putchp('*');
+               put_str("*** missing ***");
+               for (i = 0; i < magic_cookie_glitch; i++)
+                       putchp('*');
+               put_crlf();
+       }
+}
+
+/*
+**     charset_attributes(test_list, status, ch)
+**
+**     Test SGR
+*/
+static void
+charset_attributes(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       putln("Test video attributes");
+       test_one_attr(1, enter_standout_mode, exit_standout_mode);
+       test_one_attr(2, enter_underline_mode, exit_underline_mode);
+       test_one_attr(9, enter_alt_charset_mode, exit_alt_charset_mode);
+       if (!exit_attribute_mode && !set_attributes) {
+               ptextln("(sgr0) exit attribute mode is not defined.");
+               generic_done_message(t, state, ch);
+               return;
+       }
+       test_one_attr(3, enter_reverse_mode, exit_attribute_mode);
+       test_one_attr(4, enter_blink_mode, exit_attribute_mode);
+       test_one_attr(5, enter_dim_mode, exit_attribute_mode);
+       test_one_attr(6, enter_bold_mode, exit_attribute_mode);
+       test_one_attr(7, enter_secure_mode, exit_attribute_mode);
+       test_one_attr(8, enter_protected_mode, exit_attribute_mode);
+       generic_done_message(t, state, ch);
+}
+
+#define GLYPHS 256
+
+/*
+**     charset_smacs(test_list, status, ch)
+**
+**     display all posible acs characters
+**     (smacs) (rmacs)
+*/
+static void
+charset_smacs(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, c;
+
+       if (enter_alt_charset_mode) {
+               put_clear();
+               ptextln("The following characters are available. (smacs) (rmacs)");
+               for (i = ' '; i <= '`'; i += 32) {
+                       put_crlf();
+                       put_mode(exit_alt_charset_mode);
+                       for (c = 0; c < 32; c++) {
+                               putchp(c + i);
+                       }
+                       put_crlf();
+                       put_mode(enter_alt_charset_mode);
+                       for (c = 0; c < 32; c++) {
+                               putchp(c + i);
+                       }
+                       put_mode(exit_alt_charset_mode);
+                       put_crlf();
+               }
+               put_mode(exit_alt_charset_mode);
+               put_crlf();
+               generic_done_message(t, state, ch);
+       }
+}
+
+
+static void
+test_acs(
+       int attr)
+{                              /* alternate character set */
+       int i, j;
+       char valid_glyph[GLYPHS];
+       char acs_table[GLYPHS];
+       static unsigned char vt100[] = "`afgjklmnopqrstuvwxyz{|}~";
+
+       line_count = 0;
+       for (i = 0; i < GLYPHS; i++) {
+               valid_glyph[i] = FALSE;
+               acs_table[i] = i;
+       }
+       if (acs_chars) {
+               sprintf(temp, "Alternate character set map: %s",
+                       expand(acs_chars));
+               putln(temp);
+               for (i = 0; acs_chars[i]; i += 2) {
+                       if (acs_chars[i + 1] == 0) {
+                               break;
+                       }
+                       for (j = 0;; j++) {
+                               if (glyph[j].c == (unsigned char) acs_chars[i]) {
+                                       acs_table[glyph[j].c] = acs_chars[i + 1];
+                                       valid_glyph[glyph[j].c] = TRUE;
+                                       break;
+                               }
+                               if (glyph[j].name[0] == '\0') {
+                                       if (isgraph(acs_chars[i])) {
+                                               sprintf(temp, "    %c",
+                                                       acs_chars[i]);
+                                       } else {
+                                               sprintf(temp, " 0x%02x",
+                                                       (acs_chars[i] & 0xff));
+                                       }
+                                       strcpy(&temp[5], " *** has no mapping ***");
+                                       putln(temp);
+                                       break;
+                               }
+                       }
+               }
+       } else {
+               ptextln("acs_chars not defined (acsc)");
+               /* enable the VT-100 graphics characters (default) */
+               for (i = 0; vt100[i]; i++) {
+                       valid_glyph[vt100[i]] = TRUE;
+               }
+       }
+       if (attr) {
+               set_attr(attr);
+       }
+       _nc_init_acs(); /* puts 'ena_acs' and incidentally links acs_map[] */
+       for (i = 0; glyph[i].name[0]; i++) {
+               if (valid_glyph[glyph[i].c]) {
+                       put_mode(enter_alt_charset_mode);
+                       put_this(acs_table[glyph[i].c]);
+                       char_count++;
+                       put_mode(exit_alt_charset_mode);
+                       if (magic_cookie_glitch >= 1) {
+                               sprintf(temp, " %-30.30s", glyph[i].name);
+                               put_str(temp);
+                               if (char_count + 33 >= columns)
+                                       put_crlf();
+                       } else {
+                               sprintf(temp, " %-24.24s", glyph[i].name);
+                               put_str(temp);
+                               if (char_count + 26 >= columns)
+                                       put_crlf();
+                       }
+                       if (line_count >= lines) {
+                               (void) wait_here();
+                               put_clear();
+                       }
+               }
+       }
+       if (char_count > 1) {
+               put_crlf();
+       }
+#ifdef ACS_ULCORNER
+       maybe_wait(5);
+       put_mode(enter_alt_charset_mode);
+       put_this(ACS_ULCORNER);
+       put_this(ACS_TTEE);
+       put_this(ACS_URCORNER);
+       put_this(ACS_ULCORNER);
+       put_this(ACS_HLINE);
+       put_this(ACS_URCORNER);
+       char_count += 6;
+       put_mode(exit_alt_charset_mode);
+       put_crlf();
+       put_mode(enter_alt_charset_mode);
+       put_this(ACS_LTEE);
+       put_this(ACS_PLUS);
+       put_this(ACS_RTEE);
+       put_this(ACS_VLINE);
+       if (magic_cookie_glitch >= 1)
+               put_this(' ');
+       else {
+               put_mode(exit_alt_charset_mode);
+               put_this(' ');
+               put_mode(enter_alt_charset_mode);
+       }
+       put_this(ACS_VLINE);
+       char_count += 6;
+       put_mode(exit_alt_charset_mode);
+       put_str("   Here are 2 boxes");
+       put_crlf();
+       put_mode(enter_alt_charset_mode);
+       put_this(ACS_LLCORNER);
+       put_this(ACS_BTEE);
+       put_this(ACS_LRCORNER);
+       put_this(ACS_LLCORNER);
+       put_this(ACS_HLINE);
+       put_this(ACS_LRCORNER);
+       char_count += 6;
+       put_mode(exit_alt_charset_mode);
+       put_crlf();
+#endif
+}
+
+/*
+**     charset_bel(test_list, status, ch)
+**
+**     (bel) test Bell
+*/
+static void
+charset_bel(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (bell) {
+               ptextln("Testing bell (bel)");
+               tc_putp(bell);
+               ptext("If you did not hear the Bell then (bel) has failed.  ");
+       } else {
+               ptext("(bel) Bell is not defined.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     charset_flash(test_list, status, ch)
+**
+**     (flash) test Visual bell
+*/
+static void
+charset_flash(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (flash_screen) {
+               ptextln("Testing visual bell (flash)");
+               tc_putp(flash_screen);
+               ptext("If you did not see the screen flash then (flash) has failed.  ");
+       } else {
+               ptext("(flash) Flash is not defined.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     charset_civis(test_list, status, ch)
+**
+**     (civis) test Cursor invisible
+*/
+static void
+charset_civis(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (cursor_normal) {
+               if (cursor_invisible) {
+                       ptext("(civis) Turn off the cursor.  ");
+                       tc_putp(cursor_invisible);
+                       ptext("If you can still see the cursor then (civis) has failed.  ");
+               } else {
+                       ptext("(civis) Cursor-invisible is not defined.  ");
+               }
+               generic_done_message(t, state, ch);
+               tc_putp(cursor_normal);
+       }
+}
+
+/*
+**     charset_cvvis(test_list, status, ch)
+**
+**     (cvvis) test Cursor very visible
+*/
+static void
+charset_cvvis(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (cursor_normal) {
+               if (cursor_visible) {
+                       ptext("(cvvis) Make cursor very visible.  ");
+                       tc_putp(cursor_visible);
+                       ptext("If the cursor is not very visible then (cvvis) has failed.  ");
+               } else {
+                       ptext("(cvvis) Cursor-very-visible is not defined.  ");
+               }
+               generic_done_message(t, state, ch);
+               tc_putp(cursor_normal);
+       }
+}
+
+/*
+**     charset_cnorm(test_list, status, ch)
+**
+**     (cnorm) test Cursor normal
+*/
+static void
+charset_cnorm(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (cursor_normal) {
+               ptext("(cnorm) Normal cursor.  ");
+               tc_putp(cursor_normal);
+               ptext("If the cursor is not normal then (cnorm) has failed.  ");
+       } else {
+               ptext("(cnorm) Cursor-normal is not defined.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     charset_enacs(test_list, status, ch)
+**
+**     test Alternate character set mode and alternate characters
+**     (acsc) (enacs) (smacs) (rmacs)
+*/
+static void
+charset_enacs(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int c, i;
+
+       if (enter_alt_charset_mode || acs_chars) {
+               c = 0;
+               while (1) {
+                       put_clear();
+                       /*
+                          for terminals that use separate fonts for
+                          attributes (such as X windows) the line
+                          drawing characters must be checked for
+                          each font.
+                       */
+                       if (c >= '0' && c <= '9') {
+                               test_acs(alt_modes[c - '0'].number);
+                               set_attr(0);
+                       } else {
+                               test_acs(0);
+                       }
+
+                       while (1) {
+                               ptextln("[r] to repeat, [012345789] to test with attributes on, [?] for a list of attributes, anything else to go to next test.  ");
+                               generic_done_message(t, state, ch);
+                               if (*ch != '?') {
+                                       break;
+                               }
+                               for (i = 0; i <= 9; i++) {
+                                       sprintf(temp, " %d %s %s", i, alt_modes[i].begin_mode,
+                                               alt_modes[i].name);
+                                       ptextln(temp);
+                               }
+                       }
+                       if (*ch >= '0' && *ch <= '9') {
+                               c = *ch;
+                       } else
+                       if (*ch != 'r') {
+                               break;
+                       }
+               }
+       } else {
+               ptext("(smacs) Enter-alt-char-set-mode and (acsc) Alternate-char-set are not defined.  ");
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     charset_can_test()
+**
+**     Initialize the can_test data base
+*/
+void
+charset_can_test(void)
+{
+       int i;
+
+       for (i = 0; i < 9; i++) {
+               can_test(alt_modes[i].begin_mode, FLAG_CAN_TEST);
+               can_test(alt_modes[i].end_mode, FLAG_CAN_TEST);
+       }
+}
diff --git a/tack/color.c b/tack/color.c
new file mode 100644 (file)
index 0000000..710538a
--- /dev/null
@@ -0,0 +1,767 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: color.c,v 1.1 1999/04/18 01:24:45 tom Exp $")
+
+/*
+ * Color terminal tests.  Has only one entry point: test_color().
+ */
+
+static void color_check(struct test_list *, int *, int *);
+static void color_setf(struct test_list *, int *, int *);
+static void color_matrix(struct test_list *, int *, int *);
+static void color_ncv(struct test_list *, int *, int *);
+static void color_ccc(struct test_list *, int *, int *);
+static void color_bce(struct test_list *, int *, int *);
+
+struct test_list color_test_list[] = {
+       {0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
+       {MENU_NEXT, 2, "colors) (pairs", 0, 0, color_check, 0},
+       {MENU_NEXT, 12, "setf) (setb) (scp", 0, 0, color_setf, 0},
+       {MENU_NEXT, 24, "op", 0, 0, color_matrix, 0},
+       {MENU_NEXT, 16, "ncv", 0, 0, color_ncv, 0},
+       {MENU_NEXT, 0, "bce", 0, 0, color_bce, 0},
+       {MENU_NEXT | MENU_CLEAR, 0, "ccc) (initc) (initp", "hls op oc", 0, color_ccc, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+#ifndef COLOR_BLACK
+#define COLOR_BLACK     0
+#define COLOR_BLUE      1
+#define COLOR_GREEN     2
+#define COLOR_CYAN      3
+#define COLOR_RED       4
+#define COLOR_MAGENTA   5
+#define COLOR_YELLOW    6
+#define COLOR_WHITE     7
+#endif
+
+struct color_table {
+       const char *name;
+       int index;
+       int r, g, b;
+       int h, l, s;
+};
+
+static struct color_table def_colors[8] = {
+       {"black  ", COLOR_BLACK, 0, 0, 0, 0, 0, 0},
+       {"blue   ", COLOR_BLUE, 0, 0, 1000, 330, 50, 100},
+       {"green  ", COLOR_GREEN, 0, 1000, 0, 240, 50, 100},
+       {"cyan   ", COLOR_CYAN, 0, 1000, 1000, 300, 50, 100},
+       {"red    ", COLOR_RED, 1000, 0, 0, 120, 50, 100},
+       {"magenta", COLOR_MAGENTA, 1000, 0, 1000, 60, 50, 100},
+       {"yellow ", COLOR_YELLOW, 1000, 1000, 0, 180, 50, 100},
+       {"white  ", COLOR_WHITE, 1000, 1000, 1000, 0, 100, 0}
+};
+
+#define MAX_PAIR       256
+static int fg_color[MAX_PAIR] = {COLOR_BLACK, COLOR_BLUE, COLOR_GREEN,
+COLOR_CYAN, COLOR_RED, COLOR_MAGENTA, COLOR_YELLOW, COLOR_WHITE};
+static int bg_color[MAX_PAIR] = {COLOR_BLACK, COLOR_BLACK, COLOR_BLACK,
+COLOR_BLACK, COLOR_BLACK, COLOR_BLACK, COLOR_BLACK, COLOR_BLACK};
+static int pairs_used = 8;
+static int a_bright_color, bright_value;
+static int cookie_monster, color_step, colors_per_line;
+static int R, G, B;
+
+static int
+color_trans(int c)
+{                              /* translate or load the color */
+       int i;
+
+       for (i = 0; i < pairs_used; i++) {
+               if (fg_color[i] == c) {
+                       return i;
+               }
+       }
+       if (!can_change) {
+               return 0;
+       }
+       if (pairs_used > max_colors || pairs_used >= MAX_PAIR) {
+               pairs_used = 0;
+               ptextln("Ran out of colors");
+       }
+       fg_color[pairs_used] = c;
+       bg_color[pairs_used] = c;
+       if (hue_lightness_saturation) {
+               tc_putp(tparm(initialize_color, pairs_used,
+                       def_colors[c].h, def_colors[c].l, def_colors[c].s));
+       } else {
+               tc_putp(tparm(initialize_color, pairs_used,
+                       def_colors[c].r, def_colors[c].g, def_colors[c].b));
+       }
+       return pairs_used++;
+}
+
+static void
+new_color(
+       int fg,
+       int bg,
+       int hungry)
+{                              /* change the color to fg and bg. */
+       int i;
+
+       if (hungry) {
+               eat_cookie();
+       }
+       if (set_a_foreground) {
+               /* set ANSI color (setaf) (setab) */
+               tc_putp(tparm(set_a_foreground, fg));
+               tc_putp(tparm(set_a_background, bg));
+       } else if (set_foreground) {
+               /* make sure black is zero */
+               (void) color_trans(COLOR_BLACK);
+               tc_putp(tparm(set_foreground, color_trans(fg)));
+               tc_putp(tparm(set_background, color_trans(bg)));
+       } else {        /* set color pair */
+               for (i = 0; i < pairs_used; i++) {
+                       if (fg_color[i] == fg && bg_color[i] == bg) {
+                               tc_putp(tparm(set_color_pair, i));
+                               if (hungry) {
+                                       eat_cookie();
+                               }
+                               return;
+                       }
+               }
+               if (!can_change) {
+                       /* try to set just the foreground */
+                       for (i = pairs_used - 1; i; i--) {
+                               if (fg_color[i] == fg)
+                                       break;
+                       }
+                       tc_putp(tparm(set_color_pair, i));
+                       if (hungry) {
+                               eat_cookie();
+                       }
+                       return;
+               }
+               if (pairs_used > max_pairs || pairs_used >= MAX_PAIR) {
+                       pairs_used = 0;
+                       ptextln("Ran out of color pairs");
+               }
+               fg_color[pairs_used] = fg;
+               bg_color[pairs_used] = bg;
+               if (hue_lightness_saturation) {
+                       tc_putp(tparm(initialize_pair, pairs_used,
+                               def_colors[fg].h, def_colors[fg].l, def_colors[fg].s,
+                               def_colors[bg].h, def_colors[bg].l, def_colors[bg].s));
+               } else {
+                       tc_putp(tparm(initialize_pair, pairs_used,
+                               def_colors[fg].r, def_colors[fg].g, def_colors[fg].b,
+                               def_colors[bg].r, def_colors[bg].g, def_colors[bg].b));
+               }
+               tc_putp(tparm(set_color_pair, pairs_used));
+               pairs_used++;
+       }
+       if (hungry) {
+               eat_cookie();
+       }
+}
+
+
+static void
+set_color_step(void)
+{                              /* set the color_step for the (ccc) display */
+       int i;
+
+       for (i = 2; i < 1000; i++) {
+               if ((i * i * i) >= max_colors) {
+                       break;
+               }
+       }
+       color_step = 1000 / (i - 1);
+}
+
+
+static void
+rgb_2_hls(int r, int g, int b, int *h, int *l, int *s)
+{                              /* convert RGB to HLS system */
+       int min, max, t;
+
+       if ((min = g < r ? g : r) > b) {
+               min = b;
+       }
+       if ((max = g > r ? g : r) < b) {
+               max = b;
+       }
+
+       /* calculate lightness */
+       *l = (min + max) / 20;
+
+       if (min == max) {       /* black, white and all shades of gray */
+               *h = 0;
+               *s = 0;
+               return;
+       }
+       /* calculate saturation */
+       if (*l < 50) {
+               *s = ((max - min) * 100) / (max + min);
+       } else {
+               *s = ((max - min) * 100) / (2000 - max - min);
+       }
+
+       /* calculate hue */
+       if (r == max) {
+               t = 120 + ((g - b) * 60) / (max - min);
+       } else if (g == max) {
+               t = 240 + ((b - r) * 60) / (max - min);
+       } else {
+               t = 360 + ((r - g) * 60) / (max - min);
+       }
+       *h = t % 360;
+}
+
+
+static void
+send_color(int p, int r, int g, int b)
+{                              /* send the initialize_color (initc) command */
+       int h, l, s;
+
+       if (hue_lightness_saturation) {
+               rgb_2_hls(r, g, b, &h, &l, &s);
+               tc_putp(tparm(initialize_color, p, h, l, s));
+       } else {
+               tc_putp(tparm(initialize_color, p, r, g, b));
+       }
+}
+
+
+static void
+send_pair(int p, int fr, int fg, int fb, int br, int bg, int bb)
+{                              /* send the initialize_pair (initp) command */
+       int fh, fl, fs, bh, bl, bs;
+
+       if (hue_lightness_saturation) {
+               rgb_2_hls(fr, fg, fb, &fh, &fl, &fs);
+               rgb_2_hls(br, bg, bb, &bh, &bl, &bs);
+               tc_putp(tparm(initialize_pair, p, fh, fl, fs, bh, bl, bs));
+       } else {
+               tc_putp(tparm(initialize_pair, p, fr, fg, fb, bb, bg, bb));
+       }
+}
+
+
+static int
+load_palette(int n)
+{                              /* load the color palette */
+       int rgb;
+
+       for (;;) {
+               if (pairs_used >= n) {
+                       return FALSE;
+               }
+               if (set_a_foreground || set_foreground) {
+                       if (pairs_used >= max_colors) {
+                               return FALSE;
+                       }
+                       send_color(pairs_used, R, G, B);
+                       rgb = R + G + B;
+                       if (rgb > bright_value) {
+                               bright_value = rgb;
+                               a_bright_color = pairs_used;
+                       }
+               } else {
+                       if (pairs_used >= max_pairs) {
+                               return FALSE;
+                       }
+                       if (pairs_used == 0) {
+                               send_pair(pairs_used, 1000, 1000, 1000, R, G, B);
+                       } else {
+                               send_pair(pairs_used, R, G, B, R, G, B);
+                       }
+               }
+               pairs_used++;
+               if ((B += color_step) > 1000) {
+                       B = 0;
+                       if ((G += color_step) > 1000) {
+                               G = 0;
+                               if ((R += color_step) > 1000) {
+                                       return TRUE;
+                               }
+                       }
+               }
+       }
+}
+
+
+static int
+rainbow(int n)
+{                              /* print the programable color display */
+       int i, c, d, palette_full, initial_pair;
+       static const struct {
+               const char *name;
+               char ch;
+       }  splat[] = {
+               {"Bg normal", ' '},
+               {"Fg normal", ' '},
+               {0, 0}
+       };
+
+       if ((set_a_foreground || set_foreground)
+         ? pairs_used >= max_colors
+         : pairs_used >= max_pairs) {
+               ptext("New palette: ");
+               (void) wait_here();
+               initial_pair = pairs_used = 1;
+               bright_value = 0;
+       } else if (line_count + 3 >= lines) {
+               ptext("Go: ");
+               (void) wait_here();
+               put_clear();
+               initial_pair = pairs_used = 1;
+               bright_value = 0;
+               n++;
+       } else {
+               initial_pair = pairs_used;
+               n += initial_pair;
+       }
+       palette_full = load_palette(n);
+       for (d = 0; splat[d].name; d++) {
+               c = splat[d].ch;
+               if (d == 1) {
+                       put_mode(enter_reverse_mode);
+               }
+               for (i = initial_pair; i < n; i++) {
+                       if (i >= pairs_used) {
+                               break;
+                       }
+                       if (set_a_foreground) {
+                               if (i >= max_colors) {
+                                       break;
+                               }
+                               tc_putp(tparm(set_a_foreground, i));
+                               tc_putp(tparm(set_a_background, i));
+                       } else if (set_foreground) {
+                               if (i >= max_colors) {
+                                       break;
+                               }
+                               tc_putp(tparm(set_foreground, i));
+                               tc_putp(tparm(set_background, i));
+                       } else {
+                               if (i >= max_pairs) {
+                                       break;
+                               }
+                               tc_putp(tparm(set_color_pair, i));
+                       }
+                       putchp(c);
+               }
+               if (d == 1) {
+                       put_mode(exit_attribute_mode);
+               }
+               if (set_a_foreground) {
+                       tc_putp(tparm(set_a_foreground, a_bright_color));
+                       tc_putp(tparm(set_a_background, 0));
+               } else if (set_foreground) {
+                       tc_putp(tparm(set_foreground, a_bright_color));
+                       tc_putp(tparm(set_background, 0));
+               } else {
+                       tc_putp(tparm(set_color_pair, 0));
+               }
+               put_str("   ");
+               put_str(splat[d].name);
+               put_crlf();
+       }
+       return palette_full;
+}
+
+
+static void
+ncv_display(int m)
+{                              /* print the no_color_video (ncv) test line */
+       putchp('0' + m);
+       putchp(' ');
+       eat_cookie();
+       set_attr(1 << m);
+       sprintf(temp, "%-11s", alt_modes[m].name);
+       put_str(temp);
+
+       new_color(COLOR_BLUE, COLOR_BLACK, TRUE);
+       put_str("blue");
+
+       new_color(COLOR_BLACK, COLOR_GREEN, TRUE);
+       put_str("green");
+
+       new_color(COLOR_WHITE, COLOR_BLACK, TRUE);
+       put_str(alt_modes[m].name);
+       eat_cookie();
+       set_attr(0);
+       put_crlf();
+}
+
+
+static void
+dump_colors(void)
+{                              /* display the colors in some esthetic
+                                  pattern */
+       static int xmap[8] = {0, 3, 4, 7, 1, 2, 5, 6};
+       int i, j, k, xi, xj, width, p, cs;
+       int found_one;
+
+       cs = color_step <= 125 ? 125 : color_step;
+       width = (1000 / cs) + 1;
+       for (xi = 0; xi < 16; xi++) {
+               i = (xi & 8) ? xi ^ 15 : xi;
+               R = i * cs;
+               if (R <= 1000) {
+                       found_one = FALSE;
+                       for (xj = 0; xj < 32; xj++) {
+                               j = ((xj & 8) ? xj ^ 15 : xj) & 7;
+                               k = xmap[((xi >> 1) & 4) + (xj >> 3)];
+                               G = j * cs;
+                               B = k * cs;
+                               if (G <= 1000 && B <= 1000) {
+                                       p = (k * width + j) * width + i;
+                                       if (set_a_background) {
+                                               if (p >= max_colors) {
+                                                       continue;
+                                               }
+                                               send_color(p, R, G, B);
+                                               tc_putp(tparm(set_a_background, p));
+                                       } else if (set_background) {
+                                               if (p >= max_colors) {
+                                                       continue;
+                                               }
+                                               send_color(p, R, G, B);
+                                               tc_putp(tparm(set_background, p));
+                                       } else {
+                                               if (p >= max_pairs) {
+                                                       continue;
+                                               }
+                                               send_pair(p, R, G, B, R, G, B);
+                                               tc_putp(tparm(set_color_pair, p));
+                                       }
+                                       found_one = TRUE;
+                                       putchp(' ');
+                                       putchp(' ');
+                               }
+                       }
+                       if (found_one) {
+                               put_crlf();
+                       }
+               }
+       }
+}
+
+/*
+**     color_check(test_list, status, ch)
+**
+**     test (colors) and (pairs)
+*/
+static void
+color_check(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (max_colors <= 0 && max_pairs <= 0) {
+               ptext("This is not a color terminal; (colors) and (pairs) are missing.  ");
+               *state |= MENU_STOP;
+       } else {
+               sprintf(temp, "This terminal can display %d colors and %d color pairs.  (colors) (pairs)",
+                       max_colors, max_pairs);
+               ptextln(temp);
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     color_setf(test_list, status, ch)
+**
+**     test (setf) (setb) and (scp)
+*/
+static void
+color_setf(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (max_colors <= 0 && max_pairs <= 0) {
+               ptext("This is not a color terminal; (colors) and (pairs) are missing.  ");
+               generic_done_message(t, state, ch);
+               *state |= MENU_STOP;
+               return;
+       }
+       if ((set_a_foreground == NULL || set_a_background == NULL)
+        && (set_foreground == NULL   || set_background == NULL)
+        && set_color_pair == NULL) {
+               ptextln("Both set foreground (setaf/setf) and set color pair (scp) are not present.");
+               if (!set_a_background || !set_background) {
+                       ptextln("(setab/setb) set background not present");
+               }
+               ptext("These must be defined for color testing.  ");
+               generic_done_message(t, state, ch);
+               *state |= MENU_STOP;
+               return;
+       }
+       /* initialize the color palette */
+       pairs_used = max_colors >= 8 ? 8 : max_colors;
+       if (can_change) {
+               tc_putp(orig_colors);
+       }
+       tc_putp(tparm(orig_pair));
+       new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
+
+       ptextln("(setf) (setb) (scp) The following colors are predefined:");
+       ptextln("\n   Foreground     Background");
+       put_crlf();
+       j = max_colors > 8 ? 8 : max_colors;
+       /*
+          the black on white test is the same as the white on black test.
+       */
+       for (i = 1; i < j; i++) {
+               putchp('0' + def_colors[i].index);
+               putchp(' ');
+               sprintf(temp, " %s ", def_colors[i].name);
+
+               new_color(def_colors[i].index, COLOR_BLACK, TRUE);
+               put_str(temp);
+
+               new_color(COLOR_BLACK, COLOR_BLACK, TRUE);
+               put_str("  ");
+
+               new_color(COLOR_BLACK, def_colors[i].index, TRUE);
+               put_str(temp);
+
+               new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
+               put_crlf();
+       }
+       put_crlf();
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     color_matrix(test_list, status, ch)
+**
+**     test (pairs) (op)
+*/
+static void
+color_matrix(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j, matrix_size, matrix_area, brightness;
+
+       matrix_size = max_colors > 8 ? 8 : max_colors;
+
+       sprintf(temp, "(pairs) There are %d color pairs.", max_pairs);
+       ptextln(temp);
+
+       for ( ; matrix_size; matrix_size--) {
+               if (matrix_size * matrix_size <= max_pairs) {
+                       break;
+               }
+       }
+       matrix_area = matrix_size * matrix_size;
+       for (brightness = 0; brightness < 2; brightness++) {
+               put_crlf();
+               sprintf(temp,
+                       "%dx%d matrix of foreground/background colors, bright *o%s*",
+                       matrix_size, matrix_size, brightness ? "n" : "ff");
+               put_str(temp);
+
+               put_str("\n          ");
+               for (i = 0; i < matrix_size; i++) {
+                       (void) sprintf(temp, "%-8s", def_colors[i].name);
+                       put_str(temp);
+               }
+               for (j = 0; j < matrix_area; j++) {
+                       if (j % matrix_size == 0) {
+                               tc_putp(tparm(orig_pair));
+                               put_crlf();
+                               if (brightness) {
+                                       tc_putp(exit_standout_mode);
+                               }
+                               (void) sprintf(temp, "%-8s", def_colors[j / matrix_size].name);
+                               put_str(temp);
+                               if (brightness) {
+                                       put_mode(enter_bold_mode);
+                               }
+                       }
+                       new_color(def_colors[j % matrix_size].index,
+                               def_colors[j / matrix_size].index,
+                               FALSE);
+                       put_str("  Hello ");
+               }
+               tc_putp(tparm(orig_pair));
+               if (brightness) {
+                       tc_putp(exit_standout_mode);
+               }
+               put_crlf();
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     color_ncv(test_list, status, ch)
+**
+**     test (ncv)
+*/
+static void
+color_ncv(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (no_color_video == -1) {
+               /* I have no idea what this means */
+               return;
+       }
+       sprintf(temp, "According to no_color_video (ncv) which is %d, the following attributes should work correctly with color.", no_color_video);
+       ptextln(temp);
+       put_crlf();
+       set_attr(0);
+       ncv_display(0);
+       for (i = 1; i <= 9; i++) {
+               if (((no_color_video >> (mode_map[i] - 1)) & 1) == 0) {
+                       ncv_display(mode_map[i]);
+               }
+       }
+       if (no_color_video & 0x3ff) {
+               ptextln("\nThe following attributes should not work correctly with color. (ncv)\n");
+               for (i = 1; i <= 9; i++) {
+                       if ((no_color_video >> (mode_map[i] - 1)) & 1) {
+                               ncv_display(mode_map[i]);
+                       }
+               }
+       }
+       tc_putp(orig_pair);
+       put_crlf();
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     color_bce(test_list, status, ch)
+**
+**     test (bce) background color erase
+*/
+static void
+color_bce(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       new_color(COLOR_BLACK, COLOR_WHITE, FALSE);
+       put_clear();
+       put_newlines(2);
+       new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
+       ptextln("If the two lines above are black then back_color_erase (bce) should be false.");
+       sprintf(temp, "(bce) is %s in the data base.", back_color_erase ? "true" : "false");
+       ptextln(temp);
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     color_ccc(test_list, status, ch)
+**
+**     test (ccc) color palette test (oc) (op) (initc) (initp)
+*/
+static void
+color_ccc(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!can_change) {
+               ptextln("Terminal can not change colors (ccc)");
+               generic_done_message(t, state, ch);
+               return;
+       }
+       tc_putp(orig_colors);
+       pairs_used = 0;
+       new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
+       sprintf(temp, "Reloading colors (init%c) using %s method",
+               set_foreground ? 'c' : 'p',
+               hue_lightness_saturation ? "HLS" : "RGB");
+       ptextln(temp);
+       put_crlf();
+       j = max_colors > 7 ? 7 : max_colors;
+       /* redisplay the above test with reinitialized colors */
+       /* If these colors don't look right to you... */
+       for (i = 0; i < j; i++) {
+               sprintf(temp, " %s ", def_colors[i ^ 7].name);
+
+               new_color(i ^ 7, COLOR_BLACK, TRUE);
+               put_str(temp);
+
+               new_color(COLOR_BLACK, COLOR_BLACK, TRUE);
+               put_str("  ");
+
+               new_color(COLOR_BLACK, i ^ 7, TRUE);
+               put_str(temp);
+
+               new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
+               put_crlf();
+       }
+       generic_done_message(t, state, ch);
+       if (*ch != 0 && *ch != 'n') {
+               tc_putp(orig_colors);
+               tc_putp(tparm(orig_pair));
+               return;
+       }
+
+       pairs_used = 0;
+       cookie_monster = 0;
+       if (magic_cookie_glitch > 0) {
+               cookie_monster =
+                       ((set_a_foreground || set_foreground)
+                               ? magic_cookie_glitch : 0) +
+                       ((set_a_background || set_background)
+                               ? magic_cookie_glitch : 0) +
+                       (set_color_pair ? magic_cookie_glitch : 0);
+       }
+       set_color_step();
+       colors_per_line = max_colors > max_pairs
+               ? max_pairs : max_colors;
+       j = (columns - 14) / (cookie_monster + 1);
+       if (colors_per_line > j) {
+               colors_per_line = (j / i) * i;
+       }
+       sprintf(temp, "RGB color step %d, cookies %d", color_step,
+               cookie_monster);
+       ptextln(temp);
+
+       R = G = B = 0;
+       pairs_used = 0;
+       for (;;) {
+               if (rainbow(colors_per_line)) {
+                       break;
+               }
+       }
+       generic_done_message(t, state, ch);
+       if (*ch != 0 && *ch != 'n') {
+               tc_putp(orig_colors);
+               tc_putp(tparm(orig_pair));
+               return;
+       }
+       dump_colors();
+       tc_putp(orig_colors);
+       tc_putp(tparm(orig_pair));
+       generic_done_message(t, state, ch);
+}
diff --git a/tack/control.c b/tack/control.c
new file mode 100644 (file)
index 0000000..4c2158e
--- /dev/null
@@ -0,0 +1,657 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+MODULE_ID("$Id: control.c,v 1.2 1999/06/16 00:45:59 tom Exp $")
+
+/* terminfo test program control subroutines */
+
+#if HAVE_GETTIMEOFDAY
+#define MY_TIMER struct timeval
+#else
+#define MY_TIMER time_t
+#endif
+
+/* globals */
+int test_complete;             /* counts number of tests completed */
+
+char txt_longer_test_time[80]; /* +) use longer time */
+char txt_shorter_test_time[80];        /* -) use shorter time */
+int pad_test_duration = 1;     /* number of seconds for a pad test */
+int auto_pad_mode;             /* run the time tests */
+int no_alarm_event;            /* TRUE if the alarm has not gone off yet */
+int usec_run_time;             /* length of last test in microseconds */
+MY_TIMER stop_watch[MAX_TIMERS]; /* Hold the start timers */
+
+char txt_longer_augment[80];   /* >) use bigger augment */
+char txt_shorter_augment[80];  /* <) use smaller augment */
+
+/* caps under test data base */
+int tt_delay_max;              /* max number of milliseconds we can delay */
+int tt_delay_used;             /* number of milliseconds consumed in delay */
+const char *tt_cap[TT_MAX];    /* value of string */
+int tt_affected[TT_MAX];       /* lines or columns effected (repitition factor) */
+int tt_count[TT_MAX];          /* Number of times sent */
+int tt_delay[TT_MAX];          /* Number of milliseconds delay */
+int ttp;                       /* number of entries used */
+
+/* Saved value of the above data base */
+const char *tx_cap[TT_MAX];    /* value of string */
+int tx_affected[TT_MAX];       /* lines or columns effected (repitition factor) */
+int tx_count[TT_MAX];          /* Number of times sent */
+int tx_index[TT_MAX];          /* String index */
+int tx_delay[TT_MAX];          /* Number of milliseconds delay */
+int txp;                       /* number of entries used */
+int tx_characters;             /* printing characters sent by test */
+int tx_cps;                    /* characters per second */
+struct test_list *tx_source;   /* The test that generated this data */
+
+extern struct test_menu pad_menu;      /* Pad menu structure */
+extern struct test_list pad_test_list[];
+
+#define RESULT_BLOCK           1024
+static int blocks;             /* number of result blocks available */
+static struct test_results *results;   /* pointer to next available */
+struct test_results *pads[STRCOUNT];   /* save pad results here */
+
+/*
+**     event_start(number)
+**
+**     Begin the stopwatch at the current time-of-day.
+*/
+void
+event_start(int n)
+{
+#if HAVE_GETTIMEOFDAY
+       (void) gettimeofday(&stop_watch[n], (struct timezone *)0);
+#else
+       stop_watch[n] = time((time_t *)0);
+#endif
+}
+
+/*
+**     event_time(number)
+**
+**     Return the number of milliseconds since this stop watch began.
+*/
+long
+event_time(int n)
+{
+#if HAVE_GETTIMEOFDAY
+       MY_TIMER current_time;
+
+       (void) gettimeofday(&current_time, (struct timezone *)0);
+       return ((current_time.tv_sec - stop_watch[n].tv_sec) * 1000000)
+               + current_time.tv_usec - stop_watch[n].tv_usec;
+#else
+       return (time((time_t *)0) - stop_watch[n]) * 1000;
+#endif
+}
+
+/*****************************************************************************
+ *
+ * Execution control for string capability tests
+ *
+ *****************************************************************************/
+
+/*
+**     get_next_block()
+**
+**     Get a results block for pad test data.
+*/
+static struct test_results *
+get_next_block(void)
+{
+       if (blocks <= 0) {
+               results = (struct test_results *)
+                       malloc(sizeof(struct test_results) * RESULT_BLOCK);
+               if (!results) {
+                       ptextln("Malloc failed");
+                       return (struct test_results *) 0;
+               }
+               blocks = RESULT_BLOCK;
+       }
+       blocks--;
+       return results++;
+}
+
+/*
+**     set_augment_txt()
+**
+**     Initialize the augment menu selections
+*/
+void
+set_augment_txt(void)
+{
+       sprintf(txt_longer_augment,
+               ">) Change lines/characters effected to %d", augment << 1);
+       sprintf(txt_shorter_augment,
+               "<) Change lines/characters effected to %d", augment >> 1);
+}
+
+void
+control_init(void)
+{
+       sprintf(txt_longer_test_time, "+) Change test time to %d seconds",
+               pad_test_duration + 1);
+       sprintf(txt_shorter_test_time, "-) Change test time to %d seconds",
+               pad_test_duration - 1);
+       set_augment_txt();
+}
+
+/*
+**     msec_cost(cap, affected-count)
+**
+**     Return the number of milliseconds delay needed by the cap.
+*/
+int
+msec_cost(
+       const char *const cap,
+       int affcnt)
+{
+       int dec, value, total, star, ch;
+       const char *cp;
+
+       if (!cap) {
+               return 0;
+       }
+       total = 0;
+       for (cp = cap; *cp; cp++) {
+               if (*cp == '$' && cp[1] == '<') {
+                       star = 1;
+                       value = dec = 0;
+                       for (cp += 2; (ch = *cp); cp++) {
+                               if (ch >= '0' && ch <= '9') {
+                                       value = value * 10 + (ch - '0');
+                                       dec *= 10;
+                               } else
+                               if (ch == '.') {
+                                       dec = 1;
+                               } else
+                               if (ch == '*') {
+                                       star = affcnt;
+                               } else
+                               if (ch == '>') {
+                                       break;
+                               }
+                       }
+                       if (dec > 1) {
+                               total += (value * star) / dec;
+                       } else {
+                               total += (value * star);
+                       }
+               }
+       }
+       return total;
+}
+
+/*
+**     liberated(cap)
+**
+**     Return the cap without padding
+*/
+char *
+liberated(char *cap)
+{
+       static char cb[1024];
+       char *ts, *ls;
+
+       cb[0] = '\0';
+       ls = NULL;
+       if (cap) {
+               for (ts = cb; (*ts = *cap); ++cap) {
+                       if (*cap == '$' && cap[1] == '<') {
+                               ls = ts;
+                       }
+                       ++ts;
+                       if (*cap == '>') {
+                               if (ls) {
+                                       ts = ls;
+                                       ls = NULL;
+                               }
+                       }
+               }
+       }
+       return cb;
+}
+
+/*
+**     page_loop()
+**
+**     send CR/LF or go home and bump letter
+*/
+void
+page_loop(void)
+{
+       if (line_count + 2 >= lines) {
+               NEXT_LETTER;
+               go_home();
+       } else {
+               put_crlf();
+       }
+}
+
+/*
+**     skip_pad_test(test-list-entry, state, ch, text)
+**
+**     Print the start test line.  Handle start up commands.
+**     Return TRUE if a return is requested.
+*/
+int
+skip_pad_test(
+       struct test_list *test,
+       int *state,
+       int *ch,
+       const char *text)
+{
+       char rep_text[16];
+
+       while(1) {
+               if (text) {
+                       ptext(text);
+               }
+               if ((test->flags & MENU_LC_MASK)) {
+                       sprintf(rep_text, " *%d", augment);
+                       ptext(rep_text);
+               }
+               ptext(" [n] > ");
+               *ch = wait_here();
+               if (*ch == 's') {
+                       /* Skip is converted to next */
+                       *ch = 'n';
+                       return TRUE;
+               }
+               if (*ch == 'q') {
+                       /* Quit is converted to help */
+                       *ch = '?';
+                       return TRUE;
+               }
+               if (*ch == '\r' || *ch == '\n' || *ch == 'n' || *ch == 'r') {
+                       /* this is the only response that allows the test to run */
+                       *ch = 0;
+               }
+               if (subtest_menu(pad_test_list, state, ch)) {
+                       continue;
+               }
+               return (*ch != 0);
+       }
+}
+
+/*
+**     pad_done_message(test_list)
+**
+**     Print the Done message and request input.
+*/
+void
+pad_done_message(
+       struct test_list *test,
+       int *state,
+       int *ch)
+{
+       int default_action = 0;
+       char done_message[128];
+       char rep_text[16];
+
+       while (1) {
+               if ((test->flags & MENU_LC_MASK)) {
+                       sprintf(rep_text, "*%d", augment);
+               } else {
+                       rep_text[0] = '\0';
+               }
+               if (test->caps_done) {
+                       sprintf(done_message, "(%s)%s Done ", test->caps_done,
+                       rep_text);
+                       ptext(done_message);
+               } else {
+                       if (rep_text[0]) {
+                               ptext(rep_text);
+                               ptext(" ");
+                       }
+                       ptext("Done ");
+               }
+               if (debug_level & 2) {
+                       dump_test_stats(test, state, ch);
+               } else {
+                       *ch = wait_here();
+               }
+               if (*ch == '\r' || *ch == '\n') {
+                       *ch = default_action;
+                       return;
+               }
+               if (*ch == 's' || *ch == 'n') {
+                       *ch = 0;
+                       return;
+               }
+               if (strchr(pad_repeat_test, *ch)) {
+                       /* default action is now repeat */
+                       default_action = 'r';
+               }
+               if (subtest_menu(pad_test_list, state, ch)) {
+                       continue;
+               }
+               return;
+       }
+}
+
+/*
+**     sliding_scale(dividend, factor, divisor)
+**
+**     Return (dividend * factor) / divisor
+*/
+int
+sliding_scale(
+       int dividend,
+       int factor,
+       int divisor)
+{
+       double d = dividend;
+
+       if (divisor) {
+               d = (d * (double) factor) / (double) divisor;
+               return (int) (d + 0.5);
+       }
+       return 0;
+}
+
+/*
+**     pad_test_startup()
+**
+**     Do the stuff needed to begin a test.
+*/
+void
+pad_test_startup(
+       int do_clear)
+{
+       if (do_clear) {
+               put_clear();
+       }
+       repeats = augment;
+       raw_characters_sent = 0;
+       test_complete = ttp = char_count = tt_delay_used = 0;
+       letter = letters[letter_number = 0];
+       if (pad_test_duration <= 0) {
+               pad_test_duration = 1;
+       }
+       tt_delay_max = pad_test_duration * 1000;
+       set_alarm_clock(pad_test_duration);
+       event_start(TIME_TEST);
+}
+
+/*
+**     still_testing()
+**
+**     This function is called to see if the test loop should be terminated.
+*/
+int
+still_testing(void)
+{
+       fflush(stdout);
+       test_complete++;
+       return EXIT_CONDITION;
+}
+
+/*
+**     pad_test_shutdown()
+**
+**     Do the stuff needed to end a test.
+*/
+void
+pad_test_shutdown(
+       struct test_list *t,
+       int crlf)
+{
+       int i;
+       int counts;                     /* total counts */
+       int ss;                         /* Save string index */
+       int cpo;                        /* characters per operation */
+       int delta;                      /* difference in characters */
+       int bogus;                      /* Time is inaccurate */
+       struct test_results *r;         /* Results of current test */
+       int ss_index[TT_MAX];           /* String index */
+
+       if (tty_can_sync == SYNC_TESTED) {
+               bogus = tty_sync_error();
+       } else {
+               bogus = 1;
+       }
+       usec_run_time = event_time(TIME_TEST);
+       tx_source = t;
+       tx_characters = raw_characters_sent;
+       tx_cps = sliding_scale(tx_characters, 1000000, usec_run_time);
+
+       /* save the data base */
+       for (txp = ss = counts = 0; txp < ttp; txp++) {
+               tx_cap[txp]   = tt_cap[txp];
+               tx_count[txp] = tt_count[txp];
+               tx_delay[txp] = tt_delay[txp];
+               tx_affected[txp] = tt_affected[txp];
+               tx_index[txp] = get_string_cap_byvalue(tt_cap[txp]);
+               if (tx_index[txp] >= 0) {
+                       if (cap_match(t->caps_done, strnames[tx_index[txp]])) {
+                               ss_index[ss++] = txp;
+                               counts += tx_count[txp];
+                       }
+               }
+       }
+
+       if (crlf) {
+               put_crlf();
+       }
+       if (counts == 0 || tty_cps == 0 || bogus) {
+               /* nothing to do */
+               return;
+       }
+       /* calculate the suggested pad times */
+       delta = usec_run_time - sliding_scale(tx_characters, 1000000, tty_cps);
+       if (delta < 0) {
+               /* probably should bump tx_characters */
+               delta = 0;
+       }
+       cpo = delta / counts;
+       for (i = 0; i < ss; i++) {
+               if (!(r = get_next_block())) {
+                       return;
+               }
+               r->next = pads[tx_index[ss_index[i]]];
+               pads[tx_index[ss_index[i]]] = r;
+               r->test = t;
+               r->reps = tx_affected[ss_index[i]];
+               r->delay = cpo;
+       }
+}
+
+/*
+**     show_cap_results(index)
+**
+**     Display the previous results
+*/
+static void
+show_cap_results(
+       int x)
+{
+       struct test_results *r;         /* a result */
+       int delay;
+
+       if ((r = pads[x])) {
+               sprintf(temp, "(%s)", strnames[x]);
+               ptext(temp);
+               while (r) {
+                       sprintf(temp, "$<%d>", r->delay / 1000);
+                       put_columns(temp, strlen(temp), 10);
+                       r = r->next;
+               }
+               r = pads[x];
+               while (r) {
+                       if (r->reps > 1) {
+                               delay = r->delay / (r->reps * 100);
+                               sprintf(temp, "$<%d.%d*>", delay / 10, delay % 10);
+                               put_columns(temp, strlen(temp), 10);
+                       }
+                       r = r->next;
+               }
+               put_crlf();
+       }
+}
+
+/*
+**     dump_test_stats(test_list, status, ch)
+**
+**     Dump the statistics about the last test
+*/
+void
+dump_test_stats(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+       char tbuf[32];
+       int x[32];
+
+       put_crlf();
+       if (tx_source && tx_source->caps_done) {
+               cap_index(tx_source->caps_done, x);
+               if (x[0] >= 0) {
+                       sprintf(temp, "Caps summary for (%s)",
+                               tx_source->caps_done);
+                       ptextln(temp);
+                       for (i = 0; x[i] >= 0; i++) {
+                               show_cap_results(x[i]);
+                       }
+                       put_crlf();
+               }
+       }
+       sprintf(tbuf, "%011u", usec_run_time);
+       sprintf(temp, "Test time: %d.%s, characters per second %d, characters %d",
+               usec_run_time / 1000000, &tbuf[5], tx_cps, tx_characters);
+       ptextln(temp);
+       for (i = 0; i < txp; i++) {
+               if ((j = get_string_cap_byvalue(tx_cap[i])) >= 0) {
+                       sprintf(tbuf, "(%s)", strnames[j]);
+               } else {
+                       strcpy(tbuf, "(?)");
+               }
+               sprintf(temp, "%8d  %3d  $<%3d>  %8s %s",
+                       tx_count[i], tx_affected[i], tx_delay[i],
+                       tbuf, expand(tx_cap[i]));
+               putln(temp);
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     longer_test_time(test_list, status, ch)
+**
+**     Extend the number of seconds for each test.
+*/
+void
+longer_test_time(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       pad_test_duration += 1;
+       sprintf(txt_longer_test_time, "+) Change test time to %d seconds",
+               pad_test_duration + 1);
+       sprintf(txt_shorter_test_time, "-) Change test time to %d seconds",
+               pad_test_duration - 1);
+       sprintf(temp, "Tests will run for %d seconds", pad_test_duration);
+       ptext(temp);
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     shorter_test_time(test_list, status, ch)
+**
+**     Shorten the number of seconds for each test.
+*/
+void
+shorter_test_time(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       if (pad_test_duration > 1) {
+               pad_test_duration -= 1;
+               sprintf(txt_longer_test_time, "+) Change test time to %d seconds",
+                       pad_test_duration + 1);
+               sprintf(txt_shorter_test_time, "-) Change test time to %d seconds",
+                       pad_test_duration - 1);
+       }
+       sprintf(temp, "Tests will run for %d second%s", pad_test_duration,
+               pad_test_duration > 1 ? "s" : "");
+       ptext(temp);
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     longer_augment(test_list, status, ch)
+**
+**     Lengthen the number of lines/characters effected
+*/
+void
+longer_augment(
+       struct test_list *t,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       augment <<= 1;
+       set_augment_txt();
+       if (augment_test) {
+               t = augment_test;
+       }
+       sprintf(temp, "The pad tests will effect %d %s.", augment,
+               ((t->flags & MENU_LC_MASK) == MENU_lines) ?
+               "lines" : "characters");
+       ptextln(temp);
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     shorter_augment(test_list, status, ch)
+**
+**     Shorten the number of lines/characters effected
+*/
+void
+shorter_augment(
+       struct test_list *t,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       if (augment > 1) {
+               /* don't let the augment go to zero */
+               augment >>= 1;
+       }
+       set_augment_txt();
+       if (augment_test) {
+               t = augment_test;
+       }
+       sprintf(temp, "The pad tests will effect %d %s.", augment,
+               ((t->flags & MENU_LC_MASK) == MENU_lines) ?
+               "lines" : "characters");
+       ptextln(temp);
+       *ch = REQUEST_PROMPT;
+}
diff --git a/tack/crum.c b/tack/crum.c
new file mode 100644 (file)
index 0000000..9418363
--- /dev/null
@@ -0,0 +1,426 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: crum.c,v 1.2 1999/08/21 23:09:08 tom Exp $")
+
+/*
+ * Test cursor movement.
+ */
+
+static void crum_clear(struct test_list *t, int *state, int *ch);
+static void crum_home(struct test_list *t, int *state, int *ch);
+static void crum_ll(struct test_list *t, int *state, int *ch);
+static void crum_move(struct test_list *t, int *state, int *ch);
+static void crum_os(struct test_list *t, int *state, int *ch);
+
+static char crum_text[5][80];
+
+struct test_list crum_test_list[] = {
+       {0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
+       {MENU_NEXT, 0, "clear", 0, 0, crum_clear, 0},
+       {MENU_NEXT, 0, "home", 0, 0, crum_home, 0},
+       {MENU_NEXT, 0, "ll", 0, 0, crum_ll, 0},
+       {MENU_NEXT, 0, crum_text[0], "home cuu1", 0, crum_move, 0},
+       {MENU_NEXT + 1, 0, crum_text[1], "cub1 cud1 cuf1 cuu1", 0, crum_move, 0},
+       {MENU_NEXT + 2, 0, crum_text[2], "cub cud cuf cuu", 0, crum_move, 0},
+       {MENU_NEXT + 3, 0, crum_text[3], "vpa hpa", 0, crum_move, 0},
+       {MENU_NEXT + 4, 0, crum_text[4], "cup", 0, crum_move, 0},
+       {MENU_NEXT, 0, "cup", "os", 0, crum_os, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+/*
+**     move_to(from-row, from-column, to-row, to-column, selection)
+**
+**     move the cursor from (rf, cf) to (rt, ct) using sel
+*/
+static void
+move_to(
+       int rf,
+       int cf,
+       int rt,
+       int ct,
+       int sel)
+{
+       char *s;
+
+       if (sel & 16) { /* use (cup) */
+               s = tparm(cursor_address, rt, ct);
+               tputs(s, lines, tc_putch);
+               return;
+       }
+       if (sel & 8) {  /* use (hpa) (vpa) */
+               if (column_address) {
+                       s = tparm(column_address, ct);
+                       tputs(s, 1, tc_putch);
+                       cf = ct;
+               }
+               if (row_address) {
+                       s = tparm(row_address, rt);
+                       tputs(s, 1, tc_putch);
+                       rf = rt;
+               }
+       }
+       if (sel & 4) {  /* paramiterized relative cursor movement */
+               if (parm_right_cursor)
+                       if (cf < ct) {
+                               s = tparm(parm_right_cursor, ct - cf);
+                               tputs(s, ct - cf, tc_putch);
+                               cf = ct;
+                       }
+               if (parm_left_cursor)
+                       if (cf > ct) {
+                               s = tparm(parm_left_cursor, cf - ct);
+                               tputs(s, cf - ct, tc_putch);
+                               cf = ct;
+                       }
+               if (parm_down_cursor)
+                       if (rf < rt) {
+                               s = tparm(parm_down_cursor, rt - rf);
+                               tputs(s, rt - rf, tc_putch);
+                               rf = rt;
+                       }
+               if (parm_up_cursor)
+                       if (rf > rt) {
+                               s = tparm(parm_up_cursor, rf - rt);
+                               tputs(s, rf - rt, tc_putch);
+                               rf = rt;
+                       }
+       }
+       if (sel & 2) {
+               if (cursor_left)
+                       while (cf > ct) {
+                               tc_putp(cursor_left);
+                               cf--;
+                       }
+               /*
+                  do vertical motion next.  Just in case cursor_down has a
+                  side effect of changing the column.  This could happen if
+                  the tty handler translates NL to CRNL.
+               */
+               if (cursor_down)
+                       while (rf < rt) {
+                               tc_putp(cursor_down);
+                               rf++;
+                       }
+               if (cursor_up)
+                       while (rf > rt) {
+                               tc_putp(cursor_up);
+                               rf--;
+                       }
+               if (cursor_right)
+                       while (cf < ct) {
+                               tc_putp(cursor_right);
+                               cf++;
+                       }
+       }
+       /* last chance */
+       if (rf > rt) {
+               if (can_go_home) {      /* a bit drastic but ... */
+                       go_home();
+                       cf = 0;
+                       rf = 0;
+               } else if (cursor_up) {
+                       while (rf > rt) {
+                               tc_putp(cursor_up);
+                               rf--;
+                       }
+               }
+       }
+       if (ct == 0 && rt > rf) {
+               put_crlf();
+               cf = 0;
+               rf++;
+       }
+       if (ct == 0 && cf != 0) {
+               put_cr();
+               cf = 0;
+       }
+       while (rf < rt) {
+               put_lf();
+               rf++;
+       }
+       while (cf > ct) {
+               put_str("\b");
+               cf--;
+       }
+       if (cursor_right) {
+               while (cf < ct) {
+                       tc_putp(cursor_right);
+                       cf++;
+               }
+       } else {
+               /* go ahead and trash my display */
+               while (cf < ct) {
+                       putchp(' ');
+                       cf++;
+               }
+       }
+}
+
+/*
+**     display_it(selection, text)
+**
+**     print the display using sel
+*/
+static void
+display_it(
+       int sel,
+       char *txt)
+{
+       int i, done_line;
+
+       put_clear();
+       go_home();
+       put_newlines(2);
+       ptextln("    The top line should be alternating <'s and >'s");
+       ptextln("    The left side should be alternating A's and V's");
+       ptext("    Testing ");
+       ptext(txt);
+       put_cr();
+
+       /* horizontal */
+       move_to(done_line = line_count, 0, 0, 2, sel);
+       for (i = 4; i < columns - 2; i += 2) {
+               putchp('>');
+               move_to(0, i - 1, 0, i, sel);
+       }
+       putchp('>');
+       i -= 2;
+       move_to(0, i + 1, 0, i - 1, sel);
+       for (; i > 2; i -= 2) {
+               putchp('<');
+               move_to(0, i, 0, i - 3, sel);
+       }
+       putchp('<');
+
+       /* vertical */
+       move_to(0, 2, 0, 0, sel);
+       for (i = 2; i < lines - 1; i += 2) {
+               putchp('V');
+               move_to(i - 2, 1, i, 0, sel);
+       }
+       putchp('V');
+       i -= 2;
+       move_to(i, 1, i + 1, 0, sel);
+       for (; i > 0; i -= 2) {
+               putchp('A');
+               move_to(i + 1, 1, i - 1, 0, sel);
+       }
+       putchp('A');
+       move_to(i + 1, 1, 0, 0, sel);   /* go home first */
+       move_to(0, 0, done_line + 1, 3, sel);
+       put_str(txt);
+       put_str(" Done. ");
+}
+
+/*
+**     crum_clear(test_list, status, ch)
+**
+**     (clear) test Clear screen
+*/
+static void
+crum_clear(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (clear_screen) {
+               for (i = lines; i > 1; i--) {
+                       putln("garbage");
+               }
+               put_clear();
+               ptextln("This line should start in the home position.");
+               ptext("The rest of the screen should be clear.  ");
+       } else {
+               ptextln("(clear) Clear screen is not defined.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     crum_home(test_list, status, ch)
+**
+**     (home) test Home cursor
+*/
+static void
+crum_home(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (cursor_home) {
+               put_clear();
+               put_newlines(lines / 2);
+               go_home();
+               put_crlf();
+               ptext("The bottom line should have text.");
+               go_home();
+               put_newlines(lines - 1);
+               ptext("This line is on the bottom.");
+               go_home();
+               ptextln("This line starts in the home position.");
+               put_crlf();
+       } else {
+               ptextln("(home) Home cursor is not defined.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     crum_ll(test_list, status, ch)
+**
+**     (ll) test Last line
+*/
+static void
+crum_ll(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       /*
+          (ll) may be simulated with (cup).  Don't complain if (cup) is present.
+       */
+       if (cursor_to_ll) {
+               put_clear();
+               put_str("This line could be anywhere.");
+               tc_putp(cursor_to_ll);
+               ptext("This line should be on the bottom");
+               go_home();
+               put_crlf();
+       } else
+       if (cursor_address) {
+               return;
+       } else {
+               ptextln("(ll) Move to last line is not defined.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     crum_move(test_list, status, ch)
+**
+**     (*) test all cursor move commands
+*/
+static void
+crum_move(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       char buf[80];
+       int n;
+
+       switch (n = (t->flags & 15)) {
+       case 0:
+               sprintf(buf, " (cr) (nel) (cub1)%s",
+                       cursor_home ? " (home)" : (cursor_up ? " (cuu1)" : ""));
+               break;
+       case 1:
+               sprintf(buf, "%s%s%s%s", cursor_left ? " (cub1)" : "",
+                       cursor_down ? " (cud1)" : "", cursor_right ? " (cuf1)" : "",
+                       cursor_up ? " (cuu1)" : "");
+               if (buf[0] == '\0') {
+                       ptext("    (cub1) (cud1) (cuf1) (cuu1) not defined.");
+               }
+               break;
+       case 2:
+               sprintf(buf, "%s%s%s%s", parm_left_cursor ? " (cub)" : "",
+                       parm_down_cursor ? " (cud)" : "",
+                       parm_right_cursor ? " (cuf)" : "",
+                       parm_up_cursor ? " (cuu)" : "");
+               if (buf[0] == '\0') {
+                       ptext("    (cub) (cud) (cuf) (cuu) not defined.");
+               }
+               break;
+       case 3:
+               sprintf(buf, "%s%s", row_address ? " (vpa)" : "",
+                       column_address ? " (hpa)" : "");
+               if (buf[0] == '\0') {
+                       ptext("    (vpa) (hpa) not defined.");
+               }
+               break;
+       case 4:
+               if (!cursor_address) {
+                       ptext("    (cup) not defined.  ");
+                       generic_done_message(t, state, ch);
+                       return;
+               }
+               strcpy(buf, " (cup)");
+               break;
+       }
+       if (buf[0] == '\0') {
+               put_str("  Done. ");
+       } else {
+               can_test(buf, FLAG_TESTED);
+               strcpy(crum_text[n], &buf[2]);
+               crum_text[n][strlen(buf) - 3] = '\0';
+
+               display_it(1 << n, buf);
+       }
+       *ch = wait_here();
+       if (*ch != 'r') {
+               put_clear();
+       }
+}
+
+/*
+**     crum_os(test_list, status, ch)
+**
+**     (cup) test Cursor position on overstrike terminals
+*/
+static void
+crum_os(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (cursor_address && over_strike) {
+               put_clear();
+               for (i = 0; i < columns - 2; i++) {
+                       tc_putch('|');
+               }
+               for (i = 1; i < lines - 2; i++) {
+                       put_crlf();
+                       tc_putch('_');
+               }
+               for (i = 0; i < columns - 2; i++) {
+                       tputs(tparm(cursor_address, 0, i), lines, tc_putch);
+                       tc_putch('+');
+               }
+               for (i = 0; i < lines - 2; i++) {
+                       tputs(tparm(cursor_address, i, 0), lines, tc_putch);
+                       tc_putch(']');
+                       tc_putch('_');
+               }
+               go_home();
+               put_newlines(3);
+               ptext("    All the characters should look the same.  ");
+               generic_done_message(t, state, ch);
+               put_clear();
+       }
+}
diff --git a/tack/edit.c b/tack/edit.c
new file mode 100644 (file)
index 0000000..5685d92
--- /dev/null
@@ -0,0 +1,977 @@
+/*
+** Copyright (C) 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+#include <time.h>
+#include <tic.h>
+
+MODULE_ID("$Id: edit.c,v 1.3 1999/06/16 00:43:43 tom Exp $")
+
+/*
+ * Terminfo edit features
+ */
+static void show_info(struct test_list *, int *, int *);
+static void show_value(struct test_list *, int *, int *);
+static void show_untested(struct test_list *, int *, int *);
+static void show_changed(struct test_list *, int *, int *);
+
+#define SHOW_VALUE     1
+#define SHOW_EDIT      2
+#define SHOW_DELETE    3
+
+struct test_list edit_test_list[] = {
+       {MENU_CLEAR, 0, 0, 0, "i) display current terminfo", show_info, 0},
+       {0, 0, 0, 0, "w) write the current terminfo to a file", save_info, 0},
+       {SHOW_VALUE, 3, 0, 0, "v) show value of a selected cap", show_value, 0},
+       {SHOW_EDIT, 4, 0, 0, "e) edit value of a selected cap", show_value, 0},
+       {SHOW_DELETE, 3, 0, 0, "d) delete string", show_value, 0},
+       {0, 3, 0, 0, "m) show caps that have been modified", show_changed, 0},
+       {MENU_CLEAR + FLAG_CAN_TEST, 0, 0, 0, "c) show caps that can be tested", show_report, 0},
+       {MENU_CLEAR + FLAG_TESTED, 0, 0, 0, "t) show caps that have been tested", show_report, 0},
+       {MENU_CLEAR + FLAG_FUNCTION_KEY, 0, 0, 0, "f) show a list of function keys", show_report, 0},
+       {MENU_CLEAR, 0, 0, 0, "u) show caps defined that can not be tested", show_untested, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+static char change_pad_text[MAX_CHANGES][80];
+struct test_list change_pad_list[MAX_CHANGES] = {
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+static void build_change_menu(struct test_menu *);
+static void change_one_entry(struct test_list *, int *, int *);
+
+struct test_menu change_pad_menu = {
+       0, 'q', 0,
+       "Select cap name", "change", 0,
+       build_change_menu, change_pad_list, 0, 0, 0
+};
+
+extern struct test_results *pads[STRCOUNT];    /* save pad results here */
+
+static TERMTYPE        original_term;          /* terminal type description */
+
+static char flag_boolean[BOOLCOUNT];   /* flags for booleans */
+static char flag_numerics[NUMCOUNT];   /* flags for numerics */
+static char flag_strings[STRCOUNT];    /* flags for strings */
+static int xon_index;                  /* Subscript for (xon) */
+int xon_shadow;
+
+static int start_display;              /* the display has just started */
+static int display_lines;              /* number of lines displayed */
+
+/*
+**     send_info_string(str)
+**
+**     Return the terminfo string prefixed by the correct seperator
+*/
+static void
+send_info_string(
+       const char *str,
+       int *ch)
+{
+       int len;
+
+       if (display_lines == -1) {
+               return;
+       }
+       len = strlen(str);
+       if (len + char_count + 3 >= columns) {
+               if (start_display == 0) {
+                       put_str(",");
+               }
+               put_crlf();
+               if (++display_lines > lines) {
+                       ptext("-- more -- ");
+                       *ch = wait_here();
+                       if (*ch == 'q') {
+                               display_lines = -1;
+                               return;
+                       }
+                       display_lines = 0;
+               }
+               if (len >= columns) {
+                       /* if the terminal does not (am) then this loses */
+                       if (columns) {
+                               display_lines += ((strlen(str) + 3) / columns) + 1;
+                       }
+                       put_str("   ");
+                       put_str(str);
+                       start_display = 0;
+                       return;
+               }
+               ptext("   ");
+       } else
+       if (start_display == 0) {
+               ptext(", ");
+       } else {
+               ptext("   ");
+       }
+       ptext(str);
+       start_display = 0;
+}
+
+/*
+**     show_info(test_list, status, ch)
+**
+**     Display the current terminfo
+*/
+static void
+show_info(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       int i;
+       char buf[1024];
+
+       display_lines = 1;
+       start_display = 1;
+       for (i = 0; i < BOOLCOUNT; i++) {
+               if ((i == xon_index) ? xon_shadow : CUR Booleans[i]) {
+                       send_info_string(boolnames[i], ch);
+               }
+       }
+       for (i = 0; i < NUMCOUNT; i++) {
+               if (CUR Numbers[i] >= 0) {
+                       sprintf(buf, "%s#%d", numnames[i], CUR Numbers[i]);
+                       send_info_string(buf, ch);
+               }
+       }
+       for (i = 0; i < STRCOUNT; i++) {
+               if (CUR Strings[i]) {
+                       sprintf(buf, "%s=%s", strnames[i],
+                               print_expand(CUR Strings[i]));
+                       send_info_string(buf, ch);
+               }
+       }
+       put_newlines(2);
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     save_info_string(str, fp)
+**
+**     Write the terminfo string prefixed by the correct seperator
+*/
+static void
+save_info_string(
+       const char *str,
+       FILE *fp)
+{
+       int len;
+
+       len = strlen(str);
+       if (len + display_lines >= 77) {
+               if (display_lines > 0) {
+                       (void) fprintf(fp, "\n\t");
+               }
+               display_lines = 8;
+       } else
+       if (display_lines > 0) {
+               (void) fprintf(fp, " ");
+               display_lines++;
+       } else {
+               (void) fprintf(fp, "\t");
+               display_lines = 8;
+       }
+       (void) fprintf(fp, "%s,", str);
+       display_lines += len + 1;
+}
+
+/*
+**     save_info(test_list, status, ch)
+**
+**     Write the current terminfo to a file
+*/
+void
+save_info(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+       FILE *fp;
+       time_t now;
+       char buf[1024];
+
+       if ((fp = fopen(tty_basename, "w")) == (FILE *) NULL) {
+               (void) sprintf(temp, "can't open: %s", tty_basename);
+               ptextln(temp);
+               generic_done_message(t, state, ch);
+               return;
+       }
+       time(&now);
+       /* Note: ctime() returns a newline at the end of the string */
+       (void) fprintf(fp, "# Terminfo created by TACK for TERM=%s on %s",
+               tty_basename, ctime(&now));
+       (void) fprintf(fp, "%s|%s,\n", tty_basename, longname());
+
+       display_lines = 0;
+       for (i = 0; i < BOOLCOUNT; i++) {
+               if (i == xon_index ? xon_shadow : CUR Booleans[i]) {
+                       save_info_string(boolnames[i], fp);
+               }
+       }
+       for (i = 0; i < NUMCOUNT; i++) {
+               if (CUR Numbers[i] >= 0) {
+                       sprintf(buf, "%s#%d", numnames[i], CUR Numbers[i]);
+                       save_info_string(buf, fp);
+               }
+       }
+       for (i = 0; i < STRCOUNT; i++) {
+               if (CUR Strings[i]) {
+                       sprintf(buf, "%s=%s", strnames[i],
+                               _nc_tic_expand(CUR Strings[i], TRUE, TRUE));
+                       save_info_string(buf, fp);
+               }
+       }
+       (void) fprintf(fp, "\n");
+       (void) fclose(fp);
+       sprintf(temp, "Terminfo saved as file: %s", tty_basename);
+       ptextln(temp);
+}
+
+/*
+**     show_value(test_list, status, ch)
+**
+**     Display the value of a selected cap
+*/
+static void
+show_value(
+       struct test_list *t,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       struct name_table_entry const *nt;
+       char *s;
+       int n, op, b;
+       char buf[1024];
+       char tmp[1024];
+
+       ptext("enter name: ");
+       read_string(buf, 80);
+       if (buf[0] == '\0' || buf[1] == '\0') {
+               *ch = buf[0];
+               return;
+       }
+       if (line_count + 2 >= lines) {
+               put_clear();
+       }
+       op = t->flags & 255;
+       if ((nt = _nc_find_entry(buf, _nc_info_hash_table))) {
+               switch (nt->nte_type) {
+               case BOOLEAN:
+                       if (op == SHOW_DELETE) {
+                               if (nt->nte_index == xon_index) {
+                                       xon_shadow = 0;
+                               } else {
+                                       CUR Booleans[nt->nte_index] = 0;
+                               }
+                               return;
+                       }
+                       b = nt->nte_index == xon_index ? xon_shadow :
+                               CUR Booleans[nt->nte_index];
+                       sprintf(temp, "boolean  %s %s", buf,
+                               b ? "True" : "False");
+                       break;
+               case STRING:
+                       if (op == SHOW_DELETE) {
+                               CUR Strings[nt->nte_index] = (char *) 0;
+                               return;
+                       }
+                       if (CUR Strings[nt->nte_index]) {
+                               sprintf(temp, "string  %s %s", buf,
+                                       expand(CUR Strings[nt->nte_index]));
+                       } else {
+                               sprintf(temp, "undefined string %s", buf);
+                       }
+                       break;
+               case NUMBER:
+                       if (op == SHOW_DELETE) {
+                               CUR Numbers[nt->nte_index] = -1;
+                               return;
+                       }
+                       sprintf(temp, "numeric  %s %d", buf,
+                               CUR Numbers[nt->nte_index]);
+                       break;
+               default:
+                       sprintf(temp, "unknown");
+                       break;
+               }
+               ptextln(temp);
+       } else {
+               sprintf(temp, "Cap not found: %s", buf);
+               ptextln(temp);
+               return;
+       }
+       if (op != SHOW_EDIT) {
+               return;
+       }
+       if (nt->nte_type == BOOLEAN) {
+               ptextln("Value flipped");
+               if (nt->nte_index == xon_index) {
+                       xon_shadow = !xon_shadow;
+               } else {
+                       CUR Booleans[nt->nte_index] = !CUR Booleans[nt->nte_index];
+               }
+               return;
+       }
+       ptextln("Enter new value");
+       read_string(buf, sizeof(buf));
+
+       switch (nt->nte_type) {
+       case STRING:
+               _nc_reset_input((FILE *) 0, buf);
+               _nc_trans_string(tmp);
+               s = (char *)malloc(strlen(tmp) + 1);
+               strcpy(s, tmp);
+               CUR Strings[nt->nte_index] = s;
+               sprintf(temp, "new string value  %s", nt->nte_name);
+               ptextln(temp);
+               ptextln(expand(CUR Strings[nt->nte_index]));
+               break;
+       case NUMBER:
+               if (sscanf(buf, "%d", &n) == 1) {
+                       CUR Numbers[nt->nte_index] = n;
+                       sprintf(temp, "new numeric value  %s %d",
+                               nt->nte_name, n);
+                       ptextln(temp);
+               } else {
+                       sprintf(temp, "Illegal number: %s", buf);
+                       ptextln(temp);
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+/*
+**     get_string_cap_byname(name, long_name)
+**
+**     Given a cap name, find the value
+**     Errors are quietly ignored.
+*/
+char *
+get_string_cap_byname(
+       const char *name,
+       const char **long_name)
+{
+       struct name_table_entry const *nt;
+
+       if ((nt = _nc_find_entry(name, _nc_info_hash_table))) {
+               if (nt->nte_type == STRING) {
+                       *long_name = strfnames[nt->nte_index];
+                       return (CUR Strings[nt->nte_index]);
+               }
+       }
+       *long_name = "??";
+       return (char *) 0;
+}
+
+/*
+**     get_string_cap_byvalue(value)
+**
+**     Given a capability string, find its position in the data base.
+**     Return the index or -1 if not found.
+*/
+int
+get_string_cap_byvalue(
+       const char *value)
+{
+       int i;
+
+       if (value) {
+               for (i = 0; i < STRCOUNT; i++) {
+                       if (CUR Strings[i] == value) {
+                               return i;
+                       }
+               }
+               /* search for translated strings */
+               for (i = 0; i < TM_last; i++) {
+                       if (TM_string[i].value == value) {
+                               return TM_string[i].index;
+                       }
+               }
+       }
+       return -1;
+}
+
+/*
+**     show_changed(test_list, status, ch)
+**
+**     Display a list of caps that have been changed.
+*/
+static void
+show_changed(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       int i, header = 1, v;
+       const char *a;
+       const char *b;
+       static char title[] = "                     old value   cap  new value";
+       char abuf[1024];
+
+       for (i = 0; i < BOOLCOUNT; i++) {
+               v = (i == xon_index) ? xon_shadow : CUR Booleans[i];
+               if (original_term.Booleans[i] != v) {
+                       if (header) {
+                               ptextln(title);
+                               header = 0;
+                       }
+                       sprintf(temp, "%30d %6s %d",
+                               original_term.Booleans[i], boolnames[i], v);
+                       ptextln(temp);
+               }
+       }
+       for (i = 0; i < NUMCOUNT; i++) {
+               if (original_term.Numbers[i] != CUR Numbers[i]) {
+                       if (header) {
+                               ptextln(title);
+                               header = 0;
+                       }
+                       sprintf(temp, "%30d %6s %d",
+                               original_term.Numbers[i], numnames[i],
+                               CUR Numbers[i]);
+                       ptextln(temp);
+               }
+       }
+       for (i = 0; i < STRCOUNT; i++) {
+               a = original_term.Strings[i] ? original_term.Strings[i] : "";
+               b = CUR Strings[i] ?  CUR Strings[i] : "";
+               if (strcmp(a, b)) {
+                       if (header) {
+                               ptextln(title);
+                               header = 0;
+                       }
+                       strcpy(abuf, _nc_tic_expand(a, TRUE, TRUE));
+                       sprintf(temp, "%30s %6s %s", abuf, strnames[i],
+                               _nc_tic_expand(b, TRUE, TRUE));
+                       putln(temp);
+               }
+       }
+       if (header) {
+               ptextln("No changes");
+       }
+       put_crlf();
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     user_modified()
+**
+**     Return TRUE if the user has modified the terminfo
+*/
+int
+user_modified(void)
+{
+       const char *a, *b;
+       int i, v;
+
+       for (i = 0; i < BOOLCOUNT; i++) {
+               v = (i == xon_index) ? xon_shadow : CUR Booleans[i];
+               if (original_term.Booleans[i] != v) {
+                       return TRUE;
+               }
+       }
+       for (i = 0; i < NUMCOUNT; i++) {
+               if (original_term.Numbers[i] != CUR Numbers[i]) {
+                       return TRUE;
+               }
+       }
+       for (i = 0; i < STRCOUNT; i++) {
+               a = original_term.Strings[i] ? original_term.Strings[i] : "";
+               b = CUR Strings[i] ?  CUR Strings[i] : "";
+               if (strcmp(a, b)) {
+                       return TRUE;
+               }
+       }
+       return FALSE;
+}
+
+/*****************************************************************************
+ *
+ * Maintain the list of capabilities that can be tested
+ *
+ *****************************************************************************/
+
+/*
+**     mark_cap(name, flag)
+**
+**     Mark the cap data base with the flag provided.
+*/
+static void
+mark_cap(
+       char *name,
+       int flag)
+{
+       struct name_table_entry const *nt;
+
+       if ((nt = _nc_find_entry(name, _nc_info_hash_table))) {
+               switch (nt->nte_type) {
+               case BOOLEAN:
+                       flag_boolean[nt->nte_index] |= flag;
+                       break;
+               case STRING:
+                       flag_strings[nt->nte_index] |= flag;
+                       break;
+               case NUMBER:
+                       flag_numerics[nt->nte_index] |= flag;
+                       break;
+               default:
+                       sprintf(temp, "unknown cap type (%s)", name);
+                       ptextln(temp);
+                       break;
+               }
+       } else {
+               sprintf(temp, "Cap not found: %s", name);
+               ptextln(temp);
+               (void) wait_here();
+       }
+}
+
+/*
+**     can_test(name-list, flags)
+**
+**     Scan the name list and get the names.
+**     Enter each name into the can-test data base.
+**     <space> ( and ) may be used as seperators.
+*/
+void
+can_test(
+       const char *s,
+       int flags)
+{
+       int ch, i, j;
+       char name[32];
+
+       if (s) {
+               for (i = j = 0; (name[j] = ch = *s); s++) {
+                       if (ch == ' ' || ch == ')' || ch == '(') {
+                               if (j) {
+                                       name[j] = '\0';
+                                       mark_cap(name, flags);
+                               }
+                               j = 0;
+                       } else {
+                               j++;
+                       }
+               }
+               if (j) {
+                       mark_cap(name, flags);
+               }
+       }
+}
+
+/*
+**     cap_index(name-list, index-list)
+**
+**     Scan the name list and return a list of indexes.
+**     <space> ( and ) may be used as seperators.
+**     This list is terminated with -1.
+*/
+void
+cap_index(
+       const char *s,
+       int *inx)
+{
+       struct name_table_entry const *nt;
+       int ch, i, j;
+       char name[32];
+
+       if (s) {
+               for (i = j = 0; ; s++) {
+                       name[j] = ch = *s;
+                       if (ch == ' ' || ch == ')' || ch == '(' || ch == 0) {
+                               if (j) {
+                                       name[j] = '\0';
+                                       if ((nt = _nc_find_entry(name,
+                                               _nc_info_hash_table)) &&
+                                               (nt->nte_type == STRING)) {
+                                               *inx++ = nt->nte_index;
+                                       }
+                               }
+                               if (ch == 0) {
+                                       break;
+                               }
+                               j = 0;
+                       } else {
+                               j++;
+                       }
+               }
+       }
+       *inx = -1;
+}
+
+/*
+**     cap_match(name-list, cap)
+**
+**     Scan the name list and see if the cap is in the list.
+**     Return TRUE if we find an exact match.
+**     <space> ( and ) may be used as seperators.
+*/
+int
+cap_match(
+       const char *names,
+       const char *cap)
+{
+       char *s;
+       int c, l, t;
+
+       if (names) {
+               l = strlen(cap);
+               while ((s = strstr(names, cap))) {
+                       c = (names == s) ? 0 : *(s - 1);
+                       t = s[l];
+                       if ((c == 0 || c == ' ' || c == '(') &&
+                               (t == 0 || t == ' ' || t == ')')) {
+                               return TRUE;
+                       }
+                       if (t == 0) {
+                               break;
+                       }
+                       names = s + l;
+               }
+       }
+       return FALSE;
+}
+
+/*
+**     show_report(test_list, status, ch)
+**
+**     Display a list of caps that can be tested
+*/
+void
+show_report(
+       struct test_list *t,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       int i, j, nc, flag;
+       const char *s;
+       const char *nx[BOOLCOUNT + NUMCOUNT + STRCOUNT];
+
+       flag = t->flags & 255;
+       nc = 0;
+       for (i = 0; i < BOOLCOUNT; i++) {
+               if (flag_boolean[i] & flag) {
+                       nx[nc++] = boolnames[i];
+               }
+       }
+       for (i = 0; i < NUMCOUNT; i++) {
+               if (flag_numerics[i] & flag) {
+                       nx[nc++] = numnames[i];
+               }
+       }
+       for (i = 0; i < STRCOUNT; i++) {
+               if (flag_strings[i] & flag) {
+                       nx[nc++] = strnames[i];
+               }
+       }
+       /* sort */
+       for (i = 0; i < nc - 1; i++) {
+               for (j = i + 1; j < nc; j++) {
+                       if (strcmp(nx[i], nx[j]) > 0) {
+                               s = nx[i];
+                               nx[i] = nx[j];
+                               nx[j] = s;
+                       }
+               }
+       }
+       if (flag & FLAG_FUNCTION_KEY) {
+               ptextln("The following function keys can be tested:");
+       } else
+       if (flag & FLAG_CAN_TEST) {
+               ptextln("The following capabilities can be tested:");
+       } else
+       if (flag & FLAG_TESTED) {
+               ptextln("The following capabilities have been tested:");
+       }
+       put_crlf();
+       for (i = 0; i < nc; i++) {
+               sprintf(temp, "%s ", nx[i]);
+               ptext(temp);
+       }
+       put_newlines(1);
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     show_untested(test_list, status, ch)
+**
+**     Display a list of caps that are defined but cannot be tested.
+**     Don't bother to sort this list.
+*/
+static void
+show_untested(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       int i;
+
+       ptextln("Caps that are defined but cannot be tested:");
+       for (i = 0; i < BOOLCOUNT; i++) {
+               if (flag_boolean[i] == 0 && CUR Booleans[i]) {
+                       sprintf(temp, "%s ", boolnames[i]);
+                       ptext(temp);
+               }
+       }
+       for (i = 0; i < NUMCOUNT; i++) {
+               if (flag_numerics[i] == 0 && CUR Numbers[i] >= 0) {
+                       sprintf(temp, "%s ", numnames[i]);
+                       ptext(temp);
+               }
+       }
+       for (i = 0; i < STRCOUNT; i++) {
+               if (flag_strings[i] == 0 && CUR Strings[i]) {
+                       sprintf(temp, "%s ", strnames[i]);
+                       ptext(temp);
+               }
+       }
+       put_newlines(1);
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     edit_init()
+**
+**     Initialize the function key data base
+*/
+void
+edit_init(void)
+{
+       int i, j, lc;
+       char *lab;
+       struct name_table_entry const *nt;
+       int label_strings[STRCOUNT];
+
+       _nc_copy_termtype(&original_term, &cur_term->type);
+       for (i = 0; i < BOOLCOUNT; i++) {
+               original_term.Booleans[i] = CUR Booleans[i];
+       }
+       for (i = 0; i < NUMCOUNT; i++) {
+               original_term.Numbers[i] = CUR Numbers[i];
+       }
+       /* scan for labels */
+       for (i = lc = 0; i < STRCOUNT; i++) {
+               original_term.Strings[i] = CUR Strings[i];
+               if (strncmp(strnames[i], "lf", 2) == 0) {
+                       flag_strings[i] |= FLAG_LABEL;
+                       if (CUR Strings[i]) {
+                               label_strings[lc++] = i;
+                       }
+               }
+       }
+       /* scan for function keys */
+       for (i = 0; i < STRCOUNT; i++) {
+               if ((strnames[i][0] == 'k') && strcmp(strnames[i], "kmous")) {
+                       flag_strings[i] |= FLAG_FUNCTION_KEY;
+                       lab = (char *) 0;
+                       for (j = 0; j < lc; j++) {
+                               if (!strcmp(&strnames[i][1],
+                                       &strnames[label_strings[j]][1])) {
+                                       lab = CUR Strings[label_strings[j]];
+                                       break;
+                               }
+                       }
+                       enter_key(strnames[i], CUR Strings[i], lab);
+               }
+       }
+       /* Lookup the translated strings */
+       for (i = 0; i < TM_last; i++) {
+               if ((nt = _nc_find_entry(TM_string[i].name,
+                       _nc_info_hash_table)) && (nt->nte_type == STRING)) {
+                       TM_string[i].index = nt->nte_index;
+               } else {
+                       sprintf(temp, "TM_string lookup failed for: %s",
+                               TM_string[i].name);
+                       ptextln(temp);
+               }
+       }
+       if ((nt = _nc_find_entry("xon", _nc_info_hash_table)) != 0) {
+               xon_index = nt->nte_index;
+       }
+       xon_shadow = xon_xoff;
+}
+
+/*
+**     change_one_entry(test_list, status, ch)
+**
+**     Change the padding on the selected cap
+*/
+static void
+change_one_entry(
+       struct test_list *test,
+       int *state,
+       int *chp)
+{
+       struct name_table_entry const *nt;
+       int i, j, x, star, slash,  v, dot, ch;
+       const char *s;
+       char *t, *p;
+       const char *current_string;
+       char buf[1024];
+       char pad[1024];
+
+       i = test->flags & 255;
+       if (i == 255) {
+               /* read the cap name from the user */
+               ptext("enter name: ");
+               read_string(pad, 32);
+               if (pad[0] == '\0' || pad[1] == '\0') {
+                       *chp = pad[0];
+                       return;
+               }
+               if ((nt = _nc_find_entry(pad, _nc_info_hash_table)) &&
+                       (nt->nte_type == STRING)) {
+                       x = nt->nte_index;
+                       current_string = CUR Strings[x];
+               } else {
+                       sprintf(temp, "%s is not a string capability", pad);
+                       ptext(temp);
+                       generic_done_message(test, state, chp);
+                       return;
+               }
+       } else {
+               x = tx_index[i];
+               current_string = tx_cap[i];
+               strcpy(pad, strnames[x]);
+       }
+       if (!current_string) {
+               ptextln("That string is not currently defined.  Please enter a new value, including the padding delay:");
+               read_string(buf, sizeof(buf));
+               _nc_reset_input((FILE *) 0, buf);
+               _nc_trans_string(pad);
+               t = (char *)malloc(strlen(pad) + 1);
+               strcpy(t, pad);
+               CUR Strings[x] = t;
+               sprintf(temp, "new string value  %s", strnames[x]);
+               ptextln(temp);
+               ptextln(expand(t));
+               return;
+       }
+       sprintf(buf, "Current value: (%s) %s", pad, _nc_tic_expand(current_string, TRUE, TRUE));
+       putln(buf);
+       ptextln("Enter new pad.  0 for no pad.  CR for no change.");
+       read_string(buf, 32);
+       if (buf[0] == '\0' || (buf[1] == '\0' && isalpha(buf[0]))) {
+               *chp = buf[0];
+               return;
+       }
+       star = slash = FALSE;
+       for (j = v = dot = 0; (ch = buf[j]); j++) {
+               if (ch >= '0' && ch <= '9') {
+                       v = ch - '0' + v * 10;
+                       if (dot) {
+                               dot++;
+                       }
+               } else if (ch == '*') {
+                       star = TRUE;
+               } else if (ch == '/') {
+                       slash = TRUE;
+               } else if (ch == '.') {
+                       dot = 1;
+               } else {
+                       sprintf(temp, "Illegal character: %c", ch);
+                       ptextln(temp);
+                       ptext("General format:  99.9*/  ");
+                       generic_done_message(test, state, chp);
+                       return;
+               }
+       }
+       while (dot > 2) {
+               v /= 10;
+               dot--;
+       }
+       if (dot == 2) {
+               sprintf(pad, "%d.%d%s%s", v / 10, v % 10,
+                               star ? "*" : "", slash ? "/" : "");
+       } else {
+               sprintf(pad, "%d%s%s",
+                       v, star ? "*" : "", slash ? "/" : "");
+       }
+       s = current_string;
+       t = buf;
+       for (v = 0; (ch = *t = *s++); t++) {
+               if (v == '$' && ch == '<') {
+                       while ((ch = *s++) && (ch != '>'));
+                       for (p = pad; (*++t = *p++); );
+                       *t++ = '>';
+                       while ((*t++ = *s++));
+                       pad[0] = '\0';
+                       break;
+               }
+               v = ch;
+       }
+       if (pad[0]) {
+               sprintf(t, "$<%s>", pad);
+       }
+       if ((t = (char *)malloc(strlen(buf) + 1))) {
+               strcpy(t, buf);
+               CUR Strings[x] = t;
+               if (i != 255) {
+                       tx_cap[i] = t;
+               }
+       }
+       generic_done_message(test, state, chp);
+}
+
+/*
+**     build_change_menu(menu_list)
+**
+**     Build the change pad menu list
+*/
+static void
+build_change_menu(
+       struct test_menu *m)
+{
+       int i, j, k;
+       char *s;
+
+       for (i = j = 0; i < txp; i++) {
+               if ((k = tx_index[i]) >= 0) {
+                       s = _nc_tic_expand(tx_cap[i], TRUE, TRUE);
+                       s[40] = '\0';
+                       sprintf(change_pad_text[j], "%c) (%s) %s",
+                               'a' + j, strnames[k], s);
+                       change_pad_list[j].flags = i;
+                       change_pad_list[j].lines_needed = 4;
+                       change_pad_list[j].menu_entry = change_pad_text[j];
+                       change_pad_list[j].test_procedure = change_one_entry;
+                       j++;
+               }
+       }
+       strcpy(change_pad_text[j], "z) enter name");
+       change_pad_list[j].flags = 255;
+       change_pad_list[j].lines_needed = 4;
+       change_pad_list[j].menu_entry = change_pad_text[j];
+       change_pad_list[j].test_procedure = change_one_entry;
+       j++;
+       change_pad_list[j].flags = MENU_LAST;
+       if (m->menu_title) {
+               put_crlf();
+               ptextln(m->menu_title);
+       }
+}
diff --git a/tack/fun.c b/tack/fun.c
new file mode 100644 (file)
index 0000000..7ddfbbd
--- /dev/null
@@ -0,0 +1,912 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: fun.c,v 1.2 1999/06/16 00:46:12 tom Exp $")
+
+/*
+ * Test the function keys on the terminal.  The code for echo tests
+ * lives here too.
+ */
+
+static void funkey_keys(struct test_list *, int *, int *);
+static void funkey_meta(struct test_list *, int *, int *);
+static void funkey_label(struct test_list *, int *, int *);
+static void funkey_prog(struct test_list *, int *, int *);
+static void funkey_local(struct test_list *, int *, int *);
+
+struct test_list funkey_test_list[] = {
+       {0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
+       {MENU_CLEAR + FLAG_FUNCTION_KEY, 0, 0, 0, "f) show a list of function keys", show_report, 0},
+       {MENU_NEXT | MENU_CLEAR, 0, "smkx) (rmkx", 0,
+               "k) test function keys", funkey_keys, 0},
+       {MENU_NEXT, 10, "km", "smm rmm", 0, funkey_meta, 0},
+       {MENU_NEXT, 8, "nlab) (smln) (pln) (rmln", "lw lh", 0, funkey_label, 0},
+       {MENU_NEXT, 2, "pfx", 0, 0, funkey_prog, 0},
+       {MENU_NEXT, 2, "pfloc", 0, 0, funkey_local, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+static void printer_on(struct test_list *, int *, int *);
+static void printer_mc0(struct test_list *, int *, int *);
+
+struct test_list printer_test_list[] = {
+       {0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
+       {MENU_NEXT | MENU_CLEAR, 0, "mc4) (mc5) (mc5i", 0, 0, printer_on, 0},
+       {MENU_NEXT | MENU_CLEAR, 0, "mc0", 0, 0, printer_mc0, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+#define MAX_STRINGS STRCOUNT
+
+/* scan code externals */
+extern int scan_max;           /* length of longest scan code */
+extern char **scan_up, **scan_down, **scan_name;
+extern int *scan_tested, *scan_length;
+
+/* local definitions */
+static const char *fk_name[MAX_STRINGS];
+static char *fkval[MAX_STRINGS];
+static char *fk_label[MAX_STRINGS];    /* function key labels (if any) */
+static int fk_tested[MAX_STRINGS];
+static int fkmax = 1;          /* length of longest key */
+static int got_labels = 0;     /* true if we have some labels */
+static int key_count = 0;
+static int end_state;
+
+/* unknown function keys */
+#define MAX_FK_UNK 50
+static char *fk_unknown[MAX_FK_UNK];
+static int fk_length[MAX_FK_UNK];
+static int funk;
+
+/*
+**     keys_tested(first-time, show-help, hex-output)
+**
+**     Display a list of the keys not tested.
+*/
+static void
+keys_tested(
+       int first_time,
+       int show_help,
+       int hex_output)
+{
+       int i, l;
+       char outbuf[256];
+
+       put_clear();
+       tty_set();
+       flush_input();
+       if (got_labels) {
+               putln("Function key labels:");
+               for (i = 0; i < key_count; ++i) {
+                       if (fk_label[i]) {
+                               sprintf(outbuf, "%s %s",
+                                       fk_name[i] ? fk_name[i] : "??", fk_label[i]);
+                               put_columns(outbuf, strlen(outbuf), 16);
+                       }
+               }
+               put_newlines(2);
+       }
+       if (funk) {
+               putln("The following keys are not defined:");
+               for (i = 0; i < funk; ++i) {
+                       put_columns(fk_unknown[i], fk_length[i], 16);
+               }
+               put_mode(exit_attribute_mode);
+               put_newlines(2);
+       }
+       if (first_time) {
+               putln("The following keys are defined:");
+       } else {
+               putln("The following keys have not been tested:");
+       }
+       if (scan_mode) {
+               for (i = 0; scan_down[i]; i++) {
+                       if (!scan_tested[i]) {
+                               if (hex_output) {
+                                       strcpy(outbuf, hex_expand_to(scan_down[i], 3));
+                               } else {
+                                       strcpy(outbuf, expand(scan_down[i]));
+                               }
+                               l = expand_chars;
+                               if (hex_output) {
+                                       strcat(outbuf, hex_expand_to(scan_up[i], 3));
+                               } else {
+                                       strcat(outbuf, expand(scan_up[i]));
+                               }
+                               expand_chars += l;
+                               l = strlen(scan_name[i]);
+                               if (((char_count + 16) & ~15) +
+                                       ((expand_chars + 7) & ~7) + l >= columns) {
+                                       put_crlf();
+                               } else
+                               if (char_count + 24 > columns) {
+                                       put_crlf();
+                               } else if (char_count) {
+                                       putchp(' ');
+                               }
+                               put_columns(outbuf, expand_chars, 16);
+                               put_columns(scan_name[i], l, 8);
+                       }
+               }
+       } else {
+               for (i = 0; i < key_count; i++) {
+                       if (!fk_tested[i]) {
+                               if (hex_output) {
+                                       strcpy(outbuf, hex_expand_to(fkval[i], 3));
+                               } else {
+                                       strcpy(outbuf, expand(fkval[i]));
+                               }
+                               l = strlen(fk_name[i]);
+                               if (((char_count + 16) & ~15) +
+                                       ((expand_chars + 7) & ~7) + l >= columns) {
+                                       put_crlf();
+                               } else
+                               if (char_count + 24 > columns) {
+                                       put_crlf();
+                               } else
+                               if (char_count) {
+                                       putchp(' ');
+                               }
+                               put_columns(outbuf, expand_chars, 16);
+                               put_columns(fk_name[i], l, 8);
+                       }
+               }
+       }
+       put_newlines(2);
+       if (show_help) {
+               ptextln("Hit any function key.  Type 'end' to quit.  Type ? to update the display.");
+               put_crlf();
+       }
+}
+
+/*
+**     enter_key(name, value, label)
+**
+**     Enter a function key into the data base
+*/
+void
+enter_key(
+       const char *name,
+       char *value,
+       char *lab)
+{
+       int j;
+
+       if (value) {
+               j = strlen(value);
+               fkmax = fkmax > j ? fkmax : j;
+               /* do not permit duplicates */
+               for (j = 0; j < key_count; j++) {
+                       if (!strcmp(fk_name[j], name)) {
+                               return;
+                       }
+               }
+               fkval[key_count] = value;
+               fk_tested[key_count] = 0;
+               fk_label[key_count] = lab;
+               fk_name[key_count++] = name;
+               if (lab) {
+                       got_labels = TRUE;
+               }
+       }
+}
+
+
+static void
+fresh_line(void)
+{                              /* clear the line for a new fumction key line */
+       if (over_strike) {
+               put_crlf();
+       } else {
+               put_cr();
+               if (clr_eol) {
+                       tc_putp(clr_eol);
+               } else {
+                       put_str("                    \r");
+               }
+       }
+}
+
+
+static int
+end_funky(int ch)
+{                              /* return true if this is the end */
+       switch (ch) {
+       case 'e':
+       case 'E':
+               end_state = 'e';
+               break;
+       case 'n':
+       case 'N':
+               if (end_state == 'e') {
+                       end_state = 'n';
+               } else {
+                       end_state = 0;
+               }
+               break;
+       case 'd':
+       case 'D':
+               if (end_state == 'n') {
+                       end_state = 'd';
+               } else {
+                       end_state = 0;
+               }
+               break;
+       case 'l':
+       case 'L':
+               if (end_state == 'l') {
+                       end_state = '?';
+               } else {
+                       end_state = 'l';
+               }
+               break;
+       default:
+               end_state = 0;
+               break;
+       }
+       return end_state == 'd';
+}
+
+
+static int
+found_match(char *s, int hx, int cc)
+{                              /* return true if this string is a match */
+       int j, f;
+       char outbuf[256];
+
+       if (!*s) {
+               return 0;
+       }
+       if (scan_mode) {
+               for (j = f = 0; scan_down[j]; j++) {
+                       if (scan_length[j] == 0) {
+                               continue;
+                       }
+                       if (!strncmp(s, scan_down[j], scan_length[j])) {
+                               if (!f) {       /* first match */
+                                       put_cr();
+                                       if (hx) {
+                                               put_str(hex_expand_to(s, 10));
+                                       } else {
+                                               put_str(expand_to(s, 10));
+                                       }
+                                       f = 1;
+                               }
+                               (void) end_funky(scan_name[j][0]);
+                               put_str(" ");
+                               put_str(scan_name[j]);
+                               scan_tested[j] = 1;
+                               s += scan_length[j];
+                               if (strncmp(s, scan_up[j], scan_length[j])) {
+                                       put_str(" scan down");
+                               } else {
+                                       s += scan_length[j];
+                               }
+                               if (!*s) {
+                                       break;
+                               }
+                               j = -1;
+                       }
+                       if (!strncmp(s, scan_up[j], scan_length[j])) {
+                               if (!f) {       /* first match */
+                                       put_cr();
+                                       if (hx) {
+                                               put_str(hex_expand_to(s, 10));
+                                       } else {
+                                               put_str(expand_to(s, 10));
+                                       }
+                                       f = 1;
+                               }
+                               put_str(" ");
+                               put_str(scan_name[j]);
+                               put_str(" scan up");
+                               s += scan_length[j];
+                               if (!*s) {
+                                       break;
+                               }
+                               j = -1;
+                       }
+               }
+       } else {
+               for (j = f = 0; j < key_count; j++) {
+                       if (!strcmp(s, fkval[j])) {
+                               if (!f) {       /* first match */
+                                       put_cr();
+                                       if (hx) {
+                                               put_str(hex_expand_to(s, 10));
+                                       } else {
+                                               put_str(expand_to(s, 10));
+                                       }
+                                       f = 1;
+                               }
+                               sprintf(outbuf, " (%s)", fk_name[j]);
+                               put_str(outbuf);
+                               if (fk_label[j]) {
+                                       sprintf(outbuf, " <%s>", fk_label[j]);
+                                       put_str(outbuf);
+                               }
+                               fk_tested[j] = 1;
+                       }
+               }
+       }
+       if (end_state == '?') {
+               keys_tested(0, 1, hx);
+               tty_raw(cc, char_mask);
+               end_state = 0;
+       }
+       return f;
+}
+
+
+static int
+found_exit(char *keybuf, int hx, int cc)
+{                              /* return true if the user wants to exit */
+       int j, k;
+       char *s;
+
+
+       if (scan_mode) {
+               if (*keybuf == '\0') {
+                       return TRUE;
+               }
+       } else {
+               /* break is a special case */
+               if (*keybuf == '\0') {
+                       fresh_line();
+                       tty_set();
+                       ptext("Hit X to exit: ");
+                       if (wait_here() == 'X') {
+                               return TRUE;
+                       }
+                       keys_tested(0, 1, hx);
+                       tty_raw(cc, char_mask);
+                       return FALSE;
+               }
+               /* is this the end? */
+               for (k = 0; (j = (keybuf[k] & STRIP_PARITY)); k++) {
+                       if (end_funky(j)) {
+                               return TRUE;
+                       }
+               }
+
+               j = TRUE;       /* does he need an updated list? */
+               for (k = 0; keybuf[k]; k++) {
+                       j &= (keybuf[k] & STRIP_PARITY) == '?';
+               }
+               if (j || end_state == '?') {
+                       keys_tested(0, 1, hx);
+                       tty_raw(cc, char_mask);
+                       end_state = 0;
+                       return FALSE;
+               }
+       }
+
+       put_cr();
+       if (hx) {
+               s = hex_expand_to(keybuf, 10);
+       } else {
+               s = expand_to(keybuf, 10);
+       }
+       sprintf(temp, "%s Unknown", s);
+       put_str(temp);
+       for (j = 0; j < MAX_FK_UNK; j++) {
+               if (j == funk) {
+                       fk_length[funk] = expand_chars;
+                       if ((fk_unknown[funk] = (char *)malloc(strlen(s) + 1))) {
+                               strcpy(fk_unknown[funk++], s);
+                       }
+                       break;
+               }
+               if (fk_length[j] == expand_chars) {
+                       if (!strcmp(fk_unknown[j], s)) {
+                               break;
+                       }
+               }
+       }
+       return FALSE;
+}
+
+/*
+**     funkey_keys(test_list, status, ch)
+**
+**     Test function keys
+*/
+static void
+funkey_keys(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       char keybuf[256];
+
+       if (keypad_xmit) {
+               tc_putp(keypad_xmit);
+       }
+       keys_tested(1, 1, hex_out);     /* also clears screen */
+       keybuf[0] = '\0';
+       end_state = 0;
+       if (scan_mode) {
+               fkmax = scan_max;
+       }
+       tty_raw(0, char_mask);
+       while (end_state != 'd') {
+               read_key(keybuf, sizeof(keybuf));
+               fresh_line();
+               if (found_match(keybuf, hex_out, 0)) {
+                       continue;
+               }
+               if (found_exit(keybuf, hex_out, 0)) {
+                       break;
+               }
+       }
+       if (keypad_local) {
+               tc_putp(keypad_local);
+       }
+       keys_tested(0, 0, hex_out);
+       ptext("Function key test ");
+       generic_done_message(t, state, ch);
+}
+
+int
+tty_meta_prep(void)
+{                              /* print a warning before the meta key test */
+       if (not_a_tty) {
+               return 0;
+       }
+       if (initial_stty_query(TTY_8_BIT)) {
+               return 0;
+       }
+       ptext("The meta key test must be run with the");
+       ptext(" terminal set for 8 data bits.  Two stop bits");
+       ptext(" may also be needed for correct display.  I will");
+       ptext(" transmit 8 bit data but if the terminal is set for");
+       ptextln(" 7 bit data, garbage may appear on the screen.");
+       return 1;
+}
+
+/*
+**     funkey_meta(test_list, status, ch)
+**
+**     Test meta key (km) (smm) (rmm)
+*/
+static void
+funkey_meta(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j, k, len;
+       char outbuf[256];
+
+       if (has_meta_key) {
+               put_crlf();
+               if (char_mask != ALLOW_PARITY) {
+                       if (tty_meta_prep()) {
+                               ptext("\nHit any key to continue > ");
+                               (void) wait_here();
+                               put_crlf();
+                       }
+               }
+               ptext("Begin meta key test. (km) (smm) (rmm)  Hit any key");
+               ptext(" with the meta key.  The character will be");
+               ptext(" displayed in hex.  If the meta key is working");
+               ptext(" then the most significant bit will be set.  Type");
+               ptextln(" 'end' to exit.");
+               tty_raw(1, ALLOW_PARITY);
+               tc_putp(meta_on);
+
+               for (i = j = k = len = 0; i != 'e' || j != 'n' || k != 'd';) {
+                       i = j;
+                       j = k;
+                       k = getchp(ALLOW_PARITY);
+                       if (k == EOF) {
+                               break;
+                       }
+                       if ((len += 3) >= columns) {
+                               put_crlf();
+                               len = 3;
+                       }
+                       sprintf(outbuf, "%02X ", k);
+                       put_str(outbuf);
+                       k &= STRIP_PARITY;
+               }
+               tc_putp(meta_off);
+               put_crlf();
+               tty_set();
+               put_crlf();
+       } else {
+               ptext("(km) Has-meta-key is not set.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     funkey_label(test_list, status, ch)
+**
+**     Test labels (nlab) (smln) (pln) (rmln) (lw) (lh)
+*/
+static void
+funkey_label(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+       char outbuf[256];
+
+       if (num_labels == -1) {
+               ptextln("Your terminal has no labels. (nlab)");
+       } else {
+               sprintf(temp, "Your terminal has %d labels (nlab) that are %d characters wide (lw) and %d lines high (lh)",
+                       num_labels, label_width, label_height);
+               ptext(temp);
+               ptextln(" Testing (smln) (pln) (rmln)");
+               if (label_on) {
+                       tc_putp(label_on);
+               }
+               if (label_width <= 0) {
+                       label_width = sizeof(outbuf) - 1;
+               }
+               for (i = 1; i <= num_labels; i++) {
+                       sprintf(outbuf, "L%d..............................", i);
+                       outbuf[label_width] = '\0';
+                       tc_putp(tparm(plab_norm, i, outbuf));
+               }
+               if (label_off) {
+                       ptext("Hit any key to remove the labels: ");
+                       (void) wait_here();
+                       tc_putp(label_off);
+               }
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     funkey_prog(test_list, status, ch)
+**
+**     Test program function keys (pfx)
+*/
+static void
+funkey_prog(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, fk;
+       char mm[256];
+
+       fk = 1; /* use function key 1 for now */
+       if (pkey_xmit) {
+               /* test program function key */
+               sprintf(temp,
+                       "(pfx) Set function key %d to transmit abc\\n", fk);
+               ptextln(temp);
+               tc_putp(tparm(pkey_xmit, fk, "abc\n"));
+               sprintf(temp, "Hit function key %d\n", fk);
+               ptextln(temp);
+               for (i = 0; i < 4; ++i)
+                       mm[i] = getchp(STRIP_PARITY);
+               mm[i] = '\0';
+               put_crlf();
+               if (mm[0] != 'a' || mm[1] != 'b' || mm[2] != 'c') {
+                       sprintf(temp, "Error string recieved was: %s", expand(mm));
+                       ptextln(temp);
+               } else {
+                       putln("Thank you\n");
+               }
+               flush_input();
+               if (key_f1) {
+                       tc_putp(tparm(pkey_xmit, fk, key_f1));
+               }
+       } else {
+               ptextln("Function key transmit (pfx), not present.");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     funkey_local(test_list, status, ch)
+**
+**     Test program local function keys (pfloc)
+*/
+static void
+funkey_local(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int fk;
+
+       fk = 1;
+       if (pkey_local) {
+               /* test local function key */
+               sprintf(temp,
+                       "(pfloc) Set function key %d to execute a clear and print \"Done!\"", fk);
+               ptextln(temp);
+               sprintf(temp, "%sDone!", liberated(clear_screen));
+               tc_putp(tparm(pkey_local, fk, temp));
+               sprintf(temp, "Hit function key %d.  Then hit return.", fk);
+               ptextln(temp);
+               (void) wait_here();
+               flush_input();
+               if (key_f1 && pkey_xmit) {
+                       tc_putp(tparm(pkey_xmit, fk, key_f1));
+               }
+       } else {
+               ptextln("Function key execute local (pfloc), not present.");
+       }
+
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     printer_on(test_list, status, ch)
+**
+**     Test printer on/off (mc4) (mc5) (mc5i)
+*/
+static void
+printer_on(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (!prtr_on || !prtr_off) {
+               ptextln("Printer on/off missing. (mc5) (mc4)");
+       } else if (prtr_silent) {
+               ptextln("Your printer is silent. (mc5i) is set.");
+               tc_putp(prtr_on);
+               ptextln("This line should be on the printer but not your screen. (mc5)");
+               tc_putp(prtr_off);
+               ptextln("This line should be only on the screen. (mc4)");
+       } else {
+               ptextln("Your printer is not silent. (mc5i) is reset.");
+               tc_putp(prtr_on);
+               ptextln("This line should be on the printer and the screen. (mc5)");
+               tc_putp(prtr_off);
+               ptextln("This line should only be on the screen. (mc4)");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     printer_mc0(test_list, status, ch)
+**
+**     Test screen print (mc0)
+*/
+static void
+printer_mc0(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (print_screen) {
+               ptext("I am going to send the contents of the screen to");
+               ptext(" the printer, then wait for a keystroke from you.");
+               ptext("  All of the text that appears on the screen");
+               ptextln(" should be printed. (mc0)");
+               tc_putp(print_screen);
+       } else {
+               ptext("(mc0) Print-screen is not present.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+
+static void
+line_pattern(void)
+{                              /* put up a pattern that will help count the
+                                  number of lines */
+       int i, j;
+
+       put_clear();
+       if (over_strike) {
+               for (i = 0; i < 100; i++) {
+                       if (i) {
+                               put_crlf();
+                       }
+                       for (j = i / 10; j; j--) {
+                               put_this(' ');
+                       }
+                       put_this('0' + ((i + 1) % 10));
+               }
+       } else  /* I assume it will scroll */ {
+               for (i = 100; i; i--) {
+                       sprintf(temp, "\r\n%d", i);
+                       put_str(temp);
+               }
+       }
+}
+
+
+static void
+column_pattern(void)
+{                              /* put up a pattern that will help count the
+                                  number of columns */
+       int i, j;
+
+       put_clear();
+       for (i = 0; i < 20; i++) {
+               for (j = 1; j < 10; j++) {
+                       put_this('0' + j);
+               }
+               put_this('.');
+       }
+}
+
+/*
+**     report_help()
+**
+**     Print the help text for the echo tests
+*/
+static void
+report_help(int crx)
+{
+       ptextln("The following commands may also be entered:");
+       ptextln(" clear   clear screen.");
+       ptextln(" columns print a test patterm to help count screen width.");
+       ptextln(" lines   print a test patterm to help count screen length.");
+       ptextln(" end     exit.");
+       ptextln(" echo    redisplay last report.");
+       if (crx) {
+               ptextln(" hex     redisplay last report in hex.");
+       } else {
+               ptextln(" hex     toggle hex display mode.");
+       }
+       ptextln(" help    display this list.");
+       ptextln(" high    toggle forced high bit (0x80).");
+       ptextln(" scan    toggle scan mode.");
+       ptextln(" one     echo one character after <cr> or <lf> as is. (report mode)");
+       ptextln(" two     echo two characters after <cr> or <lf> as is.");
+       ptextln(" all     echo all characters after <cr> or <lf> as is. (echo mode)");
+}
+
+/*
+**     tools_report(testlist, state, ch)
+**
+**     Run the echo tool and report tool
+*/
+void
+tools_report(
+       struct test_list *t,
+       int *state GCC_UNUSED,
+       int *pch GCC_UNUSED)
+{
+       int i, j, ch, crp, crx, high_bit, save_scan_mode, hex_display;
+       char buf[1024];
+       char txt[8];
+
+       hex_display = hex_out;
+       put_clear();
+       if ((crx = (t->flags & 255)) == 1) {
+               ptext("Characters after a CR or LF will be echoed as");
+               ptextln(" is.  All other characters will be expanded.");
+               report_help(crx);
+       } else {        /* echo test */
+               ptextln("Begin echo test.");
+               report_help(crx);
+       }
+       txt[sizeof(txt) - 1] = '\0';
+       save_scan_mode = scan_mode;
+       tty_raw(1, char_mask);
+       for (i = crp = high_bit = 0;;) {
+               ch = getchp(char_mask);
+               if (ch == EOF) {
+                       break;
+               }
+               if (i >= (int) sizeof(buf) - 1) {
+                       i = 0;
+               }
+               buf[i++] = ch;
+               buf[i] = '\0';
+               for (j = 0; j < (int) sizeof(txt) - 1; j++) {
+                       txt[j] = txt[j + 1];
+               }
+               txt[sizeof(txt) - 1] = ch & STRIP_PARITY;
+               if (crx == 0) { /* echo test */
+                       if (hex_display) {
+                               ptext(hex_expand_to(&buf[i - 1], 3));
+                       } else {
+                               tc_putch(ch | high_bit);
+                       }
+               } else /* status report test */
+               if (ch == '\n' || ch == '\r') {
+                       put_crlf();
+                       crp = 0;
+               } else if (crp++ < crx) {
+                       tc_putch(ch | high_bit);
+               } else {
+                       put_str(expand(&buf[i - 1]));
+               }
+               if (!strncmp(&txt[sizeof(txt) - 7], "columns", 7)) {
+                       column_pattern();
+                       buf[i = 0] = '\0';
+                       crp = 0;
+               }
+               if (!strncmp(&txt[sizeof(txt) - 5], "lines", 5)) {
+                       line_pattern();
+                       buf[i = 0] = '\0';
+                       crp = 0;
+               }
+               if (!strncmp(&txt[sizeof(txt) - 5], "clear", 5)) {
+                       put_clear();
+                       buf[i = 0] = '\0';
+                       crp = 0;
+               }
+               if (!strncmp(&txt[sizeof(txt) - 4], "high", 4)) {
+                       high_bit ^= 0x80;
+                       if (high_bit) {
+                               ptextln("\nParity bit set");
+                       } else {
+                               ptextln("\nParity bit reset");
+                       }
+               }
+               if (!strncmp(&txt[sizeof(txt) - 4], "help", 4)) {
+                       put_crlf();
+                       report_help(crx);
+               }
+               if (!strncmp(&txt[sizeof(txt) - 4], "echo", 4)) {
+                       /* display the last status report */
+                       /* clear bypass condition on Tek terminals */
+                       put_crlf();
+                       if (i >= 4) {
+                               buf[i -= 4] = '\0';
+                       }
+                       put_str(expand(buf));
+               }
+               if (save_scan_mode &&
+                       !strncmp(&txt[sizeof(txt) - 4], "scan", 4)) {
+                       /* toggle scan mode */
+                       scan_mode = !scan_mode;
+               }
+               if (!strncmp(&txt[sizeof(txt) - 3], "end", 3))
+                       break;
+               if (!strncmp(&txt[sizeof(txt) - 3], "hex", 3)) {
+                       if (crx) {
+                               /* display the last status report in hex */
+                               /* clear bypass condition on Tek terminals */
+                               put_crlf();
+                               if (i >= 3) {
+                                       buf[i -= 3] = '\0';
+                               }
+                               put_str(hex_expand_to(buf, 3));
+                       } else {
+                               hex_display = !hex_display;
+                       }
+               }
+               if (!strncmp(&txt[sizeof(txt) - 3], "two", 3))
+                       crx = 2;
+               if (!strncmp(&txt[sizeof(txt) - 3], "one", 3))
+                       crx = 1;
+               if (!strncmp(&txt[sizeof(txt) - 3], "all", 3))
+                       crx = 0;
+       }
+       scan_mode = save_scan_mode;
+       put_crlf();
+       tty_set();
+       if (crx) {
+               ptextln("End of status report test.");
+       } else {
+               ptextln("End of echo test.");
+       }
+}
diff --git a/tack/init.c b/tack/init.c
new file mode 100644 (file)
index 0000000..e19493d
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+/* initialization and wrapup code */
+
+#include <tack.h>
+
+MODULE_ID("$Id: init.c,v 1.1 1999/04/18 01:05:23 tom Exp $")
+
+#if NCURSES_VERSION_MAJOR >= 5 || NCURSES_VERSION_PATCH >= 981219
+#define _nc_get_curterm(p) _nc_get_tty_mode(p)
+#endif
+
+FILE *debug_fp;
+char temp[1024];
+char tty_basename[64];
+
+void
+put_name(const char *cap, const char *name)
+{                              /* send the cap name followed by the cap */
+       if (cap) {
+               ptext(name);
+               tc_putp(cap);
+       }
+}
+
+static void
+report_cap(const char *tag, const char *s)
+{                              /* expand the cap or print *** missing *** */
+       int i;
+
+       ptext(tag);
+       for (i = char_count; i < 13; i++) {
+               putchp(' ');
+       }
+       put_str(" = ");
+       if (s) {
+               putln(expand(s));
+       } else {
+               putln("*** missing ***");
+       }
+}
+
+
+void
+reset_init(void)
+{                              /* send the reset and init strings */
+       int i;
+
+       ptext("Terminal reset");
+       i = char_count;
+       put_name(reset_1string, " (rs1)");
+       put_name(reset_2string, " (rs2)");
+       /* run the reset file */
+       if (reset_file && reset_file[0]) {
+               FILE *fp;
+               int ch;
+
+               can_test("rf", FLAG_TESTED);
+               if ((fp = fopen(reset_file, "r"))) {    /* send the reset file */
+                       sprintf(temp, " (rf) %s", reset_file);
+                       ptextln(temp);
+                       while (1) {
+                               ch = getc(fp);
+                               if (ch == EOF)
+                                       break;
+                               put_this(ch);
+                       }
+                       fclose(fp);
+               } else {
+                       sprintf(temp, "\nCannot open reset file (rf) %s", reset_file);
+                       ptextln(temp);
+               }
+       }
+       put_name(reset_3string, " (rs3)");
+       if (i != char_count) {
+               put_crlf();
+       }
+       ptext(" init");
+       put_name(init_1string, " (is1)");
+       put_name(init_2string, " (is2)");
+       if (set_tab && clear_all_tabs && init_tabs != 8) {
+               put_crlf();
+               tc_putp(clear_all_tabs);
+               for (char_count = 0; char_count < columns; char_count++) {
+                       put_this(' ');
+                       if ((char_count & 7) == 7) {
+                               tc_putp(set_tab);
+                       }
+               }
+               put_cr();
+       }
+       /* run the initialization file */
+       if (init_file && init_file[0]) {
+               FILE *fp;
+               int ch;
+
+               can_test("if", FLAG_TESTED);
+               if ((fp = fopen(init_file, "r"))) {     /* send the init file */
+                       sprintf(temp, " (if) %s", init_file);
+                       ptextln(temp);
+                       while (1) {
+                               ch = getc(fp);
+                               if (ch == EOF)
+                                       break;
+                               put_this(ch);
+                       }
+                       fclose(fp);
+               } else {
+                       sprintf(temp, "\nCannot open init file (if) %s", init_file);
+                       ptextln(temp);
+               }
+       }
+       if (init_prog) {
+               can_test("iprog", FLAG_TESTED);
+               (void) system(init_prog);
+       }
+       put_name(init_3string, " (is3)");
+
+       fflush(stdout);
+}
+
+/*
+**     display_basic()
+**
+**     display the basic terminal definitions
+*/
+void
+display_basic(void)
+{
+       put_str("Name: ");
+       putln(ttytype);
+
+       report_cap("\\r ^M (cr)", carriage_return);
+       report_cap("\\n ^J (ind)", scroll_forward);
+       report_cap("\\b ^H (cub1)", cursor_left);
+       report_cap("\\t ^I (ht)", tab);
+/*      report_cap("\\f ^L (ff)", form_feed);  */
+       if (newline) {
+               /* OK if missing */
+               report_cap("      (nel)", newline);
+       }
+       report_cap("      (clear)", clear_screen);
+       if (!cursor_home && cursor_address) {
+               report_cap("(cup) (home)", tparm(cursor_address, 0, 0));
+       } else {
+               report_cap("      (home)", cursor_home);
+       }
+       report_cap("ENQ   (u9)", user9);
+       report_cap("ACK   (u8)", user8);
+
+       sprintf(temp, "\nTerminal size: %d x %d.  Baud rate: %ld.  Frame size: %d.%d", columns, lines, tty_baud_rate, tty_frame_size >> 1, (tty_frame_size & 1) * 5);
+       putln(temp);
+}
+
+/*
+**     curses_setup(exec_name)
+**
+**     Startup ncurses
+*/
+void
+curses_setup(
+       char *exec_name)
+{
+       int status;
+       static TERMTYPE term;
+       char tty_filename[2048];
+
+       tty_init();
+
+       /**
+          See if the terminal is in the terminfo data base.  This call has
+       two useful benefits, 1) it returns the filename of the terminfo entry,
+       and 2) it searches only terminfo's.  This allows us to abort before
+       ncurses starts scanning the termcap file.
+       **/
+       if ((status = _nc_read_entry(tty_basename, tty_filename, &term)) == 0) {
+               fprintf(stderr, "Terminal not found: TERM=%s\n", tty_basename);
+               show_usage(exec_name);
+               exit(1);
+       }
+       if (status == -1) {
+               fprintf(stderr, "Terminfo database is inaccessible\n");
+               exit(1);
+       }
+
+       /**
+          This call will load the terminfo data base and set the cur-term
+       variable.  Only terminals that actually exist will get here so its
+       OK to ignore errors.  This is a good thing since ncurses does not
+       permit (os) or (gn) to be set.
+       **/
+       setupterm(tty_basename, 1, &status);
+
+       /**
+          Get the current terminal definitions.  This must be done before
+       getting the baudrate.
+       **/
+       _nc_get_curterm(&cur_term->Nttyb);
+       tty_baud_rate = baudrate();
+       tty_cps = (tty_baud_rate << 1) / tty_frame_size;
+
+       /* set up the defaults */
+       replace_mode = TRUE;
+       scan_mode = 0;
+       char_count = 0;
+       select_delay_type = debug_level = 0;
+       char_mask = (meta_on && meta_on[0] == '\0') ? ALLOW_PARITY : STRIP_PARITY;
+       /* Don't change the XON/XOFF modes yet. */
+       select_xon_xoff = initial_stty_query(TTY_XON_XOFF) ? 1 : needs_xon_xoff;
+
+       fflush(stdout); /* flush any output */
+       tty_set();
+
+       go_home();      /* set can_go_home */
+       put_clear();    /* set can_clear_screen */
+
+       if (send_reset_init) {
+               reset_init();
+       }
+
+       /*
+          I assume that the reset and init strings may not have the correct
+          pads.  (Because that part of the test comes much later.)  Because
+          of this, I allow the terminal some time to catch up.
+       */
+       fflush(stdout); /* waste some time */
+       sleep(1);       /* waste more time */
+       charset_can_test();
+       can_test("lines cols cr nxon rf if iprog rmp", FLAG_CAN_TEST);
+       edit_init();                    /* initialize the edit data base */
+
+       if (send_reset_init && enter_ca_mode) {
+               tc_putp(enter_ca_mode);
+               put_clear();    /* just in case we switched pages */
+       }
+       put_crlf();
+       ptext("Using terminfo from: ");
+       ptextln(tty_filename);
+       put_crlf();
+
+       if (tty_can_sync == SYNC_NEEDED) {
+               verify_time();
+       }
+
+       display_basic();
+}
+
+/*
+**     bye_kids(exit-condition)
+**
+**     Shutdown the terminal, clear the signals, and exit
+*/
+void
+bye_kids(int n)
+{                              /* reset the tty and exit */
+       ignoresig();
+       if (send_reset_init) {
+               if (exit_ca_mode) {
+                       tc_putp(exit_ca_mode);
+               }
+               if (initial_stty_query(TTY_XON_XOFF)) {
+                       if (enter_xon_mode) {
+                               tc_putp(enter_xon_mode);
+                       }
+               } else if (exit_xon_mode) {
+                       tc_putp(exit_xon_mode);
+               }
+       }
+       if (debug_fp) {
+               fclose(debug_fp);
+       }
+       if (log_fp) {
+               fclose(log_fp);
+       }
+       tty_reset();
+       fclose(stdin);
+       fclose(stdout);
+       fclose(stderr);
+       if (not_a_tty)
+               sleep(1);
+       exit(n);
+}
diff --git a/tack/menu.c b/tack/menu.c
new file mode 100644 (file)
index 0000000..a2bcc38
--- /dev/null
@@ -0,0 +1,421 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: menu.c,v 1.1 1998/01/10 00:29:30 tom Exp $")
+
+/*
+   Menu control
+ */
+
+static void test_byname(struct test_menu *, int *, int *);
+
+struct test_list *augment_test;
+char prompt_string[80];        /* menu prompt storage */
+
+/*
+**     menu_prompt()
+**
+**     Print the menu prompt string.
+*/
+void
+menu_prompt(void)
+{
+       ptext(&prompt_string[1]);
+}
+
+/*
+**     menu_test_loop(test-structure, state, control-character)
+**
+**     This function implements the repeat test function.
+*/
+static void
+menu_test_loop(
+       struct test_list *test,
+       int *state,
+       int *ch)
+{
+       int nch, p;
+
+       if ((test->flags & MENU_REP_MASK) && (augment_test != test)) {
+               /* set the augment variable (first time only) */
+               p = (test->flags >> 8) & 15;
+               if ((test->flags & MENU_REP_MASK) == MENU_LM1) {
+                       augment = lines - 1;
+               } else
+               if ((test->flags & MENU_ONE_MASK) == MENU_ONE) {
+                       augment = 1;
+               } else
+               if ((test->flags & MENU_LC_MASK) == MENU_lines) {
+                       augment = lines * p / 10;
+               } else
+               if ((test->flags & MENU_LC_MASK) == MENU_columns) {
+                       augment = columns * p / 10;
+               } else {
+                       augment = 1;
+               }
+               augment_test = test;
+               set_augment_txt();
+       }
+       do {
+               if ((test->flags | *state) & MENU_CLEAR) {
+                       put_clear();
+               } else
+               if (line_count + test->lines_needed >= lines) {
+                       put_clear();
+               }
+               nch = 0;
+               if (test->test_procedure) {
+                       /* The procedure takes precidence so I can pass
+                          the menu entry as an argument.
+                       */
+                       can_test(test->caps_done, FLAG_TESTED);
+                       can_test(test->caps_tested, FLAG_TESTED);
+                       test->test_procedure(test, state, &nch);
+               } else
+               if (test->sub_menu) {
+                       /* nested menu's */
+                       menu_display(test->sub_menu, &nch);
+                       *state = 0;
+                       if (nch == 'q' || nch == 's') {
+                               /* Quit and skip are killed here */
+                               nch = '?';
+                       }
+               } else {
+                       break;  /* cya */
+               }
+               if (nch == '\r' || nch == '\n' || nch == 'n') {
+                       nch = 0;
+                       break;
+               }
+       } while (nch == 'r');
+       *ch = nch;
+}
+
+/*
+**     menu_display(menu-structure, flags)
+**
+**     This function implements menu control.
+*/
+void
+menu_display(
+       struct test_menu *menu,
+       int *last_ch)
+{
+       int test_state = 0, run_standard_tests;
+       int hot_topic, ch = 0, nch = 0;
+       struct test_list *mt;
+       struct test_list *repeat_tests = 0;
+       int repeat_state = 0;
+       int prompt_length;
+
+       prompt_length = strlen(prompt_string);
+       if (menu->ident) {
+               sprintf(&prompt_string[prompt_length], "/%s", menu->ident);
+       }
+       hot_topic = menu->default_action;
+       run_standard_tests = menu->standard_tests ?
+               menu->standard_tests[0] : -1;
+       if (!last_ch) {
+               last_ch = &ch;
+       }
+       while (1) {
+               if (ch == 0) {
+                       /* Display the menu */
+                       put_crlf();
+                       if (menu->menu_function) {
+                               /*
+                                  this function may be used to restrict menu
+                                  entries.  If used it must print the title.
+                               */
+                               menu->menu_function(menu);
+                       } else
+                       if (menu->menu_title) {
+                               ptextln(menu->menu_title);
+                       }
+                       for (mt = menu->tests; (mt->flags & MENU_LAST) == 0; mt++) {
+                               if (mt->menu_entry) {
+                                       ptext(" ");
+                                       ptextln(mt->menu_entry);
+                               }
+                       }
+                       if (menu->standard_tests) {
+                               ptext(" ");
+                               ptextln(menu->standard_tests);
+                               ptextln(" r) repeat test");
+                               ptextln(" s) skip to next test");
+                       }
+                       ptextln(" q) quit");
+                       ptextln(" ?) help");
+               }
+               if (ch == 0 || ch == REQUEST_PROMPT) {
+                       put_crlf();
+                       ptext(&prompt_string[1]);
+                       if (hot_topic) {
+                               ptext(" [");
+                               putchp(hot_topic);
+                               ptext("]");
+                       }
+                       ptext(" > ");
+                       /* read a character */
+                       ch = wait_here();
+               }
+               if (ch == '\r' || ch == '\n') {
+                       ch = hot_topic;
+               }
+               if (ch == 'q') {
+                       break;
+               }
+               if (ch == '?') {
+                       ch = 0;
+                       continue;
+               }
+               nch = ch;
+               ch = 0;
+               /* Run one of the standard tests (by request) */
+               for (mt = menu->tests; (mt->flags & MENU_LAST) == 0; mt++) {
+                       if (mt->menu_entry && (nch == mt->menu_entry[0])) {
+                               if (mt->flags & MENU_MENU) {
+                                       test_byname(menu, &test_state, &nch);
+                               } else {
+                                       menu_test_loop(mt, &test_state, &nch);
+                               }
+                               ch = nch;
+                               if ((mt->flags & MENU_COMPLETE) && ch == 0) {
+                                       /* top level */
+                                       hot_topic = 'q';
+                                       ch = '?';
+                               }
+                       }
+               }
+               if (menu->standard_tests && nch == 'r') {
+                       menu->resume_tests = repeat_tests;
+                       test_state = repeat_state;
+                       nch = run_standard_tests;
+               }
+               if (nch == run_standard_tests) {
+                       if (!(mt = menu->resume_tests)) {
+                               mt = menu->tests;
+                       }
+                       if (mt->flags & MENU_LAST) {
+                               mt = menu->tests;
+                       }
+                       /* Run the standard test suite */
+                       for ( ; (mt->flags & MENU_LAST) == 0; ) {
+                               if ((mt->flags & MENU_NEXT) == MENU_NEXT) {
+                                       repeat_tests = mt;
+                                       repeat_state = test_state;
+                                       nch = run_standard_tests;
+                                       menu_test_loop(mt, &test_state, &nch);
+                                       if (nch != 0 && nch != 'n') {
+                                               ch = nch;
+                                               break;
+                                       }
+                                       if (test_state & MENU_STOP) {
+                                               break;
+                                       }
+                               }
+                               mt++;
+                       }
+                       if (ch == 0) {
+                               ch = hot_topic;
+                       }
+                       menu->resume_tests = mt;
+                       menu->resume_state = test_state;
+                       menu->resume_char = ch;
+
+                       if (ch == run_standard_tests) {
+                               /* pop up a level */
+                               break;
+                       }
+               }
+       }
+       *last_ch = ch;
+       prompt_string[prompt_length] = '\0';
+}
+
+/*
+**     generic_done_message(test_list)
+**
+**     Print the Done message and request input.
+*/
+void
+generic_done_message(
+       struct test_list *test,
+       int *state,
+       int *ch)
+{
+       char done_message[128];
+
+       if (test->caps_done) {
+               sprintf(done_message, "(%s) Done ", test->caps_done);
+               ptext(done_message);
+       } else {
+               ptext("Done ");
+       }
+       *ch = wait_here();
+       if (*ch == '\r' || *ch == '\n' || *ch == 'n') {
+               *ch = 0;
+       }
+       if (*ch == 's') {
+               *state |= MENU_STOP;
+               *ch = 0;
+       }
+}
+
+/*
+**     menu_clear_screen(test, state, ch)
+**
+**     Just clear the screen.
+*/
+void
+menu_clear_screen(
+       struct test_list *test GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       put_clear();
+}
+
+/*
+**     menu_reset_init(test, state, ch)
+**
+**     Send the reset and init strings.
+*/
+void
+menu_reset_init(
+       struct test_list *test GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       reset_init();
+       put_crlf();
+}
+
+/*
+**     subtest_menu(test, state, ch)
+**
+**     Scan the menu looking for something to execute
+**     Return TRUE if we found anything.
+*/
+int
+subtest_menu(
+       struct test_list *test,
+       int *state,
+       int *ch)
+{
+       struct test_list *mt;
+
+       if (*ch) {
+               for (mt = test; (mt->flags & MENU_LAST) == 0; mt++) {
+                       if (mt->menu_entry && (*ch == mt->menu_entry[0])) {
+                               *ch = 0;
+                               menu_test_loop(mt, state, ch);
+                               return TRUE;
+                       }
+               }
+       }
+       return FALSE;
+}
+
+/*
+**     menu_can_scan(menu-structure)
+**
+**     Recursivly scan the menu tree and find which cap names can be tested.
+*/
+void
+menu_can_scan(
+       const struct test_menu *menu)
+{
+       struct test_list *mt;
+
+       for (mt = menu->tests; (mt->flags & MENU_LAST) == 0; mt++) {
+               can_test(mt->caps_done, FLAG_CAN_TEST);
+               can_test(mt->caps_tested, FLAG_CAN_TEST);
+               if (!(mt->test_procedure)) {
+                       if (mt->sub_menu) {
+                               menu_can_scan(mt->sub_menu);
+                       }
+               }
+       }
+}
+
+/*
+**     menu_search(menu-structure, cap)
+**
+**     Recursivly search the menu tree and execute any tests that use cap.
+*/
+static void
+menu_search(
+       struct test_menu *menu,
+       int *state,
+       int *ch,
+       char *cap)
+{
+       struct test_list *mt;
+       int nch;
+
+       for (mt = menu->tests; (mt->flags & MENU_LAST) == 0; mt++) {
+               nch = 0;
+               if (cap_match(mt->caps_done, cap)
+                       || cap_match(mt->caps_tested, cap)) {
+                       menu_test_loop(mt, state, &nch);
+               }
+               if (!(mt->test_procedure)) {
+                       if (mt->sub_menu) {
+                               menu_search(mt->sub_menu, state, &nch, cap);
+                       }
+               }
+               if (*state & MENU_STOP) {
+                       break;
+               }
+               if (nch != 0 && nch != 'n') {
+                       *ch = nch;
+                       break;
+               }
+       }
+}
+
+/*
+**     test_byname(menu, state, ch)
+**
+**     Get a cap name then run all tests that use that cap.
+*/
+static void
+test_byname(
+       struct test_menu *menu,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       int test_state = 0;
+       char cap[32];
+
+       if (tty_can_sync == SYNC_NOT_TESTED) {
+               verify_time();
+       }
+       ptext("enter name: ");
+       read_string(cap, sizeof(cap));
+       if (cap[0]) {
+               menu_search(menu, &test_state, ch, cap);
+       }
+       *ch = '?';
+}
diff --git a/tack/modes.c b/tack/modes.c
new file mode 100644 (file)
index 0000000..f370ba8
--- /dev/null
@@ -0,0 +1,913 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: modes.c,v 1.1 1998/01/10 00:29:53 tom Exp $")
+
+/*
+ * Tests boolean flags and terminal modes.
+ */
+static void subtest_os(struct test_list *, int *, int *);
+static void subtest_rmam(struct test_list *, int *, int *);
+static void subtest_smam(struct test_list *, int *, int *);
+static void subtest_am(struct test_list *, int *, int *);
+static void subtest_ul(struct test_list *, int *, int *);
+static void subtest_uc(struct test_list *, int *, int *);
+static void subtest_bw(struct test_list *, int *, int *);
+static void subtest_xenl(struct test_list *, int *, int *);
+static void subtest_eo(struct test_list *, int *, int *);
+static void subtest_xmc(struct test_list *, int *, int *);
+static void subtest_xhp(struct test_list *, int *, int *);
+static void subtest_mir(struct test_list *, int *, int *);
+static void subtest_msgr(struct test_list *, int *, int *);
+static void subtest_tbc(struct test_list *, int *, int *);
+static void subtest_xt(struct test_list *, int *, int *);
+static void subtest_hts(struct test_list *, int *, int *);
+static void subtest_cbt(struct test_list *, int *, int *);
+static void subtest_in(struct test_list *, int *, int *);
+static void subtest_dadb(struct test_list *, int *, int *);
+
+struct test_list mode_test_list[] = {
+       {0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
+       {MENU_NEXT, 3, "os", 0, 0, subtest_os, 0},
+       {MENU_NEXT, 1, "rmam", 0, 0, subtest_rmam, 0},
+       {MENU_NEXT, 1, "smam", 0, 0, subtest_smam, 0},
+       {MENU_NEXT, 1, "am", 0, 0, subtest_am, 0},
+       {MENU_NEXT, 3, "ul", 0, 0, subtest_ul, 0},
+       {MENU_NEXT, 3, "uc", 0, 0, subtest_uc, 0},
+       {MENU_NEXT, 3, "bw", 0, 0, subtest_bw, 0},
+       {MENU_NEXT, 4, "xenl", 0, 0, subtest_xenl, 0},
+       {MENU_NEXT, 3, "eo", 0, 0, subtest_eo, 0},
+       {MENU_NEXT, 3, "xmc", 0, 0, subtest_xmc, 0},
+       {MENU_NEXT, 3, "xhp", 0, 0, subtest_xhp, 0},
+       {MENU_NEXT, 6, "mir", 0, 0, subtest_mir, 0},
+       {MENU_NEXT, 6, "msgr", 0, 0, subtest_msgr, 0},
+       {MENU_NEXT | MENU_CLEAR, 0, "tbc", "it", 0, subtest_tbc, 0},
+       {MENU_NEXT | MENU_CLEAR, 0, "hts", "it", 0, subtest_hts, 0},
+       {MENU_NEXT, 4, "xt", "it", 0, subtest_xt, 0},
+       {MENU_NEXT, 1, "cbt", "it", 0, subtest_cbt, 0},
+       {MENU_NEXT, 6, "in", 0, 0, subtest_in, 0},
+       {MENU_NEXT, 1, "da) (db", 0, 0, subtest_dadb, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+/*
+**     subtest_os(test_list, status, ch)
+**
+**     test over strike mode (os)
+*/
+static void
+subtest_os(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       ptext("(os) should be true, not false.");
+       put_cr();
+       ptextln("(os) should be           false.");
+       sprintf(temp, "(os) over-strike is %s in the data base.  ",
+               over_strike ? "true" : "false");
+       ptext(temp);
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_rmam(test_list, status, ch)
+**
+**     test exit automatic margins mode (rmam)
+*/
+static void
+subtest_rmam(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int j;
+
+       if (!exit_am_mode) {
+               ptext("(rmam) not present.  ");
+       } else
+       if (!can_go_home) {
+               ptext("(rmam) not tested, no way to home cursor.  ");
+       } else
+       if (over_strike) {
+               put_clear();
+               go_home();
+               tc_putp(exit_am_mode);
+               ptext("\n(rmam) will     reset (am)");
+               go_home();
+               for (j = 0; j < columns; j++)
+                       put_this(' ');
+               ptext("(rmam) will not reset (am)");
+               go_home();
+               put_newlines(2);
+       } else {
+               put_clear();
+               go_home();
+               tc_putp(exit_am_mode);
+               ptext("\n(rmam) will reset (am)");
+               go_home();
+               for (j = 0; j < columns; j++)
+                       put_this(' ');
+               ptext("(rmam) will not reset (am) ");
+               go_home();
+               put_str("                          ");
+               go_home();
+               put_newlines(2);
+       }
+       ptext("Exit-automatic-margins ");
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_smam(test_list, status, ch)
+**
+**     test enter automatic margins mode (smam)
+*/
+static void
+subtest_smam(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!enter_am_mode) {
+               ptext("(smam) not present.  ");
+       } else
+       if (!can_go_home) {
+               ptext("(smam) not tested, no way to home cursor.  ");
+       } else
+       if (over_strike) {
+               put_clear();
+               go_home();
+               tc_putp(enter_am_mode);
+               ptext("\n(smam) will ");
+               i = char_count;
+               ptext("not set (am)");
+               go_home();
+               for (j = -i; j < columns; j++)
+                       put_this(' ');
+               put_str("@@@");
+               put_newlines(2);
+       } else {
+               put_clear();
+               go_home();
+               tc_putp(enter_am_mode);
+               ptext("\n(smam) will not set (am)");
+               go_home();
+               for (j = 0; j < columns; j++)
+                       put_this(' ');
+               ptext("(smam) will set (am)    ");
+               go_home();
+               put_str("                          ");
+               put_newlines(2);
+       }
+       ptext("Enter-automatic-margins ");
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_am(test_list, status, ch)
+**
+**     test automatic margins (am)
+*/
+static void
+subtest_am(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!can_go_home) {
+               ptextln("(am) not tested, no way to home cursor.  ");
+       } else
+       if (over_strike) {
+               put_clear();
+               go_home();
+               ptext("\n(am) should ");
+               i = char_count;
+               ptext("not be set");
+               go_home();
+               for (j = -i; j < columns; j++)
+                       put_this(' ');
+               put_str("@@@");
+               go_home();
+               put_newlines(2);
+               sprintf(temp, "(am) is %s in the data base",
+                       auto_right_margin ? "true" : "false");
+               ptextln(temp);
+       } else {
+               put_clear();
+               go_home();
+               ptext("\n(am) should not be set");
+               go_home();
+               for (j = 0; j < columns; j++)
+                       put_this(' ');
+               ptext("(am) should be set    ");
+               go_home();
+               put_str("                       \n\n");
+               sprintf(temp, "(am) is %s in the data base",
+                       auto_right_margin ? "true" : "false");
+               ptextln(temp);
+       }
+       ptext("Automatic-right-margin ");
+       generic_done_message(t, state, ch);
+}
+
+/* Note: uprint() sends underscore back-space character, and
+        ucprint() sends character back-space underscore.  */
+
+/*
+**     uprint(string)
+**
+**     underline string for (ul) test
+*/
+static void
+uprint(const char *s)
+{
+       if (s) {
+               while (*s) {
+                       put_str("_\b");
+                       putchp(*s++);
+               }
+       }
+}
+
+/*
+**     ucprint(string)
+**
+**     underline string for (uc) test
+*/
+static void
+ucprint(const char *s)
+{
+       if (s) {
+               while (*s) {
+                       putchp(*s++);
+                       putchp('\b');
+                       tc_putp(underline_char);
+               }
+       }
+}
+
+/*
+**     subtest_ul(test_list, status, ch)
+**
+**     test transparent underline (ul)
+*/
+static void
+subtest_ul(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (!over_strike) {
+               /* (ul) is used only if (os) is reset */
+               put_crlf();
+               sprintf(temp, "This text should %sbe underlined.",
+                       transparent_underline ? "" : "not ");
+               uprint(temp);
+               put_crlf();
+               ptextln("If the above line is not underlined the (ul) should be false.");
+               sprintf(temp, "(ul) Transparent-underline is %s in the data base",
+                       transparent_underline ? "true" : "false");
+               ptextln(temp);
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     subtest_uc(test_list, status, ch)
+**
+**     test underline character (uc)
+*/
+static void
+subtest_uc(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (!over_strike) {
+               if (underline_char) {
+                       ucprint("This text should be underlined.");
+                       put_crlf();
+                       ptextln("If the above text is not underlined the (uc) has failed.");
+                       ptext("Underline-character ");
+               } else {
+                       ptext("(uc) underline-character is not defined.  ");
+               }
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     subtest_bw(test_list, status, ch)
+**
+**     test auto left margin (bw)
+*/
+static void
+subtest_bw(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (over_strike) {
+               /* test (bw) */
+               ptext("\n(bw) should ");
+               i = char_count;
+               ptextln("not be set.");
+               for (j = i; j < columns; j++)
+                       put_str("\b");
+               put_str("@@@");
+               put_crlf();
+               sprintf(temp, "(bw) Auto-left-margin is %s in the data base",
+                       auto_left_margin ? "true" : "false");
+               ptextln(temp);
+       } else {
+               /* test (bw) */
+               ptextln("(bw) should not be set.");
+               for (i = 12; i < columns; i++)
+                       put_str("\b");
+               if (delete_character) {
+                       for (i = 0; i < 4; i++)
+                               tc_putp(delete_character);
+               } else {
+                       put_str("   ");
+               }
+               put_crlf();
+               sprintf(temp, "(bw) Auto-left-margin is %s in the data base",
+                       auto_left_margin ? "true" : "false");
+               ptextln(temp);
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_tbc(test_list, status, ch)
+**
+**     test clear tabs (tbc)
+*/
+static void
+subtest_tbc(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int tabat;              /* the tab spacing we end up with */
+       int i;
+
+       if (clear_all_tabs && !set_tab) {
+               ptext("(tbc) Clear-all-tabs is defined but (hts) set-tab is not.  ");
+               ptext("Once the tabs are cleared there is no way to set them.  ");
+       } else
+       if (clear_all_tabs) {
+               tabat = set_tab ? 8 : init_tabs;
+               tc_putp(clear_all_tabs);
+               ptext("Clear tabs (tbc)");
+               go_home();
+               put_crlf();
+               putchp('\t');
+               putchp('T');
+               go_home();
+               put_newlines(2);
+               for (i = 0; i < columns; i++) {
+                       if (i == tabat) {
+                               putchp('T');
+                       } else {
+                               putchp('.');
+                       }
+               }
+               go_home();
+               ptext("\n\n\nIf the above two lines have T's in the same column then (tbc) has failed.  ");
+       } else {
+               ptext("(tbc) Clear-all-tabs is not defined.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_hts(test_list, status, ch)
+**
+**     (ht) and set tabs with (hts)
+*/
+static void
+subtest_hts(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int tabat;              /* the tab spacing we end up with */
+       int i;
+
+       tabat = init_tabs;
+       if (set_tab) {
+               ptext("Tabs set with (hts)");
+               put_crlf();
+               for (i = 1; i < columns; i++) {
+                       if (i % 8 == 1) {
+                               tc_putp(set_tab);
+                       }
+                       putchp(' ');
+               }
+               tabat = 8;
+       } else {
+               sprintf(temp, "(hts) Set-tabs not defined.  (it) Initial-tabs at %d", init_tabs);
+               ptext(temp);
+       }
+       go_home();
+       put_newlines(2);
+       if (tabat <= 0) {
+               tabat = 8;
+       }
+       for (i = tabat; i < columns; i += tabat) {
+               putchp('\t');
+               putchp('T');
+       }
+       go_home();
+       put_newlines(3);
+       for (i = 1; i < columns; i++) {
+               putchp('.');
+       }
+       go_home();
+       put_newlines(3);
+       for (i = tabat; i < columns; i += tabat) {
+               putchp('\t');
+               putchp('T');
+       }
+       go_home();
+       put_newlines(4);
+       putchp('.');
+       for (i = 2; i < columns; i++) {
+               if (i % tabat == 1) {
+                       putchp('T');
+               } else {
+                       putchp('.');
+               }
+       }
+       go_home();
+       put_newlines(5);
+       if (set_tab) {
+               ptextln("If the last two lines are not the same then (hts) has failed.");
+       } else
+       if (init_tabs > 0) {
+               ptextln("If the last two lines are not the same then (it) is wrong.");
+       } else {
+               ptextln("If the last two lines are the same then maybe you do have tabs and (it) should be changed.");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_xt(test_list, status, ch)
+**
+**     (xt) glitch
+*/
+static void
+subtest_xt(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int tabat;              /* the tab spacing we end up with */
+       int cc;
+
+       tabat = set_tab ? 8 : init_tabs;
+       if (!over_strike && (tabat > 0)) {
+               ptext("(xt) should not ");
+               put_cr();
+               ptext("(xt) should");
+               cc = char_count;
+               while (cc < 16) {
+                       putchp('\t');
+                       cc = ((cc / tabat) + 1) * tabat;
+               }
+               putln("be set.");
+               sprintf(temp, "(xt) Destructive-tab is %s in the data base.",
+                       dest_tabs_magic_smso ? "true" : "false");
+               ptextln(temp);
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     subtest_cbt(test_list, status, ch)
+**
+**     (cbt) back tab
+*/
+static void
+subtest_cbt(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (back_tab) {
+               put_clear();
+               ptext("Back-tab (cbt)");
+               go_home();
+               put_crlf();
+               for (i = 1; i < columns; i++) {
+                       putchp(' ');
+               }
+               for (i = 0; i < columns; i += 8) {
+                       tc_putp(back_tab);
+                       putchp('T');
+                       tc_putp(back_tab);
+               }
+               go_home();
+               put_newlines(2);
+               for (i = 1; i < columns; i++) {
+                       if (i % 8 == 1) {
+                               putchp('T');
+                       } else {
+                               putchp(' ');
+                       }
+               }
+               go_home();
+               put_newlines(3);
+               ptextln("The preceding two lines should be the same.");
+       } else {
+               ptextln("(cbt) Back-tab not present");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_xenl(test_list, status, ch)
+**
+**     (xenl) eat newline glitch
+*/
+static void
+subtest_xenl(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j, k;
+
+       if (over_strike) {
+               /* test (xenl) on overstrike terminals */
+               if (!can_go_home || !can_clear_screen) {
+                       ptextln("(xenl) Newline-glitch not tested, can't home cursor and clear.");
+                       generic_done_message(t, state, ch);
+                       return;
+               }
+               put_clear();
+               /*
+                  this test must be done in raw mode.  Otherwise UNIX will
+                  translate CR to CRLF.
+               */
+               if (stty_query(TTY_OUT_TRANS))
+                       tty_raw(1, char_mask);
+               ptext("\nreset (xenl). Does ");
+               i = char_count;
+               put_str("not ignore CR, does ");
+               k = char_count;
+               put_str("not ignore LF");
+               go_home();
+               for (j = 0; j < columns; j++)
+                       put_this(' ');
+               put_cr();
+               for (j = 0; j < i; j++)
+                       putchp(' ');
+               put_str("@@@\n@@");
+               go_home();
+               for (j = 0; j < columns; j++)
+                       put_this(' ');
+               put_lf();
+               for (j = 0; j < k; j++)
+                       putchp(' ');
+               put_str("@@@\r@@");
+               tty_set();
+               go_home();
+               put_newlines(4);
+               sprintf(temp, "(xenl) Newline-glitch is %s in the data base",
+                       eat_newline_glitch ? "true" : "false");
+               ptextln(temp);
+       } else {
+               /* test (xenl) when (os) is reset */
+               if (!can_go_home) {
+                       ptextln("(xenl) Newline-glitch not tested, can't home cursor");
+                       generic_done_message(t, state, ch);
+                       return;
+               }
+               /* (xenl) test */
+               put_clear();
+               /*
+                  this test must be done in raw mode.  Otherwise
+                  UNIX will translate CR to CRLF.
+               */
+               if (stty_query(TTY_OUT_TRANS))
+                       tty_raw(1, char_mask);
+               for (j = 0; j < columns; j++)
+                       put_this(' ');
+               put_cr();
+               ptext("(xenl) should be set. Does not ignore CR");
+               go_home();
+               put_crlf();
+               for (j = 0; j < columns; j++)
+                       put_this(' ');
+               put_lf();       /* test (cud1) */
+               ptext("(xenl) should be set. Ignores (cud1)");
+               go_home();
+               put_newlines(3);
+               if (scroll_forward && cursor_down &&
+                       strcmp(scroll_forward, cursor_down)) {
+                       for (j = 0; j < columns; j++)
+                               put_this(' ');
+                       put_ind();      /* test (ind) */
+                       ptext("(xenl) should be set. Ignores (ind)");
+                       go_home();
+                       put_newlines(5);
+               }
+               tty_set();
+               ptextln("If you don't see text above telling you to set it, (xenl) should be false");
+               sprintf(temp, "(xenl) Newline-glitch is %s in the data base",
+                       eat_newline_glitch ? "true" : "false");
+               ptextln(temp);
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_eo(test_list, status, ch)
+**
+**     (eo) erase overstrike
+*/
+static void
+subtest_eo(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (transparent_underline || over_strike || underline_char) {
+               ptext("(eo) should ");
+               if (underline_char) {
+                       ucprint("not");
+               } else {
+                       uprint("not");
+               }
+               put_cr();
+               ptextln("(eo) should     be set");
+               sprintf(temp, "\n(eo) Erase-overstrike is %s in the data base",
+                       erase_overstrike ? "true" : "false");
+               ptextln(temp);
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     subtest_xmc(test_list, status, ch)
+**
+**     (xmc) magic cookie glitch
+*/
+static void
+subtest_xmc(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (enter_standout_mode) {
+               sprintf(temp, "\n(xmc) Magic-cookie-glitch is %d in the data base", magic_cookie_glitch);
+               ptextln(temp);
+               j = magic_cookie_glitch * 8;
+               for (i = 0; i < j; i++) {
+                       put_str(" ");
+               }
+               ptextln("        These two lines should line up.");
+               if (j > 0) {
+                       char_count += j;
+               }
+               for (i = 0; i < 4; i++) {
+                       put_mode(enter_standout_mode);
+                       putchp(' ');
+                       put_mode(exit_standout_mode);
+                       putchp(' ');
+               }
+               ptextln("These two lines should line up.");
+               ptext("If they don't line up then (xmc) magic-cookie-glitch should be greater than zero.  ");
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     subtest_xhp(test_list, status, ch)
+**
+**     (xhp) erase does not clear standout mode
+*/
+static void
+subtest_xhp(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (enter_standout_mode) {
+               put_crlf();
+               put_mode(enter_standout_mode);
+               put_str("Stand out");
+               put_mode(exit_standout_mode);
+               put_cr();
+               ptextln("If any part of this line is standout then (xhp) should be set.");
+               sprintf(temp, "(xhp) Erase-standout-glitch is %s in the data base",
+                       ceol_standout_glitch ? "true" : "false");
+               ptextln(temp);
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     subtest_mir(test_list, status, ch)
+**
+**     (mir) move in insert mode
+*/
+static void
+subtest_mir(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+       char *s;
+
+       if (enter_insert_mode && exit_insert_mode && cursor_address) {
+               put_clear();
+               i = line_count;
+               put_str("\nXXX\nXXX\nXXX\nXXX");
+               tc_putp(enter_insert_mode);
+               s = tparm(cursor_address, i + 1, 0);
+               tputs(s, lines, tc_putch);
+               putchp('X');
+               s = tparm(cursor_address, i + 2, 1);
+               tputs(s, lines, tc_putch);
+               putchp('X');
+               s = tparm(cursor_address, i + 3, 2);
+               tputs(s, lines, tc_putch);
+               putchp('X');
+               s = tparm(cursor_address, i + 4, 3);
+               tputs(s, lines, tc_putch);
+               putchp('X');
+               tc_putp(exit_insert_mode);
+               put_newlines(2);
+               ptextln("If you see a 4 by 4 block of X's then (mir) should be true.");
+               sprintf(temp, "(mir) Move-in-insert-mode is %s in the data base",
+                       move_insert_mode ? "true" : "false");
+               ptextln(temp);
+       } else {
+               ptext("(mir) Move-in-insert-mode not tested, ");
+               if (!enter_insert_mode) {
+                       ptext("(smir) ");
+               }
+               if (!exit_insert_mode) {
+                       ptext("(rmir) ");
+               }
+               if (!cursor_address) {
+                       ptext("(cup) ");
+               }
+               ptext("not present.  ");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_msgr(test_list, status, ch)
+**
+**     (msgr) move in sgr mode
+*/
+static void
+subtest_msgr(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (cursor_address &&
+               ((enter_standout_mode && exit_standout_mode) ||
+               (enter_alt_charset_mode && exit_alt_charset_mode))) {
+               put_crlf();
+               i = line_count + 1;
+               tputs(tparm(cursor_address, i, 0), lines, tc_putch);
+               put_mode(enter_alt_charset_mode);
+               put_crlf();
+               /*
+                  some versions of the wy-120 can not clear lines or
+                  screen when in alt charset mode.  If (el) and (ed)
+                  are defined then I can test them.  If they are not
+                  defined then they can not break (msgr)
+               */
+               tc_putp(clr_eos);
+               tc_putp(clr_eol);
+               put_mode(exit_alt_charset_mode);
+               put_mode(enter_standout_mode);
+               putchp('X');
+               tputs(tparm(cursor_address, i + 2, 1), lines, tc_putch);
+               putchp('X');
+               tputs(tparm(cursor_address, i + 3, 2), lines, tc_putch);
+               putchp('X');
+               tputs(tparm(cursor_address, i + 4, 3), lines, tc_putch);
+               putchp('X');
+               put_mode(exit_standout_mode);
+               put_crlf();
+               tc_putp(clr_eos);       /* OK if missing */
+               put_crlf();
+               ptextln("If you see a diagonal line of standout X's then (msgr) should be true.  If any of the blanks are standout then (msgr) should be false.");
+               sprintf(temp, "(msgr) Move-in-SGR-mode is %s in the data base",
+                       move_standout_mode ? "true" : "false");
+               ptextln(temp);
+       } else {
+               ptextln("(smso) (rmso) (smacs) (rmacs) missing; (msgr) Move-in-SGR-mode not tested.");
+       }
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     subtest_in(test_list, status, ch)
+**
+**     (in) insert null glitch
+*/
+static void
+subtest_in(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (enter_insert_mode && exit_insert_mode) {
+               ptextln("\nTesting (in) with (smir) and (rmir)");
+               putln("\tIf these two lines line up ...");
+               put_str("\tIf these two lines line up ...");
+               put_cr();
+               tc_putp(enter_insert_mode);
+               putchp(' ');
+               tc_putp(exit_insert_mode);
+               ptext("\nthen (in) should be set.  ");
+               sprintf(temp,
+                       "(in) Insert-null-glitch is %s in the data base.",
+                       insert_null_glitch ? "true" : "false");
+               ptextln(temp);
+               generic_done_message(t, state, ch);
+       }
+}
+
+/*
+**     subtest_dadb(test_list, status, ch)
+**
+**     (da) (db) data above, (db) data below
+*/
+static void
+subtest_dadb(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (can_clear_screen && scroll_reverse && scroll_forward) {
+               put_clear();
+               if (scroll_reverse)
+                       ptext("(da) Data-above should be set\r");
+               home_down();
+               if (scroll_forward)
+                       ptext("(db) Data-below should be set\r");
+               tc_putp(scroll_forward);
+               go_home();
+               tc_putp(scroll_reverse);
+               tc_putp(scroll_reverse);
+               home_down();
+               tc_putp(scroll_forward);
+               go_home();
+               ptextln("\n\n\n\n\nIf the top line is blank then (da) should be false.");
+               ptextln("If the bottom line is blank then (db) should be false.");
+               sprintf(temp, "\n(da) Data-above is %s, and (db) Data-below is %s, in the data base.",
+                       memory_above ? "true" : "false",
+                       memory_below ? "true" : "false");
+               ptextln(temp);
+               line_count = lines;
+       } else {
+               ptextln("(da) Data-above, (db) Data-below not tested, scrolls or (clear) is missing.");
+       }
+       generic_done_message(t, state, ch);
+}
index 334d512cb6c878c9a595ee312bac87ce31b1a750..79c2d2265f7b0d4d0545862cfd3d6eb5ea288694 100644 (file)
@@ -1,47 +1,18 @@
-# $Id: modules,v 1.3 1998/02/11 12:14:03 tom Exp $
-##############################################################################
-# Copyright (c) 1998 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: Thomas E. Dickey <dickey@clark.net> 1997
-#
-ansi   tack    $(srcdir)
-charset        tack    $(srcdir)
-color  tack    $(srcdir)
-control        tack    $(srcdir)
-crum   tack    $(srcdir)
-edit   tack    $(srcdir)
-fun    tack    $(srcdir)
-init   tack    $(srcdir)
-menu   tack    $(srcdir)
-modes  tack    $(srcdir)
-output tack    $(srcdir)
-pad    tack    $(srcdir)
-scan   tack    $(srcdir)
-sync   tack    $(srcdir)
-sysdep tack    $(srcdir)
-tack   tack    $(srcdir)
+# $Id: modules,v 1.4 1999/04/18 01:43:32 tom Exp $
+@ base
+ansi      progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+charset   progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+color     progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+control   progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+crum      progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+edit      progs   $(srcdir) $(srcdir)/tack.h ../include/term.h $(INCDIR)/tic.h
+fun       progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+init      progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+menu      progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+modes     progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+output    progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+pad       progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+scan      progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+sync      progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+sysdep    progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
+tack      progs   $(srcdir) $(srcdir)/tack.h ../include/term.h
diff --git a/tack/output.c b/tack/output.c
new file mode 100644 (file)
index 0000000..3c419a8
--- /dev/null
@@ -0,0 +1,818 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+/* screen formatting and I/O utility functions */
+
+#include <tack.h>
+#include <time.h>
+
+MODULE_ID("$Id: output.c,v 1.4 1999/06/16 00:46:53 tom Exp $")
+
+/* globals */
+long char_sent;                        /* number of characters sent */
+int char_count;                        /* counts characters */
+int line_count;                        /* counts line feeds */
+int expand_chars;              /* length of expand() string */
+int replace_mode;              /* used to output replace mode padding */
+int can_go_home;               /* TRUE if we can fashion a home command */
+int can_clear_screen;          /* TRUE if we can somehow clear the screen */
+int raw_characters_sent;       /* Total output characters */
+int log_count;                 /* Number of characters on a log line */
+
+/* translate mode default strings */
+#define TM_carriage_return     TM_string[0].value
+#define TM_cursor_down         TM_string[1].value
+#define TM_scroll_forward      TM_string[2].value
+#define TM_newline             TM_string[3].value
+#define TM_cursor_left         TM_string[4].value
+#define TM_bell                        TM_string[5].value
+#define TM_form_feed           TM_string[6].value
+#define TM_tab                 TM_string[7].value
+
+struct default_string_list TM_string[TM_last] = {
+       {"cr", "\r", 0},
+       {"cud1", "\n", 0},
+       {"ind", "\n", 0},
+       {"nel", "\r\n", 0},
+       {"cub1", "\b", 0},
+       {"bel", "\007", 0},
+       {"ff", "\f", 0},
+       {"ht", "\t", 0}
+};
+
+static const char *c0[32] = {
+       "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK",
+       "BEL", "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI",
+       "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
+       "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US"
+};
+
+static const char *c1[32] = {
+       "", "", "", "", "IND", "NEL", "SSA", "ESA",
+       "HTS", "HTJ", "VTS", "PLD", "PLU", "RI", "SS2", "SS3",
+       "DCS", "PU1", "PU2", "STS", "CCH", "MW", "SPA", "EPA",
+       "", "", "", "CSI", "ST", "OSC", "PM", "APC"
+};
+
+int
+getnext(int mask)
+{                              /* get the next character without scan mode
+                                  conversion */
+       int ch;
+       unsigned char buf;
+
+       tc_putp(req_for_input);
+       fflush(stdout);
+       if (nodelay_read)
+               while (1) {
+                       ch = read(fileno(stdin), &buf, 1);
+                       if (ch == -1)
+                               return EOF;
+                       if (ch == 1)
+                               return buf;
+               }
+       ch = getchar();
+       if (ch == EOF)
+               return EOF;
+       return ch & mask;
+}
+
+
+int
+getchp(int mask)
+{                              /* read a character with scan mode conversion */
+       if (scan_mode) {
+               tc_putp(req_for_input);
+               fflush(stdout);
+               return scan_key();
+       } else
+               return getnext(mask);
+}
+
+/*
+**     tc_putch(c)
+**
+**     Output one character
+*/
+int
+tc_putch(int c)
+{
+       char_sent++;
+       raw_characters_sent++;
+       putchar(c);
+       if ((raw_characters_sent & 31) == 31) {
+               fflush(stdout);
+       }
+       if (log_fp) {
+               /* terminal output logging */
+               c &= 0xff;
+               if (c < 32) {
+                       fprintf(log_fp, "<%s>", c0[c]);
+                       log_count += 5;
+               } else
+               if (c < 127) {
+                       fprintf(log_fp, "%c", c);
+                       log_count += 1;
+               } else {
+                       fprintf(log_fp, "<%02x>", c);
+                       log_count += 4;
+               }
+               if (c == '\n' || log_count >= 80) {
+                       fprintf(log_fp, "\n");
+                       log_count = 0;
+               }
+       }
+       return (c);
+}
+
+/*
+**     tt_tputs(string, reps)
+**
+**     Output a string with tputs() translation.
+**     Use this function inside timing tests.
+*/
+void
+tt_tputs(const char *string, int reps)
+{
+       int i;
+
+       if (string) {
+               for (i = 0; i < TT_MAX; i++) {
+                       if (i >= ttp) {
+                               tt_cap[i] = string;
+                               tt_affected[i] = reps;
+                               tt_count[i] = 1;
+                               tt_delay[i] = msec_cost(string, reps);
+                               ttp++;
+                               break;
+                       }
+                       if (string == tt_cap[i] && reps == tt_affected[i]) {
+                               tt_count[i]++;
+                               tt_delay_used += tt_delay[i];
+                               break;
+                       }
+               }
+               (void) tputs(string, reps, tc_putch);
+       }
+}
+
+/*
+**     tt_putp(string)
+**
+**     Output a string with tputs() translation.
+**     Use this function inside timing tests.
+*/
+void
+tt_putp(const char *string)
+{
+       tt_tputs(string, 1);
+}
+
+/*
+**     tt_putparm(string, reps, arg1, arg2, ...)
+**
+**     Send tt_tputs(tparm(string, args...), reps)
+**     Use this function inside timing tests.
+*/
+void
+tt_putparm(
+       NCURSES_CONST char *string,
+       int reps,
+       int arg1,
+       int arg2)
+{
+       int i;
+
+       if (string) {
+               for (i = 0; i < TT_MAX; i++) {
+                       if (i >= ttp) {
+                               tt_cap[i] = string;
+                               tt_affected[i] = reps;
+                               tt_count[i] = 1;
+                               tt_delay[i] = msec_cost(string, reps);
+                               ttp++;
+                               break;
+                       }
+                       if (string == tt_cap[i] && reps == tt_affected[i]) {
+                               tt_count[i]++;
+                               tt_delay_used += tt_delay[i];
+                               break;
+                       }
+               }
+               (void) tputs(tparm((NCURSES_CONST char *)string, arg1, arg2), reps, tc_putch);
+       }
+}
+
+/*
+**     tc_putp(string)
+**
+**     Output a string with tputs() translation.
+**     Use this function instead of putp() so we can track
+**     the actual number of characters sent.
+*/
+int
+tc_putp(const char *string)
+{
+       return tputs(string, 1, tc_putch);
+}
+
+
+void
+put_this(int c)
+{                              /* output one character (with padding) */
+       tc_putch(c);
+       if (char_padding && replace_mode)
+               tt_putp(char_padding);
+}
+
+
+void
+put_cr(void)
+{
+       if (translate_mode && carriage_return) {
+               tt_putp(carriage_return);
+       } else {
+               tt_putp(TM_carriage_return);
+       }
+       char_count = 0;
+}
+
+
+void
+put_lf(void)
+{                              /* send a linefeed (only works in RAW or
+                                  CBREAK mode) */
+       if (translate_mode && cursor_down) {
+               tt_putp(cursor_down);
+       } else {
+               tt_putp(TM_cursor_down);
+       }
+       line_count++;
+}
+
+
+void
+put_ind(void)
+{                              /* scroll forward (only works in RAW or
+                                  CBREAK mode) */
+       if (translate_mode && scroll_forward) {
+               tt_putp(scroll_forward);
+       } else {
+               tt_putp(TM_scroll_forward);
+       }
+       line_count++;
+}
+
+/*
+**     put_crlf()
+**
+**     Send (nel)  or <cr> <lf>
+*/
+void
+put_crlf(void)
+{
+       if (translate_mode && newline) {
+               tt_putp(newline);
+       } else {
+               tt_putp(TM_newline);
+       }
+       char_count = 0;
+       line_count++;
+}
+
+/*
+**     put_new_lines(count)
+**
+**     Send a number of newlines. (nel)
+*/
+void
+put_newlines(int n)
+{
+       while (n-- > 0) {
+               put_crlf();
+       }
+}
+
+/*
+**     putchp(character)
+**
+**     Send one character to the terminal.
+**     This function does translation of control characters.
+*/
+void
+putchp(int c)
+{
+       switch (c) {
+       case '\b':
+               if (translate_mode && cursor_left) {
+                       tt_putp(cursor_left);
+               } else {
+                       tt_putp(TM_cursor_left);
+               }
+               char_count--;
+               break;
+       case 7:
+               if (translate_mode && bell) {
+                       tt_putp(bell);
+               } else {
+                       tt_putp(TM_bell);
+               }
+               break;
+       case '\f':
+               if (translate_mode && form_feed) {
+                       tt_putp(form_feed);
+               } else {
+                       tt_putp(TM_form_feed);
+               }
+               char_count = 0;
+               line_count++;
+               break;
+       case '\n':
+               put_crlf();
+               break;
+       case '\r':
+               put_cr();
+               break;
+       case '\t':
+               if (translate_mode && tab) {
+                       tt_putp(tab);
+               } else {
+                       tt_putp(TM_tab);
+               }
+               char_count = ((char_count / 8) + 1) * 8;
+               break;
+       default:
+               put_this(c);
+               char_count++;
+               break;
+       }
+}
+
+
+void
+put_str(const char *s)
+{                              /* send the string to the terminal */
+       for (; *s; putchp(*s++));
+}
+
+
+void
+putln(const char *s)
+{                              /* output a string followed by a CR LF */
+       for (; *s; putchp(*s++));
+       put_crlf();
+}
+
+
+void
+put_columns(const char *s, int len, int w)
+{                              /* put out s in column format */
+       int l;
+
+       if (char_count + w > columns) {
+               put_crlf();
+       }
+       l = char_count % w;
+       if (l) {
+               while (l < w) {
+                       putchp(' ');
+                       l++;
+               }
+       }
+       if (char_count && char_count + len >= columns) {
+               put_crlf();
+       }
+       l = char_count;
+       put_str(s);
+       char_count = l + len;
+}
+
+
+/*
+**     ptext(string)
+**
+**     Output a string but do not assume the terminal will wrap to a
+**     new line.  Break the line at a word boundry then send a CR LF.
+**     This is more estetic on 40 column terminals.
+*/
+void
+ptext(const char *s)
+{
+       const char *t;
+
+       while (*s) {
+               for (t = s + 1; *t > ' '; t++);
+               if ((char_count != 0) && ((t - s) + char_count >= columns)) {
+                       put_crlf();
+                       while (*s == ' ')
+                               s++;
+               }
+               while (s < t) {
+                       putchp(*s++);
+               }
+       }
+}
+
+
+void
+put_dec(char *f, int i)
+{                              /* print a line with a decimal number in it */
+       char tm[128];
+
+       sprintf(tm, f, i / 10, i % 10);
+       ptext(tm);
+}
+
+
+void
+three_digit(char *tx, int i)
+{                              /* convert the decimal number to a string of
+                                  at least 3 digits */
+       if (i < 1000)
+               sprintf(tx, "%d.%d", i / 10, i % 10);
+       else
+               sprintf(tx, "%d", i / 10);
+}
+
+
+void
+ptextln(const char *s)
+{                              /* print the text using ptext() then add a CR
+                                  LF */
+       ptext(s);
+       put_crlf();
+}
+
+
+static void
+expand_one(int ch, char **v)
+{                              /* expand one character */
+       char *t = *v;
+
+       if (ch & 0x80) {        /* dump it in octal (yuck) */
+               *t++ = '\\';
+               *t++ = '0' + ((ch >> 6) & 3);
+               *t++ = '0' + ((ch >> 3) & 7);
+               *t++ = '0' + (ch & 7);
+               expand_chars += 4;
+       } else if (ch == 127) { /* DEL */
+               *t++ = '^';
+               *t++ = '?';
+               expand_chars += 2;
+       } else if (ch >= ' ') {
+               *t++ = ch;
+               expand_chars++;
+       } else {        /* control characters */
+               *t++ = '^';
+               *t++ = ch + '@';
+               expand_chars += 2;
+       }
+       *v = t;
+}
+
+
+char *
+expand(const char *s)
+{                              /* convert the string to printable form */
+       static char buf[4096];
+       char *t, *v;
+       int ch;
+
+       if (magic_cookie_glitch <= 0 && exit_attribute_mode) {
+               v = enter_reverse_mode;
+       } else {
+               v = NULL;
+       }
+       expand_chars = 0;
+       t = buf;
+       if (s) {
+               for (; (ch = *s); s++) {
+                       if ((ch & 0x80) && v) { /* print it in reverse video
+                                                  mode */
+                               strcpy(t, liberated(tparm(v)));
+                               for (; *t; t++);
+                               expand_one(ch & 0x7f, &t);
+                               strcpy(t, liberated(tparm(exit_attribute_mode)));
+                               for (; *t; t++);
+                       } else {
+                               expand_one(ch, &t);
+                       }
+               }
+       }
+       *t = '\0';
+       return buf;
+}
+
+
+char *
+print_expand(char *s)
+{                              /* convert the string to 7-bit printable form */
+       static char buf[4096];
+       char *t;
+       int ch;
+
+       expand_chars = 0;
+       t = buf;
+       if (s) {
+               for (; (ch = *s); s++) {
+                       expand_one(ch, &t);
+               }
+       }
+       *t = '\0';
+       return buf;
+}
+
+
+char *
+expand_to(char *s, int l)
+{                              /* expand s to length l */
+       char *t;
+
+       for (s = t = expand(s); *t; t++);
+       for (; expand_chars < l; expand_chars++) {
+               *t++ = ' ';
+       }
+       *t = '\0';
+       return s;
+}
+
+
+char *
+hex_expand_to(char *s, int l)
+{                              /* expand s to length l in hex */
+       static char buf[4096];
+       char *t;
+
+       for (t = buf; *s; s++) {
+               sprintf(t, "%02X ", *s & 0xff);
+               t += 3;
+               if (t - buf > (int) sizeof(buf) - 4) {
+                       break;
+               }
+       }
+       for (; t - buf < l;) {
+               *t++ = ' ';
+       }
+       *t = '\0';
+       expand_chars = t - buf;
+       return buf;
+}
+
+
+char *
+expand_command(const char *c)
+{                              /* expand an ANSI escape sequence */
+       static char buf[256];
+       int i, j, ch;
+       char *s;
+
+       s = buf;
+       for (i = FALSE; (ch = (*c & 0xff)); c++) {
+               if (i) {
+                       *s++ = ' ';
+               }
+               i = TRUE;
+               if (ch < 32) {
+                       j = c[1] & 0xff;
+                       if (ch == '\033' && j >= '@' && j <= '_') {
+                               ch = j - '@';
+                               c++;
+                               for (j = 0; (*s = c1[ch][j++]); s++);
+                       } else
+                               for (j = 0; (*s = c0[ch][j++]); s++);
+               } else {
+                       *s++ = ch;
+                       j = c[1] & 0xff;
+                       if (ch >= '0' && ch <= '9' &&
+                               j >= '0' && j <= '9') {
+                               i = FALSE;
+                       }
+               }
+       }
+       *s = '\0';
+       return buf;
+}
+
+/*
+**     go_home()
+**
+**     Move the cursor to the home position
+*/
+void
+go_home(void)
+{
+       int i;
+
+       if (cursor_home)
+               tt_putp(cursor_home);
+       else if (cursor_address)
+               tt_putparm(cursor_address, lines, 0, 0);
+       else if (row_address) { /* use (vpa) */
+               put_cr();
+               tt_putparm(row_address, 1, 0, 0);
+       } else if (cursor_up && cursor_to_ll) {
+               tt_putp(cursor_to_ll);
+               for (i = 1; i < lines; i++) {
+                       tt_putp(cursor_up);
+               }
+       } else {
+               can_go_home = FALSE;
+               return;
+       }
+       char_count = line_count = 0;
+       can_go_home = TRUE;
+}
+
+
+void
+home_down(void)
+{                              /* move the cursor to the lower left hand
+                                  corner */
+       int i;
+
+       if (cursor_to_ll)
+               tt_putp(cursor_to_ll);
+       else if (cursor_address)
+               tt_putparm(cursor_address, lines, lines - 1, 0);
+       else if (row_address) { /* use (vpa) */
+               put_cr();
+               tt_putparm(row_address, 1, lines - 1, 0);
+       } else if (cursor_down && cursor_home) {
+               tt_putp(cursor_home);
+               for (i = 1; i < lines; i++)
+                       tt_putp(cursor_down);
+       } else
+               return;
+       char_count = 0;
+       line_count = lines - 1;
+}
+
+
+void
+put_clear(void)
+{                              /* clear the screen */
+       int i;
+
+       if (clear_screen)
+               tt_tputs(clear_screen, lines);
+       else if (clr_eos && can_go_home) {
+               go_home();
+               tt_tputs(clr_eos, lines);
+       } else if (scroll_forward && !over_strike && (can_go_home || cursor_up)) {
+               /* clear the screen by scrolling */
+               put_cr();
+               if (cursor_to_ll) {
+                       tt_putp(cursor_to_ll);
+               } else if (cursor_address) {
+                       tt_putparm(cursor_address, lines, lines - 1, 0);
+               } else if (row_address) {
+                       tt_putparm(row_address, 1, lines - 1, 0);
+               } else {
+                       for (i = 1; i < lines; i++) {
+                               tt_putp(scroll_forward);
+                       }
+               }
+               for (i = 1; i < lines; i++) {
+                       tt_putp(scroll_forward);
+               }
+               if (can_go_home) {
+                       go_home();
+               } else {
+                       for (i = 1; i < lines; i++) {
+                               tt_putp(cursor_up);
+                       }
+               }
+       } else {
+               can_clear_screen = FALSE;
+               return;
+       }
+       char_count = line_count = 0;
+       can_clear_screen = TRUE;
+}
+
+/*
+**     wait_here()
+**
+**     read one character from the input stream
+**     If the terminal is not in RAW mode then this function will
+**     wait for a <cr> or <lf>.
+*/
+int
+wait_here(void)
+{
+       char ch, cc[64];
+       char message[16];
+       int i, j;
+
+       for (i = 0; i < (int) sizeof(cc); i++) {
+               cc[i] = ch = getchp(STRIP_PARITY);
+               if (ch == '\r' || ch == '\n') {
+                       put_crlf();
+                       char_sent = 0;
+                       return cc[i ? i - 1 : 0];
+               }
+               if (ch >= ' ') {
+                       if (stty_query(TTY_CHAR_MODE)) {
+                               put_crlf();
+                               char_sent = 0;
+                               return ch;
+                       }
+                       continue;
+               }
+               if (ch == 023) {        /* Control S */
+                       /* ignore control S, but tell me about it */
+                       while (ch == 023 || ch == 021) {
+                               ch = getchp(STRIP_PARITY);
+                               if (i < (int) sizeof(cc))
+                                       cc[++i] = ch;
+                       }
+                       put_str("\nThe terminal sent a ^S -");
+                       for (j = 0; j <= i; j++) {
+                               sprintf(message, " %02X", cc[j] & 0xFF);
+                               put_str(message);
+                       }
+                       put_crlf();
+                       i = -1;
+               } else if (ch != 021) { /* Not Control Q */
+                       /* could be abort character */
+                       spin_flush();
+                       if (tty_can_sync == SYNC_TESTED) {
+                               (void) tty_sync_error();
+                       } else {
+                               put_str("\n? ");
+                       }
+               }
+       }
+       return '?';
+}
+
+
+/*
+**     read_string(buffer, length)
+**
+**     Read a string of characters from the input stream.
+*/
+void
+read_string(
+       char *buf,
+       int length)
+{
+       int ch, i;
+
+       for (i = 0; i < length - 1; ) {
+               ch = getchp(STRIP_PARITY);
+               if (ch == '\r' || ch == '\n') {
+                       break;
+               }
+               if (ch == '\b' || ch == 127) {
+                       if (i) {
+                               putchp('\b');
+                               putchp(' ');
+                               putchp('\b');
+                               i--;
+                       }
+               } else {
+                       buf[i++] = ch;
+                       putchp(ch);
+               }
+       }
+       buf[i] = '\0';
+       put_crlf();
+       char_sent = 0;
+}
+
+/*
+**     maybe_wait(lines)
+**
+**     wait if near the end of the screen, then clear screen
+*/
+void 
+maybe_wait(int n)
+{
+       if (line_count + n >= lines) {
+               if (char_sent != 0) {
+                       ptext("Go? ");
+                       (void) wait_here();
+               }
+               put_clear();
+       } else {
+               put_crlf();
+       }
+}
diff --git a/tack/pad.c b/tack/pad.c
new file mode 100644 (file)
index 0000000..bc6c693
--- /dev/null
@@ -0,0 +1,1955 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: pad.c,v 1.1 1998/01/10 00:30:27 tom Exp $")
+
+/* test the pad counts on the terminal */
+
+static void pad_standard(struct test_list *, int *, int *);
+static void init_xon_xoff(struct test_list *, int *, int *);
+static void init_cup(struct test_list *, int *, int *);
+static void pad_rmxon(struct test_list *, int *, int *);
+static void pad_home1(struct test_list *, int *, int *);
+static void pad_home2(struct test_list *, int *, int *);
+static void pad_clear(struct test_list *, int *, int *);
+static void pad_ech(struct test_list *, int *, int *);
+static void pad_el1(struct test_list *, int *, int *);
+static void pad_el(struct test_list *, int *, int *);
+static void pad_smdc(struct test_list *, int *, int *);
+static void pad_dch(struct test_list *, int *, int *);
+static void pad_dch1(struct test_list *, int *, int *);
+static void pad_smir(struct test_list *, int *, int *);
+static void pad_ich(struct test_list *, int *, int *);
+static void pad_ich1(struct test_list *, int *, int *);
+static void pad_xch1(struct test_list *, int *, int *);
+static void pad_rep(struct test_list *, int *, int *);
+static void pad_cup(struct test_list *, int *, int *);
+static void pad_hd(struct test_list *, int *, int *);
+static void pad_hu(struct test_list *, int *, int *);
+static void pad_rin(struct test_list *, int *, int *);
+static void pad_il(struct test_list *, int *, int *);
+static void pad_indn(struct test_list *, int *, int *);
+static void pad_dl(struct test_list *, int *, int *);
+static void pad_xl(struct test_list *, int *, int *);
+static void pad_scrc(struct test_list *, int *, int *);
+static void pad_csrind(struct test_list *, int *, int *);
+static void pad_sccsrrc(struct test_list *, int *, int *);
+static void pad_csr_nel(struct test_list *, int *, int *);
+static void pad_csr_cup(struct test_list *, int *, int *);
+static void pad_ht(struct test_list *, int *, int *);
+static void pad_smso(struct test_list *, int *, int *);
+static void pad_smacs(struct test_list *, int *, int *);
+static void pad_crash(struct test_list *, int *, int *);
+
+extern struct test_menu change_pad_menu;
+
+/*
+   Any command found in this list, executed from a "Done" prompt
+   will force the default action to repeat rather than next.
+*/
+const char *pad_repeat_test = {"ep-+<>"};
+
+struct test_list pad_test_list[] = {
+       {0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
+       {0, 0, 0, 0, "p) change padding", 0, &change_pad_menu},
+       {0, 0, 0, 0, "@) display statistics about the last test", dump_test_stats, 0},
+       {0, 0, 0, 0, "c) clear screen", menu_clear_screen, 0},
+       {0, 0, 0, 0, "i) send reset and init", menu_reset_init, 0},
+       {0, 0, 0, 0, txt_longer_test_time, longer_test_time, 0},
+       {0, 0, 0, 0, txt_shorter_test_time, shorter_test_time, 0},
+       {0, 0, 0, 0, txt_longer_augment, longer_augment, 0},
+       {0, 0, 0, 0, txt_shorter_augment, shorter_augment, 0},
+       /***
+          Phase 1: Test initialization and reset strings.
+       
+          (rs1) (rs2) (rs3) (is1) (is2) (is3) are very difficult to test.
+          They have no defined output.  To make matters worse, the cap
+          builder could partition (rs1) (rs2) (rs3) by length, leaving the
+          terminal in some unknown state between (rs1) and (rs2) or between
+          (r2) and (rs3).  Some reset strings clear the screen when done.
+       
+          We have no control over this.  The only thing we can do for
+          certain is to test the pad times by checking for overruns.
+       ***/
+       {MENU_NEXT, 3, "rs1", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "rs2", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "rs3", 0, 0, pad_standard, 0},
+       {MENU_NEXT | MENU_INIT, 0, 0, 0, 0, init_xon_xoff, 0},
+       {MENU_NEXT, 3, "is1", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "is2", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "is3", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "rmxon", "smxon", 0, pad_rmxon, 0},
+       {MENU_NEXT | MENU_INIT, 0, 0, 0, 0, init_cup, 0},
+       /*
+          Phase 2: Test home, screen clears and erases.
+       */
+       {MENU_NEXT, 0, "home", 0, 0, pad_home1, 0},
+       {MENU_NEXT, 0, "home) (nel", 0, 0, pad_home2, 0},
+       {MENU_NEXT | 1, 0, "clear", 0, 0, pad_clear, 0},
+       {MENU_NEXT | MENU_LM1, 0, "ed", 0, 0, pad_clear, 0},
+       {MENU_NEXT | MENU_80c, 0, "ech", 0, 0, pad_ech, 0},
+       {MENU_NEXT | MENU_80c, 0, "el1", "cub1 nel", 0, pad_el1, 0},
+       {MENU_NEXT | MENU_10c, 0, "el", "nel", 0, pad_el, 0},
+       /*
+          Phase 3: Character deletions and insertions
+       */
+       {MENU_NEXT, 0, "smdc) (rmdc", 0, 0, pad_smdc, 0},
+       {MENU_NEXT | MENU_80c, 0, "dch", "smdc rmdc", 0, pad_dch, 0},
+       {MENU_NEXT | MENU_80c, 0, "dch1", "smdc rmdc", 0, pad_dch1, 0},
+       {MENU_NEXT, 0, "smir) (rmir", 0, 0, pad_smir, 0},
+       {MENU_NEXT | MENU_90c, 0, "ich) (ip", "smir rmir", 0, pad_ich, 0},
+       {MENU_NEXT | MENU_90c, 0, "ich1) (ip", "smir rmir", 0, pad_ich1, 0},
+       {MENU_NEXT, 4, "ich1) (dch1", "smir rmir", 0, pad_xch1, 0},
+       {MENU_NEXT | MENU_90c, 0, "rep", 0, 0, pad_rep, 0},
+       /*
+          Phase 4: Test cursor addressing pads.
+       */
+       {MENU_NEXT, 0, "cup", 0, 0, pad_cup, 0},
+       /*
+          Phase 5: Test scrolling and cursor save/restore.
+       */
+       {MENU_NEXT, 0, "hd", 0, 0, pad_hd, 0},
+       {MENU_NEXT, 0, "hu", 0, 0, pad_hu, 0},
+       {MENU_NEXT | MENU_LM1 | 1, 0, "rin", 0, 0, pad_rin, 0},
+       {MENU_NEXT, 0, "ri", 0, 0, pad_rin, 0},
+       {MENU_NEXT | MENU_LM1 | 1, 0, "il", 0, 0, pad_il, 0},
+       {MENU_NEXT, 0, "il1", 0, 0, pad_il, 0},
+       {MENU_NEXT | MENU_LM1 | 1, 0, "indn", 0, 0, pad_indn, 0},
+       {MENU_NEXT, 0, "ind", 0, 0, pad_indn, 0},
+       {MENU_NEXT | MENU_LM1 | 1, 0, "dl", 0, 0, pad_dl, 0},
+       {MENU_NEXT, 0, "dl1", 0, 0, pad_dl, 0},
+       {MENU_NEXT, 0, "il1) (dl1", 0, 0, pad_xl, 0},
+       {MENU_NEXT, 0, "sc) (rc", 0, 0, pad_scrc, 0},
+       {MENU_NEXT | MENU_50l, 0, "csr) (ind", 0, 0, pad_csrind, 0},
+       {MENU_NEXT, 0, "sc) (csr) (rc", 0, 0, pad_sccsrrc, 0},
+       {MENU_NEXT, 0, "csr) (nel", "sc rc", 0, pad_csr_nel, 0},
+       {MENU_NEXT, 0, "csr) (cup", 0, 0, pad_csr_cup, 0},
+       /*
+          Phase 6: Test tabs.
+       */
+       {MENU_NEXT, 0, "ht", 0, 0, pad_ht, 0},
+       /*
+          Phase 7: Test character-set-switch pads.
+       */
+       {MENU_NEXT, 0, "smso) (rmso", 0, 0, pad_smso, 0},
+       {MENU_NEXT, 0, "smacs) (rmacs", 0, 0, pad_smacs, 0},
+       /*
+          Phase 8: Tests for miscellaneous mode-switch pads.
+       */
+       {MENU_NEXT, 3, "flash", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "smkx", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "rmkx", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "smm", 0, 0, pad_standard, 0},
+       {MENU_NEXT, 3, "rmm", 0, 0, pad_standard, 0},
+       /*
+          Phase 9: Test crash-and-burn properties of unpadded (clear).
+       */
+       {0, 0, "clear", "xon", "k) run clear test with no padding", pad_crash, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+extern int test_complete;      /* counts number of tests completed */
+
+/* globals */
+int hzcc;                      /* horizontal character count */
+char letter;                   /* current character being displayed */
+int letter_number;             /* points into letters[] */
+int augment, repeats;          /* number of characters (or lines) effected */
+char letters[] = "AbCdefghiJklmNopQrStuVwXyZ";
+
+static char every_line[] = "This text should be on every line.";
+static char all_lines[] = "Each char on any line should be the same.  ";
+static char above_line[] = "The above lines should be all Xs.  ";
+static char no_visual[] = "This loop test has no visual failure indicator.  ";
+
+/*
+**     pad_standard(test_list, status, ch)
+**
+**     Run a single cap pad test.
+*/
+static void
+pad_standard(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       const char *long_name;
+       char *cap;
+       int l = 2, i;
+       char tbuf[128];
+
+       if ((cap = get_string_cap_byname(t->caps_done, &long_name))) {
+               sprintf(tbuf, "(%s) %s, start testing", t->caps_done,
+                       long_name);
+               if (skip_pad_test(t, state, ch, tbuf)) {
+                       return;
+               }
+               i = 1;
+               pad_test_startup(1);
+               do {
+                       if (i >= columns) {
+                               page_loop();
+                               l++;
+                               i = 1;
+                       }
+                       tt_putp(cap);
+                       putchp(letter);
+                       i++;
+               } while(still_testing());
+               pad_test_shutdown(t, 0);
+               if (l >= lines) {
+                       home_down();
+               } else {
+                       put_crlf();
+               }
+               ptextln(no_visual);
+       } else {
+               CAP_NOT_FOUND;
+               /* Note: get_string_cap_byname() always sets long_name */
+               sprintf(temp, "(%s) %s, not present.  ", t->caps_done,
+                       long_name);
+               ptext(temp);
+       }
+       pad_done_message(t, state, ch);
+}
+
+/*
+**     init_xon_xoff(test_list, status, ch)
+**
+**     Initialize the xon_xoff values
+*/
+static void
+init_xon_xoff(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       /* the reset strings may dink with the XON/XOFF modes */
+       if (select_xon_xoff == 0 && exit_xon_mode) {
+               tc_putp(exit_xon_mode);
+       }
+       if (select_xon_xoff == 1 && enter_xon_mode) {
+               tc_putp(enter_xon_mode);
+       }
+}
+
+/*
+**     pad_rmxon(test_list, status, ch)
+**
+**     Test (rmxon) exit XON/XOFF mode
+*/
+static void
+pad_rmxon(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (select_xon_xoff == 0 && exit_xon_mode) {
+               pad_standard(t, state, ch);
+       }
+}
+
+/*
+**     init_cup(test_list, status, ch)
+**
+**     Send the initialization strings for XON/XOFF and (smcup)
+**     Stop pad testing if clear screen is missing.
+*/
+static void
+init_cup(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       init_xon_xoff(t, state, ch);
+       if (enter_ca_mode) {
+               tc_putp(enter_ca_mode);
+       }
+       if (!can_clear_screen) {
+               ptext("(clear) clear screen not present,");
+               ptext(" pad processing terminated.  ");
+               pad_done_message(t, state, ch);
+               if (*ch == 0 || *ch == 'n' || *ch == 's' || *ch == 'r') {
+                       *ch = '?';
+               }
+               return;
+       }
+}
+
+/*
+**     pad_home1(test_list, status, ch)
+**
+**     Test (home) when (am) is set.
+*/
+static void
+pad_home1(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int j, k;
+
+       if (can_go_home && auto_right_margin) {
+               /*
+                  truly brain damaged terminals will fail this test because
+                  they cannot accept data at full rate
+               */
+               if (skip_pad_test(t, state, ch, "(home) Home start testing")) {
+                       return;
+               }
+               pad_test_startup(1);
+               do {
+                       go_home();
+                       for (j = 1; j < lines; j++) {
+                               for (k = 0; k < columns; k++) {
+                                       if (k & 0xF) {
+                                               put_this(letter);
+                                       } else {
+                                               put_this('.');
+                                       }
+                               }
+                               SLOW_TERMINAL_EXIT;
+                       }
+                       NEXT_LETTER;
+               } while(still_testing());
+               pad_test_shutdown(t, 0);
+               ptext("All the dots should line up.  ");
+               pad_done_message(t, state, ch);
+               put_clear();
+       }
+}
+
+/*
+**     pad_home2(test_list, status, ch)
+**
+**     Test (home) and (nel).  (am) is reset.
+*/
+static void
+pad_home2(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int j, k;
+
+       if (can_go_home) {
+               if (skip_pad_test(t, state, ch,
+                       "(home) Home, (nel) newline start testing")) {
+                       return;
+               }
+               pad_test_startup(1);
+               do {
+                       go_home();
+                       for (j = 1; j < lines; j++) {
+                               for (k = 2; k < columns; k++) {
+                                       if (k & 0xF) {
+                                               put_this(letter);
+                                       } else {
+                                               put_this('.');
+                                       }
+                               }
+                               put_crlf();     /* this does the (nel) */
+                               SLOW_TERMINAL_EXIT;
+                       }
+                       NEXT_LETTER;
+               } while(still_testing());
+               pad_test_shutdown(t, 0);
+               ptext("All the dots should line up.  ");
+               pad_done_message(t, state, ch);
+               put_clear();
+       }
+}
+
+/*
+**     pad_clear(test_list, status, ch)
+**
+**     Test (clear) and (ed)
+**     run the clear screen tests (also clear-to-end-of-screen)
+**
+**     0) full page
+**     1) sparse page
+**     2) short lines
+**     3) one full line
+**     4) one short line
+*/
+static void
+pad_clear(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       const char *end_message = 0;
+       const char *txt;
+       int j, k, is_clear;
+       int clear_select;               /* select the test number */
+
+       is_clear = t->flags & 1;
+       clear_select = auto_right_margin ? 0 : 1;
+       if (is_clear) {
+               txt = "(clear) clear-screen start testing";
+       } else {
+               if (!clr_eos) {
+                       CAP_NOT_FOUND;
+                       ptext("(ed) erase-to-end-of-display, not present.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               txt = "(ed) erase-to-end-of-display start testing";
+       }
+       if (skip_pad_test(t, state, ch, txt)) {
+               return;
+       }
+       if (enter_am_mode) {
+               tc_putp(enter_am_mode);
+               clear_select = 0;
+       }
+       for (; clear_select < 5; clear_select++) {
+               if (augment > lines || is_clear || !cursor_address) {
+                       augment = lines;
+               } else {
+                       if (augment <= 1) {
+                               augment = 2;
+                       }
+                       if (augment < lines) {
+                               put_clear();
+                               tt_putparm(cursor_address, 1,
+                                       lines - augment - 1, 0);
+                               ptextln("This line should not be erased (ed)");
+                       }
+               }
+               repeats = augment;
+               switch (clear_select) {
+               case 0:
+                       end_message = "Clear full screen.  ";
+                       break;
+               case 1:
+                       end_message = "Clear sparse screen.  ";
+                       if (cursor_down) {
+                               break;
+                       }
+                       clear_select++;
+               case 2:
+                       end_message = "Clear one character per line.  ";
+                       if (newline) {
+                               break;
+                       }
+                       clear_select++;
+               case 3:
+                       end_message = "Clear one full line.  ";
+                       break;
+               case 4:
+                       end_message = "Clear single short line.  ";
+                       break;
+               }
+               pad_test_startup(0);
+               do {
+                       switch (clear_select) {
+                       case 0: /* full screen test */
+                               for (j = 1; j < repeats; j++) {
+                                       for (k = 0; k < columns; k++) {
+                                               if (k & 0xF) {
+                                                       put_this(letter);
+                                               } else {
+                                                       put_this('.');
+                                               }
+                                       }
+                                       SLOW_TERMINAL_EXIT;
+                               }
+                               break;
+                       case 1: /* sparse screen test */
+                               for (j = columns - repeats; j > 2; j--) {
+                                       put_this(letter);
+                               }
+                               for (j = 2; j < repeats; j++) {
+                                       tt_putp(cursor_down);
+                                       put_this(letter);
+                               }
+                               break;
+                       case 2: /* short lines */
+                               for (j = 2; j < repeats; j++) {
+                                       put_this(letter);
+                                       tt_putp(newline);
+                               }
+                               put_this(letter);
+                               break;
+                       case 3: /* one full line */
+                               for (j = columns - 5; j > 1; j--) {
+                                       put_this(letter);
+                               }
+                               break;
+                       case 4: /* one short line */
+                               put_str("Erase this!");
+                               break;
+                       }
+                       if (is_clear) {
+                               put_clear();
+                       } else {
+                               if (augment == lines) {
+                                       go_home();
+                               } else {
+                                       tt_putparm(cursor_address, 1,
+                                               lines - repeats, 0);
+                               }
+                               tt_tputs(clr_eos, repeats);
+                       }
+                       NEXT_LETTER;
+               } while(still_testing());
+               pad_test_shutdown(t, 1);
+               ptext(end_message);
+
+               pad_done_message(t, state, ch);
+
+               if (*ch != 0 && *ch != 'n') {
+                       return;
+               }
+       }
+}
+
+/*
+**     pad_ech(test_list, status, ch)
+**
+**     Test (ech) erase characters
+*/
+static void
+pad_ech(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!erase_chars) {
+               CAP_NOT_FOUND;
+               ptext("(ech) Erase-characters, not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(ech) Erase-characters start testing")) {
+               return;
+       }
+       if (augment > columns - 2) {
+               augment = columns - 2;
+       }
+       pad_test_startup(1);
+       do {
+               go_home();
+               for (i = 2; i < lines; i++) {
+                       for (j = 0; j <= repeats; j++) {
+                               putchp(letter);
+                       }
+                       put_cr();
+                       tt_putparm(erase_chars, repeats, repeats, 0);
+                       put_crlf();
+                       SLOW_TERMINAL_EXIT;
+               }
+               for (i = 1; i <= repeats; i++) {
+                       putchp(' ');
+               }
+               putchp(letter);
+               put_crlf();
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       ptext(all_lines);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_el1(test_list, status, ch)
+**
+**     Test (el1) erase to start of line also (cub1) and (nel)
+*/
+static void
+pad_el1(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!clr_bol) {
+               CAP_NOT_FOUND;
+               ptext("(el1) Erase-to-beginning-of-line, not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(el1) Erase-to-beginning-of-line start testing")) {
+               return;
+       }
+       if (augment > columns - 2) {
+               augment = columns - 2;
+       }
+       pad_test_startup(1);
+       do {
+               go_home();
+               for (i = 2; i < lines; i++) {
+                       for (j = 0; j <= repeats; j++) {
+                               putchp(letter);
+                       }
+                       tt_putp(cursor_left);
+                       tt_putp(cursor_left);
+                       tt_tputs(clr_bol, repeats);
+                       put_crlf();
+                       SLOW_TERMINAL_EXIT;
+               }
+               for (i = 1; i <= repeats; i++) {
+                       putchp(' ');
+               }
+               putchp(letter);
+               put_crlf();
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       ptext(all_lines);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_el(test_list, status, ch)
+**
+**     Test (el) clear to end of line also (nel)
+*/
+static void
+pad_el(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!clr_eol) {
+               CAP_NOT_FOUND;
+               ptext("(el) Clear-to-end-of-line, not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(el) Clear-to-end-of-line start testing")) {
+               return;
+       }
+       hzcc = columns * 8 / 10;        /* horizontal character count */
+       if (augment > hzcc) {
+               augment = hzcc;
+       }
+       pad_test_startup(1);
+       do {
+               go_home();
+               for (i = 2; i < lines; i++) {
+                       for (j = -1; j < augment; j++) {
+                               putchp(letter);
+                       }
+                       put_cr();
+                       putchp(letter);
+                       tt_putp(clr_eol);
+                       put_crlf();
+                       SLOW_TERMINAL_EXIT;
+               }
+               putchp(letter);
+               put_crlf();
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       ptext(all_lines);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_smdc(test_list, status, ch)
+**
+**     Test (smdc) (rmdc) Delete mode
+*/
+static void
+pad_smdc(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (!enter_delete_mode) {
+               CAP_NOT_FOUND;
+               ptext("(smdc) Enter-delete-mode");
+               if (!exit_delete_mode) {
+                       ptext(", (rmdc) Exit-delete-mode");
+               }
+               ptext(", not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(smdc) (rmdc) Enter/Exit-delete-mode start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               page_loop();
+               for (i = 1; i < columns; i++) {
+                       tt_putp(enter_delete_mode);
+                       tt_putp(exit_delete_mode);
+                       putchp(letter);
+               }
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       home_down();
+       ptext(no_visual);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_dch(test_list, status, ch)
+**
+**     Test (smdc) (rmdc) Delete mode and (dch)
+*/
+static void
+pad_dch(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!parm_dch) {
+               CAP_NOT_FOUND;
+               ptext("(dch) Delete-characters, not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(dch) Delete-characters start testing")) {
+               return;
+       }
+       hzcc = columns * 8 / 10;        /* horizontal character count */
+       if (augment > hzcc) {
+               augment = hzcc;
+       }
+       pad_test_startup(1);
+       do {
+               go_home();
+               for (i = 2; i < lines; i++) {
+                       for (j = 0; j <= repeats; j++) {
+                               putchp(letter);
+                       }
+                       put_cr();
+                       tt_putp(enter_delete_mode);
+                       tt_putparm(parm_dch, repeats, repeats, 0);
+                       tt_putp(exit_delete_mode);
+                       put_crlf();
+                       SLOW_TERMINAL_EXIT;
+               }
+               putchp(letter);
+               put_crlf();
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       home_down();
+       ptext(all_lines);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_dch1(test_list, status, ch)
+**
+**     Test (smdc) (rmdc) Delete mode and (dch1)
+*/
+static void
+pad_dch1(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!delete_character) {
+               if (parm_dch) {
+                       /* if the other one is defined then its OK */
+                       return;
+               }
+               CAP_NOT_FOUND;
+               ptext("(dch1) Delete-character, not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(dch1) Delete-character start testing")) {
+               return;
+       }
+       hzcc = columns * 8 / 10;        /* horizontal character count */
+       if (augment > hzcc) {
+               augment = hzcc;
+       }
+       pad_test_startup(1);
+       do {
+               go_home();
+               for (i = 2; i < lines; i++) {
+                       for (j = -1; j < augment; j++) {
+                               putchp(letter);
+                       }
+                       put_cr();
+                       tt_putp(enter_delete_mode);
+                       for (j = 0; j < augment; j++) {
+                               tt_putp(delete_character);
+                       }
+                       tt_putp(exit_delete_mode);
+                       put_crlf();
+                       SLOW_TERMINAL_EXIT;
+               }
+               putchp(letter);
+               put_crlf();
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       ptext(all_lines);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_smir(test_list, status, ch)
+**
+**     Test (smir) (rmir) Insert mode
+*/
+static void
+pad_smir(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (!enter_insert_mode) {
+               CAP_NOT_FOUND;
+               ptext("(smir) Enter-insert-mode");
+               if (!exit_insert_mode) {
+                       ptext(", (rmir) Exit-insert-mode");
+               }
+               ptext(", not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(smir) (rmir) Enter/Exit-insert-mode start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               page_loop();
+               for (i = 1; i < columns; i++) {
+                       tt_putp(enter_insert_mode);
+                       tt_putp(exit_insert_mode);
+                       putchp(letter);
+               }
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       home_down();
+       ptext(no_visual);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_ich(test_list, status, ch)
+**
+**     Test (smir) (rmir) Insert mode and (ich) and (ip)
+*/
+static void
+pad_ich(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!parm_ich) {
+               CAP_NOT_FOUND;
+               ptext("(ich) Insert-characters, not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(ich) Insert-characters, (ip) Insert-padding start testing")) {
+               return;
+       }
+       j = columns * 9 / 10;
+       if (augment > j) {
+               augment = j;
+       }
+       pad_test_startup(1);
+       do {
+               go_home();
+               for (i = 2; i < lines; i++) {
+                       putchp(letter);
+                       put_cr();
+                       tt_putp(enter_insert_mode);
+                       replace_mode = 0;
+                       tt_putparm(parm_ich, repeats, repeats, 0);
+                       tt_putp(exit_insert_mode);
+                       replace_mode = 1;
+                       put_crlf();
+                       SLOW_TERMINAL_EXIT;
+               }
+               for (i = 0; i < repeats; i++) {
+                       putchp(' ');
+               }
+               putchp(letter);
+               NEXT_LETTER;
+               put_crlf();
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       ptext(all_lines);
+       pad_done_message(t, state, ch);
+       tc_putp(exit_insert_mode);
+}
+
+/*
+**     pad_ich1(test_list, status, ch)
+**
+**     Test (smir) (rmir) Insert mode and (ich1) and (ip)
+*/
+static void
+pad_ich1(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!insert_character) {
+               CAP_NOT_FOUND;
+               ptext("(ich1) Insert-character, not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(ich1) Insert-character, (ip) Insert-padding start testing")) {
+               return;
+       }
+       if (augment > columns - 2) {
+               augment = columns - 2;
+       }
+       pad_test_startup(1);
+       do {
+               put_clear();
+               for (i = 2; i < lines; i++) {
+                       putchp(letter);
+                       put_cr();
+                       tt_putp(enter_insert_mode);
+                       replace_mode = 0;
+                       if (!insert_padding && !insert_character) {
+                               /* only enter/exit is needed */
+                               for (j = 0; j < augment; j++) {
+                                       putchp('.');
+                               }
+                       } else {
+                               for (j = 0; j < augment; j++) {
+                                       tt_putp(insert_character);
+                                       putchp('.');
+                                       tt_putp(insert_padding);
+                               }
+                       }
+                       tt_putp(exit_insert_mode);
+                       replace_mode = 1;
+                       put_crlf();
+                       SLOW_TERMINAL_EXIT;
+               }
+               for (j = 0; j < augment; j++) {
+                       putchp('.');
+               }
+               putchp(letter);
+               NEXT_LETTER;
+               put_crlf();
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       ptext(all_lines);
+       pad_done_message(t, state, ch);
+       tc_putp(exit_insert_mode);
+}
+
+/*
+**     pad_xch1(test_list, status, ch)
+**
+**     Test (ich1) (ip) (dch1)
+*/
+static void
+pad_xch1(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       static char xch1[] =
+       "This line should not be garbled. It should be left justified.";
+
+       if (enter_insert_mode || exit_insert_mode ||
+               enter_delete_mode || exit_delete_mode ||
+               !insert_character || !delete_character) {
+               /* this test is quitely ignored */
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(ich1) Insert-character, (dch1) Delete-character start testing")) {
+               return;
+       }
+       put_crlf();
+       ptext(xch1);
+       put_cr();
+       pad_test_startup(0);
+       do {
+               tt_putp(insert_character);
+               tt_putp(delete_character);
+       } while(still_testing());
+       pad_test_shutdown(t, 1);
+       ptextln(xch1);
+       ptext("The preceeding two lines should be the same.  ");
+       pad_done_message(t, state, ch);
+}
+
+/*
+**     pad_rep(test_list, status, ch)
+**
+**     Test (rep) repeat character
+*/
+static void
+pad_rep(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!repeat_char) {
+               CAP_NOT_FOUND;
+               ptext("(rep) Repeat-character, not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(rep) Repeat-character start testing")) {
+               return;
+       }
+       if (augment > columns - 2) {
+               augment = columns - 2;
+       }
+       if (augment < 2) {
+               augment = 2;
+       }
+       pad_test_startup(1);
+       do {
+               go_home();
+               for (i = 2; i < lines; i++) {
+                       tt_putparm(repeat_char, repeats, letter, repeats);
+                       put_crlf();
+               }
+               for (j = 0; j < repeats; j++) {
+                       putchp(letter);
+               }
+               put_crlf();
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       ptextln(all_lines);
+       pad_done_message(t, state, ch);
+}
+
+/*
+**     pad_cup(test_list, status, ch)
+**
+**     Test (cup) Cursor address
+*/
+static void
+pad_cup(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j, l, r, c;
+
+       if (!cursor_address) {
+               CAP_NOT_FOUND;
+               ptext("(cup) Cursor-address not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(cup) Cursor-address start testing")) {
+               return;
+       }
+       put_clear();
+       ptext("Each line should be filled with the same letter.  There should");
+       ptext(" be no gaps, or single letters scattered over the screen.  ");
+       if (char_count + 15 > columns) {
+               put_crlf();
+       }
+       if (((lines - line_count) & 1) == 0) {
+               /* this removes the gap in the middle of the test when the
+               number of lines is odd.  */
+               put_crlf();
+       }
+       r = line_count;
+       c = char_count;
+       l = (columns - 4) >> 1;
+       pad_test_startup(0);
+       do {
+               for (i = 1; i + i + r < lines; i++) {
+                       for (j = 0; j <= l; j++) {
+                               tt_putparm(cursor_address, 1, r + i, j);
+                               putchp(letter);
+                               tt_putparm(cursor_address, 1, r + i, l + l + 1 - j);
+                               putchp(letter);
+                               tt_putparm(cursor_address, 1, lines - i, j);
+                               putchp(letter);
+                               tt_putparm(cursor_address, 1, lines - i, l + l + 1 - j);
+                               putchp(letter);
+                       }
+                       SLOW_TERMINAL_EXIT;
+               }
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       tt_putparm(cursor_address, 1, line_count = r, char_count = c);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_hd(test_list, status, ch)
+**
+**     Test (hd) Half down
+*/
+static void
+pad_hd(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j, k;
+
+       if (!down_half_line) {
+               CAP_NOT_FOUND;
+               ptext("(hd) Half-line-down not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(hd) Half-line-down start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               for (i = 1; i < columns; i += 2) {
+                       for (j = 1; j < i; ++j) {
+                               putchp(' ');
+                       }
+                       tt_putp(down_half_line);
+                       for (k = lines + lines; k > 4; k--) {
+                               if (j++ >= columns) {
+                                       break;
+                               }
+                               tt_putp(down_half_line);
+                               putchp(letter);
+                       }
+                       go_home();
+                       SLOW_TERMINAL_EXIT;
+               }
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_hu(test_list, status, ch)
+**
+**     Test (hu) Half line up
+*/
+static void
+pad_hu(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j, k;
+
+       if (!up_half_line) {
+               CAP_NOT_FOUND;
+               ptext("(hu) Half-line-up not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(hu) Half-line-up start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               for (i = 1; i < columns; i += 2) {
+                       home_down();
+                       for (j = 1; j < i; ++j) {
+                               putchp(' ');
+                       }
+                       tt_putp(up_half_line);
+                       for (k = lines + lines; k > 4; k--) {
+                               if (j++ >= columns) {
+                                       break;
+                               }
+                               tt_putp(up_half_line);
+                               putchp(letter);
+                       }
+                       SLOW_TERMINAL_EXIT;
+               }
+               go_home();
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_rin(test_list, status, ch)
+**
+**     Test (rin) and (ri) Reverse index
+*/
+static void
+pad_rin(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+       const char *start_message;
+
+       if (t->flags & 1) {
+               /* rin */
+               if (!parm_rindex) {
+                       CAP_NOT_FOUND;
+                       ptext("(rin) Scroll-reverse-n-lines not present.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               start_message = "(rin) Scroll-reverse-n-lines start testing";
+       } else {
+               /* ri */
+               if (!scroll_reverse) {
+                       CAP_NOT_FOUND;
+                       ptext("(ri) Scroll-reverse not present.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               start_message = "(ri) Scroll-reverse start testing";
+               augment = 1;
+       }
+       if (skip_pad_test(t, state, ch, start_message)) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               sprintf(temp, "%d\r", test_complete);
+               put_str(temp);
+               if (scroll_reverse && augment == 1) {
+                       tt_putp(scroll_reverse);
+               } else {
+                       tt_putparm(parm_rindex, repeats, repeats, 0);
+               }
+       } while(still_testing());
+       put_str("This line should be on the bottom.\r");
+       if (scroll_reverse && augment == 1) {
+               for (i = 1; i < lines; i++) {
+                       tt_putp(scroll_reverse);
+               }
+       } else {
+               tt_putparm(parm_rindex, lines - 1, lines - 1, 0);
+       }
+       putln("The screen should have text on the bottom line.");
+       sprintf(temp, "Scroll reverse %d line%s.  ", augment,
+               augment == 1 ? "" : "s");
+       put_str(temp);
+       pad_test_shutdown(t, 0);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_il(test_list, status, ch)
+**
+**     Test (il) and (il1) Insert line
+*/
+static void
+pad_il(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+       const char *start_message;
+
+       if (t->flags & 1) {
+               /* il */
+               if (!parm_insert_line) {
+                       CAP_NOT_FOUND;
+                       ptext("(il) Insert-lines not present.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               start_message = "(il) Insert-lines start testing";
+       } else {
+               /* il1 */
+               if (!insert_line) {
+                       CAP_NOT_FOUND;
+                       ptext("(il1) Insert-line not present.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               start_message = "(il1) Insert-line start testing";
+               augment = 1;
+       }
+       if (skip_pad_test(t, state, ch, start_message)) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               sprintf(temp, "%d\r", test_complete);
+               put_str(temp);
+               if (insert_line && repeats == 1) {
+                       tt_putp(insert_line);
+               } else {
+                       tt_putparm(parm_insert_line, repeats, repeats, 0);
+               }
+       } while(still_testing());
+       put_str("This line should be on the bottom.\r");
+       if (scroll_reverse && augment == 1) {
+               for (i = 1; i < lines; i++) {
+                       tt_putp(insert_line);
+               }
+       } else {
+               tt_putparm(parm_insert_line, lines - 1, lines - 1, 0);
+       }
+       putln("The screen should have text on the bottom line.");
+       sprintf(temp, "Insert %d line%s.  ", augment,
+               augment == 1 ? "" : "s");
+       put_str(temp);
+       pad_test_shutdown(t, 0);
+       pad_done_message(t, state, ch);
+       put_clear();
+}
+
+/*
+**     pad_indn(test_list, status, ch)
+**
+**     Test (indn) and (ind) Scroll forward
+*/
+static void
+pad_indn(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+       const char *start_message;
+
+       if (t->flags & 1) {
+               /* indn */
+               if (!parm_index) {
+                       CAP_NOT_FOUND;
+                       ptext("(indn) Scroll-forward-n-lines not present.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               start_message = "(indn) Scroll-forward-n-lines start testing";
+       } else {
+               /* ind */
+               if (!scroll_forward && over_strike) {
+                       CAP_NOT_FOUND;
+                       ptext("(ind) Scroll-forward not tested on overstrike terminals.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               start_message = "(ind) Scroll-forward start testing";
+               augment = 1;
+       }
+       if (skip_pad_test(t, state, ch, start_message)) {
+               return;
+       }
+       pad_test_startup(1);
+       /* go to the bottom of the screen */
+       home_down();
+       do {
+               sprintf(temp, "%d\r", test_complete);
+               put_str(temp);
+               if (augment > 1) {
+                       tt_putparm(parm_index, repeats, repeats, 0);
+               } else {
+                       put_ind();
+               }
+       } while(still_testing());
+       put_str("This line should be on the top.\r");
+       if (augment == 1) {
+               for (i = 1; i < lines; i++) {
+                       put_ind();
+               }
+       } else {
+               tt_putparm(parm_index, lines - 1, lines - 1, 0);
+       }
+       go_home();
+       sprintf(temp, "\nScroll forward %d line%s.  ", augment,
+               augment == 1 ? "" : "s");
+       put_str(temp);
+       pad_test_shutdown(t, 0);
+       pad_done_message(t, state, ch);
+}
+
+/*
+**     pad_dl(test_list, status, ch)
+**
+**     Test (dl) and (dl1) Delete lines
+*/
+static void
+pad_dl(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i = 0;
+       const char *start_message;
+
+       if (t->flags & 1) {
+               /* dl */
+               if (!parm_delete_line) {
+                       CAP_NOT_FOUND;
+                       ptext("(dl) Delete-lines not present.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               start_message = "(dl) Delete-lines start testing";
+       } else {
+               /* dl1 */
+               if (!delete_line) {
+                       CAP_NOT_FOUND;
+                       ptext("(dl1) Delete-line not present.  ");
+                       pad_done_message(t, state, ch);
+                       return;
+               }
+               start_message = "(dl1) Delete-line start testing";
+               augment = 1;
+       }
+       if (skip_pad_test(t, state, ch, start_message)) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               sprintf(temp, "%d\r", test_complete);
+               if ((i & 0x7f) == 0 && augment < lines - 1) {
+                       go_home();
+                       putln(temp);
+               }
+               put_str(temp);
+               if (repeats || !delete_line) {
+                       tt_putparm(parm_delete_line, repeats, repeats, 0);
+               } else {
+                       tt_putp(delete_line);
+               }
+       } while(still_testing());
+       home_down();
+       put_str("This line should be on the top.");
+       go_home();
+       if (repeats || !delete_line) {
+               tt_putparm(parm_delete_line, lines - 1, lines - 1, 0);
+       } else {
+               for (i = 1; i < lines; i++) {
+                       tt_putp(delete_line);
+               }
+       }
+       sprintf(temp, "\nDelete %d line%s.  ", augment,
+               augment == 1 ? "" : "s");
+       put_str(temp);
+       pad_test_shutdown(t, 0);
+       pad_done_message(t, state, ch);
+}
+
+/*
+**     pad_xl(test_list, status, ch)
+**
+**     Test (il1) Insert and (dl1) Delete lines
+*/
+static void
+pad_xl(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       if (!insert_line && !delete_line) {
+               /* quietly skip this test */
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(il1) Insert-line, (dl1) Delete-line start testing")) {
+               return;
+       }
+       put_clear();
+       putln("\rThis text is written on the first line.");
+       ptext("This sentence begins on the second line.  As this");
+       ptext(" test runs the bottom part of this paragraph will");
+       ptext(" jump up and down.  Don't worry, that's normal.  When");
+       ptext(" the jumping stops, the entire paragraph should");
+       ptext(" still be on the screen and in the same place as when");
+       ptext(" the test started.  If this paragraph has scrolled");
+       ptext(" off the top or bottom of the screen then the test");
+       ptext(" has failed.  Scrolling off the top of the screen");
+       ptext(" usually means that the delete line capability is");
+       ptext(" working better than the insert line capability.  If");
+       ptext(" the text scrolls off the bottom then delete line may");
+       ptext(" be broken.  If parts of the text are missing then");
+       ptext(" you should get professional help.");
+       put_crlf();
+       go_home();
+       put_newlines(2);
+       pad_test_startup(0);
+       do {
+               tt_putp(insert_line);
+               put_cr();
+               tt_putp(delete_line);
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       home_down();
+       ptext("The top of the screen should have a paragraph of text.  ");
+       pad_done_message(t, state, ch);
+}
+
+/*
+**     pad_scrc(test_list, status, ch)
+**
+**     Test (sc) (rc) Save/restore cursor
+*/
+static void
+pad_scrc(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (!save_cursor || !restore_cursor) {
+               CAP_NOT_FOUND;
+               if (save_cursor) {
+                       ptext("(rc) Restore-cursor");
+               } else
+               if (restore_cursor) {
+                       ptext("(sc) Save-cursor");
+               } else {
+                       ptext("(sc) Save-cursor, (rc) Restore-cursor");
+               }
+               ptext(" not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(sc) (rc) Save/Restore-cursor start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               page_loop();
+               for (i = 1; i < columns; i++) {
+                       tt_putp(save_cursor);
+                       putchp(letter);
+                       tt_putp(restore_cursor);
+                       putchp('X');
+               }
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       home_down();
+       ptext(above_line);
+       pad_done_message(t, state, ch);
+}
+
+/*
+**     pad_csrind(test_list, status, ch)
+**
+**     Test (csr) and (ind) Change scroll region and index.
+*/
+static void
+pad_csrind(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (!change_scroll_region) {
+               CAP_NOT_FOUND;
+               ptext("(csr) Change-scroll-region not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(csr) Save/Restore-cursor, (ind) index start testing")) {
+               return;
+       }
+       if (augment < 2) {
+               augment = 2;
+       }
+       if (augment > lines - 1) {
+               augment = lines - 1;
+       }
+       put_clear();
+       ptext("This text is on the top line.");
+       tt_putparm(change_scroll_region, 1, lines - augment, lines - 1);
+       /* go to the bottom of the screen */
+       home_down();
+       pad_test_startup(0);
+       do {
+               sprintf(temp, "%d\r", test_complete);
+               put_str(temp);
+               put_ind();
+       } while(still_testing());
+       ptextln("(csr) is broken.");
+       for (i = augment; i > 1; i--) {
+               put_ind();
+       }
+       pad_test_shutdown(t, 0);
+       ptext("All but top and bottom lines should be blank.  ");
+       pad_done_message(t, state, ch);
+       tt_putparm(change_scroll_region, 1, 0, lines - 1);
+       put_clear();
+}
+
+/*
+**     pad_sccsrrc(test_list, status, ch)
+**
+**     Test (sc) (csr) and (rc) Save/Change/Restore scroll region
+*/
+static void
+pad_sccsrrc(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i;
+
+       if (!save_cursor || !change_scroll_region || !restore_cursor) {
+               /* quietly ignore this test */
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(sc) (csr) (rc) Save/Change/Restore-cursor, start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               page_loop();
+               for (i = 1; i < columns; i++) {
+                       tt_putp(save_cursor);
+                       putchp(letter);
+                       tt_putparm(change_scroll_region, 1, 0, lines - 1);
+                       tt_putp(restore_cursor);
+                       putchp('X');
+               }
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       home_down();
+       ptext(above_line);
+       pad_done_message(t, state, ch);
+       tt_putparm(change_scroll_region, 1, 0, lines - 1);
+}
+
+/*
+**     pad_csr_nel(test_list, status, ch)
+**
+**     Test (sc) (csr) (nel) and (rc) Save/Change/Restore scroll region
+*/
+static void
+pad_csr_nel(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!save_cursor || !change_scroll_region || !restore_cursor) {
+               /* quietly ignore this test */
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(csr) Change-scroll-region, (nel) newline start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               for (i = 0; i < lines; i++) {
+                       for (j = lines - i; j > 0; j--) {
+                               put_crlf();
+                       }
+                       tt_putp(save_cursor);
+                       tt_putparm(change_scroll_region, 1, i, lines - 1);
+                       tt_putp(restore_cursor);
+                       put_str(every_line);
+               }
+               tt_putp(save_cursor);
+               tt_putparm(change_scroll_region, 1, 0, lines - 1);
+               tt_putp(restore_cursor);
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       put_str("  ");
+       pad_done_message(t, state, ch);
+       tt_putparm(change_scroll_region, 1, 0, lines - 1);
+}
+
+/*
+**     pad_csr_cup(test_list, status, ch)
+**
+**     Test (csr) (cup) Change scroll region and cursor address
+*/
+static void
+pad_csr_cup(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!change_scroll_region || !cursor_address) {
+               /* quietly ignore this test */
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(csr) Change-scroll-region, (cup) cursor-address start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               for (i = 0; i < lines; i++) {
+                       for (j = lines - i; j > 0; j--) {
+                               put_crlf();
+                       }
+                       tt_putparm(change_scroll_region, 1, i, lines - 1);
+                       tt_putparm(cursor_address, 1, lines - 1, 0);
+                       put_str(every_line);
+               }
+               tt_putparm(change_scroll_region, 1, 0, lines - 1);
+               tt_putparm(cursor_address, 1, lines - 1, strlen(every_line));
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       put_str("  ");
+       pad_done_message(t, state, ch);
+       tt_putparm(change_scroll_region, 1, 0, lines - 1);
+}
+
+/*
+**     pad_ht(test_list, status, ch)
+**
+**     Test (ht) Tabs
+*/
+static void
+pad_ht(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!set_tab && init_tabs <= 0) {
+               CAP_NOT_FOUND;
+               ptext("(ht) Tab not tested.  (hts) Set-tabs and (it) initial-tabs not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch, "(ht) Tab start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               /*
+                  it is not always possible to test tabs with caps
+                  that do not already have padding. The following
+                  test uses a mixed bag of tests in order to avoid
+                  this problem. Note: I do not scroll
+               */
+               if (auto_right_margin && can_go_home)
+                       for (i = 1, go_home(); i < lines - 2; i++) {
+                               for (j = 8; j < columns; j += 8) {
+                                       putchp('\t');
+                               }
+                               put_str("A        ");
+                       }
+               if (cursor_down && can_go_home)
+                       for (i = 1, go_home(); i < lines - 2; i++) {
+                               for (j = 8; j < columns; j += 8) {
+                                       putchp('\t');
+                               }
+                               put_str("D\r");
+                               tt_putp(cursor_down);
+                       }
+               if (cursor_address)
+                       for (i = 1; i < lines - 2; i++) {
+                               tt_putparm(cursor_address, 1, i - 1, 0);
+                               for (j = 8; j < columns; j += 8) {
+                                       putchp('\t');
+                               }
+                               put_str("C");
+                       }
+               go_home();
+               for (i = 1; i < lines - 2; i++) {
+                       for (j = 8; j < columns; j += 8) {
+                               putchp('\t');
+                       }
+                       putln("N");
+               }
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       ptextln("Letters on the screen other than Ns at the right margin indicate failure.");
+       ptext("A-(am) D-(cud1) C-(cup) N-(nel)  ");
+       pad_done_message(t, state, ch);
+}
+
+/*
+**     pad_smso(test_list, status, ch)
+**
+**     Test (smso) (rmso) Enter/exit mode
+*/
+static void
+pad_smso(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       if (!enter_standout_mode || !exit_standout_mode) {
+               CAP_NOT_FOUND;
+               ptext("(smso) (rmso) Enter/Exit-standout-mode not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(smso) (rmso) Enter/Exit-standout-mode start testing")) {
+               return;
+       }
+       /*
+          In terminals that emulate non-hidden attributes with hidden
+          attributes, the amount of time that it takes to fill the screen
+          with an attribute is nontrivial. The following test is designed to
+          catch those delays
+       */
+       pad_test_startup(1);
+       do {
+               page_loop();
+               j = magic_cookie_glitch > 0 ? magic_cookie_glitch : 0;
+               for (i = 2 + j + j; i < columns;) {
+                       put_mode(enter_standout_mode);
+                       i += j + j + 2;
+                       putchp('X');
+                       put_mode(exit_standout_mode);
+                       putchp('X');
+               }
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       home_down();
+       ptext(above_line);
+       pad_done_message(t, state, ch);
+       put_mode(exit_standout_mode);
+}
+
+/*
+**     pad_smacs(test_list, status, ch)
+**
+**     Test (smacs) (rmacs) Enter/exit altcharset mode
+*/
+static void
+pad_smacs(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int i, j;
+
+       /* test enter even if exit is missing */
+       if (!enter_alt_charset_mode) {
+               CAP_NOT_FOUND;
+               ptext("(smacs) Enter-altcharset-mode not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(smacs) (rmacs) Enter/Exit-altcharset-mode start testing")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               page_loop();
+               j = magic_cookie_glitch > 0 ? magic_cookie_glitch : 0;
+               for (i = 2 + j + j; i < columns;) {
+                       put_mode(enter_alt_charset_mode);
+                       i += j + j + 2;
+                       putchp(letter);
+                       put_mode(exit_alt_charset_mode);
+                       putchp(letter);
+               }
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       home_down();
+       ptext("Every other character is from the alternate character set.  ");
+       pad_done_message(t, state, ch);
+       put_mode(exit_alt_charset_mode);
+}
+
+/*
+**     pad_crash(test_list, status, ch)
+**
+**     Test (clear) without padding
+*/
+static void
+pad_crash(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int save_xon_xoff;
+
+       if (!clear_screen) {
+               ptext("(clear) Clear-screen not present.  ");
+               pad_done_message(t, state, ch);
+               return;
+       }
+       ptext("If you would like to see if the terminal will really lock up.");
+       ptextln("  I will send the clear screen sequence without the pads.");
+       if (skip_pad_test(t, state, ch,
+               "(clear) Clear-screen start crash testing")) {
+               return;
+       }
+       save_xon_xoff = xon_xoff;
+       xon_xoff = 1;
+       pad_test_startup(0);
+       do {
+               put_str("Erase this!");
+               tt_putp(clear_screen);
+       } while(still_testing());
+       xon_xoff = save_xon_xoff;
+       pad_test_shutdown(t, 1);
+       pad_done_message(t, state, ch);
+}
diff --git a/tack/scan.c b/tack/scan.c
new file mode 100644 (file)
index 0000000..d9429c9
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+/* scan mode keyboard support */
+
+#include <tack.h>
+
+MODULE_ID("$Id: scan.c,v 1.2 1999/08/21 23:09:35 tom Exp $")
+
+int scan_max;                  /* length of longest scan code */
+char **scan_up, **scan_down, **scan_name;
+int *scan_tested, *scan_length, *scan_value;
+
+static int shift_state;
+static char *str;
+static int debug_char_count;
+
+#define SHIFT_KEY 0x100
+#define CONTROL_KEY 0x200
+#define META_KEY 0x400
+#define CAPS_LOCK 0x800
+
+static const struct {
+       const char *name;
+       int type;
+}  scan_special[] = {
+       {"<shift>", SHIFT_KEY},
+       {"<left shift>", SHIFT_KEY},
+       {"<right shift>", SHIFT_KEY},
+       {"<control>", CONTROL_KEY},
+       {"<left control>", CONTROL_KEY},
+       {"<right control>", CONTROL_KEY},
+       {"<meta>", META_KEY},
+       {"<left meta>", META_KEY},
+       {"<right meta>", META_KEY},
+       {"<caps lock>", CAPS_LOCK},
+       {"<tab>", '\t'},
+       {"<space>", ' '},
+       {"<return>", '\r'},
+       {"<linefeed>", '\n'},
+       {"<formfeed>", '\f'},
+       {"<backspace>", '\b'},
+       {0, 0}
+};
+
+static void
+scan_blanks(void)
+{                              /* scan past the white space */
+       while (*str == ' ' || *str == '\t')
+               str++;
+}
+
+static char *
+smash(void)
+{                              /* convert a string to hex */
+       char *s, *t;
+       int ch, i, j;
+
+       t = s = str;
+       for (i = 0; (ch = *str); str++) {
+               if (ch >= '0' && ch <= '9')
+                       j = ch - '0';
+               else if (ch >= 'a' && ch <= 'f')
+                       j = 10 - 'a' + ch;
+               else if (ch >= 'A' && ch <= 'F')
+                       j = 10 - 'A' + ch;
+               else if (ch == ' ' || ch == '\t')
+                       break;
+               else
+                       continue;
+               if (i) {
+                       *s |= j;
+                       s++;
+               } else
+                       *s = j << 4;
+               i ^= 1;
+       }
+       *s = '\0';
+       return t;
+}
+
+void
+scan_init(char *fn)
+{                              /* read the scan mode key definitions */
+       char *s, *sl;
+       FILE *fp;
+       int ch, i, j;
+       char home[512];
+
+       if ((str = getenv("HOME")))
+               strcpy(home, str);
+       else
+               home[0] = '\0';
+       fp = NULL;
+       if ((str = getenv("KEYBOARD"))) {
+               if (!(fp = fopen(str, "r")) && home[0]) {
+                       sprintf(temp, "%s/.scan.%s", home, str);
+                       fp = fopen(temp, "r");
+               }
+       }
+       if (!fp) {
+               sprintf(temp, ".scan.%s", fn);
+               fp = fopen(temp, "r");
+       }
+       if (!fp && home[0]) {
+               sprintf(temp, "%s/.scan.%s", home, fn);
+               fp = fopen(temp, "r");
+       }
+       if (!fp) {
+               ptext("Unable to open scanfile: ");
+               ptextln(temp);
+               bye_kids(1);
+               return;
+       }
+       /*
+          scan file format:
+       
+       <down value> <up value> <name>
+       
+       values are in hex. <name> may be any string of characters
+       
+       */
+       scan_up = (char **) malloc(sizeof(char *) * MAX_SCAN);
+       scan_down = (char **) malloc(sizeof(char *) * MAX_SCAN);
+       scan_name = (char **) malloc(sizeof(char *) * MAX_SCAN);
+       scan_tested = (int *) malloc(sizeof(int *) * MAX_SCAN);
+       scan_length = (int *) malloc(sizeof(int *) * MAX_SCAN);
+       scan_value = (int *) malloc(sizeof(int *) * MAX_SCAN);
+       scan_up[0] = scan_down[0] = scan_name[0] = (char *) 0;
+       str = (char *) malloc(4096);    /* buffer space */
+       sl = str + 4000;        /* an upper limit */
+       scan_max = 1;
+       for (i = 0;;) {
+               for (s = str; (ch = getc(fp)) != EOF;) {
+                       if (ch == '\n' || ch == '\r')
+                               break;
+                       *s++ = ch;
+               }
+               *s++ = '\0';
+               if (ch == EOF)
+                       break;
+               if (*str == '#' || *str == '\0')
+                       continue;
+               scan_down[i] = smash();
+               scan_blanks();
+               scan_up[i] = smash();
+               scan_blanks();
+               scan_name[i] = str;
+
+               scan_length[i] = strlen(scan_down[i]);
+               ch = strlen(scan_up[i]) + scan_length[i];
+               if (ch > scan_max)
+                       scan_max = ch;
+
+               scan_value[i] = scan_name[i][0];
+               if (scan_name[i][1])    /* multi-character name */
+                       for (j = 0; scan_special[j].name; j++) {
+                               if (!strcmp(scan_name[i], scan_special[j].name)) {
+                                       scan_value[i] = scan_special[j].type;
+                                       break;
+                               }
+                       }
+
+               i++;
+               if (str > sl) {
+                       str = (char *) malloc(4096);
+                       sl = str + 4000;
+               } else
+                       str = s;
+       }
+       fclose(fp);
+#ifdef notdef
+       for (i = 0; scan_down[i]; i++) {
+               put_str(hex_expand_to(scan_down[i], 3));
+               put_str(hex_expand_to(scan_up[i], 3));
+               put_str("   ");
+               put_str(scan_name[i]);
+               put_crlf();
+       }
+       (void) wait_here();
+#endif
+}
+
+int
+scan_key(void)
+{                              /* read a key and translate scan mode to
+                                  ASCII */
+       int i, j, ch;
+       char buf[64];
+
+       for (i = 1;; i++) {
+               ch = getchar();
+               if (ch == EOF)
+                       return EOF;
+               if (debug_fp) {
+                       fprintf(debug_fp, "%02X ", ch);
+                       debug_char_count += 3;
+                       if (debug_char_count > 72) {
+                               fprintf(debug_fp, "\n");
+                               debug_char_count = 0;
+                       }
+               }
+               buf[i - 1] = ch;
+               buf[i] = '\0';
+               if (buf[0] & 0x80) {    /* scan up */
+                       for (j = 0; scan_up[j]; j++) {
+                               if (i == scan_length[j] &&
+                                       !strcmp(buf, scan_up[j])) {
+                                       i = 0;
+                                       shift_state &= ~scan_value[j];
+                                       break;
+                               }
+                       }
+                       continue;
+               }
+               for (j = 0; scan_down[j]; j++) {
+                       if (i == scan_length[j] && !strcmp(buf, scan_down[j])) {
+                               i = 0;
+                               shift_state |= scan_value[j];
+                               ch = scan_value[j];
+                               if (ch == CAPS_LOCK)
+                                       shift_state ^= SHIFT_KEY;
+                               if (ch >= 256)
+                                       break;
+                               if (shift_state & SHIFT_KEY) {
+                                       if (ch >= 0x60)
+                                               ch -= 0x20;
+                                       else if (ch >= 0x30 && ch <= 0x3f)
+                                               ch -= 0x10;
+                               }
+                               if (shift_state & CONTROL_KEY) {
+                                       if ((ch | 0x20) >= 0x60 &&
+                                               (ch | 0x20) <= 0x7f)
+                                               ch = (ch | 0x20) - 0x60;
+                               }
+                               if (shift_state & META_KEY)
+                                       ch |= 0x80;
+                               return ch;
+                       }
+               }
+               if (i > scan_max)
+                       i = 1;
+       }
+}
diff --git a/tack/sync.c b/tack/sync.c
new file mode 100644 (file)
index 0000000..d8866a0
--- /dev/null
@@ -0,0 +1,424 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+#include <time.h>
+
+MODULE_ID("$Id: sync.c,v 1.1 1998/01/10 00:31:07 tom Exp $")
+
+/* terminal-synchronization and performance tests */
+
+static void sync_home(struct test_list *, int *, int *);
+static void sync_lines(struct test_list *, int *, int *);
+static void sync_clear(struct test_list *, int *, int *);
+static void sync_summary(struct test_list *, int *, int *);
+
+struct test_list sync_test_list[] = {
+       {MENU_NEXT, 0, 0, 0, "b) baud rate test", sync_home, 0},
+       {MENU_NEXT, 0, 0, 0, "l) scroll performance", sync_lines, 0},
+       {MENU_NEXT, 0, 0, 0, "c) clear screen performance", sync_clear, 0},
+       {MENU_NEXT, 0, 0, 0, "p) summary of results", sync_summary, 0},
+       {0, 0, 0, 0, txt_longer_test_time, longer_test_time, 0},
+       {0, 0, 0, 0, txt_shorter_test_time, shorter_test_time, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+struct test_menu sync_menu = {
+       0, 'n', 0,
+       "Performance tests", "perf", "n) run standard tests",
+       sync_test, sync_test_list, 0, 0, 0
+};
+
+int tty_can_sync;              /* TRUE if tty_sync_error() returned FALSE */
+int tty_newline_rate;          /* The number of newlines per second */
+int tty_clear_rate;            /* The number of clear-screens per second */
+int tty_cps;                   /* The number of characters per second */
+
+#define TTY_ACK_SIZE 64
+
+int ACK_terminator;            /* terminating ACK character */
+int ACK_length;                        /* length of ACK string */
+const char *tty_ENQ;           /* enquire string */
+char tty_ACK[TTY_ACK_SIZE];    /* ACK response, set by tty_sync_error() */
+
+/*****************************************************************************
+ *
+ * Terminal synchronization.
+ *
+ *     These functions handle the messy business of enq-ack handshaking
+ *     for timing purposes.
+ *
+ *****************************************************************************/
+
+int
+tty_sync_error(void)
+{
+       int ch, trouble, ack;
+
+       trouble = FALSE;
+       for (;;) {
+               tt_putp(tty_ENQ);       /* send ENQ */
+               ch = getnext(STRIP_PARITY);
+               event_start(TIME_SYNC); /* start the timer */
+
+               /*
+                  The timer doesn't start until we get the first character.
+                  After that I expect to get the remaining characters of
+                  the acknowledge string in a short period of time.  If
+                  that is not true then these characters are coming from
+                  the user and we need to send the ENQ sequence out again.
+               */
+               for (ack = 0; ; ) {
+                       if (ack < TTY_ACK_SIZE - 2) {
+                               tty_ACK[ack] = ch;
+                               tty_ACK[ack + 1] = '\0';
+                       }
+                       if (ch == ACK_terminator) {
+                               return trouble;
+                       }
+                       if (++ack >= ACK_length) {
+                               return trouble;
+                       }
+                       ch = getnext(STRIP_PARITY);
+                       if (event_time(TIME_SYNC) > 400000) {
+                               break;
+                       }
+               }
+
+               set_attr(0);    /* just in case */
+               put_crlf();
+               if (trouble) {
+                       /* The terminal won't sync.  Life is not good. */
+                       return TRUE;
+               }
+               put_str(" -- sync -- ");
+               trouble = TRUE;
+       }
+}
+
+/*
+**     flush_input()
+**
+**     Throw away any output.
+*/
+void 
+flush_input(void)
+{
+       if (tty_can_sync == SYNC_TESTED && ACK_terminator >= 0) {
+               (void) tty_sync_error();
+       } else {
+               spin_flush();
+       }
+}
+
+/*
+**     probe_enq_ok()
+**
+**     does the terminal do enq/ack handshaking?
+*/
+static void 
+probe_enq_ok(void)
+{
+       int tc, len, ulen;
+
+       put_str("Testing ENQ/ACK, standby...");
+       fflush(stdout);
+       can_test("u8 u9", FLAG_TESTED);
+
+       tty_ENQ = user9 ? user9 : "\005";
+       tc_putp(tty_ENQ);
+       event_start(TIME_SYNC); /* start the timer */
+       read_key(tty_ACK, TTY_ACK_SIZE - 1);
+
+       if (event_time(TIME_SYNC) > 400000 || tty_ACK[0] == '\0') {
+               /* These characters came from the user.  Sigh. */
+               tty_can_sync = SYNC_FAILED;
+               ptext("\nThis program expects the ENQ sequence to be");
+               ptext(" answered with the ACK character.  This will help");
+               ptext(" the program reestablish synchronization when");
+               ptextln(" the terminal is overrun with data.");
+               ptext("\nENQ sequence from (u9): ");
+               putln(expand(tty_ENQ));
+               ptext("ACK recieved: ");
+               putln(expand(tty_ACK));
+               len = user8 ? strlen(user8) : 0;
+               sprintf(temp, "Length of ACK %d.  Expected length of ACK %d.",
+                       (int) strlen(tty_ACK), len);
+               ptextln(temp);
+               if (len) {
+                       temp[0] = user8[len - 1];
+                       temp[1] = '\0';
+                       ptext("Terminating character found in (u8): ");
+                       putln(expand(temp));
+               }
+               return;
+       }
+
+       tty_can_sync = SYNC_TESTED;
+       if ((len = strlen(tty_ACK)) == 1) {
+               /* single character acknowledge string */
+               ACK_terminator = tty_ACK[0];
+               ACK_length = 4096;
+               return;
+       }
+       tc = tty_ACK[len - 1];
+       if (user8) {
+               ulen = strlen(user8);
+               if (tc == user8[ulen - 1]) {
+                       /* ANSI style acknowledge string */
+                       ACK_terminator = tc;
+                       ACK_length = 4096;
+                       return;
+               }
+       }
+       /* fixed length acknowledge string */
+       ACK_length = len;
+       ACK_terminator = -2;
+}
+
+/*
+**     verify_time()
+**
+**     verify that the time tests are ready to run.
+**     If the baud rate is not set then compute it.
+*/
+void
+verify_time(void)
+{
+       int status, ch;
+
+       if (tty_can_sync == SYNC_FAILED) {
+               return;
+       }
+       probe_enq_ok();
+       put_crlf();
+       if (tty_can_sync == SYNC_TESTED) {
+               put_crlf();
+               if (ACK_terminator >= 0) {
+                       ptext("ACK terminating character: ");
+                       temp[0] = ACK_terminator;
+                       temp[1] = '\0';
+                       ptextln(expand(temp));
+               } else {
+                       sprintf(temp, "Fixed length ACK, %d characters",
+                               ACK_length);
+                       ptextln(temp);
+               }
+       }
+       if (tty_baud_rate == 0) {
+               sync_home(&sync_test_list[0], &status, &ch);
+       }
+}
+
+/*****************************************************************************
+ *
+ * Terminal performance tests
+ *
+ *     Find out how fast the terminal can:
+ *       1) accept characters
+ *       2) scroll the screen
+ *       3) clear the screen
+ *
+ *****************************************************************************/
+
+/*
+**     sync_home(test_list, status, ch)
+**
+**     Baudrate test
+*/
+void
+sync_home(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int j, k;
+       unsigned long rate;
+
+       if (!cursor_home && !cursor_address && !row_address) {
+               ptext("Terminal can not home cursor.  ");
+               generic_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(home) Start baudrate search")) {
+               return;
+       }
+       pad_test_startup(1);
+       do {
+               go_home();
+               for (j = 1; j < lines; j++) {
+                       for (k = 0; k < columns; k++) {
+                               if (k & 0xF) {
+                                       put_this(letter);
+                               } else {
+                                       put_this('.');
+                               }
+                       }
+                       SLOW_TERMINAL_EXIT;
+               }
+               NEXT_LETTER;
+       } while(still_testing());
+       pad_test_shutdown(t, auto_right_margin == 0);
+       /* note:  tty_frame_size is the real framesize times two.
+          This takes care of half bits. */
+       rate = (tx_cps * tty_frame_size) >> 1;
+       if (rate > tty_baud_rate) {
+               tty_baud_rate = rate;
+       }
+       if (tx_cps > tty_cps) {
+               tty_cps = tx_cps;
+       }
+       sprintf(temp, "%d characters per second.  Baudrate %d  ", tx_cps, j);
+       ptext(temp);
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     sync_lines(test_list, status, ch)
+**
+**     How many newlines/second?
+*/
+static void
+sync_lines(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int j;
+
+       if (skip_pad_test(t, state, ch,
+               "(nel) Start scroll performance test")) {
+               return;
+       }
+       pad_test_startup(0);
+       repeats = 100;
+       do {
+               sprintf(temp, "%d", test_complete);
+               put_str(temp);
+               put_newlines(repeats);
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       j = sliding_scale(tx_count[0], 1000000, usec_run_time);
+       if (j > tty_newline_rate) {
+               tty_newline_rate = j;
+       }
+       sprintf(temp, "%d linefeeds per second.  ", j);
+       ptext(temp);
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     sync_clear(test_list, status, ch)
+**
+**     How many clear-screens/second?
+*/
+static void
+sync_clear(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       int j;
+
+       if (!clear_screen) {
+               ptext("Terminal can not clear-screen.  ");
+               generic_done_message(t, state, ch);
+               return;
+       }
+       if (skip_pad_test(t, state, ch,
+               "(clear) Start clear-screen performance test")) {
+               return;
+       }
+       pad_test_startup(0);
+       repeats = 20;
+       do {
+               sprintf(temp, "%d", test_complete);
+               put_str(temp);
+               for (j = 0; j < repeats; j++) {
+                       put_clear();
+               }
+       } while(still_testing());
+       pad_test_shutdown(t, 0);
+       j = sliding_scale(tx_count[0], 1000000, usec_run_time);
+       if (j > tty_clear_rate) {
+               tty_clear_rate = j;
+       }
+       sprintf(temp, "%d clear-screens per second.  ", j);
+       ptext(temp);
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     sync_symmary(test_list, status, ch)
+**
+**     Print out the test results.
+*/
+static void
+sync_summary(
+       struct test_list *t,
+       int *state,
+       int *ch)
+{
+       char size[32];
+
+       put_crlf();
+       ptextln("Terminal  size    characters/sec linefeeds/sec  clears/sec");
+       sprintf(size, "%dx%d", columns, lines);
+       sprintf(temp, "%-10s%-11s%11d   %11d %11d", tty_basename, size,
+               tty_cps, tty_newline_rate, tty_clear_rate);
+       ptextln(temp);
+       generic_done_message(t, state, ch);
+}
+
+/*
+**     sync_test(menu)
+**
+**     Run at the beginning of the pad tests and function key tests
+*/
+void
+sync_test(
+       struct test_menu *menu)
+{
+       control_init();
+       if (tty_can_sync == SYNC_NOT_TESTED) {
+               verify_time();
+       }
+       if (menu->menu_title) {
+               put_crlf();
+               ptextln(menu->menu_title);
+       }
+}
+
+/*
+**     sync_handshake(test_list, status, ch)
+**
+**     Test or retest the ENQ/ACK handshake
+*/
+void
+sync_handshake(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       tty_can_sync = SYNC_NOT_TESTED;
+       verify_time();
+}
diff --git a/tack/sysdep.c b/tack/sysdep.c
new file mode 100644 (file)
index 0000000..c07b4d9
--- /dev/null
@@ -0,0 +1,469 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+/*
+ * Operating system dependant functions.  We assume the POSIX API.
+ * Note: on strict-POSIX systems (including BSD/OS) the select_delay_type
+ * global has no effect.
+ */
+
+#if defined(__BEOS__)
+#include <OS.h>
+#endif
+
+#include <tack.h>
+
+#include <signal.h>
+#include <term.h>
+#include <errno.h>
+
+#if HAVE_SELECT
+#if HAVE_SYS_TIME_H && HAVE_SYS_TIME_SELECT
+#include <sys/time.h>
+#endif
+#if HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+#endif
+
+MODULE_ID("$Id: sysdep.c,v 1.6 1999/09/04 13:45:00 tom Exp $")
+
+#if DECL_ERRNO
+extern int errno;
+#endif
+
+/* globals */
+int tty_frame_size;            /* asynch frame size times 2 */
+unsigned long tty_baud_rate;   /* baud rate - bits per second */
+int not_a_tty;                 /* TRUE if output is not a tty (i.e. pipe) */
+int nodelay_read;              /* TRUE if NDELAY is set */
+
+#define TTY_IS_NOECHO  !(new_modes.c_lflag & ECHO)
+#define TTY_IS_OUT_TRANS (new_modes.c_oflag & OPOST)
+#define TTY_IS_CHAR_MODE !(new_modes.c_lflag & ICANON)
+#define TTY_WAS_CS8 ((old_modes.c_cflag & CSIZE) == CS8)
+#define TTY_WAS_XON_XOFF (old_modes.c_iflag & (IXON|IXOFF))
+
+static TTY old_modes, new_modes;
+
+void catchsig(void);
+
+/*
+ * These are a sneaky way of conditionalizing bit unsets so strict-POSIX
+ * systems won't see them.
+ */
+#ifndef XCASE
+#define XCASE  0
+#endif
+#ifndef OLCUC
+#define OLCUC  0
+#endif
+#ifndef IUCLC
+#define IUCLC  0
+#endif
+#ifndef TABDLY
+#define        TABDLY  0
+#endif
+#ifndef IXANY
+#define        IXANY   0
+#endif
+
+void
+tty_raw(int minch GCC_UNUSED, int mask)
+{                              /* set tty to raw noecho */
+       new_modes = old_modes;
+#if HAVE_SELECT
+       new_modes.c_cc[VMIN] = 1;
+#else
+       new_modes.c_cc[VMIN] = minch;
+#endif
+       new_modes.c_cc[VTIME] = 2;
+       new_modes.c_lflag &=
+               ~(ISIG | ICANON | XCASE | ECHO | ECHOE | ECHOK | ECHONL);
+#ifdef LOBLK
+       new_modes.c_lflag &= ~LOBLK;
+#endif
+       new_modes.c_oflag &= ~(OPOST | OLCUC | TABDLY);
+       if (mask == ALLOW_PARITY) {
+               new_modes.c_cflag &= ~(CSIZE | PARENB | HUPCL);
+               new_modes.c_cflag |= CS8;
+       }
+       new_modes.c_iflag &=
+               ~(IGNBRK | BRKINT | IGNPAR | PARMRK | INPCK | ISTRIP | INLCR | IGNCR | ICRNL |
+               IUCLC | IXON | IXANY | IXOFF);
+       if (not_a_tty)
+               return;
+       tcsetattr(fileno(stdin), TCSAFLUSH, &new_modes);
+}
+
+void 
+tty_set(void)
+{                              /* set tty to special modes */
+       new_modes = old_modes;
+       new_modes.c_cc[VMIN] = 1;
+       new_modes.c_cc[VTIME] = 1;
+       new_modes.c_lflag &= ~(ISIG | ICANON | ECHO | ECHOE | ECHOK | ECHONL);
+#if defined(ONLCR) && defined(OCRNL) && defined(ONLRET) && defined(OFILL)
+       new_modes.c_oflag &= ~(ONLCR | OCRNL | ONLRET | OFILL);
+#else
+       new_modes.c_oflag &= ~(OPOST);
+#endif
+       if (char_mask == ALLOW_PARITY)
+               new_modes.c_iflag &= ~ISTRIP;
+       switch (select_xon_xoff) {
+       case 0:
+               new_modes.c_iflag &= ~(IXON | IXOFF);
+               break;
+       case 1:
+#if sequent
+               /* the sequent System V emulation is broken */
+               new_modes = old_modes;
+               new_modes.c_cc[VEOL] = 6;       /* control F  (ACK) */
+#endif
+               new_modes.c_iflag |= IXON | IXOFF;
+               break;
+       }
+       switch (select_delay_type) {
+       case 0:
+#ifdef NLDLY
+               new_modes.c_oflag &=
+                       ~(NLDLY | CRDLY | TABDLY | BSDLY | VTDLY | FFDLY);
+#endif /* NLDLY */
+               break;
+       case 1:
+#ifdef NLDLY
+               new_modes.c_oflag &=
+                       ~(NLDLY | CRDLY | TABDLY | BSDLY | VTDLY | FFDLY);
+#endif /* NLDLY */
+#ifdef NL1
+               new_modes.c_oflag |= NL1 | CR2;
+#endif /* NL1 */
+               break;
+       }
+       if (!(new_modes.c_oflag & ~OPOST))
+               new_modes.c_oflag &= ~OPOST;
+       if (not_a_tty)
+               return;
+       tcsetattr(fileno(stdin), TCSAFLUSH, &new_modes);
+}
+
+
+void 
+tty_reset(void)
+{                              /* reset the tty to the original modes */
+       fflush(stdout);
+       if (not_a_tty)
+               return;
+       tcsetattr(fileno(stdin), TCSAFLUSH, &old_modes);
+}
+
+
+void 
+tty_init(void)
+{                              /* ATT terminal init */
+#if defined(F_GETFL) && defined(O_NDELAY)
+       int flags;
+
+       flags = fcntl(fileno(stdin), F_GETFL, 0);
+       nodelay_read = flags & O_NDELAY;
+#else
+       nodelay_read = FALSE;
+#endif
+       not_a_tty = FALSE;
+       if (tcgetattr(fileno(stdin), &old_modes) == -1) {
+               if (errno == ENOTTY) {
+                       tty_frame_size = 20;
+                       not_a_tty = TRUE;
+                       return;
+               }
+               printf("tcgetattr error: %d\n", errno);
+               exit(1);
+       }
+       /* if TAB3 is set then setterm() wipes out tabs (ht) */
+       new_modes = old_modes;
+#ifdef TABDLY
+       new_modes.c_oflag &= ~TABDLY;
+#endif /* TABDLY */
+       if (tcsetattr(fileno(stdin), TCSAFLUSH, &new_modes) == -1) {
+               printf("tcsetattr error: %d\n", errno);
+               exit(1);
+       }
+#ifdef sequent
+       /* the sequent ATT emulation is broken soooo. */
+       old_modes.c_cflag &= ~(CSIZE | CSTOPB);
+       old_modes.c_cflag |= CS7 | PARENB;
+#endif
+       catchsig();
+       switch (old_modes.c_cflag & CSIZE) {
+#if defined(CS5) && (CS5 != 0)
+       case CS5:
+               tty_frame_size = 10;
+               break;
+#endif
+#if defined(CS6) && (CS6 != 0)
+       case CS6:
+               tty_frame_size = 12;
+               break;
+#endif
+#if defined(CS7) && (CS7 != 0)
+       case CS7:
+               tty_frame_size = 14;
+               break;
+#endif
+#if defined(CS8) && (CS8 != 0)
+       case CS8:
+               tty_frame_size = 16;
+               break;
+#endif
+       }
+       tty_frame_size += 2 +
+               ((old_modes.c_cflag & PARENB) ? 2 : 0) +
+               ((old_modes.c_cflag & CSTOPB) ? 4 : 2);
+}
+
+/*
+**     stty_query(question)
+**
+**     Does the current driver settings have this property?
+*/
+int
+stty_query(int q)
+{
+       switch (q) {
+               case TTY_NOECHO:
+               return TTY_IS_NOECHO;
+       case TTY_OUT_TRANS:
+               return TTY_IS_OUT_TRANS;
+       case TTY_CHAR_MODE:
+               return TTY_IS_CHAR_MODE;
+       }
+       return (-1);
+}
+
+/*
+**     initial_stty_query(question)
+**
+**     Did the initial driver settings have this property?
+*/
+int
+initial_stty_query(int q)
+{
+       switch (q) {
+       case TTY_8_BIT:
+               return TTY_WAS_CS8;
+       case TTY_XON_XOFF:
+               return TTY_WAS_XON_XOFF;
+       }
+       return (-1);
+}
+
+#if HAVE_SELECT && defined(FD_ZERO)
+static int
+char_ready(void)
+{
+       int n;
+       fd_set ifds;
+       struct timeval tv;
+
+       FD_ZERO(&ifds);
+       FD_SET(fileno(stdin), &ifds);
+       tv.tv_sec = 0;
+       tv.tv_usec = 200000;
+       n = select(fileno(stdin)+1, &ifds, NULL, NULL, &tv);
+       return (n != 0);
+}
+
+#else
+#ifdef FIONREAD
+int
+char_ready(void)
+{
+       int i, j;
+
+       /* the following loop has to be tuned for each computer */
+       for (j = 0; j < 1000; j++) {
+               ioctl(fileno(stdin), FIONREAD, &i);
+               if (i)
+                       return i;
+       }
+       return i;
+}
+
+#else
+#if defined(__BEOS__)
+int
+char_ready(void)
+{
+       int n = 0;
+       int howmany = ioctl(0, 'ichr', &n);
+       return (howmany >= 0 && n > 0);
+}
+#else
+#define char_ready() 1
+#endif
+#endif
+#endif
+
+/*
+**     spin_flush()
+**
+**     Wait for the input stream to stop.
+**     Throw away all input characters.
+*/
+void
+spin_flush(void)
+{
+       unsigned char buf[64];
+
+       fflush(stdout);
+       event_start(TIME_FLUSH);        /* start the timer */
+       do {
+               if (char_ready()) {
+                       (void) read(fileno(stdin), &buf, sizeof(buf));
+               }
+       } while (event_time(TIME_FLUSH) < 400000);
+}
+
+/*
+**     read_key(input-buffer, length-of-buffer)
+**
+**     read one function key from the input stream.
+**     A null character is converted to 0x80.
+*/
+void 
+read_key(char *buf, int max)
+{
+       int got, ask, i, l;
+       char *s;
+
+       *buf = '\0';
+       s = buf;
+       fflush(stdout);
+       /* ATT unix may return 0 or 1, Berkeley Unix should be 1 */
+       while (read(fileno(stdin), s, 1) == 0);
+       ++s;
+       --max;
+       while (max > 0 && (ask = char_ready())) {
+               if (ask > max) {
+                       ask = max;
+               }
+               if ((got = read(fileno(stdin), s, ask))) {
+                       s += got;
+               } else {
+                       break;
+               }
+               max -= got;
+       }
+       *s = '\0';
+       l = s - buf;
+       for (s = buf, i = 0; i < l; i++) {
+               if ((*s & 0x7f) == 0) {
+                       /* convert nulls to 0x80 */
+                       *(unsigned char *)s = 128;
+               } else {
+                       /* strip high order bits (if any) */
+                       *s &= char_mask;
+               }
+       }
+}
+
+
+void 
+ignoresig(void)
+{
+       /* ignore signals */
+       signal(SIGINT, SIG_IGN);
+       signal(SIGHUP, SIG_IGN);
+       signal(SIGQUIT, SIG_IGN);
+       signal(SIGTERM, SIG_IGN);
+       signal(SIGALRM, SIG_IGN);
+}
+
+ /*
+    onintr( )
+ is the interrupt handling routine onintr turns off interrupts while doing
+    clean-up
+ onintr always exits fatally
+ */
+
+
+static RETSIGTYPE 
+onintr(int sig GCC_UNUSED)
+{
+       ignoresig();
+       tty_reset();
+       exit(1);
+}
+
+
+ /*
+    catchsig( )
+ set up to field interrupts (via function onintr( )) so that if interrupted
+    we can restore the correct terminal modes
+ catchsig simply returns
+ */
+
+
+void 
+catchsig(void)
+{
+       if ((signal(SIGINT, SIG_IGN)) == SIG_DFL)
+               signal(SIGINT, onintr);
+
+       if ((signal(SIGHUP, SIG_IGN)) == SIG_DFL)
+               signal(SIGHUP, onintr);
+
+       if ((signal(SIGQUIT, SIG_IGN)) == SIG_DFL)
+               signal(SIGQUIT, onintr);
+
+       if ((signal(SIGTERM, SIG_IGN)) == SIG_DFL)
+               signal(SIGTERM, onintr);
+
+}
+
+/*
+**     alarm_event(sig)
+**
+**     Come here for an alarm event
+*/
+static void
+alarm_event(
+       int sig GCC_UNUSED)
+{
+       no_alarm_event = 0;
+}
+
+/*
+**     set_alarm_clock(seconds)
+**
+**     Set the alarm clock to fire in <seconds>
+*/
+void
+set_alarm_clock(
+       int seconds)
+{
+       signal(SIGALRM, alarm_event);
+       no_alarm_event = 1;
+       (void) alarm(seconds);
+}
diff --git a/tack/tack.1 b/tack/tack.1
new file mode 100644 (file)
index 0000000..be74e58
--- /dev/null
@@ -0,0 +1,311 @@
+.TH tack 1M ""
+.ds n 5
+.ds d @TERMINFO@
+.SH NAME
+\fBtack\fR - \fIterminfo\fR action checker
+.SH SYNOPSIS
+\fBtack\fR [-itV] [term]
+.br
+.SH DESCRIPTION
+The \fBtack\fR program has three purposes:
+(1) to help you build a new terminfo entry describing an unknown terminal,
+(2) to test the correctness of an existing entry, and
+(3) to develop the correct pad timings needed to ensure that screen updates
+don't fall behind the incoming data stream.
+.PP
+\fBTack\fR presents a series of screen-painting and interactive
+tests in ways which are intended to make any mismatches between the
+terminfo entry and reality visually obvious. 
+\fBTack\fR also provides tools that can help in understanding how
+the terminal operates.
+.SS OPTIONS
+.TP
+.I "\-i"
+Usually \fBtack\fR will send the reset and init strings to the terminal
+when the program starts up.  The \fI-i\fR option will inhibit the
+terminal initialization.
+.TP
+.I "\-t"
+Tell \fBtack\fR to override the terminfo settings for basic terminal
+functions.  When this option is set \fBtack\fR will translate
+(cr) to \\r, (cud1) to \\n, (ind) to \\n, (nel) to \\r\\n,
+(cub1) to \\b, (bel) to \\007, (ff) to \\f and (ht) to \\t.
+.TP
+.I "\-V"
+Display the version information and exit.
+.TP
+.I "term"
+Terminfo terminal name to be tested.  If not present then the $TERM
+environment variable will be used.
+.SH OVERVIEW
+Since \fBtack\fR is designed to test terminfo's it is not possible
+to rely on the correctness of the terminfo data base.  Because of this
+the menuing system used with \fBtack\fR is vary primitive.  When a
+menu is printed it will scroll the entire screen.  To compensate
+for this verbose menu system \fBtack\fR permits menu selection
+type ahead.
+If you already know what action you would like \fBtack\fR to perform
+then you can enter that value immediately and avoid the menu display.
+When in doubt the question mark (?) is a good character to type.
+A carriage return will execute the default action.  These default
+actions are designed to run all the standard tests.
+.PP
+When \fBtack\fR first comes up it will display some basic information
+about the terminal.  Take some time to verify this information.
+If it is wrong many of the subsequent tests will fail.  The most
+important item is the screen size.  If the screen size is wrong there
+is no point in proceeding.  (home) and (clear) are also critical
+to the success of subsequent tests.  The values of (cr) (ind)
+(cub1) and (ht) may effect the tests if they are defined incorrectly.
+If they are undefined \fBtack\fR will set them to reasonable defaults.
+The last two entries on the display are the enquire and acknowledge strings.
+These strings are taken from the user strings (u9) and (u8).
+.PP
+By now you must be wondering why the terminfo names are enclosed
+in parenthesis.  This has no profound meaning other than it makes
+them stand out.  The \fBtack\fR program uses this convention any time
+it displays a terminfo name.  Remember \fBtack\fR is designed to
+rely on as little of the terminfo entry as possible.
+.SH CREATING NEW ENTRIES
+\fBTack\fR has a number of tools that are designed to help gather
+information about the terminal.  Although these functions are not
+dependent on terminal type, you may wish to execute \fBtack\fR
+with options \fI\-it\fR.  This will turn off initialization
+and default the standard entries.
+.PP
+These tools may be reached from the main menu by selecting
+the 'tools' entry.
+.PP
+\fBEcho tool\fR:  All data typed from the keyboard will be echoed back
+to the terminal.  Control characters are not translated to the up arrow format
+but are sent as control characters.  This allows you to test an escape
+sequence and see what it actually does.  You may also elect to
+\fBenable hex output on echo tool\fR this will echo the characters in
+hexadecimal.  Once the test is running you may enter the 'lines'
+or 'columns' keywords which will display a pattern that will help
+you determine your screen size.  A complete list of keywords will
+be displayed when the test starts.  Type 'help' to redisplay
+the list of available commands.
+.PP
+\fBReply tool\fR:  This tool acts much like the echo tool, but
+control characters that are sent from the terminal more than one character
+after a carriage return will be expanded to the up arrow format.  For example
+on a standard ANSI terminal you may type:
+
+               CR ESC [ c
+
+and the response will be echoed as something like:
+
+               ^[ [ ? 6 c
+.PP
+\fBANSI sgr display\fR:  This test assumes you have an ANSI terminal.  It
+goes through attribute numbers 0 to 79, displaying each in turn and using that
+SGR number to write the text.  This shows you which of the SGR
+modes are actually implemented by the terminal.  Note: some terminals (such as
+Tektronix color) use the private use characters to augment the functionality of
+the SGR command.  These private use characters may be interjected into the
+escape sequence by typing the character ( <, =, >, ? ) after the original
+display has been shown.
+.PP
+\fBANSI status reports\fR:  This test queries the terminal in standard
+ANSI/VT-100 fashion.  The results of this test may help
+determine what options are supported by your terminal.
+.PP
+\fBANSI character sets\fR:  This test displays the character sets
+available on a ANSI/VT-100 style terminal.
+Character sets on a real VT-100 terminal are usually defined
+with smacs=\\E(0 and rmacs=\\E(B.  The first character after the
+escape defines the font bank.  The second character defines the
+character set.  This test allows you to view any of the possible
+combinations.  Private use character sets are defined by the digits.
+Standard character sets are located in the alphabetic range.
+.SH VERIFYING AN EXISTING ENTRY
+.PP
+You can verify the correctness of an entry with the `begin testing'
+function.  This entry is the default action and will be chosen
+if you hit carriage return (or enter).  This will bring up a
+secondary menu that allows you to select more specific tests.
+.PP
+The general philosophy of the program is, for each capability, to send an
+appropriate test pattern to the terminal then send a description of
+what the user should expect.  Occasionally (as when checking function-key
+capabilities) the program will ask you to enter input for it to check.
+.PP
+If the test fails then you have the option of dynamically changing
+the terminfo entry and re-running the test.  This is done with
+the 'edit terminfo' menu item.  The edit submenu allows you to change
+the offending terminfo entry and immediately retest the capability.
+The edit menu lets you do other things with the terminfo, such as;
+display the entire terminfo entry,
+display which caps have been tested and display which caps cannot
+be tested.  This menu also allows you to write the newly modified
+terminfo to disc.  If you have made any modifications to the
+terminfo \fBtack\fR will ask you if you want to save the file
+to disc before it exits.  The filename will be the same as the terminal name.
+After the program exits you can run the tic(1M) compiler on the
+new terminfo to install it in the terminfo data base.
+.PP
+.SH CORRECTING PAD TIMINGS
+.SS Theory of Overruns and Padding
+.PP
+Some terminals require significant amounts of time (that is, more than one
+transmitted-character interval) to do screen updates that change large
+portions of the screen, such as screen clears, line insertions,
+line deletions, and scrolls (including scrolls triggered by line feeds
+or a write to the lowest, right-hand-most cell of the screen).
+.PP
+If the computer continues to send characters to the terminal while one
+of these time-consuming operations is going on, the screen may be garbled.
+Since the length of a character transmission time varies inversely with
+transmission speed in cps, entries which function at lower speeds may
+break at higher speeds.
+.PP
+Similar problems result if the host machine is simply sending characters at a
+sustained rate faster than the terminal can buffer and process them.  In either
+case, when the terminal cannot process them and can't tell the host to stop
+soon enough, it will just drop them.  The dropped characters could be text,
+escape sequences or the escape character itself, causing some really
+strange-looking displays.  This kind of glitch is called an \fIoverrun\fR.
+.PP
+In terminfo entries, you can attach a \fBpad time\fR to each string capability
+that is a number of milliseconds to delay after sending it.  This will give
+the terminal time to catch up and avoid overruns.
+.PP
+If you are running a software terminal emulator, or you are on an X pseudo-tty,
+or your terminal is on an RS-232C line which correctly handles RTS/CTS
+hardware flow control, then pads are not strictly necessary.  However, some
+display packages (such as ncurses(3X)) use the pad counts to calculate
+the fastest way to implement certain functions.
+For example: scrolling the screen may be faster than deleting the top line.
+.PP
+One common way to avoid overruns is with XON/XOFF handshaking.
+But even this handshake may have problems at high baud rates.
+This is a result of the way XON/XOFF works.  The terminal tells
+the host to stop with an XOFF.  When the host gets this character, it stops
+sending.  However, there is a small amount of time between the stop request and
+the actual stop.  During this window, the terminal must continue to accept
+characters even though it has told the host to stop.  If the terminal sends
+the stop request too late, then its internal buffer will overflow.  If it sends
+the stop character too early, then the terminal is not getting the most
+efficient use out of its internal buffers.  In a real application at high baud
+rates, a terminal could get a dozen or more characters before the host gets
+around to suspending transmission.  Connecting the terminal over a network
+will make the problem much worse.
+.PP
+(RTS/CTS handshaking does not have this problem because the UARTs are
+signal-connected and the "stop flow" is done at the lowest level, without
+software intervention).
+.PP
+.SS Timing your terminal
+.PP
+In order to get accurate timings from your terminal \fBtack\fR 
+needs to know when the terminal has finished processing all the
+characters that were sent.  This requires a different type of handshaking
+than the XON/XOFF that is supported by most terminals.  \fBTack\fR
+needs to send a request to the terminal and wait for its reply.
+Many terminals will respond with an ACK when they receive an ENQ.
+This is the preferred method since the sequence is short.
+ANSI/VT-100 style terminals can mimic this handshake with the
+escape sequence that requests 'primary device attributes'.
+
+   ESC [ c
+
+The terminal will respond with a sequence like:
+
+   ESC [ ? 1 ; 0 c
+
+\fBTack\fR assumes that (u9) is the enquire sequence and that (u8) is the
+acknowledge string.  A VT-100 style terminal could set u9=\\E[c
+and u8=\\E[?1;0c.
+Acknowledge strings fall into two categories. 
+1) Strings with a unique terminating character and,
+2) strings of fixed length.
+The acknowledge string for the VT-100 is of the first type since
+it always ends with the letter 'c'.  Some Tektronics terminals
+have fixed length acknowledge strings.  \fBTack\fR supports both
+types of strings by scanning for the terminating character until
+the length of the expected acknowledge string has arrived.
+(u8) should be set to some typical acknowledge that will be
+returned when (u9) is sent.
+.PP
+\fBTack\fR will test this sequence before running any of the pad
+tests or the function key tests.  \fBTack\fR will ask you the following:
+
+    Hit lower case g to start testing...
+
+After it sends this message it will send the enquire string.
+It will then read characters from the terminal until it sees the
+letter g.
+.PP
+.SS Testing and Repairing Pad Timings
+.PP
+The pad timings in distributed terminfo entries are often incorrect.  One
+major motivation for this program is to make it relatively easy to tune these
+timings.
+.PP
+You can verify and edit the pad timings for a terminal with
+the `test string capabilities'
+function (this is also part of the `normal test sequence' function).
+.PP
+The key to determining pad times is to find out the effective baud rate of
+the terminal.  The effective baud rate determines the number of characters
+per second that the terminal can accept without either handshaking or
+losing data.  This rate is frequently less than the nominal cps rate on the
+RS-232 line.
+.PP
+\fBTack\fR uses the effective baud rate to judge the duration of the test and
+how much a particular escape sequence will perturb the terminal.
+.PP
+Each pad test has two associated variables that can be tweaked to help verify
+the correctness of the pad timings.  One is the pad test length.  The other is
+the pad multiplier, which is used if the pad prefix includes `*'.  In curses
+use, it is often the first parameter of the capability (if there is one).
+For a capability like (dch) or (il) this will be the number of character
+positions or lines affected, respectively.
+.PP
+\fBTack\fR will run the pad tests and display the results to the terminal.
+On capabilities that have multipliers \fBtack\fR will not tell you
+if the pad needs the multiplier or not.  You must make this decision
+yourself by rerunning the test with a different multiplier.
+If the padding changes in proportion to the multiplier than the
+multiplier is required.  If the multiplier has little or no effect on
+the suggested padding then the multiplier is not needed.
+Some capabilities will take several runs to get a good feel for
+the correct values.  You may wish to make the test longer
+to get more accurate results.  System load will also effect the
+results (a heavily loaded system will not stress the
+terminal as much, possibly leading to pad timings that are too short).
+.PP
+.SH NOTE
+The tests done at the beginning of the program are assumed to be correct later
+in the code.  In particular, \fBtack\fR displays the number of lines and
+columns indicated in the terminfo entry as part of its initial output.
+If these values are wrong a large number of tests will fail or give incorrect
+results.
+.SH FILES
+.TP 12
+tack.log
+If logging is enabled then all characters written to the terminal
+will also be written to the log file.  This gives you the ability
+to see how the tests were performed.  This feature is disabled by default.
+.TP 12
+.I "term"
+If you make changes to the terminfo entry \fBtack\fR will save
+the new terminfo to a file.  The file will have the same name
+as the terminal name.
+.SH SEE ALSO
+\fBterminfo\fR(\*n), \fBncurses\fR(3X), \fBtic\fR(1m), \fBinfocmp\fR(1m).
+You should also have the documentation supplied by the terminal
+manufacturer.
+.SH BUGS
+If the screen size is incorrect, many of the tests will fail.
+.SH AUTHOR
+Concept, design, and original implementation by
+Daniel Weaver <danw@znyx.com>.  Portions of the code and
+documentation are by Eric S. Raymond <esr@snark.thyrsus.com>.
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
diff --git a/tack/tack.c b/tack/tack.c
new file mode 100644 (file)
index 0000000..8ada023
--- /dev/null
@@ -0,0 +1,620 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+#include <tack.h>
+
+MODULE_ID("$Id: tack.c,v 1.1 1998/01/10 01:34:45 tom Exp $")
+
+/*
+   This program is designed to test terminfo, not curses.  Therefore
+   I have used as little of curses as possible.
+
+   Pads associated with the following capabilities are used to set
+   delay times in the handler:  (cr), (ind), (cub1), (ff), (tab).
+
+   I use the (nxon) capability to set the tty handler with/without
+   xon/xoff.  If (smxon)/(rmxon) is defined I will change the terminal
+   too.
+
+   (xon) inhibits the sending of delay characters in putp().
+   If the terminal is defined with no padding then the (xon) boolean
+   is a don't care.  In this case I recommend that it be reset.
+ */
+
+/*****************************************************************************
+ *
+ * Option processing
+ *
+ *****************************************************************************/
+
+/* options and modes */
+int debug_level;               /* debugging level */
+int translate_mode;            /* translate tab, bs, cr, lf, ff */
+int scan_mode;                 /* use scan codes */
+int char_mask;                 /* either 0xFF else 0x7F, eight bit data mask */
+int select_delay_type;         /* set handler delays for <cr><lf> */
+int select_xon_xoff;           /* TTY driver XON/XOFF mode select */
+int hex_out;                   /* Display output in hex */
+int send_reset_init;           /* Send the reset and initialization strings */
+FILE *log_fp;                  /* Terminal logfile */
+
+/*****************************************************************************
+ *
+ * Menu definitions
+ *
+ *****************************************************************************/
+
+extern struct test_menu sync_menu;
+
+static void tools_hex_echo(struct test_list *, int *, int *);
+static void tools_debug(struct test_list *, int *, int *);
+
+static char hex_echo_menu_entry[80];
+
+struct test_list tools_test_list[] = {
+       {0, 0, 0, 0, "s) ANSI status reports", tools_status, 0},
+       {0, 0, 0, 0, "g) ANSI SGR modes (bold, underline, reverse)", tools_sgr, 0},
+       {0, 0, 0, 0, "c) ANSI character sets", tools_charset, 0},
+       {0, 0, 0, 0, hex_echo_menu_entry, tools_hex_echo, 0},
+       {0, 0, 0, 0, "e) echo tool", tools_report, 0},
+       {1, 0, 0, 0, "r) reply tool", tools_report, 0},
+       {0, 0, 0, 0, "p) performance testing", 0, &sync_menu},
+       {0, 0, 0, 0, "i) send reset and init", menu_reset_init, 0},
+       {0, 0, "u8) (u9", 0, "u) test ENQ/ACK handshake", sync_handshake, 0},
+       {0, 0, 0, 0, "d) change debug level", tools_debug, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+struct test_menu tools_menu = {
+       0, 'q', 0, "Tools Menu", "tools",
+       0, 0, tools_test_list, 0, 0, 0
+};
+
+static void tty_width(struct test_list *, int *, int *);
+static void tty_delay(struct test_list *, int *, int *);
+static void tty_xon(struct test_list *, int *, int *);
+static void tty_trans(struct test_list *, int *, int *);
+static void tty_show_state(struct test_menu *);
+
+static char tty_width_menu[80];
+static char tty_delay_menu[80];
+static char tty_xon_menu[80];
+static char tty_trans_menu[80];
+static char enable_xon_xoff[] = {"x) enable xon/xoff"};
+static char disable_xon_xoff[] = {"x) disable xon/xoff"};
+
+static struct test_list tty_test_list[] = {
+       {0, 0, 0, 0, tty_width_menu, tty_width, 0},
+       {0, 0, 0, 0, tty_delay_menu, tty_delay, 0},
+       {0, 0, 0, 0, tty_xon_menu, tty_xon, 0},
+       {0, 0, 0, 0, tty_trans_menu, tty_trans, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+static struct test_menu tty_menu = {
+       0, 'q', 0, "Terminal and driver configuration",
+       "tty", 0,
+       tty_show_state, tty_test_list, 0, 0, 0
+};
+
+extern struct test_list edit_test_list[];
+
+struct test_menu edit_menu = {
+       0, 'q', 0, "Edit terminfo menu",
+       "edit", 0,
+       0, edit_test_list, 0, 0, 0
+};
+
+extern struct test_list mode_test_list[];
+
+struct test_menu mode_menu = {
+       0, 'n', 0, "Mode test menu",
+       "mode", "n) run standard tests",
+       0, mode_test_list, 0, 0, 0
+};
+
+extern struct test_list acs_test_list[];
+
+static struct test_menu acs_menu = {
+       0, 'n', 0,
+       "Alternate character set and graphics rendition test menu",
+       "acs", "n) run standard tests",
+       0, acs_test_list, 0, 0, 0
+};
+
+extern struct test_list color_test_list[];
+
+struct test_menu color_menu = {
+       0, 'n', 0,
+       "Color test menu",
+       "color", "n) run standard tests",
+       0, color_test_list, 0, 0, 0
+};
+
+extern struct test_list crum_test_list[];
+
+static struct test_menu crum_menu = {
+       0, 'n', 0,
+       "Cursor movement test menu",
+       "move", "n) run standard tests",
+       0, crum_test_list, 0, 0, 0
+};
+
+extern struct test_list funkey_test_list[];
+
+static struct test_menu funkey_menu = {
+       0, 'n', 0,
+       "Function key test menu",
+       "fkey", "n) run standard tests",
+       sync_test, funkey_test_list, 0, 0, 0
+};
+
+extern struct test_list printer_test_list[];
+
+static struct test_menu printer_menu = {
+       0, 'n', 0,
+       "Printer test menu",
+       "printer", "n) run standard tests",
+       0, printer_test_list, 0, 0, 0
+};
+
+static void pad_gen(struct test_list *, int *, int *);
+extern struct test_list pad_test_list[];
+
+static struct test_menu pad_menu = {
+       0, 'n', 0,
+       "Pad test menu",
+       "pad", "n) run standard tests",
+       sync_test, pad_test_list, 0, 0, 0
+};
+
+static struct test_list normal_test_list[] = {
+       {0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
+       {0, 0, 0, 0, "i) send reset and init", menu_reset_init, 0},
+       {MENU_NEXT, 0, 0, 0, "x) test modes and glitches", 0, &mode_menu},
+       {MENU_NEXT, 0, 0, 0, "a) test alternate character sets", 0, &acs_menu},
+       {MENU_NEXT, 0, 0, 0, "c) test color", 0, &color_menu},
+       {MENU_NEXT, 0, 0, 0, "m) test cursor movement", 0, &crum_menu},
+       {MENU_NEXT, 0, 0, 0, "f) test function keys", 0, &funkey_menu},
+       {MENU_NEXT, 0, 0, 0, "p) test string capabilities", 0, &pad_menu},
+       {0, 0, 0, 0, "P) test printer", 0, &printer_menu},
+       {MENU_MENU, 0, 0, 0, "/) test a specific capability", 0, 0},
+       {0, 0, 0, 0, "t) auto generate pad delays", pad_gen, &pad_menu},
+       {0, 0, "u8) (u9", 0, 0, sync_handshake, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+
+struct test_menu normal_menu = {
+       0, 'n', 0, "Main test menu",
+       "test", "n) run standard tests",
+       0, normal_test_list, 0, 0, 0
+};
+
+static void start_tools(struct test_list *, int *, int *);
+static void start_modes(struct test_list *, int *, int *);
+static void start_basic(struct test_list *, int *, int *);
+static void start_log(struct test_list *, int *, int *);
+
+static char logging_menu_entry[80] = "l) start logging";
+
+struct test_list start_test_list[] = {
+       {0, 0, 0, 0, "b) display basic information", start_basic, 0},
+       {0, 0, 0, 0, "m) change modes", start_modes, 0},
+       {0, 0, 0, 0, "t) tools", start_tools, 0},
+       {MENU_COMPLETE, 0, 0, 0, "n) begin testing", 0, &normal_menu},
+       {0, 0, 0, 0, logging_menu_entry, start_log, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+       
+
+struct test_menu start_menu = {
+       0, 'n', 0, "Main Menu", "tack", 0,
+       0, start_test_list, 0, 0, 0
+};
+
+static struct test_list write_terminfo_list[] = {
+       {0, 0, 0, 0, "w) write the current terminfo to a file", save_info, 0},
+       {MENU_LAST, 0, 0, 0, 0, 0, 0}
+};
+
+/*****************************************************************************
+ *
+ * Menu command interpretation.
+ *
+ *****************************************************************************/
+
+/*
+**     tools_hex_echo(testlist, state, ch)
+**
+**     Flip the hex echo flag.
+*/
+static void
+tools_hex_echo(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       if (hex_out) {
+               hex_out = FALSE;
+               strcpy(hex_echo_menu_entry,
+                       "h) enable hex output on echo tool");
+       } else {
+               hex_out = TRUE;
+               strcpy(hex_echo_menu_entry,
+                       "h) disable hex output on echo tool");
+       }
+}
+
+/*
+**     tools_debug(testlist, state, ch)
+**
+**     Change the debug level.
+*/
+static void
+tools_debug(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       char buf[32];
+
+       ptext("Enter a new value: ");
+       read_string(buf, sizeof(buf));
+       if (buf[0]) {
+               sscanf(buf, "%d", &debug_level);
+       }
+       sprintf(temp, "Debug level is now %d", debug_level);
+       ptext(temp);
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     start_tools(testlist, state, ch)
+**
+**     Run the generic test tools
+*/
+static void
+start_tools(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       if (hex_out) {
+               strcpy(hex_echo_menu_entry,
+                       "h) disable hex output on echo tool");
+       } else {
+               strcpy(hex_echo_menu_entry,
+                       "h) enable hex output on echo tool");
+       }
+       menu_display(&tools_menu, 0);
+}
+
+/*
+**     tty_show_state()
+**
+**     Display the current state on the tty driver settings
+*/
+static void
+tty_show_state(
+       struct test_menu *menu GCC_UNUSED)
+{
+       put_crlf();
+       (void) sprintf(temp,
+               "Accepting %d bits, UNIX delays %d, XON/XOFF %sabled, speed %ld, translate %s, scan-code mode %s.",
+               (char_mask == ALLOW_PARITY) ? 8 : 7,
+               select_delay_type,
+               select_xon_xoff ? "en" : "dis",
+               tty_baud_rate,
+               translate_mode ? "on" : "off",
+               scan_mode ? "on" : "off");
+       ptextln(temp);
+       put_crlf();
+}
+
+/*
+**     tty_width(testlist, state, ch)
+**
+**     Change the character width
+*/
+static void
+tty_width(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       if (char_mask == STRIP_PARITY) {
+               char_mask = ALLOW_PARITY;
+               strcpy(tty_width_menu, "7) treat terminal as 7-bit");
+       } else {
+               char_mask = STRIP_PARITY;
+               strcpy(tty_width_menu, "8) treat terminal as 8-bit");
+       }
+}
+
+/*
+**     tty_delay(testlist, state, ch)
+**
+**     Change the delay for <cr><lf> in the TTY driver
+*/
+static void
+tty_delay(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       if (select_delay_type) {
+               select_delay_type = FALSE;
+               strcpy(tty_delay_menu,
+                       "d) enable UNIX tty driver delays for <cr><lf>");
+       } else {
+               select_delay_type = TRUE;
+               strcpy(tty_delay_menu,
+                       "d) disable UNIX tty driver delays for <cr><lf>");
+       }
+}
+
+/*
+**     tty_xon(testlist, state, ch)
+**
+**     Change the XON/XOFF flags in the TTY driver
+*/
+static void
+tty_xon(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       if (select_xon_xoff) {
+               if (needs_xon_xoff) {
+                       ptextln("This terminal is marked as needing XON/XOFF protocol with (nxon)");
+               }
+               if (exit_xon_mode) {
+                       tc_putp(exit_xon_mode);
+               }
+               xon_xoff = select_xon_xoff = FALSE;
+               strcpy(tty_xon_menu, enable_xon_xoff);
+       } else {
+               if (enter_xon_mode) {
+                       tc_putp(enter_xon_mode);
+               }
+               xon_xoff = select_xon_xoff = TRUE;
+               strcpy(tty_xon_menu, disable_xon_xoff);
+       }
+       tty_set();
+}
+
+/*
+**     tty_trans(testlist, state, ch)
+**
+**     Change the translation mode for special characters
+*/
+static void
+tty_trans(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       if (translate_mode) {
+               translate_mode = FALSE;
+               strcpy(tty_trans_menu,
+                       "t) use terminfo values for \\b\\f\\n\\r\\t");
+       } else {
+               translate_mode = TRUE;
+               strcpy(tty_trans_menu,
+                       "t) override terminfo values for \\b\\f\\n\\r\\t");
+       }
+}
+
+/*
+**     pad_gen(testlist, state, ch)
+**
+**     Menu function for automatic pad generation
+*/
+static void
+pad_gen(
+       struct test_list *t,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       control_init();
+       if (tty_can_sync == SYNC_NOT_TESTED) {
+               verify_time();
+       }
+       auto_pad_mode = TRUE;
+       menu_display(t->sub_menu, ch);
+       auto_pad_mode = FALSE;
+}
+
+/*
+**     start_modes(testlist, state, ch)
+**
+**     Change the TTY modes
+*/
+static void
+start_modes(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+
+       if (select_delay_type) {
+               strcpy(tty_delay_menu,
+                       "d) disable UNIX tty driver delays for <cr><lf>");
+       } else {
+               strcpy(tty_delay_menu,
+                       "d) enable UNIX tty driver delays for <cr><lf>");
+       }
+       if (char_mask == ALLOW_PARITY) {
+               strcpy(tty_width_menu,
+                       "7) treat terminal as 7-bit");
+       } else {
+               strcpy(tty_width_menu,
+                       "8) treat terminal as 8-bit");
+       }
+       if (select_xon_xoff) {
+               strcpy(tty_xon_menu, disable_xon_xoff);
+       } else {
+               strcpy(tty_xon_menu, enable_xon_xoff);
+       }
+       if (translate_mode) {
+               strcpy(tty_trans_menu,
+                       "t) override terminfo values for \\b\\f\\n\\r\\t");
+       } else {
+               strcpy(tty_trans_menu,
+                       "t) use terminfo values for \\b\\f\\n\\r\\t");
+       }
+       menu_display(&tty_menu, 0);
+       tty_set();
+}
+
+/*
+**     start_basic(testlist, state, ch)
+**
+**     Display basic terminal information
+*/
+static void
+start_basic(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch)
+{
+       display_basic();
+       *ch = REQUEST_PROMPT;
+}
+
+/*
+**     start_log(testlist, state, ch)
+**
+**     Start/stop in logging function
+*/
+static void
+start_log(
+       struct test_list *t GCC_UNUSED,
+       int *state GCC_UNUSED,
+       int *ch GCC_UNUSED)
+{
+       if (logging_menu_entry[5] == 'a') {
+               ptextln("The log file will capture all characters sent to the terminal.");
+               if ((log_fp = fopen("tack.log", "w"))) {
+                       ptextln("Start logging to file: tack.log");
+                       strcpy(logging_menu_entry, "l) stop logging");
+               } else {
+                       ptextln("File open error: tack.log");
+               }
+       } else {
+               if (log_fp) {
+                       fclose(log_fp);
+                       log_fp = 0;
+               }
+               ptextln("Terminal output logging stopped.");
+               strcpy(logging_menu_entry, "l) start logging");
+       }
+}
+
+/*
+**     show_usage()
+**
+**     Tell the user how its done.
+*/
+void
+show_usage(
+       char *name)
+{
+       (void) fprintf(stderr, "usage: %s [-itV] [term]\n", name);
+}
+
+/*
+**     print_version()
+**
+**     Print version and other useful information.
+*/
+void
+print_version(void)
+{
+       printf("tack version %d.%02d\n", MAJOR_VERSION, MINOR_VERSION);
+       printf("Copyright (C) 1997 Free Software Foundation, Inc.\n");
+       printf("Tack comes with NO WARRANTY, to the extent permitted by law.\n");
+       printf("You may redistribute copies of Tack under the terms of the\n");
+       printf("GNU General Public License.  For more information about\n");
+       printf("these matters, see the file named COPYING.\n");
+}
+
+
+/*****************************************************************************
+ *
+ * Main sequence
+ *
+ *****************************************************************************/
+
+int
+main(int argc, char *argv[])
+{
+       int i, j;
+       char *term_variable;
+
+       /* scan the option flags */
+       send_reset_init = TRUE;
+       translate_mode = FALSE;
+       term_variable = getenv("TERM");
+       tty_can_sync = SYNC_NOT_TESTED;
+       for (i = 1; i < argc; i++) {
+               if (argv[i][0] == '-') {
+                       for (j = 1; argv[i][j]; j++) {
+                               switch (argv[i][j]) {
+                               case 'V':
+                                       print_version();
+                                       return (1);
+                               case 'i':
+                                       send_reset_init = FALSE;
+                                       break;
+                               case 't':
+                                       translate_mode = FALSE;
+                                       break;
+                               default:
+                                       show_usage(argv[0]);
+                                       return (0);
+                               }
+                       }
+               } else {
+                       term_variable = argv[i];
+               }
+       }
+       (void) strcpy(tty_basename, term_variable);
+
+       curses_setup(argv[0]);
+
+       menu_can_scan(&normal_menu);    /* extract which caps can be tested */
+       menu_display(&start_menu, 0);
+
+       if (user_modified()) {
+               sprintf(temp, "Hit y to save changes to file: %s  ? ",
+                       tty_basename);
+               ptext(temp);
+               if (wait_here() == 'y') {
+                       save_info(write_terminfo_list, &i, &j);
+               }
+       }
+
+       put_str("\nTerminal test complete\n");
+       bye_kids(0);
+       return (0);
+}
diff --git a/tack/tack.h b/tack/tack.h
new file mode 100644 (file)
index 0000000..22e15af
--- /dev/null
@@ -0,0 +1,403 @@
+/*
+** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** 
+** This file is part of TACK.
+** 
+** TACK is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2, or (at your option)
+** any later version.
+** 
+** TACK is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+** 
+** You should have received a copy of the GNU General Public License
+** along with TACK; see the file COPYING.  If not, write to
+** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+** Boston, MA 02111-1307, USA.
+*/
+
+/* $Id: tack.h,v 1.5 1999/06/26 22:14:07 tom Exp $ */
+
+#ifndef _TACK_H
+#define _TACK_H 1
+
+/* terminfo action checker include file */
+
+#define MAJOR_VERSION 1
+#define MINOR_VERSION 0
+
+#ifdef HAVE_CONFIG_H
+#include <ncurses_cfg.h>
+#else
+#define RETSIGTYPE void
+#define GCC_UNUSED /*nothing*/
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_SELECT 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TIME_SELECT 1
+#endif
+
+#include <sys/types.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <string.h>
+
+#include <curses.h>
+#include <term_entry.h>
+
+#if USE_RCS_IDS
+#define MODULE_ID(id) static const char Ident[] = id;
+#else
+#define MODULE_ID(id) /*nothing*/
+#endif
+
+#if !HAVE_STRSTR
+extern char *_nc_strstr(const char *, const char *);
+#define strstr(h,n) _nc_strstr(h,n)
+#endif
+
+extern FILE *log_fp;
+extern FILE *debug_fp;
+extern int debug_level;
+extern char temp[];
+extern char tty_basename[];
+extern char tty_shortname[];
+
+#define SYNC_FAILED    0
+#define SYNC_TESTED    1
+#define SYNC_NOT_TESTED        2
+#define SYNC_NEEDED    3
+
+extern int tty_can_sync;
+extern int total_pads_sent;    /* count pad characters sent */
+extern int total_caps_sent;    /* count caps sent */
+extern int total_printing_characters;  /* count printing characters sent */
+extern int no_alarm_event;     /* TRUE if the alarm has not gone off yet */
+extern int usec_run_time;      /* length of last test in microseconds */
+extern int raw_characters_sent;        /* Total output characters */
+
+/* Stopwatch event timers */
+#define TIME_TEST 0
+#define TIME_SYNC 1
+#define TIME_FLUSH 2
+#define MAX_TIMERS 3
+
+/* definitions for pad.c */
+
+#define EXIT_CONDITION (no_alarm_event && (tt_delay_used < tt_delay_max))
+#define SLOW_TERMINAL_EXIT if (!test_complete && !EXIT_CONDITION) { break; }
+#define CAP_NOT_FOUND if (auto_pad_mode) return
+
+extern char letters[26+1];
+#define NEXT_LETTER letter = letters[letter_number =\
+       letters[letter_number + 1] ? letter_number + 1 : 0]
+
+extern int test_complete;      /* counts number of tests completed */
+extern char letter;
+extern int letter_number;
+extern int augment, repeats;
+extern long char_sent;
+extern const char *pad_repeat_test;    /* commands that force repeat */
+
+extern int replace_mode;
+extern int char_count, line_count, expand_chars;
+extern int can_go_home, can_clear_screen;
+
+extern int translate_mode, scan_mode;
+extern int auto_pad_mode;              /* TRUE for auto time tests */
+extern int char_mask;
+extern int hex_out;                    /* Display output in hex */
+
+/* Parity bit macros */
+#define STRIP_PARITY 0x7f
+#define ALLOW_PARITY 0xff
+
+/* select_delay_type:  0 -> reset all delays
+                       1 -> force long delays
+                       2 -> do not change the delays */
+extern int select_delay_type;
+
+/* select_xon_xoff:    0 -> reset xon/xoff
+                       1 -> set xon/xoff
+                       2 -> do not change xon/xoff */
+extern int select_xon_xoff;
+
+extern int tty_frame_size;
+extern unsigned long tty_baud_rate;
+extern int tty_cps;            /* The number of characters per second */
+extern int not_a_tty, nodelay_read;
+extern int send_reset_init;
+
+/* definitions for stty_query() and initial_stty_query() */
+#define TTY_CHAR_MODE  0
+#define TTY_NOECHO     1
+#define TTY_OUT_TRANS  2
+#define TTY_8_BIT      3
+#define TTY_XON_XOFF   4
+
+/* scan code definitions */
+#define MAX_SCAN 256
+
+/* translate mode default strings */
+struct default_string_list {
+       const char *name;       /* terminfo name */
+       const char *value;      /* value of default string */
+       int index;              /* index into the strfname[] array */
+};
+
+#define TM_last 8
+extern struct default_string_list TM_string[TM_last];
+
+/* attribute structure definition */
+struct mode_list {
+       const char *name;
+       const char *begin_mode;
+       const char *end_mode;
+       int number;
+};
+
+extern const struct mode_list alt_modes[];
+extern const int mode_map[];
+
+/* Test data base */
+
+#define FLAG_CAN_TEST  1
+#define FLAG_TESTED    2
+#define FLAG_LABEL     4
+#define FLAG_FUNCTION_KEY      8
+
+/* caps under test data base */
+
+#define TT_MAX 8
+#define MAX_CHANGES (TT_MAX+2)
+
+extern int tt_delay_max;       /* max number of milliseconds we can delay */
+extern int tt_delay_used;      /* number of milliseconds consumed in delay */
+extern const char *tt_cap[TT_MAX]; /* value of string */
+extern int tt_affected[TT_MAX];        /* lines or columns effected (repitition
+                                  factor) */
+extern int tt_count[TT_MAX];   /* Number of times sent */
+extern int tt_delay[TT_MAX];   /* Number of milliseconds delay */
+extern int ttp;                        /* number of entries used */
+
+extern const char *tx_cap[TT_MAX]; /* value of string */
+extern int tx_affected[TT_MAX];        /* lines or columns effected (repitition
+                                  factor) */
+extern int tx_count[TT_MAX];   /* Number of times sent */
+extern int tx_delay[TT_MAX];   /* Number of milliseconds delay */
+extern int tx_index[TT_MAX];   /* String index */
+extern int txp;                        /* number of entries used */
+extern int tx_characters;      /* printing characters sent by test */
+extern int tx_cps;             /* characters per second */
+
+/*
+       Menu control for tack.
+*/
+
+struct test_results {
+       struct test_results *next;      /* point to next entry */
+       struct test_list *test; /* Test which got these results */
+       int reps;               /* repeat count */
+       int delay;              /* delay times 10 */
+};
+
+struct test_list {
+       int flags;              /* Test description flags */
+       int lines_needed;       /* Lines needed for test (0->no action) */
+       const char *caps_done;  /* Caps shown in Done message */
+       const char *caps_tested; /* Other caps also being tested */
+       const char *menu_entry; /* Menu entry text (optional) */
+                               /* Function that does testing */
+       void (*test_procedure)(struct test_list *, int *, int *);
+       struct test_menu *sub_menu;     /* Nested sub-menu */
+};
+
+struct test_menu {
+       int flags;              /* Menu feature flag */
+       int default_action;     /* Default command if <cr> <lf> entered */
+       const char *menu_text;  /* Describe this test_menu */
+       const char *menu_title; /* Title for the menu */
+       const char *ident;      /* short menu name */
+       const char *standard_tests;     /* Standard test text */
+                               /* print current settings (optional) */
+       void (*menu_function)(struct test_menu *);
+       struct test_list *tests;        /* Pointer to the menu/function pairs */
+       struct test_list *resume_tests; /* Standard test resume point */
+       int resume_state;       /* resume state of test group */
+       int resume_char;        /* resume ch of test group */
+};
+
+
+/* menu flags */
+#define MENU_100c      0x00001a00      /* Augment 100% of columns */
+#define MENU_90c       0x00001900      /* Augment 90% of columns */
+#define MENU_80c       0x00001800      /* Augment 80% of columns */
+#define MENU_70c       0x00001700      /* Augment 70% of columns */
+#define MENU_60c       0x00001600      /* Augment 60% of columns */
+#define MENU_50c       0x00001500      /* Augment 50% of columns */
+#define MENU_40c       0x00001400      /* Augment 40% of columns */
+#define MENU_30c       0x00001300      /* Augment 30% of columns */
+#define MENU_20c       0x00001200      /* Augment 20% of columns */
+#define MENU_10c       0x00001100      /* Augment 10% of columns */
+#define MENU_LM1       0x00002e00      /* Augment lines - 1 */
+#define MENU_100l      0x00002a00      /* Augment 100% of lines */
+#define MENU_90l       0x00002900      /* Augment 90% of lines */
+#define MENU_50l       0x00002500      /* Augment 50% of lines */
+#define MENU_lines     0x00002000      /* Augment of lines */
+#define MENU_columns   0x00001000      /* Augment of columns */
+#define MENU_LC_MASK   0x00003000      /* Augment mask for lines and columns */
+#define MENU_1L                0x00002f00      /* Augment == one */
+#define MENU_1C                0x00001f00      /* Augment == one */
+#define MENU_ONE       0x00000f00      /* Augment == one */
+#define MENU_ONE_MASK  0x00000f00      /* Augment == one mask */
+#define MENU_REP_MASK  0x00003f00      /* Augment mask */
+
+#define MENU_CLEAR     0x00010000      /* clear screen */
+#define MENU_INIT      0x00020000      /* Initialization function */
+#define MENU_NEXT      0x00040000      /* Next test in sequence */
+#define MENU_LAST      0x00080000      /* End of menu list */
+#define MENU_STOP      0x00100000      /* Stop testing next-in-sequence */
+#define MENU_COMPLETE  0x00200000      /* Test complete after this */
+#define MENU_MENU      0x00400000      /* Pass the menu name not test name */
+
+#define REQUEST_PROMPT 256
+
+extern char prompt_string[80]; /* menu prompt storage */
+extern struct test_menu edit_menu;
+extern struct test_list *augment_test;
+
+/* tack.c */
+extern void show_usage(char *);
+extern void print_version(void);
+
+/* output.c */
+extern void tt_tputs(const char *, int);
+extern void tt_putp(const char *);
+extern void tt_putparm(NCURSES_CONST char *, int, int, int);
+extern int tc_putp(const char *);
+extern int tc_putch(int);
+extern void putchp(int);
+extern void put_cr(void);
+extern void put_crlf(void);
+extern void put_clear(void);
+extern void put_dec(char *, int);
+extern void put_str(const char *);
+extern void put_lf(void);
+extern void put_ind(void);
+extern void put_newlines(int);
+extern void put_columns(const char *, int, int);
+extern void put_this(int);
+extern void putln(const char *);
+extern void ptext(const char *);
+extern void ptextln(const char *);
+extern void home_down(void);
+extern void go_home(void);
+extern void three_digit(char *, int);
+extern int getchp(int);
+extern char *expand(const char *);
+extern char *expand_to(char *, int);
+extern char *expand_command(const char *);
+extern char *hex_expand_to(char *, int);
+extern char *print_expand(char *);
+extern void maybe_wait(int);
+extern int wait_here(void);
+extern void read_string(char *, int);
+extern int getnext(int);
+
+/* control.c */
+extern void event_start(int);
+extern long event_time(int);
+extern char *liberated(char *);
+extern void page_loop(void);
+extern void control_init(void);
+extern int msec_cost(const char *const, int);
+extern int skip_pad_test(struct test_list *, int *, int *, const char *);
+extern void pad_test_startup(int);
+extern int still_testing(void);
+extern void pad_test_shutdown(struct test_list *, int);
+extern void dump_test_stats(struct test_list *, int *, int *);
+extern void longer_test_time(struct test_list *, int *, int *);
+extern void shorter_test_time(struct test_list *, int *, int *);
+extern char txt_longer_test_time[80];
+extern char txt_shorter_test_time[80];
+extern void set_augment_txt(void);
+extern void longer_augment(struct test_list *, int *, int *);
+extern void shorter_augment(struct test_list *, int *, int *);
+extern char txt_longer_augment[80];
+extern char txt_shorter_augment[80];
+extern int sliding_scale(int, int, int);
+
+/* sync.c */
+extern void verify_time(void);
+extern int tty_sync_error(void);
+extern void flush_input(void);
+extern void sync_test(struct test_menu *);
+extern void sync_handshake(struct test_list *, int *, int *);
+
+/* charset.c */
+extern void set_attr(int);
+extern void eat_cookie(void);
+extern void put_mode(char *);
+
+/* init.c */
+extern void reset_init(void);
+extern void display_basic(void);
+extern void put_name(const char *, const char *);
+extern void charset_can_test(void);
+extern void curses_setup(char *);
+extern void bye_kids(int);
+
+/* scan.c */
+extern int scan_key(void);
+extern void scan_init(char *fn);
+
+/* ansi.c */
+extern void tools_status(struct test_list *, int *, int *);
+extern void tools_charset(struct test_list *, int *, int *);
+extern void tools_sgr(struct test_list *, int *, int *);
+
+/* pad.c */
+
+/* fun.c */
+extern void enter_key(const char *, char *, char *);
+extern int tty_meta_prep(void);
+extern void tools_report(struct test_list *, int *, int *);
+
+/* sysdep.c */
+extern void tty_set(void);
+extern void tty_raw(int, int);
+extern void tty_init(void);
+extern void tty_reset(void);
+extern void spin_flush(void);
+extern void read_key(char *, int);
+extern void set_alarm_clock(int);
+extern void ignoresig(void);
+extern int stty_query(int);
+extern int initial_stty_query(int);
+
+/* edit.c */
+extern int user_modified(void);
+extern void save_info(struct test_list *, int *, int *);
+extern void can_test(const char *, int);
+extern void cap_index(const char *, int *);
+extern int cap_match(const char *names, const char *cap);
+extern void edit_init(void);
+extern char *get_string_cap_byname(const char *, const char **);
+extern int get_string_cap_byvalue(const char *);
+extern void show_report(struct test_list *, int *, int *);
+
+/* menu.c */
+extern void menu_prompt(void);
+extern void menu_can_scan(const struct test_menu *);
+extern void menu_display(struct test_menu *, int *);
+extern void generic_done_message(struct test_list *, int *, int *);
+extern void pad_done_message(struct test_list *, int *, int *);
+extern void menu_clear_screen(struct test_list *, int *, int *);
+extern void menu_reset_init(struct test_list *, int *, int *);
+extern int subtest_menu(struct test_list *, int *, int *);
+
+#endif /* _TACK_H */
index d189ada7a8ec3a8b8eec223ee07e391e2bc08d88..b0b9de038ce026d823a9af05d8952e43be85e194 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.45 1998/02/11 12:14:05 tom Exp $
+# $Id: Makefile.in,v 1.54 1999/10/23 20:01:19 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1998,1999 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"), #
@@ -55,7 +55,7 @@ CCFLAGS               = $(CPPFLAGS) $(CFLAGS)
 CFLAGS_NORMAL  = $(CCFLAGS)
 CFLAGS_DEBUG   = $(CCFLAGS) @CC_G_OPT@ -DTRACE
 CFLAGS_PROFILE = $(CCFLAGS) -pg
-CFLAGS_SHARED  = $(CCFLAGS) @CC_SHARED_OPTS@
+CFLAGS_SHARED  = $(CCFLAGS) @CC_SHARED_OPTS@
 
 CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
 
@@ -65,14 +65,14 @@ LOCAL_LIBS  = @TEST_DEPS@
 MATH_LIB       = @MATH_LIB@
 
 LD             = @LD@
-LINK           = $(CC)
+LINK           = @LINK_TESTS@ $(CC)
 
 LDFLAGS                = @LD_MODEL@ @TEST_ARGS@ @LIBS@ @EXTRA_LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@
 
 LDFLAGS_NORMAL = $(LDFLAGS)
 LDFLAGS_DEBUG  = $(LDFLAGS) @CC_G_OPT@
 LDFLAGS_PROFILE        = $(LDFLAGS) -pg
-LDFLAGS_SHARED = $(LDFLAGS) @CC_SHARED_OPTS@ # @LD_SHARED_OPTS@
+LDFLAGS_SHARED = $(LDFLAGS) @LD_SHARED_OPTS@
 
 LDFLAGS_DEFAULT        = $(LDFLAGS_@DFT_UPR_MODEL@)
 
@@ -83,11 +83,16 @@ LINT_LIBS   = -lform -lmenu -lpanel -lncurses @LIBS@
 TESTS = \
        blue$x \
        bs$x \
+       cardfile$x \
+       ditto$x \
+       dots$x \
+       filter$x \
        firework$x \
        firstlast$x \
        gdc$x \
        hanoi$x \
        hashtest$x \
+       keynames$x \
        knight$x \
        lrtest$x \
        ncurses$x \
@@ -111,6 +116,18 @@ blue$x: $(MODEL)/blue.o $(LOCAL_LIBS)
 bs$x: $(MODEL)/bs.o $(LOCAL_LIBS)
        @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/bs.o $(LDFLAGS_DEFAULT)
 
+cardfile$x: $(MODEL)/cardfile.o $(LOCAL_LIBS)
+       @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/cardfile.o $(LDFLAGS_DEFAULT)
+
+ditto$x: $(MODEL)/ditto.o $(LOCAL_LIBS)
+       @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/ditto.o $(LDFLAGS_DEFAULT)
+
+dots$x: $(MODEL)/dots.o $(LOCAL_LIBS)
+       @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/dots.o $(LDFLAGS_DEFAULT)
+
+filter$x: $(MODEL)/filter.o $(LOCAL_LIBS)
+       @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/filter.o $(LDFLAGS_DEFAULT)
+
 firework$x: $(MODEL)/firework.o $(LOCAL_LIBS)
        @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/firework.o $(LDFLAGS_DEFAULT)
 
@@ -126,6 +143,9 @@ hanoi$x: $(MODEL)/hanoi.o $(LOCAL_LIBS)
 hashtest$x: $(MODEL)/hashtest.o $(LOCAL_LIBS)
        @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/hashtest.o $(LDFLAGS_DEFAULT)
 
+keynames$x: $(MODEL)/keynames.o $(LOCAL_LIBS)
+       @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/keynames.o $(LDFLAGS_DEFAULT)
+
 knight$x: $(MODEL)/knight.o $(LOCAL_LIBS)
        @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/knight.o $(LDFLAGS_DEFAULT)
 
index a97cdafb3e4d7c57cf1e2f42d592b7e90e44d04f..4f7335132bbaa4bb4e94b85fe6c3b814dabdc811 100644 (file)
@@ -9,11 +9,11 @@
  *****************************************************************************/
 
 /*
- * Compile this with the command `cc -O blue.c -lcurses -o blue'. For best
- * results, use the portable freeware ncurses(3) library.  On non-Intel
- * machines, SVr4 curses is just as good.
+ * Compile this with the command `cc -O blue.c -lcurses -o blue'.  For best
+ * results, use the ncurses(3) library.  On non-Intel machines, SVr4 curses is
+ * just as good.
  *
- * $Id: blue.c,v 1.15 1997/03/09 00:47:41 tom Exp $
+ * $Id: blue.c,v 1.18 1999/01/17 00:11:56 tom Exp $
  */
 
 #include <test.priv.h>
@@ -78,25 +78,29 @@ static chtype ranks[SUIT_LENGTH][2] =
    Color values should not be or'ed in. This
    only works, because the characters used here
    are plain and have no color attribute themselves. */
-static chtype letters[4] =
-{
 #ifdef COLOR_PAIR
-    'h' | COLOR_PAIR(RED_ON_WHITE),    /* hearts */
-    's' | COLOR_PAIR(BLACK_ON_WHITE),  /* spades */
-    'd' | COLOR_PAIR(RED_ON_WHITE),    /* diamonds */
-    'c' | COLOR_PAIR(BLACK_ON_WHITE),  /* clubs */
+#define OR_COLORS(value,pair) ((value) | COLOR_PAIR(pair))
+#else
+#define OR_COLORS(value,pair) (value)
 #endif
+
+#define PC_COLORS(value,pair) (OR_COLORS(value,pair) | A_ALTCHARSET)
+
+static chtype letters[4] =
+{
+    OR_COLORS('h', RED_ON_WHITE),      /* hearts */
+    OR_COLORS('s', BLACK_ON_WHITE),    /* spades */
+    OR_COLORS('d', RED_ON_WHITE),      /* diamonds */
+    OR_COLORS('c', BLACK_ON_WHITE),    /* clubs */
 };
 
 #if defined(__i386__)
 static chtype glyphs[] =
 {
-#ifdef COLOR_PAIR
-    '\003' | A_ALTCHARSET | COLOR_PAIR(RED_ON_WHITE),  /* hearts */
-    '\006' | A_ALTCHARSET | COLOR_PAIR(BLACK_ON_WHITE),        /* spades */
-    '\004' | A_ALTCHARSET | COLOR_PAIR(RED_ON_WHITE),  /* diamonds */
-    '\005' | A_ALTCHARSET | COLOR_PAIR(BLACK_ON_WHITE),        /* clubs */
-#endif
+    PC_COLORS('\003', RED_ON_WHITE),   /* hearts */
+    PC_COLORS('\006', BLACK_ON_WHITE), /* spades */
+    PC_COLORS('\004', RED_ON_WHITE),   /* diamonds */
+    PC_COLORS('\005', BLACK_ON_WHITE), /* clubs */
 };
 #endif /* __i386__ */
 
@@ -391,15 +395,15 @@ int main(int argc, char *argv[])
     init_pair(BLACK_ON_WHITE,  COLOR_BLACK, COLOR_WHITE);
 
 #ifndef COLOR_PAIR
-    letters[0] = 'h' | COLOR_PAIR(RED_ON_WHITE);       /* hearts */
-    letters[1] = 's' | COLOR_PAIR(BLACK_ON_WHITE);     /* spades */
-    letters[2] = 'd' | COLOR_PAIR(RED_ON_WHITE);       /* diamonds */
-    letters[3] = 'c' | COLOR_PAIR(BLACK_ON_WHITE);     /* clubs */
+    letters[0] = OR_COLORS('h', RED_ON_WHITE);         /* hearts */
+    letters[1] = OR_COLORS('s', BLACK_ON_WHITE);       /* spades */
+    letters[2] = OR_COLORS('d', RED_ON_WHITE);         /* diamonds */
+    letters[3] = OR_COLORS('c', BLACK_ON_WHITE);       /* clubs */
 #if defined(__i386__) && defined(A_ALTCHARSET)
-    glyphs[0]  = '\003' | A_ALTCHARSET | COLOR_PAIR(RED_ON_WHITE);     /* hearts */
-    glyphs[1]  = '\006' | A_ALTCHARSET | COLOR_PAIR(BLACK_ON_WHITE);   /* spades */
-    glyphs[2]  = '\004' | A_ALTCHARSET | COLOR_PAIR(RED_ON_WHITE);     /* diamonds */
-    glyphs[3]  = '\005' | A_ALTCHARSET | COLOR_PAIR(BLACK_ON_WHITE);   /* clubs */
+    glyphs[0]  = PC_COLORS('\003', RED_ON_WHITE);      /* hearts */
+    glyphs[1]  = PC_COLORS('\006', BLACK_ON_WHITE);    /* spades */
+    glyphs[2]  = PC_COLORS('\004', RED_ON_WHITE);      /* diamonds */
+    glyphs[3]  = PC_COLORS('\005', BLACK_ON_WHITE);    /* clubs */
 #endif
 #endif
 
index eaa6f1aed99be1913ca328ebcf38fae4e7713e89..368abcd8f28d8e24898345966a4d02c985271a0d 100644 (file)
--- a/test/bs.c
+++ b/test/bs.c
@@ -7,7 +7,7 @@
  * v2.0 featuring strict ANSI/POSIX conformance, November 1993.
  * v2.1 with ncurses mouse support, September 1995
  *
- * $Id: bs.c,v 1.22 1997/12/20 15:11:53 tom Exp $
+ * $Id: bs.c,v 1.24 1999/08/21 23:14:38 tom Exp $
  */
 
 #include <test.priv.h>
@@ -129,22 +129,24 @@ ship_t;
 
 static bool checkplace(int b, ship_t *ss, int vis);
 
+#define SHIPIT(name, symbol, length) { name, 0, symbol, length, 0,0, 0, FALSE }
+
 static ship_t plyship[SHIPTYPES] =
 {
-    { carrier, 0, 'A', 5},
-    { battle,  0, 'B', 4},
-    { destroy, 0, 'D', 3},
-    { sub,     0, 'S', 3},
-    { ptboat,  0, 'P', 2},
+    SHIPIT(carrier,    'A', 5),
+    SHIPIT(battle,     'B', 4),
+    SHIPIT(destroy,    'D', 3),
+    SHIPIT(sub,                'S', 3),
+    SHIPIT(ptboat,     'P', 2),
 };
 
 static ship_t cpuship[SHIPTYPES] =
 {
-    { carrier, 0, 'A', 5},
-    { battle,  0, 'B', 4},
-    { destroy, 0, 'D', 3},
-    { sub,     0, 'S', 3},
-    { ptboat,  0, 'P', 2},
+    SHIPIT(carrier,    'A', 5),
+    SHIPIT(battle,     'B', 4),
+    SHIPIT(destroy,    'D', 3),
+    SHIPIT(sub,                'S', 3),
+    SHIPIT(ptboat,     'P', 2),
 };
 
 /* "Hits" board, and main board. */
@@ -827,11 +829,12 @@ static int plyturn(void)
     hits[PLAYER][curx][cury] = (hit ? MARK_HIT : MARK_MISS);
     cgoto(cury, curx);
 #ifdef A_COLOR
-    if (has_colors())
+    if (has_colors()) {
        if (hit)
            attron(COLOR_PAIR(COLOR_RED));
        else
            attron(COLOR_PAIR(COLOR_GREEN));
+    }
 #endif /* A_COLOR */
     (void) addch((chtype)hits[PLAYER][curx][cury]);
 #ifdef A_COLOR
@@ -965,11 +968,12 @@ static int cpufire(int x, int y)
 
     pgoto(y, x);
 #ifdef A_COLOR
-    if (has_colors())
+    if (has_colors()) {
        if (hit)
            attron(COLOR_PAIR(COLOR_RED));
        else
            attron(COLOR_PAIR(COLOR_GREEN));
+    }
 #endif /* A_COLOR */
     (void)addch((chtype)(hit ? SHOWHIT : SHOWSPLASH));
 #ifdef A_COLOR
diff --git a/test/cardfile.c b/test/cardfile.c
new file mode 100644 (file)
index 0000000..bc2e1ad
--- /dev/null
@@ -0,0 +1,420 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999
+ *
+ * $Id: cardfile.c,v 1.2 1999/06/16 00:41:57 tom Exp $
+ *
+ * File format: text beginning in column 1 is a title; other text forms the content.
+ */
+
+#include <test.priv.h>
+
+#include <form.h>
+#include <panel.h>
+
+#include <string.h>
+#include <ctype.h>
+
+#define VISIBLE_CARDS 10
+#define OFFSET_CARD 2
+
+#ifndef CTRL
+#define CTRL(x)                ((x) & 0x1f)
+#endif
+
+typedef struct _card {
+       struct _card *link;
+       PANEL *panel;
+       FORM *form;
+       char *title;
+       char *content;
+} CARD;
+
+static CARD *all_cards;
+static char default_name[] = "cardfile.dat";
+
+#if !HAVE_STRDUP
+#define strdup my_strdup
+static char *strdup (char *s)
+{
+    char *p = (char *)malloc(strlen(s)+1);
+    if (p)
+       strcpy(p, s);
+    return(p);
+}
+#endif /* not HAVE_STRDUP */
+
+static char *skip(char *buffer)
+{
+    while (isspace(*buffer))
+       buffer++;
+    return buffer;
+}
+
+static void trim(char *buffer)
+{
+    unsigned n = strlen(buffer);
+    while (n-- && isspace(buffer[n]))
+       buffer[n] = 0;
+}
+
+/*******************************************************************************/
+
+static CARD *add_title(const char *title)
+{
+    CARD *card, *p, *q;
+
+    for (p = all_cards, q = 0; p != 0; q = p, p = p->link)
+    {
+       int cmp = strcmp(p->title, title);
+       if (cmp == 0)
+           return p;
+       if (cmp > 0)
+           break;
+    }
+
+    card = (CARD *)calloc(1, sizeof(CARD));
+    card->title = strdup(title);
+    card->content = strdup("");
+
+    if (q == 0)
+    {
+       card->link = all_cards;
+       all_cards = card;
+    }
+    else
+    {
+       card->link = q->link;
+       q->link = card;
+    }
+
+    return card;
+}
+
+static void add_content(CARD *card, char *content)
+{
+    unsigned total, offset;
+
+    content = skip(content);
+    if ((total = strlen(content)) != 0)
+    {
+       if ((offset = strlen(card->content)) != 0)
+       {
+           total += 1 + offset;
+           card->content = (char *)realloc(card->content, total + 1);
+           strcpy(card->content + offset++, " ");
+       }
+       else
+       {
+           card->content = (char *)malloc(total + 1);
+       }
+       strcpy(card->content + offset, content);
+    }
+}
+
+static CARD *find_card(char *title)
+{
+    CARD *card;
+
+    for (card = all_cards; card != 0; card = card->link)
+       if (!strcmp(card->title, title))
+           break;
+
+    return card;
+}
+
+static void read_data(char *fname)
+{
+    FILE *fp;
+    CARD *card = 0;
+    char buffer[BUFSIZ];
+
+    if ((fp = fopen(fname, "r")) != 0)
+    {
+       while (fgets(buffer, sizeof(buffer), fp))
+       {
+           trim(buffer);
+           if (isspace(*buffer))
+           {
+               if (card == 0)
+                   card = add_title("");
+               add_content(card, buffer);
+           }
+           else if ((card = find_card(buffer)) == 0)
+           {
+               card = add_title(buffer);
+           }
+       }
+       fclose(fp);
+    }
+}
+
+/*******************************************************************************/
+
+static void write_data(const char *fname)
+{
+    FILE *fp;
+    CARD *p = 0;
+    int n;
+
+    if (!strcmp(fname, default_name))
+       fname = "cardfile.out";
+
+    if ((fp = fopen(fname, "w")) != 0)
+    {
+       for (p = all_cards; p != 0; p = p->link)
+       {
+           FIELD **f = form_fields(p->form);
+           for (n = 0; f[n] != 0; n++)
+           {
+               char *s = field_buffer(f[n], 0);
+               if (s != 0
+                && (s = strdup(s)) != 0)
+               {
+                   trim(s);
+                   fprintf(fp, "%s%s\n", n ? "\t" : "", s);
+                   free(s);
+               }
+           }
+       }
+       fclose(fp);
+    }
+}
+
+/*******************************************************************************/
+
+/*
+ * Count the cards
+ */
+static int count_cards(void)
+{
+    CARD *p;
+    int count = 0;
+
+    for (p = all_cards; p != 0; p = p->link)
+       count++;
+
+    return count;
+}
+
+/*
+ * Shuffle the panels to keep them in a natural hierarchy.
+ */
+static void order_cards(CARD *first, int depth)
+{
+    if (first)
+    {
+       if (depth && first->link)
+           order_cards(first->link, depth-1);
+       top_panel(first->panel);
+    }
+}
+
+/*
+ * Return the next card in the list
+ */
+static CARD *next_card(CARD *now)
+{
+    if (now->link)
+       now = now->link;
+    return now;
+}
+
+/*
+ * Return the previous card in the list
+ */
+static CARD *prev_card(CARD *now)
+{
+    CARD *p;
+    for (p = all_cards; p != 0; p = p->link)
+       if (p->link == now)
+           return p;
+    return now;
+}
+
+
+/*******************************************************************************/
+
+static int form_virtualize(WINDOW *w)
+{
+    int                c = wgetch(w);
+
+    switch(c)
+    {
+    case CTRL('W'):
+       return(MAX_FORM_COMMAND + 4);
+    case CTRL('N'):
+       return(MAX_FORM_COMMAND + 3);
+    case CTRL('P'):
+       return(MAX_FORM_COMMAND + 2);
+    case CTRL('Q'):
+    case 033:
+       return(MAX_FORM_COMMAND + 1);
+
+    case KEY_BACKSPACE:
+       return(REQ_DEL_PREV);
+    case KEY_DC:
+       return(REQ_DEL_CHAR);
+    case KEY_LEFT:
+       return(REQ_LEFT_CHAR);
+    case KEY_RIGHT:
+       return(REQ_RIGHT_CHAR);
+
+    case KEY_DOWN:
+    case KEY_NEXT:
+       return(REQ_NEXT_FIELD);
+    case KEY_UP:
+    case KEY_PREVIOUS:
+       return(REQ_PREV_FIELD);
+
+    default:
+       return(c);
+    }
+}
+
+/*******************************************************************************/
+
+static void cardfile(char *fname)
+{
+    WINDOW *win;
+    CARD *p;
+    CARD *top_card;
+    int visible_cards = count_cards();
+    int panel_wide = COLS - (visible_cards * OFFSET_CARD);
+    int panel_high = LINES - (visible_cards * OFFSET_CARD) - 5;
+    int form_wide = panel_wide - 2;
+    int form_high = panel_high - 2;
+    int x = (visible_cards - 1) * OFFSET_CARD;
+    int y = 0;
+    int ch;
+    int finished = FALSE;
+
+    move(LINES - 3, 0);
+    addstr("^Q/ESC -- exit form            ^W   -- writes data to file\n");
+    addstr("^N   -- go to next card        ^P   -- go to previous card\n");
+    addstr("Arrow keys move left/right within a field, up/down between fields");
+
+    /* make a panel for each CARD */
+    for (p = all_cards; p != 0; p = p->link)
+    {
+       FIELD **f = (FIELD **)calloc(3, sizeof(FIELD *));
+
+       win = newwin(panel_high, panel_wide, x, y);
+       keypad(win, TRUE);
+       p->panel = new_panel(win);
+       box(win, 0, 0);
+
+       /* ...and a form in each panel */
+       f[0] = new_field(1, form_wide, 0, 0, 0, 0);
+       set_field_back(f[0], A_REVERSE);
+       set_field_buffer(f[0], 0, p->title);
+
+       f[1] = new_field(form_high-1, form_wide, 1, 0, 0, 0);
+       set_field_buffer(f[1], 0, p->content);
+       set_field_just(f[1], JUSTIFY_LEFT);
+
+       f[2] = 0;
+
+       p->form = new_form(f);
+       set_form_win(p->form, win);
+       set_form_sub(p->form, derwin(win, form_high, form_wide, 1, 1));
+       post_form(p->form);
+
+       x -= OFFSET_CARD;
+       y += OFFSET_CARD;
+    }
+
+    order_cards(top_card = all_cards, visible_cards);
+
+    update_panels();
+
+    while (!finished)
+    {
+       update_panels();
+       doupdate();
+
+       switch(form_driver(top_card->form, ch = form_virtualize(panel_window(top_card->panel))))
+       {
+       case E_OK:
+           break;
+       case E_UNKNOWN_COMMAND:
+           switch (ch) {
+           case MAX_FORM_COMMAND+1:
+               finished = TRUE;
+               break;
+           case MAX_FORM_COMMAND+2:
+               top_card = prev_card(top_card);
+               order_cards(top_card, visible_cards);
+               break;
+           case MAX_FORM_COMMAND+3:
+               top_card = next_card(top_card);
+               order_cards(top_card, visible_cards);
+               break;
+           case MAX_FORM_COMMAND+4:
+               write_data(fname);
+               break;
+           default:
+               beep();
+               break;
+           }
+           break;
+       default:
+           flash();
+           break;
+       }
+    }
+}
+
+/*******************************************************************************/
+
+int main(int argc, char *argv[])
+{
+    int n;
+
+    initscr();
+    cbreak();
+    noecho();
+
+    if (argc > 1)
+    {
+       for (n = 1; n < argc; n++)
+           read_data(argv[n]);
+       cardfile(argv[1]);
+    }
+    else
+    {
+       read_data(default_name);
+       cardfile(default_name);
+    }
+
+    endwin();
+
+    return EXIT_SUCCESS;
+}
diff --git a/test/cardfile.dat b/test/cardfile.dat
new file mode 100644 (file)
index 0000000..deb4b76
--- /dev/null
@@ -0,0 +1,13 @@
+title 1
+       Some text for title1
+       and some more text
+title 2
+       The quicker brown fox ran all over the lazy dog.
+put a card before the first two
+       This is an example of a simple cardfile.
+show a fourth card
+       The fourth card
+       has a large amount of data,
+       more than the other cards.
+       At least, that is what I thought it should do, since I want to see how well
+       the forms package handles justification.
diff --git a/test/configure b/test/configure
new file mode 100755 (executable)
index 0000000..649dffe
--- /dev/null
@@ -0,0 +1,1949 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.13.19990117 
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  case "$ac_option" in
+  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) ac_optarg= ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case "$ac_option" in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir="$ac_optarg" ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build="$ac_optarg" ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file="$ac_optarg" ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir="$ac_optarg" ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    eval "enable_${ac_feature}=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix="$ac_optarg" ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he)
+    # Omit some internal or obsolete options to make the list less imposing.
+    # This message is too long to be a string in the A/UX 3.1 sh.
+    cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+  --cache-file=FILE       cache test results in FILE
+  --help                  print this message
+  --no-create             do not create output files
+  --quiet, --silent       do not print \`checking...' messages
+  --version               print the version of autoconf that created configure
+Directory and file names:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [same as prefix]
+  --bindir=DIR            user executables in DIR [EPREFIX/bin]
+  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
+  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
+  --datadir=DIR           read-only architecture-independent data in DIR
+                          [PREFIX/share]
+  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
+                          [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
+  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
+  --includedir=DIR        C header files in DIR [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
+  --infodir=DIR           info documentation in DIR [PREFIX/info]
+  --mandir=DIR            man documentation in DIR [PREFIX/man]
+  --srcdir=DIR            find the sources in DIR [configure dir or ..]
+  --program-prefix=PREFIX prepend PREFIX to installed program names
+  --program-suffix=SUFFIX append SUFFIX to installed program names
+  --program-transform-name=PROGRAM
+                          run sed PROGRAM on installed program names
+EOF
+    cat << EOF
+Host type:
+  --build=BUILD           configure for building on BUILD [BUILD=HOST]
+  --host=HOST             configure for HOST [guessed]
+  --target=TARGET         configure for TARGET [TARGET=HOST]
+Features and packages:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --x-includes=DIR        X include files are in DIR
+  --x-libraries=DIR       X library files are in DIR
+EOF
+cat <<EOF
+--enable and --with options recognized:
+  --with-5lib             use SunOS sysv-libraries
+  --with-ncurses          use ncurses-libraries (installed)
+EOF
+    exit 0 ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host="$ac_optarg" ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir="$ac_optarg" ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir="$ac_optarg" ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir="$ac_optarg" ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir="$ac_optarg" ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir="$ac_optarg" ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir="$ac_optarg" ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir="$ac_optarg" ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix="$ac_optarg" ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix="$ac_optarg" ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix="$ac_optarg" ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name="$ac_optarg" ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir="$ac_optarg" ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir="$ac_optarg" ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site="$ac_optarg" ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir="$ac_optarg" ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir="$ac_optarg" ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target="$ac_optarg" ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers)
+    echo "configure generated by autoconf version 2.13.19990117"
+    exit 0 ;;
+
+  -with-* | --with-*)
+    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_${ac_package}='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    eval "with_${ac_package}=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes="$ac_optarg" ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries="$ac_optarg" ;;
+
+  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+    ;;
+
+  *)
+    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+      echo "configure: warning: $ac_option: invalid host type" 1>&2
+    fi
+    if test "x$nonopt" != xNONE; then
+      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+    fi
+    nonopt="$ac_option"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+  case "$ac_arg" in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c) ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+  esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set.  These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > confdefs.h
+
+# A filename unique to this package, relative to the directory that
+# configure is in, which we can look for to find out if srcdir is correct.
+ac_unique_file=ncurses.c
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_prog=$0
+  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+  else
+    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+  fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    echo "loading site script $ac_site_file"
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  echo "loading cache $cache_file"
+  . $cache_file
+else
+  echo "creating cache $cache_file"
+  > $cache_file
+fi
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+ac_exeext=
+ac_objext=o
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='       '
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+
+
+
+# Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:532: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_CC="gcc"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:562: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_prog_rejected=no
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+        ac_prog_rejected=yes
+       continue
+      fi
+      ac_cv_prog_CC="cc"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# -gt 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    set dummy "$ac_dir/$ac_word" "$@"
+    shift
+    ac_cv_prog_CC="$@"
+  fi
+fi
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+  if test -z "$CC"; then
+    case "`uname -s`" in
+    *win32* | *WIN32*)
+      # Extract the first word of "cl", so it can be a program name with args.
+set dummy cl; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:613: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_prog_CC="cl"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+CC="$ac_cv_prog_CC"
+if test -n "$CC"; then
+  echo "$ac_t""$CC" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+ ;;
+    esac
+  fi
+  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+fi
+
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:645: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+cat > conftest.$ac_ext << EOF
+
+#line 656 "configure"
+#include "confdefs.h"
+
+main(){return(0);}
+EOF
+if { (eval echo configure:661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  ac_cv_prog_cc_works=yes
+  # If we can't run a trivial program, we are probably using a cross compiler.
+  if (./conftest; exit) 2>/dev/null; then
+    ac_cv_prog_cc_cross=no
+  else
+    ac_cv_prog_cc_cross=yes
+  fi
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_prog_cc_works=no
+fi
+rm -fr conftest*
+ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
+if test $ac_cv_prog_cc_works = no; then
+  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+fi
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+echo "configure:687: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+cross_compiling=$ac_cv_prog_cc_cross
+
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+echo "configure:692: checking whether we are using GNU C" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+  ac_cv_prog_gcc=yes
+else
+  ac_cv_prog_gcc=no
+fi
+fi
+
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+
+if test $ac_cv_prog_gcc = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+
+ac_test_CFLAGS="${CFLAGS+set}"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS=
+echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+echo "configure:720: checking whether ${CC-cc} accepts -g" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  echo 'void f(){}' > conftest.c
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+  ac_cv_prog_cc_g=yes
+else
+  ac_cv_prog_cc_g=no
+fi
+rm -f conftest*
+
+fi
+
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS="$ac_save_CFLAGS"
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+
+
+CC_G_OPT="-g"                          
+CC_SHARED_OPTS=unknown                 
+CPPFLAGS="$CPPFLAGS"                   
+DFT_DEP_SUFFIX=""                      
+DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'`   
+DFT_UPR_MODEL="NORMAL"                 
+ECHO_LINK='@ echo linking $@ ... ;'    
+EXTRA_LIBS=""                          
+LD="ld"                                        
+LDFLAGS_SHARED=""                      
+LD_MODEL=""                            
+LD_SHARED_OPTS=""                      
+LIB_NAME=curses                                
+LIB_PREFIX="-l"                                
+LINK_TESTS=""                          
+LINT=lint                              
+LINT_OPTS=""                           
+LOCAL_LDFLAGS=""                       
+MATH_LIB="-lm"                         
+PROG_EXT=""                            
+TEST_ARGS=""                           
+TEST_DEPS=""                           
+cf_cv_abi_version=""                   
+cf_cv_rel_version=""                   
+
+
+# Check whether --with-5lib or --without-5lib was given.
+if test "${with_5lib+set}" = set; then
+  withval="$with_5lib"
+  LIBS="-L/usr/5lib $LIBS"
+        CPPFLAGS="$CPPFLAGS -I/usr/5include"
+fi
+
+
+
+# Check whether --with-ncurses or --without-ncurses was given.
+if test "${with_ncurses+set}" = set; then
+  withval="$with_ncurses"
+  echo $ac_n "checking for initscr""... $ac_c" 1>&6
+echo "configure:791: checking for initscr" >&5
+if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 796 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char initscr(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char initscr();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_initscr) || defined (__stub___initscr)
+choke me
+#else
+initscr();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_initscr=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_initscr=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'initscr`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  :
+else
+  echo "$ac_t""no" 1>&6
+
+        echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
+echo "configure:838: checking for Gpm_Open in -lgpm" >&5
+ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lgpm  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 846 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char Gpm_Open();
+
+int main() {
+Gpm_Open()
+; return 0; }
+EOF
+if { (eval echo configure:857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo gpm | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lgpm $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+        LIB_NAME=ncurses
+        for p in $HOME /usr/local /usr
+        do
+               if test -f $p/include/ncurses/curses.h
+               then
+                       CPPFLAGS="$CPPFLAGS -I$p/include/ncurses"
+                       test $p != /usr && LIBS="-L$p/lib $LIBS"
+                       break
+               elif test $p != /usr
+               then
+                       if test -f $p/include/curses.h
+                       then
+                               CPPFLAGS="$CPPFLAGS -I$p/include"
+                               LIBS="-L$p/lib $LIBS"
+                               break
+                       fi
+               fi
+        done
+       
+fi
+
+fi
+
+
+
+
+echo $ac_n "checking for initscr""... $ac_c" 1>&6
+echo "configure:911: checking for initscr" >&5
+if eval "test \"`echo '$''{'ac_cv_func_initscr'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 916 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char initscr(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char initscr();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_initscr) || defined (__stub___initscr)
+choke me
+#else
+initscr();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:939: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_initscr=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_initscr=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'initscr`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  :
+else
+  echo "$ac_t""no" 1>&6
+
+echo $ac_n "checking for initscr in -l$LIB_NAME""... $ac_c" 1>&6
+echo "configure:958: checking for initscr in -l$LIB_NAME" >&5
+ac_lib_var=`echo $LIB_NAME'_'initscr | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-l$LIB_NAME  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 966 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char initscr();
+
+int main() {
+initscr()
+; return 0; }
+EOF
+if { (eval echo configure:977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo $LIB_NAME | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-l$LIB_NAME $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+fi
+
+echo $ac_n "checking for form_driver in -lform""... $ac_c" 1>&6
+echo "configure:1007: checking for form_driver in -lform" >&5
+ac_lib_var=`echo form'_'form_driver | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lform  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1015 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char form_driver();
+
+int main() {
+form_driver()
+; return 0; }
+EOF
+if { (eval echo configure:1026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo form | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lform $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+echo $ac_n "checking for menu_driver in -lmenu""... $ac_c" 1>&6
+echo "configure:1054: checking for menu_driver in -lmenu" >&5
+ac_lib_var=`echo menu'_'menu_driver | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lmenu  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1062 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char menu_driver();
+
+int main() {
+menu_driver()
+; return 0; }
+EOF
+if { (eval echo configure:1073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo menu | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lmenu $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+echo $ac_n "checking for new_panel in -lpanel""... $ac_c" 1>&6
+echo "configure:1101: checking for new_panel in -lpanel" >&5
+ac_lib_var=`echo panel'_'new_panel | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lpanel  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1109 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char new_panel();
+
+int main() {
+new_panel()
+; return 0; }
+EOF
+if { (eval echo configure:1120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo panel | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lpanel $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
+echo "configure:1149: checking return type of signal handlers" >&5
+if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1154 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+#undef signal
+#endif
+#ifdef __cplusplus
+extern "C" void (*signal (int, void (*)(int)))(int);
+#else
+void (*signal ()) ();
+#endif
+
+int main() {
+int i;
+; return 0; }
+EOF
+if { (eval echo configure:1171: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_type_signal=void
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_type_signal=int
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_type_signal" 1>&6
+cat >> confdefs.h <<EOF
+#define RETSIGTYPE $ac_cv_type_signal
+EOF
+
+
+
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:1191: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+    # This must be in double quotes, not single quotes, because CPP may get
+  # substituted into the Makefile and "${CC-cc}" will confuse make.
+  CPP="${CC-cc} -E"
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp.
+  cat > conftest.$ac_ext <<EOF
+#line 1206 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1212: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -E -traditional-cpp"
+  cat > conftest.$ac_ext <<EOF
+#line 1223 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -nologo -E"
+  cat > conftest.$ac_ext <<EOF
+#line 1240 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+  ac_cv_prog_CPP="$CPP"
+fi
+  CPP="$ac_cv_prog_CPP"
+else
+  ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+echo "configure:1271: checking for ANSI C header files" >&5
+if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1276 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  ac_cv_header_stdc=yes
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+cat > conftest.$ac_ext <<EOF
+#line 1301 "configure"
+#include "confdefs.h"
+#include <string.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "memchr" >/dev/null 2>&1; then
+  :
+else
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+cat > conftest.$ac_ext <<EOF
+#line 1319 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "free" >/dev/null 2>&1; then
+  :
+else
+  rm -rf conftest*
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+if test "$cross_compiling" = yes; then
+  :
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1340 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int main () { int i; for (i = 0; i < 256; i++)
+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
+exit (0); }
+
+EOF
+if { (eval echo configure:1351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  :
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  ac_cv_header_stdc=no
+fi
+rm -fr conftest*
+fi
+
+fi
+fi
+
+echo "$ac_t""$ac_cv_header_stdc" 1>&6
+if test $ac_cv_header_stdc = yes; then
+  cat >> confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+echo "configure:1375: checking whether time.h and sys/time.h may both be included" >&5
+if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1380 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+int main() {
+struct tm *tp;
+; return 0; }
+EOF
+if { (eval echo configure:1389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_header_time=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_header_time=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_header_time" 1>&6
+if test $ac_cv_header_time = yes; then
+  cat >> confdefs.h <<\EOF
+#define TIME_WITH_SYS_TIME 1
+EOF
+
+fi
+
+for ac_hdr in \
+form.h \
+getopt.h \
+menu.h \
+nc_alloc.h \
+panel.h \
+sys/ioctl.h \
+sys/select.h \
+sys/time.h \
+termios.h \
+unistd.h \
+
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1424: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1429 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1434: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+
+for ac_func in \
+curses_version \
+gettimeofday \
+napms \
+resizeterm \
+strdup \
+vsscanf \
+
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:1471: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1476 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $ac_func();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:1499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_$ac_func=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+
+echo $ac_n "checking if sys/time.h conflicts with sys/select.h""... $ac_c" 1>&6
+echo "configure:1525: checking if sys/time.h conflicts with sys/select.h" >&5
+if eval "test \"`echo '$''{'cf_cv_sys_time_select'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+cat > conftest.$ac_ext <<EOF
+#line 1531 "configure"
+#include "confdefs.h"
+
+#if HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#if HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:1545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  cf_cv_sys_time_select=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cf_cv_sys_time_select=no
+fi
+rm -f conftest*
+     
+fi
+
+echo "$ac_t""$cf_cv_sys_time_select" 1>&6
+test $cf_cv_sys_time_select = yes && cat >> confdefs.h <<\EOF
+#define HAVE_SYS_TIME_SELECT 1
+EOF
+
+
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs.  It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already.  You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+  case `(ac_space=' '; set | grep ac_space) 2>&1` in
+  *ac_space=\ *)
+    # `set' does not quote correctly, so add quotes (double-quote substitution
+    # turns \\\\ into \\, and sed turns \\ into \).
+    sed -n \
+      -e "s/'/'\\\\''/g" \
+      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+    ;;
+  *)
+    # `set' quotes correctly as required by POSIX, so do not add quotes.
+    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+    ;;
+  esac >> confcache
+if cmp -s $cache_file confcache; then
+  :
+else
+  if test -w $cache_file; then
+    echo "updating cache $cache_file"
+    cat confcache > $cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+  case "\$ac_option" in
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+    echo "$CONFIG_STATUS generated by autoconf version 2.13.19990117"
+    exit 0 ;;
+  -help | --help | --hel | --he | --h)
+    echo "\$ac_cs_usage"; exit 0 ;;
+  *) echo "\$ac_cs_usage"; exit 1 ;;
+  esac
+done
+
+ac_given_srcdir=$srcdir
+
+trap 'rm -fr `echo "Makefile ncurses_cfg.h:ncurses_tst.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@SHELL@%$SHELL%g
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+s%@includedir@%$includedir%g
+s%@oldincludedir@%$oldincludedir%g
+s%@infodir@%$infodir%g
+s%@mandir@%$mandir%g
+s%@CC@%$CC%g
+s%@CC_G_OPT@%$CC_G_OPT%g
+s%@CC_SHARED_OPTS@%$CC_SHARED_OPTS%g
+s%@DFT_DEP_SUFFIX@%$DFT_DEP_SUFFIX%g
+s%@DFT_OBJ_SUBDIR@%$DFT_OBJ_SUBDIR%g
+s%@DFT_UPR_MODEL@%$DFT_UPR_MODEL%g
+s%@ECHO_LINK@%$ECHO_LINK%g
+s%@EXTRA_LIBS@%$EXTRA_LIBS%g
+s%@LD@%$LD%g
+s%@LDFLAGS_SHARED@%$LDFLAGS_SHARED%g
+s%@LD_MODEL@%$LD_MODEL%g
+s%@LD_SHARED_OPTS@%$LD_SHARED_OPTS%g
+s%@LIB_NAME@%$LIB_NAME%g
+s%@LIB_PREFIX@%$LIB_PREFIX%g
+s%@LINK_TESTS@%$LINK_TESTS%g
+s%@LINT@%$LINT%g
+s%@LINT_OPTS@%$LINT_OPTS%g
+s%@LOCAL_LDFLAGS@%$LOCAL_LDFLAGS%g
+s%@MATH_LIB@%$MATH_LIB%g
+s%@PROG_EXT@%$PROG_EXT%g
+s%@TEST_ARGS@%$TEST_ARGS%g
+s%@TEST_DEPS@%$TEST_DEPS%g
+s%@cf_cv_abi_version@%$cf_cv_abi_version%g
+s%@cf_cv_rel_version@%$cf_cv_rel_version%g
+s%@CPP@%$CPP%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+  if test $ac_beg -gt 1; then
+    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+  else
+    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+  fi
+  if test ! -s conftest.s$ac_file; then
+    ac_more_lines=false
+    rm -f conftest.s$ac_file
+  else
+    if test -z "$ac_sed_cmds"; then
+      ac_sed_cmds="sed -f conftest.s$ac_file"
+    else
+      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+    fi
+    ac_file=`expr $ac_file + 1`
+    ac_beg=$ac_end
+    ac_end=`expr $ac_end + $ac_max_sed_cmds`
+  fi
+done
+if test -z "$ac_sed_cmds"; then
+  ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    # The file is in a subdirectory.
+    test ! -d "$ac_dir" && mkdir "$ac_dir"
+    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+
+  case "$ac_given_srcdir" in
+  .)  srcdir=.
+      if test -z "$ac_dots"; then top_srcdir=.
+      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+  *) # Relative path.
+    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+
+  echo creating "$ac_file"
+  rm -f "$ac_file"
+  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+  case "$ac_file" in
+  *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+  *) ac_comsub= ;;
+  esac
+
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uB='\([     ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+  CONFIG_HEADERS="ncurses_cfg.h:ncurses_tst.hin"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  echo creating $ac_file
+
+  rm -f conftest.frag conftest.in conftest.out
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  cat $ac_file_inputs > conftest.in
+
+EOF
+
+
+# Transform confdefs.h into a list of #define's.  We won't use it as a sed
+# script, but as data to insert where we see @DEFS@.  We expect AC_SAVE_DEFS to
+# be either 'cat' or 'sort'.
+sort confdefs.h >conftest.vals
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+echo '  rm -f conftest.frag' >> $CONFIG_STATUS
+while :
+do
+  ac_lines=`grep -c . conftest.vals`
+  # grep -c gives empty output for an empty file on some AIX systems.
+  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+  # Write chunks of a limited-size here document to conftest.frag.
+  echo '  cat >> conftest.frag <<CEOF' >> $CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+  echo 'CEOF' >> $CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+  rm -f conftest.vals
+  mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+# Run sed to substitute the contents of conftest.frag into conftest.in at the
+# marker @DEFS@.
+echo '  cat >> conftest.edit <<CEOF
+/@DEFS@/r conftest.frag
+/@DEFS@/d
+CEOF
+sed -f conftest.edit conftest.in > conftest.out
+rm -f conftest.in
+mv conftest.out conftest.in
+rm -f conftest.edit conftest.frag
+' >> $CONFIG_STATUS
+
+
+cat >> $CONFIG_STATUS <<\EOF
+  rm -f conftest.frag conftest.h
+  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
+  cat conftest.in >> conftest.h
+  rm -f conftest.in
+  if cmp -s $ac_file conftest.h 2>/dev/null; then
+    echo "$ac_file is unchanged"
+    rm -f conftest.h
+  else
+    # Remove last slash and all that follows it.  Not all systems have dirname.
+      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+      # The file is in a subdirectory.
+      test ! -d "$ac_dir" && mkdir "$ac_dir"
+    fi
+    rm -f $ac_file
+    mv conftest.h $ac_file
+  fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+# Extra initialization commands, if any
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+# Extra commands, if any
+
+       cat >>Makefile <<TEST_EOF
+
+# These rules are generated so we do not rely on suffix rules, which do not
+# work consistently for different make-programs (the '\$(MODEL)/' confuses
+# some, and the '\$x' confuses others).
+TEST_EOF
+LIST=`make echo_tests`
+LAST=`make echo_suffix`
+for n in $LIST
+do
+       N=`echo $n | sed -e s/${LAST}\$//`
+       cat >>Makefile <<TEST_EOF
+
+\$(MODEL)/$N.o : $N.c \\
+       test.priv.h \\
+       ncurses_cfg.h
+       @echo compiling $N; \$(CC) -c \$(CFLAGS_DEFAULT) $N.c
+TEST_EOF
+done
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
index a3eed7445362a8eff85e0e3baff9b9b6922c9d7e..d963022c0bfd9fa3fcafb715d3b0ea910b3e1831 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright (c) 1998 Free Software Foundation, Inc.                        *
+dnl Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
 dnl copy of this software and associated documentation files (the            *
@@ -28,7 +28,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
 dnl
-dnl $Id: configure.in,v 1.23 1998/02/11 12:14:05 tom Exp $
+dnl $Id: configure.in,v 1.27 1999/10/23 20:01:42 tom Exp $
 dnl This is a simple configuration-script for the ncurses test programs that
 dnl allows the test-directory to be separately configured against a reference
 dnl system (i.e., sysvr4 curses)
@@ -53,10 +53,12 @@ DFT_UPR_MODEL="NORMAL"                      AC_SUBST(DFT_UPR_MODEL)
 ECHO_LINK='@ echo linking $@ ... ;'    AC_SUBST(ECHO_LINK)
 EXTRA_LIBS=""                          AC_SUBST(EXTRA_LIBS)
 LD="ld"                                        AC_SUBST(LD)
-LD_MODEL=""                            AC_SUBST(LD_MODEL)
 LDFLAGS_SHARED=""                      AC_SUBST(LDFLAGS_SHARED)
+LD_MODEL=""                            AC_SUBST(LD_MODEL)
+LD_SHARED_OPTS=""                      AC_SUBST(LD_SHARED_OPTS)
 LIB_NAME=curses                                AC_SUBST(LIB_NAME)
 LIB_PREFIX="-l"                                AC_SUBST(LIB_PREFIX)
+LINK_TESTS=""                          AC_SUBST(LINK_TESTS)
 LINT=lint                              AC_SUBST(LINT)
 LINT_OPTS=""                           AC_SUBST(LINT_OPTS)
 LOCAL_LDFLAGS=""                       AC_SUBST(LOCAL_LDFLAGS)
@@ -127,6 +129,7 @@ unistd.h \
 )
 
 AC_CHECK_FUNCS( \
+curses_version \
 gettimeofday \
 napms \
 resizeterm \
similarity index 50%
rename from form/frm_adabind.c
rename to test/ditto.c
index 53d1ca2a7afd22ae96e022350adec23b1020eb2a..8ceafe5de11a05da49d2188c5bb58c71a67a1dcc 100644 (file)
  * authorization.                                                           *
  ****************************************************************************/
 
-/****************************************************************************
- *   Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1995,1997        *
- ****************************************************************************/
-
-/***************************************************************************
-* Module frm_adabind.c                                                     *
-* Helper routines to ease the implementation of an Ada95 binding to        *
-* ncurses. For details and copyright of the binding see the ../Ada95       *
-* subdirectory.                                                            *
-***************************************************************************/
-#include "form.priv.h"
-
-MODULE_ID("$Id: frm_adabind.c,v 1.5 1998/02/11 12:13:43 tom Exp $")
+/*
+ * Author: Thomas E. Dickey <dickey@clark.net> 1998
+ *
+ * $Id: ditto.c,v 1.3 1998/08/15 23:39:34 tom Exp $
+ *
+ * The program illustrates how to set up multiple screens from a single
+ * program.  Invoke the program by specifying another terminal on the same
+ * machine by specifying its device, e.g.,
+ *     ditto /dev/ttyp1
+ */
+#include <test.priv.h>
+#include <sys/stat.h>
+#include <errno.h>
 
-/* Prototypes for the functions in this module */
-void   _nc_ada_normalize_field_opts (int *opt);
-void   _nc_ada_normalize_form_opts (int *opt);
-void*  _nc_ada_getvarg(va_list *);
-FIELD* _nc_get_field(const FORM*, int);
+typedef struct {
+       FILE *input;
+       FILE *output;
+       SCREEN *screen;
+} DITTO;
 
-
-void _nc_ada_normalize_field_opts (int *opt)
+static void
+failed(const char *s)
 {
-  *opt = ALL_FIELD_OPTS & (*opt);
+       perror(s);
+       exit(EXIT_FAILURE);
 }
 
-void _nc_ada_normalize_form_opts (int *opt)
+static void
+usage(void)
 {
-  *opt = ALL_FORM_OPTS & (*opt);
+       fprintf(stderr, "usage: ditto [terminal1 ...]\n");
+       exit(EXIT_FAILURE);
 }
 
-
-/*  This tiny stub helps us to get a void pointer from an argument list.
-//  The mechanism for libform to handle arguments to field types uses
-//  unfortunately functions with variable argument lists. In the Ada95
-//  binding we replace this by a mechanism that only uses one argument
-//  that is a pointer to a record describing all the specifics of an
-//  user defined field type. So we need only this simple generic
-//  procedure to get the pointer from the arglist.
-*/
-void *_nc_ada_getvarg(va_list *ap)
+static FILE *
+open_tty(char *path)
 {
-  return va_arg(*ap,void*);
+       FILE *fp;
+       struct stat sb;
+
+       if (stat(path, &sb) < 0)
+               failed(path);
+       if ((sb.st_mode & S_IFMT) != S_IFCHR) {
+               errno = ENOTTY;
+               failed(path);
+       }
+       fp = fopen(path, "a+");
+       if (fp == 0)
+               failed(path);
+       printf("opened %s\n", path);
+       return fp;
 }
 
-FIELD* _nc_get_field(const FORM* frm, int idx) {
-  if (frm && frm->field && idx>=0 && (idx<frm->maxfield))
-    {
-      return frm->field[idx];
-    }
-  else
-    return (FIELD*)0;
+int
+main(
+       int argc GCC_UNUSED,
+       char *argv[] GCC_UNUSED)
+{
+       int j;
+       int active_tty = 0;
+       DITTO *data;
+
+       if (argc <= 1)
+               usage();
+
+       if ((data = (DITTO *)calloc(argc, sizeof(DITTO))) == 0)
+               failed("calloc data");
+
+       data[0].input = stdin;
+       data[0].output = stdout;
+       for (j = 1; j < argc; j++) {
+               data[j].input =
+               data[j].output = open_tty(argv[j]);
+       }
+
+       /*
+        * If we got this far, we have open connection(s) to the terminal(s).
+        * Set up the screens.
+        */
+       for (j = 0; j < argc; j++) {
+               active_tty++;
+               data[j].screen = newterm(
+                       (char *)0,      /* assume $TERM is the same */
+                       data[j].output,
+                       data[j].input);
+               if (data[j].screen == 0)
+                       failed("newterm");
+               cbreak();
+               noecho();
+               scrollok(stdscr, TRUE);
+       }
+
+       /*
+        * Loop, reading characters from any of the inputs and writing to all
+        * of the screens.
+        */
+       for(;;) {
+               int ch;
+               set_term(data[0].screen);
+               ch = getch();
+               if (ch == ERR)
+                       continue;
+               if (ch == 4)
+                       break;
+               for (j = 0; j < argc; j++) {
+                       set_term(data[j].screen);
+                       addch(ch);
+                       refresh();
+               }
+       }
+
+       /*
+        * Cleanup and exit
+        */
+       for (j = argc-1; j >= 0; j--) {
+               set_term(data[j].screen);
+               endwin();
+       }
+       return EXIT_SUCCESS;
 }
diff --git a/test/dots.c b/test/dots.c
new file mode 100644 (file)
index 0000000..13ec66a
--- /dev/null
@@ -0,0 +1,143 @@
+/****************************************************************************
+ * Copyright (c) 1999 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: Thomas E. Dickey <dickey@clark.net> 1999
+ *
+ * $Id: dots.c,v 1.2 1999/10/23 13:24:32 tom Exp $
+ *
+ * A simple demo of the terminfo interface.
+ */
+#include <test.priv.h>
+
+#include <term.h>              /* for tparm() */
+
+#include <time.h>
+#include <signal.h>
+
+#define valid(s) ((s != 0) && s != (char *)-1)
+
+static bool interrupted = FALSE;
+
+static int
+outc(int c)
+{
+    if (interrupted) {
+       char tmp = c;
+       write(STDOUT_FILENO, &tmp, 1);
+    } else {
+       putc(c, stdout);
+    }
+    return 0;
+}
+
+static bool
+outs(char *s)
+{
+    if (valid(s)) {
+       tputs(s, 1, outc);
+       return TRUE;
+    }
+    return FALSE;
+}
+
+static void
+cleanup(void)
+{
+    outs(exit_attribute_mode);
+    if (!outs(orig_colors))
+       outs(orig_pair);
+    outs(clear_screen);
+    outs(cursor_normal);
+}
+
+static void
+onsig(int n GCC_UNUSED)
+{
+    interrupted = TRUE;
+    cleanup();
+    exit(EXIT_FAILURE);
+}
+
+static float
+ranf(void)
+{
+    long r = (rand() & 077777);
+    return ((float) r / 32768.);
+}
+
+int
+main(
+    int argc GCC_UNUSED,
+    char *argv[]GCC_UNUSED)
+{
+    int x, y, z, j, p;
+    float r;
+    float c;
+
+    for (j = SIGHUP; j <= SIGTERM; j++)
+       if (signal(j, SIG_IGN) != SIG_IGN)
+           signal(j, onsig);
+
+    srand(time(0));
+    setupterm((char *) 0, 1, (int *) 0);
+    outs(clear_screen);
+    outs(cursor_invisible);
+    if (max_colors > 1) {
+       if (!valid(set_a_foreground)
+           || !valid(set_a_background)
+           || (!valid(orig_colors) && !valid(orig_pair)))
+           max_colors = -1;
+    }
+
+    r = (float) (lines - 4);
+    c = (float) (columns - 4);
+
+    for (;;) {
+       x = (int) (c * ranf()) + 2;
+       y = (int) (r * ranf()) + 2;
+       p = (ranf() > 0.9) ? '*' : ' ';
+
+       tputs(tparm(cursor_address, y, x), 1, outc);
+       if (max_colors > 0) {
+           z = ranf() * max_colors;
+           if (ranf() > 0.01) {
+               tputs(tparm(set_a_foreground, z), 1, outc);
+           } else {
+               tputs(tparm(set_a_background, z), 1, outc);
+           }
+       } else if (valid(exit_attribute_mode)
+           && valid(enter_reverse_mode)) {
+           if (ranf() <= 0.01)
+               outs((ranf() > 0.6) ? enter_reverse_mode :
+                   exit_attribute_mode);
+       }
+       outc(p);
+       fflush(stdout);
+    }
+}
diff --git a/test/filter.c b/test/filter.c
new file mode 100644 (file)
index 0000000..6057396
--- /dev/null
@@ -0,0 +1,109 @@
+/****************************************************************************
+ * Copyright (c) 1998 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:  Thomas E. Dickey <dickey@clark.net> 1998
+ *
+ * $Id: filter.c,v 1.2 1998/05/10 00:39:27 tom Exp $
+ */
+#include <test.priv.h>
+
+/*
+ * An example of the 'filter()' function in ncurses, this program prompts
+ * for commands and executes them (like a command shell).  It illustrates
+ * how ncurses can be used to implement programs that are not full-screen.
+ *
+ * Ncurses differs slightly from SVr4 curses.  The latter does not flush its
+ * state when exiting program mode, so the attributes on the command lines of
+ * this program 'bleed' onto the executed commands.  Rather than use the
+ * reset_shell_mode() and reset_prog_mode() functions, we could invoke endwin()
+ * and refresh(), but that does not work any better.
+ */
+
+#ifndef NCURSES_VERSION
+#define attr_t long
+#define getnstr(s,n) getstr(s)
+#endif
+
+static int new_command(char *buffer, int length, attr_t underline)
+{
+       int code;
+
+       attron(A_BOLD);
+       printw("Command: ");
+       attron(underline);
+       code = getnstr(buffer, length);
+       attroff(underline);
+       attroff(A_BOLD);
+       printw("\n");
+
+       return code;
+}
+
+int main(
+       int argc GCC_UNUSED,
+       char *argv[] GCC_UNUSED)
+{
+       SCREEN *sp;
+       char buffer[80];
+       attr_t underline;
+
+       filter();
+       sp = newterm((char *)0, stdout, stdin);
+       cbreak();
+       keypad(stdscr, TRUE);
+
+       if (has_colors()) {
+               int background = COLOR_BLACK;
+               start_color();
+#ifdef NCURSES_VERSION
+               if (use_default_colors () != ERR)
+                       background = -1;
+#endif
+               init_pair(1, COLOR_CYAN, background);
+               underline = COLOR_PAIR(1);
+       } else {
+               underline = A_UNDERLINE;
+       }
+
+       while (new_command(buffer, sizeof(buffer)-1, underline) != ERR
+         && strlen(buffer) != 0) {
+                       reset_shell_mode();
+               printf("\n");
+               fflush(stdout);
+               system(buffer);
+               reset_prog_mode();
+               touchwin(stdscr);
+               erase();
+               refresh();
+       }
+       printw("done");
+       refresh();
+       endwin();
+       return 0;
+}
index 1a37e04909978fba596fd584b5d7b18f79c1a429..557a7bf231ece347aade3b97e5316a51e6f9d6a8 100644 (file)
 /*
- * $Id: firework.c,v 1.11 1997/11/01 19:36:25 tom Exp $
+ * $Id: firework.c,v 1.15 1999/10/16 21:33:39 tom Exp $
  */
 #include <test.priv.h>
 
-#include <term.h>      /* for tparm() */
-
 #include <signal.h>
-#include <ctype.h>
 #include <time.h>
 
-static int get_colour(chtype *);
-static void explode(int row, int col);
-static void showit(void);
-static RETSIGTYPE onsig(int sig);
-
 static int my_bg = COLOR_BLACK;
 
-int main(
-       int argc GCC_UNUSED,
-       char *argv[] GCC_UNUSED)
+static void
+cleanup(void)
 {
-int j;
-int start,end,row,diff,flag = 0,direction;
-unsigned seed;
-
-       for (j=SIGHUP;j<=SIGTERM;j++)
-               if (signal(j,SIG_IGN)!=SIG_IGN)
-                       signal(j,onsig);
-
-       initscr();
-       if (has_colors()) {
-               start_color();
-#ifdef NCURSES_VERSION
-               if (use_default_colors() == OK)
-                       my_bg = -1;
-#endif
-       }
-       curs_set(0);
-
-       seed = time((time_t *)0);
-       srand(seed);
-       cbreak();
-       for (;;) {
-            do {
-                start = rand() % (COLS -3);
-                end = rand() % (COLS - 3);
-                start = (start < 2) ? 2 : start;
-                end = (end < 2) ? 2 : end;
-                direction = (start > end) ? -1 : 1;
-                diff = abs(start-end);
-            } while (diff<2 || diff>=LINES-2);
-            attrset(A_NORMAL);
-            for (row=0;row<diff;row++) {
-                mvprintw(LINES - row,start + (row * direction),
-                    (direction < 0) ? "\\" : "/");
-                if (flag++) {
-                    showit();
-                    erase();
-                    flag = 0;
-                }
-            }
-            if (flag++) {
-                showit();
-                flag = 0;
-            }
-            seed = time((time_t *)0);
-            srand(seed);
-            explode(LINES-row,start+(diff*direction));
-            erase();
-            showit();
-       }
+    curs_set(1);
+    endwin();
 }
 
 static RETSIGTYPE
 onsig(int n GCC_UNUSED)
 {
-    curs_set(1);
-    endwin();
+    cleanup();
     exit(EXIT_FAILURE);
 }
 
-static
-void explode(int row, int col)
+static void
+showit(void)
 {
-       chtype bold;
-       erase();
-       mvprintw(row,col,"-");
-       showit();
-
-       init_pair(1,get_colour(&bold),my_bg);
-       attrset(COLOR_PAIR(1) | bold);
-       mvprintw(row-1,col-1," - ");
-       mvprintw(row,col-1,"-+-");
-       mvprintw(row+1,col-1," - ");
-       showit();
-
-       init_pair(1,get_colour(&bold),my_bg);
-       attrset(COLOR_PAIR(1) | bold);
-       mvprintw(row-2,col-2," --- ");
-       mvprintw(row-1,col-2,"-+++-");
-       mvprintw(row,  col-2,"-+#+-");
-       mvprintw(row+1,col-2,"-+++-");
-       mvprintw(row+2,col-2," --- ");
-       showit();
-
-       init_pair(1,get_colour(&bold),my_bg);
-       attrset(COLOR_PAIR(1) | bold);
-       mvprintw(row-2,col-2," +++ ");
-       mvprintw(row-1,col-2,"++#++");
-       mvprintw(row,  col-2,"+# #+");
-       mvprintw(row+1,col-2,"++#++");
-       mvprintw(row+2,col-2," +++ ");
-       showit();
-
-       init_pair(1,get_colour(&bold),my_bg);
-       attrset(COLOR_PAIR(1) | bold);
-       mvprintw(row-2,col-2,"  #  ");
-       mvprintw(row-1,col-2,"## ##");
-       mvprintw(row,  col-2,"#   #");
-       mvprintw(row+1,col-2,"## ##");
-       mvprintw(row+2,col-2,"  #  ");
-       showit();
-
-       init_pair(1,get_colour(&bold),my_bg);
-       attrset(COLOR_PAIR(1) | bold);
-       mvprintw(row-2,col-2," # # ");
-       mvprintw(row-1,col-2,"#   #");
-       mvprintw(row,  col-2,"     ");
-       mvprintw(row+1,col-2,"#   #");
-       mvprintw(row+2,col-2," # # ");
-       showit();
+    int ch;
+    napms(120);
+    if ((ch = getch()) != ERR) {
+#ifdef KEY_RESIZE
+       if (ch == KEY_RESIZE) {
+           erase();
+       } else
+#endif
+       if (ch == 'q') {
+           cleanup();
+           exit(EXIT_SUCCESS);
+       } else if (ch == 's') {
+           nodelay(stdscr, FALSE);
+       } else if (ch == ' ') {
+           nodelay(stdscr, TRUE);
+       }
+    }
 }
 
 static
-int get_colour(chtype *bold)
+int
+get_colour(chtype * bold)
 {
-       int attr;
-       attr = (rand() % 16) + 1;
+    int attr;
+    attr = (rand() % 16) + 1;
+
+    *bold = A_NORMAL;
+    if (attr > 8) {
+       *bold = A_BOLD;
+       attr &= 7;
+    }
+    return (attr);
+}
 
-       *bold = A_NORMAL;
-       if (attr > 8) {
-               *bold = A_BOLD;
-               attr &= 7;
-       }
-       return(attr);
+static
+void
+explode(int row, int col)
+{
+    chtype bold;
+    erase();
+    mvprintw(row, col, "-");
+    showit();
+
+    init_pair(1, get_colour(&bold), my_bg);
+    attrset(COLOR_PAIR(1) | bold);
+    mvprintw(row - 1, col - 1, " - ");
+    mvprintw(row + 0, col - 1, "-+-");
+    mvprintw(row + 1, col - 1, " - ");
+    showit();
+
+    init_pair(1, get_colour(&bold), my_bg);
+    attrset(COLOR_PAIR(1) | bold);
+    mvprintw(row - 2, col - 2, " --- ");
+    mvprintw(row - 1, col - 2, "-+++-");
+    mvprintw(row + 0, col - 2, "-+#+-");
+    mvprintw(row + 1, col - 2, "-+++-");
+    mvprintw(row + 2, col - 2, " --- ");
+    showit();
+
+    init_pair(1, get_colour(&bold), my_bg);
+    attrset(COLOR_PAIR(1) | bold);
+    mvprintw(row - 2, col - 2, " +++ ");
+    mvprintw(row - 1, col - 2, "++#++");
+    mvprintw(row + 0, col - 2, "+# #+");
+    mvprintw(row + 1, col - 2, "++#++");
+    mvprintw(row + 2, col - 2, " +++ ");
+    showit();
+
+    init_pair(1, get_colour(&bold), my_bg);
+    attrset(COLOR_PAIR(1) | bold);
+    mvprintw(row - 2, col - 2, "  #  ");
+    mvprintw(row - 1, col - 2, "## ##");
+    mvprintw(row + 0, col - 2, "#   #");
+    mvprintw(row + 1, col - 2, "## ##");
+    mvprintw(row + 2, col - 2, "  #  ");
+    showit();
+
+    init_pair(1, get_colour(&bold), my_bg);
+    attrset(COLOR_PAIR(1) | bold);
+    mvprintw(row - 2, col - 2, " # # ");
+    mvprintw(row - 1, col - 2, "#   #");
+    mvprintw(row + 0, col - 2, "     ");
+    mvprintw(row + 1, col - 2, "#   #");
+    mvprintw(row + 2, col - 2, " # # ");
+    showit();
 }
 
-static void
-showit(void)
+int
+main(
+    int argc GCC_UNUSED,
+    char *argv[]GCC_UNUSED)
 {
-       refresh();
-       napms(120);
+    int j;
+    int start, end, row, diff, flag = 0, direction;
+    unsigned seed;
+
+    for (j = SIGHUP; j <= SIGTERM; j++)
+       if (signal(j, SIG_IGN) != SIG_IGN)
+           signal(j, onsig);
+
+    initscr();
+    noecho();
+    cbreak();
+    keypad(stdscr, TRUE);
+    nodelay(stdscr, TRUE);
+
+    if (has_colors()) {
+       start_color();
+#ifdef NCURSES_VERSION
+       if (use_default_colors() == OK)
+           my_bg = -1;
+#endif
+    }
+    curs_set(0);
+
+    seed = time((time_t *) 0);
+    srand(seed);
+    for (;;) {
+       do {
+           start = rand() % (COLS - 3);
+           end = rand() % (COLS - 3);
+           start = (start < 2) ? 2 : start;
+           end = (end < 2) ? 2 : end;
+           direction = (start > end) ? -1 : 1;
+           diff = abs(start - end);
+       } while (diff < 2 || diff >= LINES - 2);
+       attrset(A_NORMAL);
+       for (row = 0; row < diff; row++) {
+           mvprintw(LINES - row, start + (row * direction),
+               (direction < 0) ? "\\" : "/");
+           if (flag++) {
+               showit();
+               erase();
+               flag = 0;
+           }
+       }
+       if (flag++) {
+           showit();
+           flag = 0;
+       }
+       seed = time((time_t *) 0);
+       srand(seed);
+       explode(LINES - row, start + (diff * direction));
+       erase();
+       showit();
+    }
 }
index 25d906ea04a7f12e0b37160007012fb75d35b0a3..3ee64b0a0d1453017e05f9271e55fe7c91e053e6 100644 (file)
@@ -14,7 +14,7 @@
  *
  *     Date: 05.Nov.90
  *
- * $Id: hanoi.c,v 1.15 1997/10/18 20:11:20 tom Exp $
+ * $Id: hanoi.c,v 1.16 1999/10/23 15:01:01 tom Exp $
  */
 
 #include <test.priv.h>
@@ -118,8 +118,10 @@ unsigned char AutoFlag = 0;
                fprintf(stderr, "Min screen length 24 lines\n");
                return EXIT_FAILURE;
        }
-       if(AutoFlag)
+       if(AutoFlag) {
+               curs_set(0);
                leaveok(stdscr, TRUE);  /* Attempt to remove cursor */
+       }
        InitTiles(NTiles);
        DisplayTiles();
        if(AutoFlag) {
@@ -148,7 +150,6 @@ unsigned char AutoFlag = 0;
                        }
                }
        }
-       curs_set(1);
        endwin();
        return EXIT_SUCCESS;
 }
index 6cf7b7538bfdb9142941f86983d7abe777aee2ee..514ac89656abb5fc9e3c3d36cd2e03eb11a9402b 100644 (file)
@@ -3,17 +3,14 @@
  *
  * Generate timing statistics for vertical-motion optimization.
  *
- * $Id: hashtest.c,v 1.12 1997/08/09 14:25:18 tom Exp $
+ * $Id: hashtest.c,v 1.14 1998/06/13 22:45:39 tom Exp $
  */
 
-#define NCURSES_TRACE
-
 #ifdef TRACE
 #define Trace(p) _tracef p
 #define USE_TRACE 1
 #else
 #define Trace(p) /* nothing */
-#define TRACE 0
 #endif
 
 #include <test.priv.h>
@@ -106,7 +103,12 @@ static void run_test(bool optimized)
        int     lo = continuous ? LO_CHAR : 'a' - LINES;
        int     hi = continuous ? HI_CHAR : 'a' + LINES;
 
-#ifdef NCURSES_VERSION
+       if (lo < LO_CHAR)
+               lo = LO_CHAR;
+       if (hi > HI_CHAR)
+               hi = HI_CHAR;
+
+#if defined(TRACE) || defined(NCURSES_TEST)
        if (optimized) {
                Trace(("With hash mapping"));
                _nc_optimize_enable |= OPTIMIZE_HASHMAP;
index 827709c45cbeb4987c7350ced21b91677f179957..88cadd2f8a840dcfc6ad22423ad62b38ac5c932d 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * $Id: keynames.c,v 1.1 1997/10/25 18:41:04 tom Exp $
+ * $Id: keynames.c,v 1.2 1998/06/06 22:45:13 tom Exp $
  */
 
 #include <test.priv.h>
 
-int main(int argc, char *argv[])
+int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
 {
        int n;
        for (n = -1; n < 512; n++) {
index 893e1cde9e7c74ceba4178cf3dbf6b203450b076..fb99641117ce5f47e3753cefffcc202fb2e65b84 100644 (file)
  * This can't be part of the ncurses test-program, because ncurses rips off the
  * bottom line to do labels.
  *
- * $Id: lrtest.c,v 0.7 1998/02/12 23:49:11 tom Exp $
+ * $Id: lrtest.c,v 0.14 1999/10/23 19:44:35 tom Exp $
  */
 
 #include <test.priv.h>
+#include <term.h>
+
+typedef struct {
+    int y, x, mode, dir, inc;
+    chtype value;
+} MARK;
+
+/*
+ * Make a couple of markers go 'round the border to demonstrate that we can
+ * really write to all positions properly.
+ */
+static void
+show(MARK * m)
+{
+    mvaddch(m->y, m->x, m->value);
+    if (m->mode == 0) {                /* along the x-direction */
+       m->x += m->inc;
+       if (m->x >= COLS) {
+           m->x = COLS - 1;
+           m->inc = -m->dir * m->inc;
+           m->y += m->inc;
+           m->mode = 1;
+       } else if (m->x < 0) {
+           m->x = 0;
+           m->inc = -m->dir * m->inc;
+           m->y += m->inc;
+           m->mode = 1;
+       }
+    } else {                   /* along the y-direction */
+       m->y += m->inc;
+       if (m->y >= LINES) {
+           m->y = LINES - 1;
+           m->inc = m->dir * m->inc;
+           m->x += m->inc;
+           m->mode = 0;
+       } else if (m->y < 0) {
+           m->y = 0;
+           m->inc = m->dir * m->inc;
+           m->x += m->inc;
+           m->mode = 0;
+       }
+    }
+}
 
 int
 main(
-       int argc GCC_UNUSED,
-       char *argv[] GCC_UNUSED)
+    int argc GCC_UNUSED,
+    char *argv[]GCC_UNUSED)
 {
+    static MARK marks[] =
+    {
+       {0, 0, 0, -1, 1, '+' | A_BOLD},
+       {0, 0, 1, 1, 2, 'X'},
+       {0, 0, 1, -1, 3, 'Y'},
+       {0, 8, 0, -1, 1, '+' | A_BOLD},
+       {0, 9, 0, -1, 1, '+' | A_BOLD},
+       {1, 0, 1, 1, 1, '*' | A_REVERSE},
+       {2, 0, 1, 1, 1, '*' | A_REVERSE}
+    };
+
     initscr();
+    noecho();
+    cbreak();
+    nodelay(stdscr, TRUE);
+    curs_set(0);
 
-    move(LINES/2-1, 4);
-    if (!has_ic())
-    {
+#ifdef KEY_RESIZE
+    keypad(stdscr, TRUE);
+  restart:
+#endif
+    move(LINES / 2 - 1, 4);
+    if (!(has_ic()
+    /* see PutCharLR() */
+           || auto_right_margin
+           || (enter_am_mode && exit_am_mode))) {
        addstr("Your terminal lacks the capabilities needed to address the\n");
-       move(LINES/2, 4);
+       move(LINES / 2, 4);
        addstr("lower-right-hand corner of the screen.\n");
-    }
-    else
-    {
+    } else {
        addstr("This is a test of access to the lower right corner.\n");
-       move(LINES/2, 4);
+       move(LINES / 2, 4);
        addstr("If the top of the box is missing, the test failed.\n");
-       move(LINES/2+1, 4);
+       move(LINES / 2 + 1, 4);
        addstr("Please report this (with a copy of your terminfo entry).\n");
-       move(LINES/2+2, 4);
+       move(LINES / 2 + 2, 4);
        addstr("to the ncurses maintainers, at bug-ncurses@gnu.org.\n");
     }
 
-    box(stdscr, 0, 0);
-    move(LINES-1, COLS-1);
+    for (;;) {
+       int ch;
+       unsigned n;
+
+       box(stdscr, 0, 0);
+       for (n = 0; n < sizeof(marks) / sizeof(marks[0]); n++) {
+           show(&marks[n]);
+       }
 
-    refresh();
+       if ((ch = getch()) > 0) {
+           if (ch == 'q')
+               break;
+           else if (ch == 's')
+               nodelay(stdscr, FALSE);
+           else if (ch == ' ')
+               nodelay(stdscr, TRUE);
+#ifdef KEY_RESIZE
+           else if (ch == KEY_RESIZE) {
+               erase();
+               goto restart;
+           }
+#endif
+       }
+       napms(50);
+    }
 
-    getch();
+    curs_set(1);
     endwin();
     return 0;
 }
index a265cfb0ee5957ed859abafaa07a9382da435be4..3c69bbd45752160c9d1a9904c2713b553539ff4e 100644 (file)
@@ -1,7 +1,7 @@
 # Test-Program modules
-# $Id: modules,v 1.6 1998/02/11 12:14:04 tom Exp $
+# $Id: modules,v 1.11 1999/10/23 00:41:02 tom Exp $
 ##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc.                          #
+# Copyright (c) 1999 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"), #
 @ base
 blue           progs           $(srcdir)       ../include/term.h
 bs             progs           $(srcdir)
+cardfile       progs           $(srcdir)       ../include/panel.h ../include/menu.h ../include/form.h
+ditto          progs           $(srcdir)
+dots           progs           $(srcdir)       ../include/term.h
+filter         progs           $(srcdir)
 firework       progs           $(srcdir)       ../include/term.h
 firstlast      progs           $(srcdir)
 gdc            progs           $(srcdir)
 hanoi          progs           $(srcdir)
 hashtest       progs           $(srcdir)
+keynames       progs           $(srcdir)
 knight         progs           $(srcdir)
 lrtest         progs           $(srcdir)
 ncurses                progs           $(srcdir)       ../include/panel.h ../include/menu.h ../include/form.h
index c1d94086809f43575fb9fa47d3df2458c641e0b6..aa24a4261809fb36b84f6589125c9ab6f745ed1c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998,1999 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            *
@@ -39,7 +39,7 @@ DESCRIPTION
 AUTHOR
    Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
 
-$Id: ncurses.c,v 1.108 1998/02/28 01:11:47 tom Exp $
+$Id: ncurses.c,v 1.120 1999/10/23 20:01:30 tom Exp $
 
 ***************************************************************************/
 
@@ -185,6 +185,53 @@ static void ShellOut(bool message)
        refresh();
 }
 
+#ifdef NCURSES_MOUSE_VERSION
+static const char *mouse_decode(MEVENT const *ep)
+{
+       static char buf[80];
+
+       (void) sprintf(buf, "id %2d  at (%2d, %2d, %2d) state %4lx = {",
+                      ep->id, ep->x, ep->y, ep->z, ep->bstate);
+
+#define SHOW(m, s) if ((ep->bstate & m)==m) {strcat(buf,s); strcat(buf, ", ");}
+       SHOW(BUTTON1_RELEASED,          "release-1")
+       SHOW(BUTTON1_PRESSED,           "press-1")
+       SHOW(BUTTON1_CLICKED,           "click-1")
+       SHOW(BUTTON1_DOUBLE_CLICKED,    "doubleclick-1")
+       SHOW(BUTTON1_TRIPLE_CLICKED,    "tripleclick-1")
+       SHOW(BUTTON1_RESERVED_EVENT,    "reserved-1")
+       SHOW(BUTTON2_RELEASED,          "release-2")
+       SHOW(BUTTON2_PRESSED,           "press-2")
+       SHOW(BUTTON2_CLICKED,           "click-2")
+       SHOW(BUTTON2_DOUBLE_CLICKED,    "doubleclick-2")
+       SHOW(BUTTON2_TRIPLE_CLICKED,    "tripleclick-2")
+       SHOW(BUTTON2_RESERVED_EVENT,    "reserved-2")
+       SHOW(BUTTON3_RELEASED,          "release-3")
+       SHOW(BUTTON3_PRESSED,           "press-3")
+       SHOW(BUTTON3_CLICKED,           "click-3")
+       SHOW(BUTTON3_DOUBLE_CLICKED,    "doubleclick-3")
+       SHOW(BUTTON3_TRIPLE_CLICKED,    "tripleclick-3")
+       SHOW(BUTTON3_RESERVED_EVENT,    "reserved-3")
+       SHOW(BUTTON4_RELEASED,          "release-4")
+       SHOW(BUTTON4_PRESSED,           "press-4")
+       SHOW(BUTTON4_CLICKED,           "click-4")
+       SHOW(BUTTON4_DOUBLE_CLICKED,    "doubleclick-4")
+       SHOW(BUTTON4_TRIPLE_CLICKED,    "tripleclick-4")
+       SHOW(BUTTON4_RESERVED_EVENT,    "reserved-4")
+       SHOW(BUTTON_CTRL,               "ctrl")
+       SHOW(BUTTON_SHIFT,              "shift")
+       SHOW(BUTTON_ALT,                "alt")
+       SHOW(ALL_MOUSE_EVENTS,          "all-events")
+       SHOW(REPORT_MOUSE_POSITION,     "position")
+#undef SHOW
+
+       if (buf[strlen(buf)-1] == ' ')
+               buf[strlen(buf)-2] = '\0';
+       (void) strcat(buf, "}");
+       return(buf);
+}
+#endif /* NCURSES_MOUSE_VERSION */
+
 /****************************************************************************
  *
  * Character input test
@@ -231,7 +278,7 @@ int y, x;
                MEVENT  event;
 
                getmouse(&event);
-               printw("KEY_MOUSE, %s\n", _tracemouse(&event));
+               printw("KEY_MOUSE, %s\n", mouse_decode(&event));
            }
            else
 #endif /* NCURSES_MOUSE_VERSION */
@@ -304,6 +351,8 @@ int y, x;
 
 static int show_attr(int row, int skip, chtype attr, const char *name, bool once)
 {
+    int ncv = tigetnum("ncv");
+
     mvprintw(row, 8, "%s mode:", name);
     mvprintw(row, 24, "|");
     if (skip) printw("%*s", skip, " ");
@@ -316,8 +365,34 @@ static int show_attr(int row, int skip, chtype attr, const char *name, bool once
        attroff(attr);
     if (skip) printw("%*s", skip, " ");
     printw("|");
-    if (attr != A_NORMAL && !(termattrs() & attr))
-       printw(" (N/A)");
+    if (attr != A_NORMAL) {
+       if (!(termattrs() & attr)) {
+           printw(" (N/A)");
+       } else if (ncv > 0 && (getbkgd(stdscr) & A_COLOR)) {
+           static const attr_t table[] = {
+               A_STANDOUT,
+               A_UNDERLINE,
+               A_REVERSE,
+               A_BLINK,
+               A_DIM,
+               A_BOLD,
+               A_INVIS,
+               A_PROTECT,
+               A_ALTCHARSET
+           };
+           unsigned n;
+           bool found = FALSE;
+           for (n = 0; n < sizeof(table)/sizeof(table[0]); n++) {
+               if ((table[n] & attr) != 0
+                && ((1 << n) & ncv) != 0) {
+                   found = TRUE;
+                   break;
+               }
+           }
+           if (found)
+               printw(" (NCV)");
+       }
+    }
     return row + 2;
 }
 
@@ -355,7 +430,7 @@ static void attr_test(void)
 {
     int n;
     int skip = tigetnum("xmc");
-    int fg = COLOR_WHITE;
+    int fg = COLOR_BLACK;      /* color pair 0 is special */
     int bg = COLOR_BLACK;
     bool *pairs = (bool *)calloc(COLOR_PAIRS, sizeof(bool));
     pairs[0] = TRUE;
@@ -405,6 +480,7 @@ static void attr_test(void)
         refresh();
     } while (attr_getc(&n, &fg, &bg));
 
+    free((char *)pairs);
     bkgdset(A_NORMAL | BLANK);
     erase();
     endwin();
@@ -1440,17 +1516,6 @@ static void acs_and_scroll(void)
  ****************************************************************************/
 
 #if USE_LIBPANEL
-static PANEL *p1;
-static PANEL *p2;
-static PANEL *p3;
-static PANEL *p4;
-static PANEL *p5;
-static WINDOW *w1;
-static WINDOW *w2;
-static WINDOW *w3;
-static WINDOW *w4;
-static WINDOW *w5;
-
 static unsigned long nap_msec = 1;
 
 static NCURSES_CONST char *mod[] =
@@ -1499,17 +1564,24 @@ saywhat(NCURSES_CONST char *text)
        mkpanel(rows,cols,tly,tlx) - alloc a win and panel and associate them
 --------------------------------------------------------------------------*/
 static PANEL *
-mkpanel(int rows, int cols, int tly, int tlx)
-{
-WINDOW *win = newwin(rows,cols,tly,tlx);
-PANEL *pan;
-
-       if(!win)
-               return((PANEL *)0);
-       if((pan = new_panel(win)))
-               return(pan);
-       delwin(win);
-       return((PANEL *)0);
+mkpanel(int color, int rows, int cols, int tly, int tlx)
+{
+WINDOW *win;
+PANEL *pan = 0;
+
+       if ((win = newwin(rows, cols, tly, tlx)) != 0) {
+               if ((pan = new_panel(win)) == 0) {
+                       delwin(win);
+               } else if (has_colors()) {
+                       int fg = (color == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK;
+                       int bg = color;
+                       init_pair(color, fg, bg);
+                       wbkgdset(win, COLOR_PAIR(color) | ' ');
+               } else {
+                       wbkgdset(win, A_BOLD | ' ');
+               }
+       }
+       return pan;
 }      /* end of mkpanel */
 
 /*+-------------------------------------------------------------------------
@@ -1543,9 +1615,10 @@ WINDOW *win = panel_window(pan);
 int num = ((const char *)panel_userptr(pan))[1];
 int y,x;
 
-       box(win, 0, 0);
        wmove(win,1,1);
        wprintw(win,"-pan%c-", num);
+       wclrtoeol(win);
+       box(win, 0, 0);
        for(y = 2; y < getmaxy(win) - 1; y++)
        {
                for(x = 1; x < getmaxx(win) - 1; x++)
@@ -1559,7 +1632,7 @@ int y,x;
 static void demo_panels(void)
 {
 int itmp;
-register y,x;
+register int y,x;
 
        refresh();
 
@@ -1570,24 +1643,25 @@ register y,x;
        }
        for(y = 0; y < 5; y++)
        {
-               p1 = mkpanel(LINES/2 - 2, COLS/8 + 1, 0, 0);
-               w1 = panel_window(p1);
+               PANEL *p1;
+               PANEL *p2;
+               PANEL *p3;
+               PANEL *p4;
+               PANEL *p5;
+
+               p1 = mkpanel(COLOR_RED, LINES/2 - 2, COLS/8 + 1, 0, 0);
                set_panel_userptr(p1,"p1");
 
-               p2 = mkpanel(LINES/2 + 1, COLS/7, LINES/4, COLS/10);
-               w2 = panel_window(p2);
+               p2 = mkpanel(COLOR_GREEN, LINES/2 + 1, COLS/7, LINES/4, COLS/10);
                set_panel_userptr(p2,"p2");
 
-               p3 = mkpanel(LINES/4, COLS/10, LINES/2, COLS/9);
-               w3 = panel_window(p3);
+               p3 = mkpanel(COLOR_YELLOW, LINES/4, COLS/10, LINES/2, COLS/9);
                set_panel_userptr(p3,"p3");
 
-               p4 = mkpanel(LINES/2 - 2, COLS/8, LINES/2 - 2, COLS/3);
-               w4 = panel_window(p4);
+               p4 = mkpanel(COLOR_BLUE, LINES/2 - 2, COLS/8, LINES/2 - 2, COLS/3);
                set_panel_userptr(p4,"p4");
 
-               p5 = mkpanel(LINES/2 - 2, COLS/8, LINES/2, COLS/2 - 2);
-               w5 = panel_window(p5);
+               p5 = mkpanel(COLOR_MAGENTA, LINES/2 - 2, COLS/8, LINES/2, COLS/2 - 2);
                set_panel_userptr(p5,"p5");
 
                fill_panel(p1);
@@ -1678,6 +1752,9 @@ register y,x;
 
                for(itmp = 0; itmp < 6; itmp++)
                {
+                       WINDOW *w4 = panel_window(p4);
+                       WINDOW *w5 = panel_window(p5);
+
                        saywhat("m4; press any key to continue");
                        wmove(w4, LINES/8, 1);
                        waddstr(w4,mod[itmp]);
@@ -1686,6 +1763,7 @@ register y,x;
                        waddstr(w5,mod[itmp]);
                        pflush();
                        wait_a_while(nap_msec);
+
                        saywhat("m5; press any key to continue");
                        wmove(w4, LINES/6, 1);
                        waddstr(w4,mod[itmp]);
@@ -2219,14 +2297,25 @@ static int menu_virtualize(int c)
 {
     if (c == '\n' || c == KEY_EXIT)
        return(MAX_COMMAND + 1);
+    else if (c == 'u')
+       return(REQ_SCR_ULINE);
+    else if (c == 'd')
+       return(REQ_SCR_DLINE);
+    else if (c == 'b' || c == KEY_NPAGE)
+       return(REQ_SCR_UPAGE);
+    else if (c == 'f' || c == KEY_PPAGE)
+       return(REQ_SCR_DPAGE);
     else if (c == 'n' || c == KEY_DOWN)
        return(REQ_NEXT_ITEM);
     else if (c == 'p' || c == KEY_UP)
        return(REQ_PREV_ITEM);
     else if (c == ' ')
        return(REQ_TOGGLE_ITEM);
-    else
+    else {
+       if (c != KEY_MOUSE)
+           beep();
        return(c);
+    }
 }
 
 static const char *animals[] =
@@ -2241,13 +2330,17 @@ static void menu_test(void)
     ITEM       *items[SIZEOF(animals)];
     ITEM       **ip = items;
     const char **ap;
-    int                mrows, mcols;
+    int                mrows, mcols, c;
     WINDOW     *menuwin;
 
+#ifdef NCURSES_MOUSE_VERSION
+    mousemask(ALL_MOUSE_EVENTS, (mmask_t *)0);
+#endif
     mvaddstr(0, 0, "This is the menu test:");
     mvaddstr(2, 0, "  Use up and down arrow to move the select bar.");
     mvaddstr(3, 0, "  'n' and 'p' act like arrows.");
-    mvaddstr(4, 0, "  Press return to exit.");
+    mvaddstr(4, 0, "  'b' and 'f' scroll up/down (page), 'u' and 'd' (line).");
+    mvaddstr(5, 0, "  Press return to exit.");
     refresh();
 
     for (ap = animals; *ap; ap++)
@@ -2256,6 +2349,7 @@ static void menu_test(void)
 
     m = new_menu(items);
 
+    set_menu_format(m, (SIZEOF(animals)+1)/2, 1);
     scale_menu(m, &mrows, &mcols);
 
     menuwin = newwin(mrows + 2, mcols +  2, MENU_Y, MENU_X);
@@ -2267,8 +2361,11 @@ static void menu_test(void)
 
     post_menu(m);
 
-    while (menu_driver(m, menu_virtualize(wGetchar(menuwin))) != E_UNKNOWN_COMMAND)
+    while ((c = menu_driver(m, menu_virtualize(wGetchar(menuwin)))) != E_UNKNOWN_COMMAND) {
+       if (c == E_REQUEST_DENIED)
+           beep();
        continue;
+    }
 
     (void) mvprintw(LINES - 2, 0,
                     "You chose: %s\n", item_name(current_item(m)));
@@ -2281,6 +2378,9 @@ static void menu_test(void)
     free_menu(m);
     for (ip = items; *ip; ip++)
        free_item(*ip);
+#ifdef NCURSES_MOUSE_VERSION
+    mousemask(0, (mmask_t *)0);
+#endif
 }
 
 #ifdef TRACE
@@ -2459,12 +2559,14 @@ static FIELD *make_label(int frow, int fcol, NCURSES_CONST char *label)
     return(f);
 }
 
-static FIELD *make_field(int frow, int fcol, int rows, int cols)
+static FIELD *make_field(int frow, int fcol, int rows, int cols, bool secure)
 {
-    FIELD      *f = new_field(rows, cols, frow, fcol, 0, 0);
+    FIELD      *f = new_field(rows, cols, frow, fcol, 0, secure ? 1 : 0);
 
-    if (f)
+    if (f) {
        set_field_back(f, A_UNDERLINE);
+       set_field_userptr(f, (void *)0);
+    }
     return(f);
 }
 
@@ -2499,101 +2601,142 @@ static void erase_form(FORM *f)
     delwin(w);
 }
 
-static int form_virtualize(WINDOW *w)
+static int edit_secure(FIELD *me, int c)
 {
+    int rows, cols, frow, fcol, nbuf;
+
+    if (field_info(me, &rows, &cols, &frow, &fcol, (int *)0, &nbuf) == E_OK
+     && nbuf > 0) {
+       char temp[80];
+       long len;
+
+       strcpy(temp, field_buffer(me, 1));
+       len = (long)(char *) field_userptr(me);
+       if (c <= KEY_MAX) {
+           if (isgraph(c)) {
+               temp[len++] = c;
+               temp[len] = 0;
+               set_field_buffer(me, 1, temp);
+               c = '*';
+           } else {
+               c = 0;
+           }
+       } else {
+           switch (c) {
+           case REQ_BEG_FIELD:
+           case REQ_CLR_EOF:
+           case REQ_CLR_EOL:
+           case REQ_DEL_LINE:
+           case REQ_DEL_WORD:
+           case REQ_DOWN_CHAR:
+           case REQ_END_FIELD:
+           case REQ_INS_CHAR:
+           case REQ_INS_LINE:
+           case REQ_LEFT_CHAR:
+           case REQ_NEW_LINE:
+           case REQ_NEXT_WORD:
+           case REQ_PREV_WORD:
+           case REQ_RIGHT_CHAR:
+           case REQ_UP_CHAR:
+               c = 0;          /* we don't want to do inline editing */
+               break;
+           case REQ_CLR_FIELD:
+               if (len) {
+                   temp[0] = 0;
+                   set_field_buffer(me, 1, temp);
+               }
+               break;
+           case REQ_DEL_CHAR:
+           case REQ_DEL_PREV:
+               if (len) {
+                   temp[--len] = 0;
+                   set_field_buffer(me, 1, temp);
+               }
+               break;
+           }
+       }
+       set_field_userptr(me, (void *)len);
+     }
+     return c;
+}
+
+static int form_virtualize(FORM *f, WINDOW *w)
+{
+    static const struct {
+       int code;
+       int result;
+    } lookup[] = {
+       { CTRL('A'),     REQ_NEXT_CHOICE },
+       { CTRL('B'),     REQ_PREV_WORD },
+       { CTRL('C'),     REQ_CLR_EOL },
+       { CTRL('D'),     REQ_DOWN_FIELD },
+       { CTRL('E'),     REQ_END_FIELD },
+       { CTRL('F'),     REQ_NEXT_PAGE },
+       { CTRL('G'),     REQ_DEL_WORD },
+       { CTRL('H'),     REQ_DEL_PREV },
+       { CTRL('I'),     REQ_INS_CHAR },
+       { CTRL('K'),     REQ_CLR_EOF },
+       { CTRL('L'),     REQ_LEFT_FIELD },
+       { CTRL('M'),     REQ_NEW_LINE },
+       { CTRL('N'),     REQ_NEXT_FIELD },
+       { CTRL('O'),     REQ_INS_LINE },
+       { CTRL('P'),     REQ_PREV_FIELD },
+       { CTRL('R'),     REQ_RIGHT_FIELD },
+       { CTRL('S'),     REQ_BEG_FIELD },
+       { CTRL('U'),     REQ_UP_FIELD },
+       { CTRL('V'),     REQ_DEL_CHAR },
+       { CTRL('W'),     REQ_NEXT_WORD },
+       { CTRL('X'),     REQ_CLR_FIELD },
+       { CTRL('Y'),     REQ_DEL_LINE },
+       { CTRL('Z'),     REQ_PREV_CHOICE },
+       { ESCAPE,        MAX_FORM_COMMAND + 1 },
+       { KEY_BACKSPACE, REQ_DEL_PREV },
+       { KEY_DOWN,      REQ_DOWN_CHAR },
+       { KEY_END,       REQ_LAST_FIELD },
+       { KEY_HOME,      REQ_FIRST_FIELD },
+       { KEY_LEFT,      REQ_LEFT_CHAR },
+       { KEY_LL,        REQ_LAST_FIELD },
+       { KEY_NEXT,      REQ_NEXT_FIELD },
+       { KEY_NPAGE,     REQ_NEXT_PAGE },
+       { KEY_PPAGE,     REQ_PREV_PAGE },
+       { KEY_PREVIOUS,  REQ_PREV_FIELD },
+       { KEY_RIGHT,     REQ_RIGHT_CHAR },
+       { KEY_UP,        REQ_UP_CHAR },
+       { QUIT,          MAX_FORM_COMMAND + 1 }
+    };
+
     static int mode = REQ_INS_MODE;
     int                c = wGetchar(w);
+    unsigned   n;
+    FIELD *me = current_field(f);
 
-    switch(c)
-    {
-    case QUIT:
-    case ESCAPE:
-       return(MAX_FORM_COMMAND + 1);
-
-    /* demo doesn't use these three, leave them in anyway as sample code */
-    case KEY_NPAGE:
-    case CTRL('F'):
-       return(REQ_NEXT_PAGE);
-    case KEY_PPAGE:
-       return(REQ_PREV_PAGE);
-
-    case KEY_NEXT:
-    case CTRL('N'):
-       return(REQ_NEXT_FIELD);
-    case KEY_PREVIOUS:
-    case CTRL('P'):
-       return(REQ_PREV_FIELD);
-
-    case KEY_HOME:
-       return(REQ_FIRST_FIELD);
-    case KEY_END:
-    case KEY_LL:
-       return(REQ_LAST_FIELD);
-
-    case CTRL('L'):
-       return(REQ_LEFT_FIELD);
-    case CTRL('R'):
-       return(REQ_RIGHT_FIELD);
-    case CTRL('U'):
-       return(REQ_UP_FIELD);
-    case CTRL('D'):
-       return(REQ_DOWN_FIELD);
-
-    case CTRL('W'):
-       return(REQ_NEXT_WORD);
-    case CTRL('B'):
-       return(REQ_PREV_WORD);
-    case CTRL('S'):
-       return(REQ_BEG_FIELD);
-    case CTRL('E'):
-       return(REQ_END_FIELD);
-
-    case KEY_LEFT:
-       return(REQ_LEFT_CHAR);
-    case KEY_RIGHT:
-       return(REQ_RIGHT_CHAR);
-    case KEY_UP:
-       return(REQ_UP_CHAR);
-    case KEY_DOWN:
-       return(REQ_DOWN_CHAR);
-
-    case CTRL('M'):
-       return(REQ_NEW_LINE);
-    case CTRL('I'):
-       return(REQ_INS_CHAR);
-    case CTRL('O'):
-       return(REQ_INS_LINE);
-    case CTRL('V'):
-       return(REQ_DEL_CHAR);
-
-    case CTRL('H'):
-    case KEY_BACKSPACE:
-       return(REQ_DEL_PREV);
-    case CTRL('Y'):
-       return(REQ_DEL_LINE);
-    case CTRL('G'):
-       return(REQ_DEL_WORD);
-
-    case CTRL('C'):
-       return(REQ_CLR_EOL);
-    case CTRL('K'):
-       return(REQ_CLR_EOF);
-    case CTRL('X'):
-       return(REQ_CLR_FIELD);
-    case CTRL('A'):
-       return(REQ_NEXT_CHOICE);
-    case CTRL('Z'):
-       return(REQ_PREV_CHOICE);
-
-    case CTRL(']'):
+    if (c == CTRL(']')) {
        if (mode == REQ_INS_MODE)
-           return(mode = REQ_OVL_MODE);
+           mode = REQ_OVL_MODE;
        else
-           return(mode = REQ_INS_MODE);
+           mode = REQ_INS_MODE;
+       c = mode;
+    } else {
+       for (n = 0; n < sizeof(lookup)/sizeof(lookup[0]); n++) {
+           if (lookup[n].code == c) {
+               c = lookup[n].result;
+               break;
+           }
+       }
+    }
 
-    default:
-       return(c);
+    /*
+     * Force the field that the user is typing into to be in reverse video,
+     * while the other fields are shown underlined.
+     */
+    if (c <= KEY_MAX) {
+       c = edit_secure(me, c);
+       set_field_back(me, A_REVERSE);
+    } else if (c <= MAX_FORM_COMMAND) {
+       c = edit_secure(me, c);
+       set_field_back(me, A_UNDERLINE);
     }
+    return c;
 }
 
 static int my_form_driver(FORM *form, int c)
@@ -2612,10 +2755,9 @@ static void demo_forms(void)
 {
     WINDOW     *w;
     FORM       *form;
-    FIELD      *f[10];
+    FIELD      *f[12], *secure;
     int                finished = 0, c;
-
-    mvaddstr(10, 57, "Forms Entry Test");
+    unsigned   n = 0;
 
     move(18, 0);
     addstr("Defined form-traversal keys:   ^Q/ESC- exit form\n");
@@ -2629,19 +2771,25 @@ static void demo_forms(void)
     addstr("^G   -- delete current word    ^C  -- clear to end of line\n");
     addstr("^K   -- clear to end of field  ^X  -- clear field\n");
     addstr("Arrow keys move within a field as you would expect.");
+
+    mvaddstr(4, 57, "Forms Entry Test");
+
     refresh();
 
     /* describe the form */
-    f[0] = make_label(0, 15, "Sample Form");
-    f[1] = make_label(2, 0, "Last Name");
-    f[2] = make_field(3, 0, 1, 18);
-    f[3] = make_label(2, 20, "First Name");
-    f[4] = make_field(3, 20, 1, 12);
-    f[5] = make_label(2, 34, "Middle Name");
-    f[6] = make_field(3, 34, 1, 12);
-    f[7] = make_label(5, 0, "Comments");
-    f[8] = make_field(6, 0, 4, 46);
-    f[9] = (FIELD *)0;
+    f[n++] = make_label(0, 15, "Sample Form");
+    f[n++] = make_label(2, 0, "Last Name");
+    f[n++] = make_field(3, 0, 1, 18, FALSE);
+    f[n++] = make_label(2, 20, "First Name");
+    f[n++] = make_field(3, 20, 1, 12, FALSE);
+    f[n++] = make_label(2, 34, "Middle Name");
+    f[n++] = make_field(3, 34, 1, 12, FALSE);
+    f[n++] = make_label(5, 0, "Comments");
+    f[n++] = make_field(6, 0, 4, 46, FALSE);
+    f[n++] = make_label(5, 20, "Password:");
+    secure =
+    f[n++] = make_field(5, 30, 1, 9, TRUE);
+    f[n++] = (FIELD *)0;
 
     form = new_form(f);
 
@@ -2651,9 +2799,12 @@ static void demo_forms(void)
     raw();
     while (!finished)
     {
-       switch(form_driver(form, c = form_virtualize(w)))
+       switch(form_driver(form, c = form_virtualize(form, w)))
        {
        case E_OK:
+           mvaddstr(5, 57, field_buffer(secure, 1));
+           clrtoeol();
+           refresh();
            break;
        case E_UNKNOWN_COMMAND:
            finished = my_form_driver(form, c);
@@ -3035,7 +3186,16 @@ main(int argc, char *argv[])
      */
     endwin();
 
+#if HAVE_CURSES_VERSION
+    (void) printf("Welcome to %s.  Press ? for help.\n", curses_version());
+#elif defined(NCURSES_VERSION_MAJOR) && defined(NCURSES_VERSION_MINOR) && defined(NCURSES_VERSION_PATCH)
+    (void) printf("Welcome to ncurses %d.%d.%d.  Press ? for help.\n",
+               NCURSES_VERSION_MAJOR,
+               NCURSES_VERSION_MINOR,
+               NCURSES_VERSION_PATCH);
+#else
     (void) puts("Welcome to ncurses.  Press ? for help.");
+#endif
 
     do {
        (void) puts("This is the ncurses main menu");
index 4132a43826fe5948435c91a1ee08e1653b2c499d..646ab96ee639f7b10af6dc42fa260287fbe22309 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: rain.c,v 1.11 1997/09/18 18:36:46 tom Exp $
+ * $Id: rain.c,v 1.13 1999/10/23 01:31:26 tom Exp $
  */
 #include <test.priv.h>
 
@@ -100,6 +100,12 @@ float c;
            curs_set(1);
            endwin();
            return(EXIT_SUCCESS);
+       case 's':
+           nodelay(stdscr, FALSE);
+           break;
+       case ' ':
+           nodelay(stdscr, TRUE);
+           break;
 #ifdef KEY_RESIZE
        case(KEY_RESIZE):
            r = (float)(LINES - 4);
@@ -122,10 +128,6 @@ onsig(int n GCC_UNUSED)
 static float
 ranf(void)
 {
-    float rv;
-    long r = rand();
-
-    r &= 077777;
-    rv =((float)r/32767.);
-    return rv;
+    long r = (rand() & 077777);
+    return ((float) r / 32768.);
 }
index bccce31d137369f13e13078f37d70ddeeae1a7ec..0c79568411be3c99dbd99e72c265457235996b54 100644 (file)
@@ -1,6 +1,5 @@
 #include "test.priv.h"
 
-#include <float.h>
 #include <math.h>
 #include <time.h>
 
@@ -19,9 +18,9 @@
   would be a precalc table for the 60 hand positions, so
   that the floating point stuff can be ditched. As I said,
   it was a 20 hackup minute job.]
-  
+
   COMING SOON: tfishtank. Be the envy of your mac-owning
-  colleagues.  
+  colleagues.
 */
 
 /* To compile: cc -o tclock tclock.c -lcurses -lm */
 
 /* Plot a point */
 static void
-plot(int x,int y,char col)
+plot(int x, int y, char col)
 {
-  mvaddch(y,x,(chtype)col);
+    mvaddch(y, x, (chtype) col);
 }
 
 /* Draw a diagonal(arbitrary) line using Bresenham's alogrithm. */
 static void
-dline(int from_x, int from_y, int x2, int y2, char ch)
+dline(int pair, int from_x, int from_y, int x2, int y2, char ch)
 {
-       int dx,dy;
-       int ax,ay;
-       int sx,sy;
-       int x,y;
-       int d;
-       
-       dx=x2-from_x;
-       dy=y2-from_y;
-       
-       ax=abs(dx*2);
-       ay=abs(dy*2);
-
-       sx=sign(dx);
-       sy=sign(dy);
-
-       x=from_x;
-       y=from_y;
-               
-       if(ax>ay)
-       {
-               d=ay-(ax/2);
-               
-               while(1)
-               {
-                       plot(x,y,ch);
-                       if(x==x2) return;
-                       
-                       if(d>=0)
-                       {
-                               y+=sy;
-                               d-=ax;
-                       }
-                       x+=sx;
-                       d+=ay;                  
-               }
+    int dx, dy;
+    int ax, ay;
+    int sx, sy;
+    int x, y;
+    int d;
+
+    if (has_colors())
+       attrset(COLOR_PAIR(pair));
+
+    dx = x2 - from_x;
+    dy = y2 - from_y;
+
+    ax = abs(dx * 2);
+    ay = abs(dy * 2);
+
+    sx = sign(dx);
+    sy = sign(dy);
+
+    x = from_x;
+    y = from_y;
+
+    if (ax > ay) {
+       d = ay - (ax / 2);
+
+       while (1) {
+           plot(x, y, ch);
+           if (x == x2)
+               return;
+
+           if (d >= 0) {
+               y += sy;
+               d -= ax;
+           }
+           x += sx;
+           d += ay;
        }
-       else
-       {
-               d=ax-(ay/2);
-               
-               while(1)
-               {
-                       plot(x,y,ch);
-                       if(y==y2) return;
-                       
-                       if(d>=0)
-                       {
-                               x+=sx;
-                               d-=ay;
-                       }
-                       y+=sy;
-                       d+=ax;                  
-               }       
+    } else {
+       d = ax - (ay / 2);
+
+       while (1) {
+           plot(x, y, ch);
+           if (y == y2)
+               return;
+
+           if (d >= 0) {
+               x += sx;
+               d -= ay;
+           }
+           y += sy;
+           d += ax;
        }
+    }
 }
 
 int
 main(
-       int argc GCC_UNUSED,
-       char *argv[] GCC_UNUSED)
+    int argc GCC_UNUSED,
+    char *argv[]GCC_UNUSED)
 {
-       int i,cx,cy;
-       double mradius, hradius, mangle, hangle;
-       double sangle, sradius, hours;
-       int hdx, hdy;
-       int mdx, mdy;
-       int sdx, sdy;
-       time_t tim;
-       struct tm *t;
-       char szChar[10];
-       
-       initscr();
-       noecho();
-
-       cx=39;
-       cy=12;
-       mradius=9;
-       hradius=6;
-       sradius=8;
-
-       for(i=0;i<12;i++)
-         {
-           sangle=(i+1)*(2.0*PI)/12.0;
-           sradius=10;
-           sdx = A2X(sangle, sradius);
-           sdy = A2Y(sangle, sradius);
-           sprintf(szChar,"%d",i+1);
-
-           mvaddstr((int)(cy-sdy),(int)(cx+sdx),szChar);
-         }
-
-       mvaddstr(0,0,"ASCII Clock by Howard Jones (ha.jones@ic.ac.uk),1994");
-
-       sradius=8;
-       for(;;)
-         {
-           napms(1000);
-
-           tim = time(0);
-           t = localtime(&tim);
-
-           hours = (t->tm_hour + (t->tm_min/60.0));
-           if(hours>12.0) hours -= 12.0;
-
-           mangle = ((t->tm_min) * (2 * PI)/60.0);
-           mdx    = A2X(mangle, mradius);
-           mdy    = A2Y(mangle, mradius);
-           
-           hangle = ((hours) * (2.0 * PI)/12.0);
-           hdx    = A2X(hangle, hradius);
-           hdy    = A2Y(hangle, hradius);
-       
-           sangle = ((t->tm_sec) * (2.0 * PI)/60.0);
-           sdx    = A2X(sangle, sradius);
-           sdy    = A2Y(sangle, sradius);
-
-           plot(cx+sdx,cy-sdy,'O');
-           dline(cx,cy,cx+hdx,cy-hdy,'.');
-           dline(cx,cy,cx+mdx,cy-mdy,'#');
-
-           mvaddstr(23,0,ctime(&tim));
-           refresh();
-           if ((t->tm_sec % 5) == 0) beep();
-
-           plot(cx+sdx,cy-sdy,' ');
-           dline(cx,cy,cx+hdx,cy-hdy,' ');
-           dline(cx,cy,cx+mdx,cy-mdy,' ');
-           
-         }
-
-       return 0;
+    int i, cx, cy;
+    double mradius, hradius, mangle, hangle;
+    double sangle, sradius, hours;
+    int hdx, hdy;
+    int mdx, mdy;
+    int sdx, sdy;
+    int ch;
+    int lastbeep = -1;
+    time_t tim;
+    struct tm *t;
+    char szChar[10];
+    int my_bg = COLOR_BLACK;
+
+    initscr();
+    noecho();
+    cbreak();
+    nodelay(stdscr, TRUE);
+    curs_set(0);
+
+    if (has_colors()) {
+       start_color();
+#ifdef NCURSES_VERSION
+       if (use_default_colors() == OK)
+           my_bg = -1;
+#endif
+       init_pair(1, COLOR_RED, my_bg);
+       init_pair(2, COLOR_MAGENTA, my_bg);
+       init_pair(3, COLOR_GREEN, my_bg);
+    }
+#ifdef KEY_RESIZE
+    keypad(stdscr, TRUE);
+  restart:
+#endif
+    cx = (COLS - 1) / 2;       /* 39 */
+    cy = LINES / 2;            /* 12 */
+    ch = (cx > cy) ? cy : cx;  /* usually cy */
+    mradius = (3 * cy) / 4;    /* 9 */
+    hradius = cy / 2;          /* 6 */
+    sradius = (2 * cy) / 3;    /* 8 */
+
+    for (i = 0; i < 12; i++) {
+       sangle = (i + 1) * (2.0 * PI) / 12.0;
+       sradius = (5 * cy) / 6; /* 10 */
+       sdx = A2X(sangle, sradius);
+       sdy = A2Y(sangle, sradius);
+       sprintf(szChar, "%d", i + 1);
+
+       mvaddstr(cy - sdy, cx + sdx, szChar);
+    }
+
+    mvaddstr(0, 0, "ASCII Clock by Howard Jones (ha.jones@ic.ac.uk),1994");
+
+    sradius = 8;
+    for (;;) {
+       napms(1000);
+
+       tim = time(0);
+       t = localtime(&tim);
+
+       hours = (t->tm_hour + (t->tm_min / 60.0));
+       if (hours > 12.0)
+           hours -= 12.0;
+
+       mangle = ((t->tm_min) * (2 * PI) / 60.0);
+       mdx = A2X(mangle, mradius);
+       mdy = A2Y(mangle, mradius);
+
+       hangle = ((hours) * (2.0 * PI) / 12.0);
+       hdx = A2X(hangle, hradius);
+       hdy = A2Y(hangle, hradius);
+
+       sangle = ((t->tm_sec) * (2.0 * PI) / 60.0);
+       sdx = A2X(sangle, sradius);
+       sdy = A2Y(sangle, sradius);
+
+       dline(3, cx, cy, cx + mdx, cy - mdy, '#');
+
+       attrset(A_REVERSE);
+       dline(2, cx, cy, cx + hdx, cy - hdy, '.');
+       attroff(A_REVERSE);
+
+       if (has_colors())
+           attrset(COLOR_PAIR(1));
+
+       plot(cx + sdx, cy - sdy, 'O');
+
+       if (has_colors())
+           attrset(COLOR_PAIR(0));
+
+       mvaddstr(LINES - 2, 0, ctime(&tim));
+       refresh();
+       if ((t->tm_sec % 5) == 0
+        && t->tm_sec != lastbeep) {
+           lastbeep = t->tm_sec;
+           beep();
+       }
+
+       if ((ch = getch()) != ERR) {
+#ifdef KEY_RESIZE
+           if (ch == KEY_RESIZE) {
+               erase();
+               goto restart;
+           }
+#endif
+           break;
+       }
+
+       plot(cx + sdx, cy - sdy, ' ');
+       dline(0, cx, cy, cx + hdx, cy - hdy, ' ');
+       dline(0, cx, cy, cx + mdx, cy - mdy, ' ');
+
+    }
+
+    curs_set(1);
+    endwin();
+    return 0;
 }
index 7f40fffa6473231428af8aa52d019920743b99cc..ff776570e2e8ff38ea36acd2084ceb4feef0e7e8 100644 (file)
@@ -7,7 +7,7 @@
  *  wrs(5/28/93) -- modified to be consistent (perform identically) with either
  *                  PDCurses or under Unix System V, R4
  *
- * $Id: testcurs.c,v 1.17 1997/09/20 17:45:04 tom Exp $
+ * $Id: testcurs.c,v 1.19 1999/02/14 00:42:28 tom Exp $
  */
 
 #include <test.priv.h>
@@ -187,7 +187,7 @@ scrollTest (WINDOW *win)
 {
     int i;
     int OldX, OldY;
-    const char *Message = "The window will now scroll slowly";
+    NCURSES_CONST char *Message = "The window will now scroll slowly";
 
     wclear(win);
     mvwprintw (win, height - 2, 1, Message);
@@ -359,6 +359,8 @@ inputTest (WINDOW *win)
     wrefresh(win);
     echo();
     noraw();
+    num = 0;
+    *buffer = 0;
     mvwscanw(win, 7, 6, "%d %s", &num,buffer);
     mvwprintw(win, 8, 6, "String: %s Number: %d", buffer,num);
     Continue(win);
@@ -476,10 +478,12 @@ outputTest (WINDOW *win)
     wrefresh(win);
     noraw();
     echo();
+    *Buffer = 0;
     wscanw (win, "%s", Buffer);
 
     printw("This is a formatted string in stdscr: %d %s\n", 42, "is it");
     mvaddstr(10, 1, "Enter a string: ");
+    *Buffer = 0;
     scanw ("%s", Buffer);
 
     if (tigetstr("cvvis") != 0) {
index ad6bb2e1858c4256977b0a0457e93676e78a5fc2..8381dc8898c48fc878e5eeb21f1a7b25f26701e4 100644 (file)
@@ -22,7 +22,7 @@
  * scroll operation worked, and the refresh() code only had to do a
  * partial repaint.
  *
- * $Id: view.c,v 1.26 1997/11/15 22:36:41 tom Exp $
+ * $Id: view.c,v 1.27 1998/08/22 18:33:41 tom Exp $
  */
 
 #include <test.priv.h>
@@ -348,9 +348,9 @@ static void show_all(void)
        for (i = 1; i < LINES; i++) {
            move(i, 0);
            if ((s = lptr[i-1]) != 0 && (int)strlen(s) > shift)
-               printw("%3d:%.*s", lptr+i-lines, COLS-4, s + shift);
+               printw("%3ld:%.*s", (long) (lptr+i-lines), COLS-4, s + shift);
            else
-               printw("%3d:", lptr+i-lines);
+               printw("%3ld:", (long) (lptr+i-lines));
            clrtoeol();
        }
        setscrreg(1, LINES-1);
index ceb4f980070e675d3987d0eced274c3ac2f901b5..5f0ab5dc4a5abbcadf329330c65e80b6f772eaf3 100644 (file)
@@ -34,26 +34,27 @@ Options:
   traces will be dumped.  The program stops and waits for one character of
   input at the beginning and end of the interval.
 
-  $Id: worm.c,v 1.21 1998/01/30 10:17:59 tom Exp $
+  $Id: worm.c,v 1.26 1999/10/23 01:31:40 tom Exp $
 */
 
 #include <test.priv.h>
 
-#include <term.h>      /* for tparm() */
-
 #include <signal.h>
 
-#define cursor(col,row) move(row,col)
+#define typeAlloc(type,n) (type *) malloc(n * sizeof(type))
+#define typeRealloc(type,n,p) (type *) realloc(p, n * sizeof(type))
 
-short *ref[128];
-static chtype flavor[]={
-    'O' , '*', '#', '$', '%', '0', '@',
+static chtype flavor[] =
+{
+    'O', '*', '#', '$', '%', '0', '@',
 };
 #define MAXWORMS       (sizeof(flavor)/sizeof(chtype))
-static const short xinc[]={
-     1,  1,  1,  0, -1, -1, -1,  0
-}, yinc[]={
-    -1,  0,  1,  1,  1,  0, -1, -1
+static const short xinc[] =
+{
+    1, 1, 1, 0, -1, -1, -1, 0
+}, yinc[] =
+{
+    -1, 0, 1, 1, 1, 0, -1, -1
 };
 static struct worm {
     int orientation, head;
@@ -61,12 +62,13 @@ static struct worm {
 } worm[40];
 
 static const char *field;
-static int length=16, number=3;
-static chtype trail=' ';
+static int length = 16, number = 3;
+static chtype trail = ' ';
 
 #ifdef TRACE
 int generation, trace_start, trace_end, singlestep;
 #endif /* TRACE */
+/* *INDENT-OFF* */
 static const struct options {
     int nopts;
     int opts[3];
@@ -152,64 +154,90 @@ static const struct options {
     { 0, { 0, 0, 0 } },
     { 0, { 0, 0, 0 } }
 };
+/* *INDENT-ON* */
+
+static void
+cleanup(void)
+{
+    standend();
+    refresh();
+    curs_set(1);
+    endwin();
+}
+
+static RETSIGTYPE
+onsig(int sig GCC_UNUSED)
+{
+    cleanup();
+    exit(EXIT_FAILURE);
+}
 
-static RETSIGTYPE onsig(int sig);
-static float ranf(void);
+static float
+ranf(void)
+{
+    long r = (rand() & 077777);
+    return ((float) r / 32768.);
+}
 
 int
 main(int argc, char *argv[])
 {
-int x, y;
-int n;
-struct worm *w;
-const struct options *op;
-int h;
-short *ip;
-int last, bottom;
-
-    for (x=1;x<argc;x++) {
-               register char *p;
-               p=argv[x];
-               if (*p=='-') p++;
-               switch (*p) {
-               case 'f':
-                   field="WORM";
-                   break;
-               case 'l':
-                   if (++x==argc) goto usage;
-                   if ((length=atoi(argv[x]))<2||length>1024) {
-                               fprintf(stderr,"%s: Invalid length\n",*argv);
-                               return EXIT_FAILURE;
-                   }
-                   break;
-               case 'n':
-                   if (++x==argc) goto usage;
-                   if ((number=atoi(argv[x]))<1||number>40) {
-                               fprintf(stderr,"%s: Invalid number of worms\n",*argv);
-                               return EXIT_FAILURE;
-                   }
-                   break;
-               case 't':
-                   trail='.';
-                   break;
+    short **ref;
+    int x, y;
+    int n;
+    int ch;
+    struct worm *w;
+    const struct options *op;
+    int h;
+    short *ip;
+    int last, bottom;
+
+    for (x = 1; x < argc; x++) {
+       char *p;
+       p = argv[x];
+       if (*p == '-')
+           p++;
+       switch (*p) {
+       case 'f':
+           field = "WORM";
+           break;
+       case 'l':
+           if (++x == argc)
+               goto usage;
+           if ((length = atoi(argv[x])) < 2 || length > 1024) {
+               fprintf(stderr, "%s: Invalid length\n", *argv);
+               return EXIT_FAILURE;
+           }
+           break;
+       case 'n':
+           if (++x == argc)
+               goto usage;
+           if ((number = atoi(argv[x])) < 1 || number > 40) {
+               fprintf(stderr, "%s: Invalid number of worms\n", *argv);
+               return EXIT_FAILURE;
+           }
+           break;
+       case 't':
+           trail = '.';
+           break;
 #ifdef TRACE
-               case 'S':
-                   singlestep = TRUE;
-                   break;
-               case 'T':
-                   trace_start = atoi(argv[++x]);
-                   trace_end   = atoi(argv[++x]);
-                   break;
-               case 'N':
-                   _nc_optimize_enable ^= OPTIMIZE_ALL;                /* declared by ncurses */
-                   break;
+       case 'S':
+           singlestep = TRUE;
+           break;
+       case 'T':
+           trace_start = atoi(argv[++x]);
+           trace_end = atoi(argv[++x]);
+           break;
+       case 'N':
+           _nc_optimize_enable ^= OPTIMIZE_ALL;        /* declared by ncurses */
+           break;
 #endif /* TRACE */
-               default:
-               usage:
-                   fprintf(stderr, "usage: %s [-field] [-length #] [-number #] [-trail]\n",*argv);
-                   return EXIT_FAILURE;
-                   break;
-               }
+       default:
+         usage:
+           fprintf(stderr,
+               "usage: %s [-field] [-length #] [-number #] [-trail]\n", *argv);
+           return EXIT_FAILURE;
+       }
     }
 
     signal(SIGINT, onsig);
@@ -220,152 +248,183 @@ int last, bottom;
 
     curs_set(0);
 
-    bottom = LINES-1;
-    last = COLS-1;
+    bottom = LINES - 1;
+    last = COLS - 1;
 
 #ifdef A_COLOR
-    if (has_colors())
-    {
+    if (has_colors()) {
        int bg = COLOR_BLACK;
        start_color();
 #ifdef NCURSES_VERSION
        if (use_default_colors() == OK)
            bg = -1;
 #endif
-       init_pair(COLOR_GREEN,   COLOR_GREEN,   bg);
-       init_pair(COLOR_RED,     COLOR_RED,     bg);
-       init_pair(COLOR_CYAN,    COLOR_CYAN,    bg);
-       init_pair(COLOR_WHITE,   COLOR_WHITE,   bg);
-       init_pair(COLOR_MAGENTA, COLOR_MAGENTA, bg);
-       init_pair(COLOR_BLUE,    COLOR_BLUE,    bg);
-       init_pair(COLOR_YELLOW,  COLOR_YELLOW,  bg);
-
-       flavor[0] |= COLOR_PAIR(COLOR_GREEN)   | A_BOLD;
-       flavor[1] |= COLOR_PAIR(COLOR_RED)     | A_BOLD;
-       flavor[2] |= COLOR_PAIR(COLOR_CYAN)    | A_BOLD;
-       flavor[3] |= COLOR_PAIR(COLOR_WHITE)   | A_BOLD;
-       flavor[4] |= COLOR_PAIR(COLOR_MAGENTA) | A_BOLD;
-       flavor[5] |= COLOR_PAIR(COLOR_BLUE)    | A_BOLD;
-       flavor[6] |= COLOR_PAIR(COLOR_YELLOW)  | A_BOLD;
+
+#define SET_COLOR(num, fg) \
+           init_pair(num+1, fg, bg); \
+           flavor[num] |= COLOR_PAIR(num+1) | A_BOLD
+
+       SET_COLOR(0, COLOR_GREEN);
+       SET_COLOR(1, COLOR_RED);
+       SET_COLOR(2, COLOR_CYAN);
+       SET_COLOR(3, COLOR_WHITE);
+       SET_COLOR(4, COLOR_MAGENTA);
+       SET_COLOR(5, COLOR_BLUE);
+       SET_COLOR(6, COLOR_YELLOW);
     }
 #endif /* A_COLOR */
 
-    ip=(short *)malloc(LINES*COLS*sizeof (short));
-
-    for (n=0;n<LINES;) {
-               ref[n++]=ip; ip+=COLS;
+    ref = typeAlloc(short *, LINES);
+    for (y = 0; y < LINES; y++) {
+       ref[y] = typeAlloc(short, COLS);
+       for (x = 0; x < COLS; x++) {
+           ref[y][x] = 0;
+       }
     }
-    for (ip=ref[0],n=LINES*COLS;--n>=0;) *ip++=0;
 
 #ifdef BADCORNER
     /* if addressing the lower right corner doesn't work in your curses */
-    ref[bottom][last]=1;
+    ref[bottom][last] = 1;
 #endif /* BADCORNER */
 
-    for (n=number, w= &worm[0];--n>=0;w++) {
-               w->orientation=w->head=0;
-               if (!(ip=(short *)malloc((length+1)*sizeof (short)))) {
-                   fprintf(stderr,"%s: out of memory\n",*argv);
-                   return EXIT_FAILURE;
-               }
-               w->xpos=ip;
-               for (x=length;--x>=0;) *ip++ = -1;
-               if (!(ip=(short *)malloc((length+1)*sizeof (short)))) {
-                   fprintf(stderr,"%s: out of memory\n",*argv);
-                   return EXIT_FAILURE;
-               }
-               w->ypos=ip;
-               for (y=length;--y>=0;) *ip++ = -1;
+    for (n = number, w = &worm[0]; --n >= 0; w++) {
+       w->orientation = w->head = 0;
+       if (!(ip = typeAlloc(short, (length + 1)))) {
+           fprintf(stderr, "%s: out of memory\n", *argv);
+           return EXIT_FAILURE;
+       }
+       w->xpos = ip;
+       for (x = length; --x >= 0;)
+           *ip++ = -1;
+       if (!(ip = typeAlloc(short, (length + 1)))) {
+           fprintf(stderr, "%s: out of memory\n", *argv);
+           return EXIT_FAILURE;
+       }
+       w->ypos = ip;
+       for (y = length; --y >= 0;)
+           *ip++ = -1;
     }
     if (field) {
-               register const char *p;
-               p=field;
-               for (y=bottom;--y>=0;) {
-                   for (x=COLS;--x>=0;) {
-                               addch((chtype)(*p++));
-                               if (!*p) p=field;
-                   }
-            addch('\n');
-        }
+       const char *p;
+       p = field;
+       for (y = bottom; --y >= 0;) {
+           for (x = COLS; --x >= 0;) {
+               addch((chtype) (*p++));
+               if (!*p)
+                   p = field;
+           }
+       }
     }
+    napms(10);
     refresh();
+#ifndef TRACE
+    nodelay(stdscr, TRUE);
+#endif
 
     for (;;) {
 #ifdef TRACE
-               if (trace_start || trace_end) {
-                   if (generation == trace_start) {
-                       trace(TRACE_CALLS);
-                       getch();
-                   } else if (generation == trace_end) {
-                       trace(0);
-                       getch();
+       if (trace_start || trace_end) {
+           if (generation == trace_start) {
+               trace(TRACE_CALLS);
+               getch();
+           } else if (generation == trace_end) {
+               trace(0);
+               getch();
+           }
+
+           if (singlestep && generation > trace_start && generation < trace_end)
+               getch();
+
+           generation++;
+       }
+#else
+       if ((ch = getch()) > 0) {
+#ifdef KEY_RESIZE
+           if (ch == KEY_RESIZE) {
+               if (last != COLS - 1) {
+                   for (y = 0; y <= bottom; y++) {
+                       ref[y] = typeRealloc(short, COLS, ref[y]);
+                       for (x = last + 1; x < COLS; x++)
+                           ref[y][x] = 0;
                    }
-
-                   if (singlestep && generation > trace_start && generation < trace_end)
-                       getch();
-
-                   generation++;
+                   last = COLS - 1;
                }
-#endif /* TRACE */
-
-               for (n=0,w= &worm[0];n<number;n++,w++) {
-                   if ((x=w->xpos[h=w->head])<0) {
-                               cursor(x=w->xpos[h]=0,y=w->ypos[h]=bottom);
-                               addch(flavor[n % MAXWORMS]);
-                               ref[y][x]++;
+               if (bottom != LINES - 1) {
+                   ref = typeRealloc(short *, LINES, ref);
+                   for (y = COLS; y <= bottom; y++)
+                       free(ref[y]);
+                   for (y = bottom + 1; y < LINES; y++) {
+                       ref[y] = typeAlloc(short, COLS);
+                       for (x = 0; x < COLS; x++)
+                           ref[y][x] = 0;
                    }
-                   else y=w->ypos[h];
-                   if (++h==length) h=0;
-                   if (w->xpos[w->head=h]>=0) {
-                               register int x1, y1;
-                               x1=w->xpos[h]; y1=w->ypos[h];
-                               if (--ref[y1][x1]==0) {
-                                   cursor(x1,y1); addch(trail);
-                               }
-                   }
-            op= &(x==0 ? (y==0 ? upleft : (y==bottom ? lowleft : left)) :
-                (x==last ? (y==0 ? upright : (y==bottom ? lowright : right)) :
-                       (y==0 ? upper : (y==bottom ? lower : normal))))[w->orientation];
-                   switch (op->nopts) {
-                   case 0:
-                               refresh();
-                               curs_set(1);
-                               endwin();
-                               return EXIT_SUCCESS;
-                   case 1:
-                               w->orientation=op->opts[0];
-                               break;
-                   default:
-                               w->orientation=op->opts[(int)(ranf()*(float)op->nopts)];
-                   }
-                   cursor(x+=xinc[w->orientation], y+=yinc[w->orientation]);
-
-                   if (y < 0 ) y = 0;
-                   addch(flavor[n % MAXWORMS]);
-                   ref[w->ypos[h]=y][w->xpos[h]=x]++;
+                   bottom = LINES - 1;
                }
-               refresh();
-    }
-}
+           }
+#endif
+           /*
+            * Make it simple to put this into single-step mode, or resume
+            * normal operation -TD
+            */
+           if (ch == 'q') {
+               cleanup();
+               return (EXIT_SUCCESS);
+           } else if (ch == 's') {
+               nodelay(stdscr, FALSE);
+           } else if (ch == ' ') {
+               nodelay(stdscr, TRUE);
+           }
+       }
+#endif /* TRACE */
 
-static RETSIGTYPE
-onsig(int sig GCC_UNUSED)
-{
-       standend();
+       for (n = 0, w = &worm[0]; n < number; n++, w++) {
+           if ((x = w->xpos[h = w->head]) < 0) {
+               move(y = w->ypos[h] = bottom, x = w->xpos[h] = 0);
+               addch(flavor[n % MAXWORMS]);
+               ref[y][x]++;
+           } else {
+               y = w->ypos[h];
+           }
+           if (x > last)
+               x = last;
+           if (y > bottom)
+               y = bottom;
+           if (++h == length)
+               h = 0;
+           if (w->xpos[w->head = h] >= 0) {
+               int x1, y1;
+               x1 = w->xpos[h];
+               y1 = w->ypos[h];
+               if (y1 < LINES
+                   && x1 < COLS
+                   && --ref[y1][x1] == 0) {
+                   move(y1, x1);
+                   addch(trail);
+               }
+           }
+           op = &(x == 0 ? (y == 0 ? upleft : (y == bottom ? lowleft :
+                       left)) :
+               (x == last ? (y == 0 ? upright : (y == bottom ? lowright :
+                           right)) :
+                   (y == 0 ? upper : (y == bottom ? lower : normal))))[w->orientation];
+           switch (op->nopts) {
+           case 0:
+               cleanup();
+               return EXIT_SUCCESS;
+           case 1:
+               w->orientation = op->opts[0];
+               break;
+           default:
+               w->orientation = op->opts[(int) (ranf() * (float) op->nopts)];
+           }
+           move(y += yinc[w->orientation], x += xinc[w->orientation]);
+
+           if (y < 0)
+               y = 0;
+           addch(flavor[n % MAXWORMS]);
+           ref[w->ypos[h] = y][w->xpos[h] = x]++;
+       }
+       napms(10);
        refresh();
-       curs_set(1);
-       endwin();
-       exit(EXIT_FAILURE);
-}
-
-static float
-ranf(void)
-{
-float rv;
-long r = rand();
-
-    r &= 077777;
-    rv =((float)r/32767.);
-    return rv;
+    }
 }